From 7a2ee9b2e46683f93fa34ced8e3d31fe22132625 Mon Sep 17 00:00:00 2001 From: Christophe Date: Tue, 17 Dec 2024 14:05:29 -0500 Subject: [PATCH] feat: Update to latest substreams --- Cargo.lock | 92 ++++ README.md | 3 +- geo-substream.spkg | Bin 496035 -> 565461 bytes sdk/Cargo.toml | 2 + sdk/proto/geo.proto | 248 +++++++---- sdk/src/lib.rs | 1 + {sink/src/kg => sdk/src}/mapping.rs | 240 ++++++++++- sdk/src/models.rs | 8 +- sdk/src/pb/geo.rs | 327 ++++++++++----- sdk/src/pb/schema.rs | 395 ------------------ ...roposal_processed.rs => edit_published.rs} | 34 +- sink/src/events/editor_added.rs | 2 +- sink/src/events/editor_removed.rs | 2 +- sink/src/events/handler.rs | 84 +++- sink/src/events/initial_editors_added.rs | 4 +- sink/src/events/member_added.rs | 2 +- sink/src/events/member_removed.rs | 2 +- sink/src/events/mod.rs | 4 +- sink/src/events/proposal_executed.rs | 8 +- sink/src/events/space_created.rs | 25 +- sink/src/events/subspace_added.rs | 2 +- sink/src/events/subspace_removed.rs | 4 +- sink/src/events/vote_cast.rs | 5 +- sink/src/kg/client.rs | 83 ++-- sink/src/kg/mod.rs | 1 - sink/src/main.rs | 2 +- sink/src/ops/delete_triple.rs | 2 +- sink/src/ops/set_triple.rs | 7 +- 28 files changed, 861 insertions(+), 728 deletions(-) rename {sink/src/kg => sdk/src}/mapping.rs (51%) delete mode 100644 sdk/src/pb/schema.rs rename sink/src/events/{proposal_processed.rs => edit_published.rs} (80%) diff --git a/Cargo.lock b/Cargo.lock index 9b1c448..1c64715 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -753,6 +753,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -1102,6 +1112,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "hstr" version = "0.2.12" @@ -1360,6 +1376,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -1771,6 +1788,12 @@ dependencies = [ "serde", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -2038,6 +2061,12 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -2523,6 +2552,8 @@ dependencies = [ "prost", "rand", "serde", + "serde_json", + "serde_with", "thiserror 2.0.3", "tracing", "uuid", @@ -2630,6 +2661,36 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "sha1" version = "0.10.6" @@ -4001,6 +4062,37 @@ dependencies = [ "once_cell", ] +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinyvec" version = "1.8.0" diff --git a/README.md b/README.md index a083f3a..c84e7f6 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,7 @@ docker run \ ### 2. Compile and run the indexer In a separate terminal, run the following commands: ```bash -cargo run --bin kg-node -- \ - --rollup \ +cargo run --bin sink -- \ --reset-db \ --neo4j-uri neo4j://localhost:7687 \ --neo4j-user neo4j \ diff --git a/geo-substream.spkg b/geo-substream.spkg index c579f66e17b88ce402c3cdabdcf60671404ad04b..f596193308f8fea14b70e560fb340b3cb02d01f3 100644 GIT binary patch literal 565461 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

xF-Aei_sB>$ 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 delta 158680 zcmcG134ByV68CiXT$!09lS#-8c{5xI_hks+Dh~xjWI4p!6(U3-AXh+fJtjbas3;L4 z4Ty@XA}T^e+@PY1tGl8i;*H8`P*hZusJM%+$M>)9_vQ#e-S7K-xXYXBuBxu8uCA^= z-s8<@BKO?Wu6i50=vuyIzP#jGmJ_|umo>a%=9oD%FPl2OVqC@LQ>*4y%&C|hD)gny zshB;lqH6BUIl0VW#VO5awYBUf^^YN*ZbA>9xugF+mn>g>P1ms+u|H zYGJpkd1Z$5(`U z`7*DlxZ=`^Ip!pi(3JD8XHn;!%omZb9`zK+zb*H8k{ihA=F{f(gjPmK`wBE83#-|vkwbkcr$ezxbEnRnK^-!8rqz4+ zMcsB~`Sf|Z+nnPx5DNL6lgsCptBwndQ@SQ*&La zd;NCVIdi5;wuEIex14# zg&cJQYtIB>XUe@dvS5Z&naww8O8Jb-E5=_vt3p;TVW)%1mL*^^Y3ctZlhbS2=@;Lc z;!A;pkDfPo*1Wl)QNGMsdT>=um=hb&ziXI<{9cw2~TgkeURx8=X z%qjP*WToev?#lp??%N5I^yq?*(2zc1A7k9M@Q|K9-<31xR#Z)xR9-bV*DW*aS!DE? zN)d}SNT~NKCg*w-^Iz#!(n3>>v57+G`EuofJuH{!dS%IVtb_b(J?qL+mMW{4vV194u`Vo4_E-hw)8$R8*r_ZiUs}bw z`p;|}@AHIQ4#yo_vgs@&a;7*^S^j?3#b-bk3b9qjoC<`ks)`wNjk!}Q zjCoZU@y5){40K?RI8ynX3Lx6i*qAy)A-9Z;bFTIolV;ACJEwfoT%&x(WP`}ctD;pi zCrza=XIwRP?i8b3HPX4t7<%rg?w6LshKA*+iiV_6&Td>a1)<-tN4766DdHWqKXr}) z(~=gbs+u|(%1oWn!-qe@>0lv|;w|*~eNJc8!5tyt<2k;7&*cQ*BFJk)!1SerY)AlV zldb3+994dvX;m?h`D0{^>Qd6|I*|D@LKYbhi2x5;RooRN&~A=+22%WXCFlZa=@6Ma zS;(30$Y4r*;-2nptN1aJKFGT(5&%wud^Y3;gd7p56HSTEL#q^lYJ!LSjT2WVP4VIo1>a?Qd8Y{u3`WHqIa`I2L!}! zDZ0}EfqA!Vn+#RmdA>zP8h4M8k;dIq+Sqj<>z*dW=Vz@|* z-n^5d0RWAATN(p`#=ZTzEkGdaU4Xd{4h#s~dw1yQ`_u`I-67{-$LWp6ooo`1x`8*? z8&T}t#NM>D1ORbOOI$!eG%YOwfuU(>>85@i!nI2Q0NIcj8EH8rMN5S`kPT_8yU)$x z_0iL~mJtx>PK(hI&(l&0mHem!-DyRJvW_R@9OgJf8^;5zVczyidJjoIocB>A0AQTq zmT>^VIK%xN?K+SR??mGx>T;qI+=ut-t+;zb&NCf<)ZD#5JJZ`marYAUk(O-$K-iI% zuz-L#(y|R8up4RF#!Gsf#gU+)9{_;ttQZ+=6BTErw6!Zica{;hnuBphS!2bkY%?lG zM?6PaV+C~}8)c1^l#p|bW1N;g1z2OeT@||&l71{7s9FL5+l*DV>FaU=gmK3Db+`Zo zy0JY@vQfc(Y}o)`qX(Yj3ppzs(;Bz_g*_@VeZZ^m=KFRsL`)wwFjdaqz;;CO8~mqQ zwg&{Ir}{G#LqHqz@k5ZF&`hwMY~KvkusvrpNo($X0a)mb_N0$HV{vp?j#!ZB0p z><3ox3U7hp=O>wF@GkPz2Ux-7+R7*c%8Yi}699qHjN%gC0XNhOgxrgn;|9j^UvujT zPtU^fc?46DJvSS3XBs*gQZrlCT+COP24(ZTm_IRBTBMW8XC%x+7DbgJ#=M6~v>WCt z%Cf7bOr2#ES4^IY^@@T2>C%#J#^p1wte7*Se8!{-o4T7(WunB-1x&k`wvncjHfUgO`Lv1|#?;GHjcq0$WX1ZSVscdv zV;BUim|uRytmzfq2#<^z)r}idl}#|MqjW~aRfc5@~l4pT0eM^qAPq=-Ja4 zPg?4%n35dgl+a&x?n1=0z-X1cb_Q&V@?T@45d0MrTq1nwPn zPXh$&JM5lLr~bIp)*TQ?0otV0(|6jsqZXuhMs4MTA@|+PagU{Z5U6)EuQq9rB>D^E zeU&@fAC}qqDxgTbZ2Fw#1xSA&#+dar4 zOj#iVgb&+oW>A}(Z7TqRDgd=A0D-&NwgNyjve~vm23cW?Z3RFe1!$9!6}H$`KrKkO z#Hbjpl)TDsL2IFB+;XccU6i3f)xO2D*%KQ9%X**b^t;8C~MovMn)@- zvXU;^12RMI9n7&4R%oW>p*dMrZes664WEHMpev?URbghRLWm{b$ONMu%&P}RCdu%W zJ*EIbHGo<*fWUpq9#a6(=u^xZQ<-Fyr){eM0x3Y76jq4>wgv{OLHo4!4W}~``KI%4 zc4q(rEkK)=IRDM=4Ag@3Z@M$MGb`l&J99i|88i!+e`j7=t2mumq|CF7cUCsa;!(0F zU~N&qYO;E+w)yllrIKrk6VZ8Cr`*~@kq0tnKV?Jxuo zt-MTO=pGu1IU)Dk%&{L%SWiRo+?kChHLxre%>mKd%u7>})0soCsreQ!2FPT zX$kCf=An_O^CMe$fDj&_79JpwKeB}f2(};D4wpwpImmdi5)cqb0otTw?t?6)y#12-`(w-6Q362=*rp}UAKT_eEoeWseKkMiKExcKTiWCU^APju0JXUR!rVvgXbKRdM_Ha>BcqX{tbGSx0BcZZ+mQP|%<*5Vm9{|rkL{vu zsg+~4-hd!HKrK8#;2yK}1_-vtY`xo(QNFi56c9)O+N5Od?~&DMcR@91zqehqEt&fV z+h%}33(%$|&Og{DLoG;uuuax3w#Ll?)JB@bP!o8?X;V#X@LXK=ET8iImaejDs8I)8LXD`PJ?Z1uv*SfJKbUh zs4lLb04sntD*;w@+~3wBrLL;u?QH$1tLozFf%I0+dt11)p?hmI&Wg4>Z;k6m%dT5_ zK{p#4tZwB!ds#xkLsoDr)`z(ZtN_|Vxxi@!x28wbg3}6~r3Vr~a9Y7tsK)_9n2fQK z^OLN0++YRJX6073R-O%9uv*F6_Og+|Y9;U6&k_n7p7orcVpV#;382l%15WiE8{OIy zuptUC935c8U{%jg{)5E|yPLOh91Lh=FIWMzS$V2Xr!{d-v}3a-&M6>}|E!6#N)0*Ja(j*76?1Y-9+vmX8=|36&Od-X0&wY2XCV=9C6bw_Dv8MGw)^|MqzQrGeG$ zysJHu)3I2Ovq}dmfHtdiuv!=Q1huk{b4mxNb>MWV8=HJ{XZ9^-eQtj!$G4vOa;_+! zH35Z}b)tj9gu~k|v6`d`dG}i^GPZ*+q8JT4?gB-^m5afLouS`_=-b3(`oCDa#`pHH z%bo33Fkc%>D!t2TpYe8~V#)TgK63b89E9$91E;A+_Ob%?YoK+U?^_$!%A$v?`XD!^ zRC0waj{2cfZcc1Yhcuv-h*i!h%p<+=fY(s+cSn?PnKz z^FldF9}+yXM<^8ZrIB{=v*$jEJX#2r@-OzIEc$?z75%sp+gn$aS6$I_&b+F*-LLE& z`g~=M12A(q9PD*@MDf@k7L_l4zA0KhcmGP0Wykn%J2W zZgSq>WM09N{x}&=VGNTBbHvLr-!YuKiIf!X=dKj)!l7XR^)5n5O-XSvhtuH#l><{q ziYwsa0hYGv04t8B2ffVYa(RH~0=A%IF5>K9UY`(w43ztc3H=GtUr4c>_yYj~I78(e zoTwDP^#4%eqW0+z7();Tb`AYF^2Ps<<0z4cME!{pL;VLb25?^FgSnhk0xs&0(}@xn zGMp6r2jN|KxS*2tKUJIplQ7k&1N{6>F1S#C(T~_ql<5DdGAzt-hoSgGHbTz%kad^q zKV&&)J;WYjF2Nib?mQ7?W_9&Whd=5t4{d!$J)7z2`A}rLv12`R&ehz}`Y5cJ?AXU; z@L#NLFUNa4ME<0X({Y(WUx#q~i)X4*>(rr&?ume^iOY<=EL%7}~)#9 zgK&JpWy5PM|8&P8j+;fZCRkhM7Tp(`on1JG?x=v>ml{`Z)Z1+w;qvQ$;Y7vp4R3uM zJHF%D)C7j5Rv29kzciWuLDqH=yM--hr;R;x(n0Z|sAC)0{p?Zp65Gu_XTOM0Fg3-O z>Gq3&$D5I!wv%n<53z0hoLj|<;w7<1G>flA)-m=oTga<<;UfMETf)C*i}_D%q4Xu`>=!?X|B4^QPvU2BeRKiyExRG}2It$WQh4^NuUUW{mByEBz@Q`5JF6Y0-{5AT z(ySvOSW{hH?Fci28x9nf@_@n2RSO9%I|)sOkFm`BO{yj>sfHK?7fW^++dYTmu20zr z?~T>ZfWb%AGVc%@%^T`vkVzt@&q7mzJ8lXz-d{zKKYNvcV-WlRgc zd!a1>w zvlw)+eCnARYUg;@gXcW*6U&k(e*xP*_m&KP_xpuhEN~PtYaH(&Z-A zg{~8*tiw^A!m(Uu9RW#hZ?tBX)P(3}+vT%nxY(gLC3d*W%-`ADzhY~0Bpnhq)#$PG zxY9YfXA^X`!)t3if0x_F1DmH>HI+dI?`z(Ag0a=Yb6abd#Iu68jthI=)Vlmmzxn?j z7pT)byB{U@YNNH?sKQ&u30x*NiT#$gDwrRBRFD1t-#v#ER`w3^ww{e2k|xSIdkvo-0QmW@oWG<+{VHl>fyl>owC8ly`l~BCfj^ zfU}(D15jvbKU8$7wPPH-cCQ(`FI77w#_c!)bo{YUcV zw|S0i_=bh^4=Xau)<=Jh?9fMAqa=zNnx9%RfzoJWVna!tdhc;$yq2}%n;11uv~k*N+#<%ZXE6!W^Ra%v}D zm;Nvf2E&o=r^01hrMENhpTCSyO;DF|MP=95Zj~2w<~O9)#p_XYq%&{JHp|pv-am9~ zGf`fTBv@Q|)$CG!Y_mMKm=9wQ%R7qs;5LhE&|1FX2yUTf1I%xTV1xXon0NQ9s<5Cs z*`&BLbdP8 zdqJr2T@!>7aiQ+$%1=4TvIsb6i$HYE!chwQC=*acE&ViDWkhohcH>3E6{!gukf zxLMZr;PvDj?RxS&vg3fBye|a2qGy7DJZ{Io_T;C>?I>E<5e7TXj*iNRvV!c{ix>4c z&W^g;vMKDR?Fic`m%X+Z?*M7;?$x?9pZDVJCR^r0pBlEg0|M@Sobkzy#J7PuFyb^E zqsf1YwaZ7uP=dltTTlrUahWBsx4C|+oZg%F;~Tfi4t;p9aod##xD4kgA~B<-nk9O} zp?ZiJ3~sA>h&Ylc#at1YQDqIy04qh^n8i1&iqp~8;1lmvklJfH1POL!#6!Or!a?;Gx#J`)?7@@x zxh?U$gy%9mgg3ra<6T?I`*&ADM_fbIdOL1}#O4$1(PWW&`}3|vmg^bZ8gz!2qMYG1 z+!&jXcN~ynq0FVC#*O`XZGmnQQGv!5dd}d};2D0y6WlDjmvPfjJxQ_XM1$>?ve;nj zAm1(HXM|!rN5g;6`-rst2Jn;4TurV6p#K^$QrnqOwLyVL!p6#;A{@ zA}=DZpb0@$>JhETBdDm1z?~-fA5X$^U!`A8uI@&dd|Xa)K2P zoT9Cmaw_i|RRIWmTkR@6%Rmkq@lZsKd)Lyhk)x^@ z)$4WjCac=QR;8%jsB5=bwHC4}MQwww-C@;Q$f^{z+jZ@8R;`7sN=-*p`=3^Cr^eiE zVOoT$6nw1OT~@7nmhv}}!Mzr!o~3+$GPutI)w7fz-11CR+0}xZtZMZv<%g5OLl&r> zrTl0z*ldC7iD^C=JZ6FFS;}h~w8F=>L{*nnTd;bfyDhMmp6Kr6T2%^r)alxF$;he{ zwX1dQy;iM-tV&V4Ue|7Fp!Va~suRH{*B-QLEo4=S+9q9l*s8UV zn^gO#KBTLUTGbY|Dn)IxuKm%fwUAXQYLDsKnn$!PEo4=ygOVNeEW~P!sN%YtW+E%F z4_09YL5A`dE9s?JH;U%7-y01Z*;aYCUz{!PJDrcueu&lpVL<^Aa~MshYO#_&lrLb9 z$Xkc<9&DT3Ig}T7u6{`QTCU+3!un&+A8OsWlf2K1pV)*yrdC6b$@F2oZ~op}R2A(@ zT6DC<<*f|X$cu;Z<*ZR29>xcQb@$=?LiUiX9nL#rvC%M`??TpfKW#2NgQwoj0N z6dUdT@B%J3B2K7W{g7-kf{zAW#Ry)?{wmjvKxVpFJ~IN${whBk!P~XjzY0=EJcArC zlgTj)c6YqLN*11piRcMA>`dMth}WNqwbNp`?o8er(4I3f$2=i}Bl#(iVf08ok#DM( zkBsCweBJGG%UQgQ{9q){AmE#knCpLZi>O$r?`?#s9`2?azPY zmz6$8=7LPY%HR%CkrIg7r6@D|qO`cu+@XMj^mp(n!f^P5+Zxx7=D3!-P);4oFTms3 zvHY8MSanc8V4fYq`}0Cfx6P}qzH*s0^7V1NJ9|vBv+?+=?0GiNgR&#e=1bXj`RdvH z1zp%iHjL*U)NCKms{*!k=&>F0?wOvfKV8J|9;wv{28Z<-yhhDo(X&z+oTh=Kpo|?( zq_>t9(?T=M$T5|d(8CD`Gd5O9!EIV8==G7jHIo;*;UCCAWx1PYT6;YwN$-W83^~z> zTQ+w}<3f+x@EM!Mi{*q3?hZYAJ0J%ZUP~6BB}&n|JHS5pU^4hHf&P2+{(W1VTB*#K z3`QqdPRarBemu`LpV^@IHWt0b3%k6yVJA9+Ch1M|OYb+BZ>mz-T5(pIO}aup`W8Q> z<&jdpoOpvLAWwN4cX6i5SwngDsfHRXiKk}kYN?G>^ToaNq%Ca>q@$|iYp4nZICWb_ zKZE~NhaTDgX6T6aFdYbj(;~hO>ZeSlLJppyp)lyWI|5+`A51?|DbIJ9zp&W|Gb{{)(wc}?_*hTCz@~FHA&|j7QHOS< zQ6aicmR!L7X<@acpsML~t#>NV$#&q56FgnZs(G7^;quIL_(%-?Rp;=Idhi#?_s-!D zv*&ey+J7z&^Ig?)_6FWP$MTjeh@(1?{_+N2YCP>cY(=sg8pmG1zh)U~OT+IELO$T} z;2wGQMZ6Px!FK!li?FELOK$&=9GvCy@jcb@tSnbww#$xn-T%b*0{`bf@j_N33ohX& z13Lc_Y=SJ2!3lf-Uww-lIRRU&J7nbqKC;9LZyV7X#l>}an)m9!xSAowq^;W3jE2$s z6Zrh@t)VxqQKNM=C@!#Zj@90qqvD%p1lS-WE(_Okm=2!4@*}ILiEBJM+%VA;^e9t2E zgfl5lgp5q^$TasSR?6PD@Ng*86ttqR{SPS-GDUEy9C}jHc;Cu4z%Xw!{vjw=O z@PVG{W2&Zc*c9GPbZ!1YK~{Sqa?#hY$%d5K6r)l-X5D||jPIDnyLsxV0F3ue<2SPX z@}lW{2_7F#=jO<2U8Q-M+XyoM04pDYm5(Z@=0_s7BJ!_c$Qf5a)O$6<#w}N1vx5Cg z9-PT9#bfv^J~yPjl}6UAFop>2y1hIL<9Nr-WWe_=A?j}+A#%-H@~YqmmYUq`g#bi| zW+?bF6{g~z423I{f1}FV=yHn4=8rXm+27LSITd&6mQXX6Cd&69$&`pgPMOWm%syT? zYD5m2!}D8p`i7X(JJHd$2m9ynyx?}KA~kzOoMsT++iwmJx5{LHt4yw+!%O%JH_8X* zfXA*I_=Jq>5K%S^);rk>R5V=tpnNo6FBf6xcJDm$8~g&pbYu6*O&v)hfx! z*lbMNv<2a$U}-jOl9yh|$8~u_8Ml{NL;V(PB3Y<&4G;E7{pcWC$(2z@EtT(I$@_$p z2lh^DU?+xw-dFLgLfs$8{an-}RPBe>l~EyR`Bi*X#~rkiPfbI@iQO*+@WGTP?xgaF z7emazzU}O*d4xA_mV@W>yv%0We2n-FzmYOF;x6bfQ1Q&w2)jGC%H{KUmw;kpG6b6) zTjf9I^D9n$n>IQ9*oVSyFCPX2Wcd9;wWHe){Qqk||Id7E#$giK`~`nJu)ia?PhR_H zKE9RW1Aped$6L}myE}rZ=>gc^JgNfXPHe2l`o?K?LuN<`fzwV`iw!4*^Fov~-G&BB zc`kn9Qi%vYCNH~&KWFE|35bX8NI*232?FxiYkA*Rq`U1}J}A2ECeo#=;%wHfBcS?D zBD2Fw!+i?D{E=ixkQefFYgO2tw*yfNi%Fj(4!%PjrgvFe*p9<^W3NNj`?g$k9q$o6 ztXg?jhIB$^=Xq z8)X37-NILlI-qKU!Iwy`)T}@zf-sU$N@KA~2|=i2jLblY!ZZu+R|FyCy(~bB3KTso zf4YU|r8H6Afs1A@$)e>*oc7D-m-7xOF*fq(a!f0mW!pO5v#l0R)uAa&5D`~_nP&zK zR{`j!)*-XoB3IS%;@`l0ua1`_sFr#wGOY$V`BvVU7D+eX$~$Fkr7lTLqm?mqqr@D? z;;6}!O?W>dLF(KUykkMkOr&NQ-zA{A$fz_N*jhh-1s42Uv-GWAYHqXcTQQM`cA+yFRtXnJ8x7PxkOO^*bwLDuXV5M?t z*7K~CSj+M@2@kH7e^|}?W>xDING>vFtkJXZXkIOUS;Gsk%2~gfx64^bO3>K$n%gw) z82r3JzDd-3?cIhL^}TCs>asPwW7Jyo7>1YTRAT>}CJ7p;MjAkS69frO05i48=twyL zZw{xT_6nCsU?pei zSg;oBmK){8c*mm9MD2LguA>~flv6V((M`x(Z&xj76)aJMB#c3Q`Kw@*+u!P-g6%0I8;#jWe~@EyD$P3Z!|gXU zK7KbpgL!IJ(vW&zdhg*CnQGU_p8*+QBM8WY2W0gHe=-&V`Ijl5&3;z*ko zNOWuD-#7Bp0^g80G!GI|#sj>hgPmFl+ODdnm6h3`)>l^A3e+v~k_Y(cKWKK=RTDa^ zwKsuq3T$&>aV|R(xtKC-jk|5SwXw)k8L7EVWqLg*a$3`Yhw_F*#ff$oo)7bzuwVb=!wC7?FRPWWKEl_s+Q#Wyx#?^r&)Y?#ine&IJg-Z}W7>sd<9nHW=W#x;71Bd3Nip_s zXym8yrd#BmMxGnQJ@FB<}?s|e>l=F>B1~A4Af!#XnC7}z*@EK3?3kRQ|lKKIgsVW7kX6E)fG+}QF z!4cy{@}VbrTV8z&T~W(vJn$rToNxMImF$@rBCxIjIEZQ+D$kjElmT4E5z+YSrv z;Xl(`4-4+)Q;x@$fxq+ftQS81^}U?-cSN?@I{C=ov5Ss7nqU8&UrBc~r#{R3XM`~3 zFfvtu4z7er=Hy3FSurY7Ez-@U+#@+^S74eKeFX_(L5 zr>nca$R8_sJ$Ewmqr2(HUq$df`O}NMdqKlmf{V@S+v&NUo9pkOA6qyO zhQ7qt(Ny`-OPCXzWMgPIpT{Cr|I%%XT^J~E{e%)qp=#v=FY|VRovXp9l=lK&t$h7u zJ_N3sy@y}_#{~3)Ku-WIe#`8!<5DTv%`tF@t3U4te)Ve-Sbw;Op9R)EU*RR)6L^s% zad3#xl(mUMEq;ZUjj$pJ?Vy|ch;Ptdcp^As_+W`@Z!w!zNJL4KWpE1MZu}oO(!H0z zlvhXgjIjt{t*J|HlArJ8i()}_y+Uh}*S?CIi!0^Bukvs|D`Uclq3o58G>_e^^z<6I zZe|SwYFAG_aF*ao$zS7Z;DhU4!ztoDjqkmN$rrK2`zAl9M~q+WAa&m=i=R43-A;=G zdq6%Q?|2iZUEQAKh3T}0behg9!?aJ8K2jceljn_04hvWznZFiJa21upPX~yL5sZ)6 zVtADZOnVS|iIi{h*(JZ5q3rz@7V{61fJ0lAZOHFtr9xdx*}lXF3}n;Qo-8*F|LzXC z`9e=5^Wh=Cuti#4J3z|&pWwZQwy+NNS}`3#S4`>)*l1k2{Vm(jxs@#1$9tUo|H4Y{ zxyX~-DKR|TE(u|hgZR(%&YAqvTRgxI+()la^m3F{Se*#`>pt21Hed8V_O^UvAAhXVZ+5Gm+m^k< z`{*cjVGtQa+gGiY&TAV4wv$ zono{>1CVx52n7R7twDKrM;=vCQpg~tI{Q>&G2E)mHE9CE`-6G{(kgCJFDZ0_`>8Wj zoO6b0a>5RaHR@Q*9B(`@=Mk~W^gf&(f4#;P&;yF1ZjUzw%K5O+_EnZR9Q_5(N&sY3 z7CRiJ4(hN}G^T2>zDM7IIE+(?a4NopjW)|FQR<`_7S8}ZgO4k%Qb=ayF1BLPpYzYj6uLR&8Mw4N7bq;xA+( z+}2!G;TE*rl61X`MCl1Rc0XUHABOzpUEI}CMTQ*p9#6-X?4RD_BiNI2_At@Am{)jT{P-!z)8c$2Gq?p8{ilRztP(9jYW@Zjm~ucXErUl45cNB zOUF5DT@U*?)fq6DQTitDNW)w9x-zwY$)}g^c2Vl+)#*EV({} z+eEjw7a_UqeIDre{N|m=5ol;(ntOwQ;CjNxbVlnDwG`S+lYg#!^L?H%Wxc|;UJ2Wj zgio;pbCsTBaS2Uf+Ha&LVbUl8Cf%5#cm9vkg2$x!2{Ig0tDp7qk00>tE+42G>lNLD zx<*S!65D$~hQq&J-tqyTv8oB*CaQgel(3V0Cqgv*P>f71z+60WL~6cTg;_}Qye8hx zV*}SF0(U0@|4anF0Fay93Qek*A6fA4GJJq%v%kx-1N;T~^2fZF?EN9niqceQ`L0LL zy_m-^K~kbI29@N?wDqWd;UK+~pFsn`@Ti1AJG#eo&czleuHs=<_2AizB@mkv_F@z% zfQA=hgfIAv8U`3Zvm%&W@tT?I6LRDs9`e?k`3I94r? zHu!8@0=MZNmfBXzL)^r_O!C3!{4e;t&b6Q6qUCe)@h=dJ3gl0p@f$M!VUwJX#R*7q zt1rGkCR^N;aUJ*)L7lXo8Dx7Y)yvG4c%KP|AXO8&rUz`b0FchKcdm68^`^GYDif1Gj^S~$lHGA zU$VR9qF=bl57x+k{=y&brx{@`D1^-PW=gT+m^y=iiPV;|qr}ln1^rb4phIhJyI&ZA zTS!8hP`SDMw%75mc&x6MjESr%2WxI|Pf=wt)gl&0Q)j zrQiiGBCaRXI53SW^HkhxnTxccj&5S8L=*#@>gv|Z>zL>iu{PDtMuJGp@srMDqNpbm_cXX+^koH zc1yuP8Wk={!b}gS9Pd~y32O693j_%B<689sfh|;OfNnsUFDX=8(LlgQg*U6hQ!JVM zda>~RQev8A75elF;2)~6pH-Mbc|AARsKRbmp_fJ(H@{n=Uf}3pm3nA$XbVbbvcTM~3JWcA>#TgeDzrKj^SnY;GrB<=IFxz4Og=?7p}843OnYx}&xMcD ze3?*ECkHyk>HP4Gvf3#MD%9as*ue*r2c+aPsO)94nX0=pd3aRTNt zzuCSnO$I%p0C$1Ac|<2ok{}M+zPClQMOlf>Lf-pYAbi=T1;Tmq_3T82U=l-Kj171G z#sYQG8Dh1|6`lF3$>5$C7|uhF#gtQ!R>*Jl-@iGw{~zffGUf8_VgUbafqb#MXv-dz zhq{ZAfm>})6y~k+)E)?;JF#PND*oB0C#eQ;szKh`LkwkG8sF|Aj?nuG&-W5Vg>`i8 zQEfC(?&F}~f(#zXL-5-LvT28CBXfF-%w+bZy+yaqJ2hc3W)$2AqT7vS_<efP!!k6hMXbn?7;l+?gKz4$iI=Pw-9TaHg0rO%`2Ek{p-!tf~!&qf7!HTpV* zo+HcEKjE~tx+|?TK`& z);*N)TGO_JP%HLY)3T4LkMwDTyf05YP^=rHeAzy*Rk5FT`IvozyF4}qo6AHe-n>BO z4iMqw(Q)Fzcd~qa0Q{{%<_r`?yl#^`GDx(Q=L{4*`L_!imkbocX;|(V6sv5=JgW3{ zsIiIuclQ@wc}3+$?liy2Z(O6@>Fpfjc0}t!oR4Nrwztl2%gsr79HAsPRItfxPzA9c#{`P zSGu1|0qCj0P_5x1`Tk&RoxCl787y+h8YW8jzbMO0(OV9VzzPkrHlmI2KtwDB*t@+3 z$F&!o(`#u6n4QfAH58iUv<{-J#~K%Mc?Z#s9cpZPLg1fQq1ucH^dw{y@$s&q}gx@J{)n z8+%u{3aDO~GTpefV`J3+21c2z3*pMoo$}O-)>$ZoHl9@$pA(}stm@_#&?rVf8%2(bS4@`8f0#d z%F!8ky}A{%SW?{n8&X(k>wX{F9lwD#%5$fMk*JhR=q+t(IVNAJ{u`EF|69$;rwfiZ z;k9z&P#ng*GeqQK%~pLnlAtZ}Z$s7NH4}ciMFxh5f-EcaAxqH4oPs?X`Q#8$dK^`k z(-iTnog%B_bO#(5>q;_z?({ID88a~%y$Sc-9Fh$anZMf3=R-voAiS~!UmqGg1li{n zIp!JFN*!baM2+EXj)G@IdwKn7A`L~!s#roD(6Tk3E((FN^BK`5+UQ{(`vj(eC7i%u z7NWIe;(zKWMy)GpE1DL{$mfI0NeKhzMKvsf7eMh18%zfjj=iKj)QzZAUhlI+TxvVj zT#OwdH_Q>G`EE775`dfQWGtsy%PD5)LntRQ4FL4@58%;x7ois;Ok}BFaBbp`*GjOJ zh1dFU|65;RD4Px(IaRAnR9CBm!vxiq z*}>lI=4Kx%TdEF$XbS{O=AMqlY!K^3t1gcmacHK z7Do%maoUd*0CuLME>1fDTBfMGr^7LbT?~As14t8fz#COKoS^eRTLpG8G@!*;fZD)` zRf5K`COEx{mCy?B$$IHVs6W)MsYMp04^qNN32k6AtAqHqj(w`zWVyrRLrr+~YH@z>X2(qp7`@(TCsbZpkL>)Vs^cpIO| z;9bt}fHx8I-Izyr!BiN>__v$YPuhFMPwHgn9DE)H_eS9r`02yX^%#coiLkE4Yhn#Ro%4(cOWMiv8%%lcq$@Pn!ZKH;Nh&o2r#tl{`LS7r9LO6Asp{Xt<-*uIdEF~Yk@TvF9@h^YV zu_9~&abOeMBKeROCogW3u7hKn6g9b(2tGLV72q1BZlyvjO6gNMs?aXOhAe#!$1XEG z>eoiHFFHz_62EKVHu%SQ@tUh*Wuy{CBxgw35+i3w@e(~Ot9Sn5SX6_8T&tkz)J1@z zUJW)EEvlhfZ!Mu8OQ*VA`u(FvQ5EC&&w@(JYHMn0Xm>P3eoZbkpB!L51#l9KrX><7 z`0zsXG=8fybzK7rYrG1xp9*YdLM%iVmxwbc!U#hL#eU?|#91^*gD|>Ti+chg zBQ2Z?l~aRH$ODB=!#YSbv%;ysZ9~^4XdZ;4g+sKNC(I72IjdRKYZOlf`T;`OQbM>$ zh{B1WJ8X!%>Y!Nd3*(zR0Ylf3m}QZi{vsEGik_@rBorOQvH+lrMz@n_5z92S5gNpt z_;Lm1y*u%CQqaJ=$TT;`i%@N3=r9J}_;?kTgeD>!U7)v$dot%BM@JNQ#^qVaPtxPP z=z)$7*z7c;4Jt0RGY?bDu$T1^CFUn)s~EI}*J{OYlP1wc|A#igdLtZOSsi|YA2A1q z^0k;^l!yO?!f7e4$kss2%fX-X$&7-&{-9x3-}3*0?bYyHi?JWB6-UJ(HWZ? ze?5T10^B1%fc$o;#OLU@6zj;0FRsy9V=wrb$-*hv{5E%f3#suM*?xNB_V>FViaWq! z{zu|ewq9=kNc7FQ9ao;!sXOLiB@dpENAiQ>59uxG|9DVrMiTtfK`|O^Mtv+gL6W&2 zi>Cqg{X{_*ej?gqg?#-d;!+eI(1qSlMF+M)cK=lL!>!;;KNTn8vHDYNP1eY#KgEJz zgZ%DOF$S!M9TL4zc-0}r?9M}?KU*u`IwWQn){vl-DP&=$#DfNXC&ewadV}^^ug#Cnh!^L1% zGc_ZPu_8~tJ{*3A{fRTMKe6d$`P3OAkG7Lu7$rK%ogeUsG)9PVcpFowG)EMzFM+1OrorukI87*lX7{Uus3C6xQNB%t z%L{R$j0B=blyGQB&K@bU;|c^5aDG<8WF+v-wfQ2AkMm7Wp!rDg4J6Ry*fdyF#c9$K zX!gJAAq7a7)U!n2b}PwXWX;qBq~$SzFF6YWe`i}fkbtv&FY$3FG@fNQj=>U)(fAW+ zj_e_tlmwbgnU8BM^MwFd*lghK#E!gnQ^1&)i*V}9re*30@ah+g&b#W7-}HS&6u<0?guv1%WG8VwGNyk!`T*2pWA zL&uA3`Oa9;#u`1@>mI`5GvRmyC!)eU;i$Y~+^-qy>v7^*YH8-#;u7}0+;g_LfWVUR zYR7Z-cu{m*b2zG{<~EFPH3%FTubNXK;`ks?b&j}(f44w3pCclOfB!ibo42Q)D}vPK z*mK1npyKj#wGA511^*<}Q=b!I&l)@O6 zf4fLzkBdz>ECFea5;$@0NU<5?)BkZ{Fl)saA5kMc!|EG@m;9^l$ zXbb*{GLRLLaj#GvZ_v>o9dC^P69Vl+a_yhQqWCa!;#{`m649-bb#PjSV-os~2c7rP zp&0%uOFTEd<`Qu#4b>f&AP;De=@ax&?KJ@h87Mw;f*2kj2ySVP7TL#z4_u&dB78hQ zL5GhS6O)dE(3KP}Kc9XDrsI`x!N%1o$iB2gCXp2Yn&()LE z1o*c}qNpeq*oE4wv;vhaW{O-sS!DB__!8k{QDmsRjXvs83`00eL@%5)V}F&zfCED4 z@sn{gp+PPIG7;TBS^3;9fNf(wXEj8ZN3h~BT=(OQOgbxYIt~WURfrn)iX3s7S~5(# z417?!>@u8!-z$HvAy&wY8U{7U7?2kB`mia&V>So}QKzr_z+W zL}NBUT8pJHuKTF*3MzofXH?_-xtY=^|*KzH?dgojqEgnksUVLqOA1q)2o%qf)d@=*#|< z$~El+(mN|fyYuv^4AvxYJcA}AJPWM}NtbrBN{f?9%dFCV_T&Y+(@7;f2V=pQIZfP1 z-gVbBaSi)G7EH%@T`b{qd0wpXwL@PpU0ea*dVac&9A8Wq?GmI7U7Y%EO9S&=f$(pov+D#vr)NN9>ar5^X8}!a?>2qoQ z0s?jzL5!E)Wr|S9M>42%|Gj zL^nN5N-=Joi&a?+hpxQa3N$HU{MM94e6c5k2l&zsC0Ogo0M;ylEZGH!43QyCtw0W7 z1)@R&u1iujiTOe&37zI8ro#BD8bw}QN)&Volbi}y&J#VzDb~(QiWNKODW`B>iEhCJ z+xbf66vM6*W$=dRm7>EW9XV*j3K0UK3=@}*1xQ8pogchFsc#q<0slQ?y!ar+^_}p4 zdg32Cu@79T#k7d9@L)I|hRS6;m`sq5wKf{GjL?#E<%qU?BGbScg4$N?xj~ zY2QoWOa7cTIZMQ9uFnb`5qxCD8Sy-Pu9}Hldu3Rj?%+#;K9H15a%9n>Zf~x4{z!q2X*i z@$u7e4xY>K%*8Nw-ajpz2N)~Ia6X<<*eP6qAGlB#rmN>TI%$i?SHN$F=Mg;dc7*vQ zo(7&f@Wx~q&jvgrc;1U=dpuzeBJF^m>rvDZ&y9F?!n3S0+!>Eu8lzaiTjT%9pMMaU zL2W8Sy`SbW@`lS-x{KTkKP2m_iv_eKrt1QT9>>^pIu$v_f;E(y;u|6;q)mAI%MD=< z-6K!x9II1$?_Z{8?-8qmDK+)@^n5< zo@h&flH}kFC~0qo5lzIV z!KXo}9b5*8prQN(qL-337Ktcq6UEbc(Bvi1Y*G!`^ES~KHjNJreWvDm(Bvl2sAWSm zwr(JzBEJqgQz+(;yUbGlC#KlU=)ql|b{fqOtaDRFA9uaZeOPw8i_4ZK2Er zqE(70%}PMXKx%)S8Y)U`D3n0+ow7oD0!^N+P&|Wza2c8g{ck$Wt%}Ibbf_VKM-X4}#ki9~4$ME5BodwEI1;Z+&s9o0HK zQJ_=sF$-4V;@4*~dlHM{+mL$p=t2S9pmL)N-Y1Uz#)%#U+aFoDE5)*4q#HeQBi*U= z7>o3vXEl$M1P`k|bPma@jr1IX!~Y=*7S`0(t>0PAt`B2wE#@5}z0E0=;Xa5DeF-)q z{qPym`y(gKj+BPG@WEoR(c9=kZ_`Km8@(1soI|3Ekskc=(|`YS7<1cDM_@2k!iH7@sm361~=NE{a6U zkad+95D8NQrUf()#A&#?r~WA^FKJIGJq-GXrHm5$ZVcY+@!-fFc0Z;ruTgG8*C~J$ z?n1Z$nrFyT&Gdax$k~+^pgru>r}DrqLsO&hLn{l-puykUC?)+9^@JHH_cOg=4-8al zcq*v{nw33dE{Gdxg=P%BQ>+*||Ev@%CB-71%5Jc37Zd-EfdkaNktZfKrf`AP-2pxP zMi+b|jCzK8s~8lJm~H`dGr9-Apx(~cRp?l&KMnL{pI_IY4{3nElm;h5h(07(D?~~K z)LRPRa-FS!CB97WjO&b8UGxS^qv!o5K4BE;Ll+hLf&Ki-*+y@5?5~P?ql-PNW8s4l zkI_SQnbDQ@-ZAk*KcmYu>sm6F2rBpJ1~#gbG2262JxeEaD}I(tK#GD_%3?d-m?)8u z*%Rd&qyl}^ECo_}GOdfOYO){CugCr1=@KAC>2tiQ;r8Kpu zw59&(h#D-lsK^~4Xw;}fjhrY!0t6W$`~*x(tPzJcwo!u)8Z>BtK~s$tF(|gNKbHUd z*53QvbMD-E<%v|HbIv_y?{oIqd+oKpwf5R;*}}dFCH86I(9a{Zo!umelGLY_9U~%u znjxmCU;WW-5cZ0G5@-xv zu#@&{rAkB|X`PsG`dWF{;>csCOeW?*Mq)47e$1W1>=`J`9?<`Yvj-6z_)tB2UXqCz z2(?P@4nKPYsEb0t!I!Qz3PEi4v?*$(P#8iZK<$Xt$mkZeM`lII_9SOdtUbfbo+)E% z4-8AO*#lN!=ytf-Q;|0qrvsBB!ooI&{Q)s+)&-BqF^+M>)I>0)6s#D2wPN*>wkBdD z5Lxj|t;(wjsEtiVIh#;u{SdQGCY>9X3@nnAoCj*?Dq)!)Sym;tZ^ZF(X)e81#auoj1fwHf-|C?=8L@;SB^494(1KAMV?}FfrIQ-!32ovBvyQ&cB7Ik`LI$uDyby^%wO_l^P*_U zCwfuDm#4>HM4oKwjD{x@vmyvrkjo{PtI$b-VyNR`mvD#P$Kxn9)i9YPtN1x z>k8jGEKe?Q-^0S>G&5BT(;Php0R$raG{=Z`7Y~DB81T1+VaIJXvc{Nay(WxcXeyDs zOr-&-WEPZ2DWgM~1-=>Qrr@vJFu%D}(aR%QDzdj7B~Km1QnzZB+AAy-k~8zHVX0dU zOWi`2iftbL62(KKjVTVU)6lxrVt9^HO?#!XM*5^`E5m5G((z%9En{m$k~PM(WunND zStGesgd$0|zZJixs-hLw1Y0z!P6Rl}8cn?fJ1t_334Th}XeuT6sj$C1c)(DO^7FtwrwG?ZtDSYd&tPz}btAVS%CE)5;gpnCf!AM5JQ;-bv7Q_2EtcLgf zGB4{4aRV~9^NgrsldbiUy@7=4HYVIl~o!0)j^ z%t7pMgJy?4!VWRVGT$-maD!ooSWqnsux}P`CsJH2Tj~~I?ai>m4Hjb%71~y4S}{AE z{~l+?^3j1rPsLT`bB`@b93vN!xDUw|90Qcd#n>_N<2Xu;siecQLXqJH?M1ARa{u;X zKOxe%aHj}aPAz7irp{KWtKEWGCtrY-xp*b=PE#qtJLN?Ys?5ggaE_Te!?4Z-pUxA_ z5L%jwqv4-JAWQhdj2T&q)eU5-HUH77`$wwngX<+pCqHPp_z5e`nmHDjjAbcO>4gPMhGPm-IdVi0pu|BGSG8?62ezTR?R4BU16y0cwsz(6% zO9PQYg3--TeT#*>SlN`U4>I}&+nNfl<(HTqMq!5aumi-hg^Q1@m7!*@dB+yKL*h|G zPIbu6%MNU<%-mLJ&URCDn`sV9(rKx~-eqMzS18$MO71izRm1m~>${WJ_v!0CT$B>s z3;VkM7K9eTmxfz+I8y>mGdfU-&E+lmA~xgz9wjXr&`$ydX=gX5YZ~zgw1$VD{wL>O zk4a#lnU6S+!QbxiBTgp{xvyfg@&n<;UxiD3B7Vta)nxR7Wx{>HAqXirWq`tGzv`?& zg_(WWqw_%c26aHdlNG1xPqnZrmxJRjD=`^&D$~7IQ4|At;5P@H_u<&9{0#8yI`wQc)weK7zaV4EpmSn$S&PlFVfcP^_}lkkCgSST*Ew$uo8IqyhCjBw-=puZ8<>F!$Nj;@QXpg=%;R`>oo6fL6 zk?6`JsD925?WP7sU=qG0Jge$1gbEIOb~)#S`@ZJ<#l!1&ITe=sq`ue{p8Ll;eX9`=jX8$0+(I5m&mFJc&)g&@+zE8DsXiN{B4ojC|jw|>1;}U zj@M@^hgY6L2Gi%2r!~s$wGSD=a7xctUd7`G&3KA9HS~Yw>2gG;p$}}ID}ie02HUGn z=?UA9N1yG?E z-6phda^~fOd3u#WBAJQ~mm2&QT(Vd8eCBYhY@Q5cJ|8p-XeEegh8^K@QR=7)f0E00YLjbOP?Mx4YRX zScOYFS+GF938E;YW?&j~HkU?FEj*a?7+&=)1g&WyuatrXzuo+R?=g2ovCZ11 z3S5;<`zYOodu?z|$+d~#ngGCxg)B8d9yh}aGN=sK*dAr4NH?uPOBegtJPni4((AHBuRwQ=-ty2;JuRHLTS9Gq(* zYe@%{cuFBWNk1c;#3GxJ#Ka|mbXndNe(yA_BcX{-a3@J)p}kj(A|yp5t)%XOao>*n z^dRO^u!$W)^A9_~LAh-j)e}v$iW;VBL{bF8M%ova%w#CLyR0E76@+L z?9z4HPoJ3rh1Fv?FhC}9(sT?T0tI;p6vVOP^v2?1rm(Q6u3?PYaTSLd+6kiqKQU4r z_?cJhiW#}X?;;6Aaf0wA2-&*?gd&duk)d3!lW~GNi{k`!CgKEjE=`09!p|s75DG?N zf;#g{O`IS+)x-&ELF-76j1z=Envkb*?AtKhq|6pSC$Z?#IvWQFS&=KWfflU|Ok;(d z(HAf+9ZpM*jtVqH(#+rmwjxbZ#dG_@k6#@pO*KO~#%6}L`g&d}qTKH0#HS8JyVcFj z^5L1+m76U@nI=)Tj6jrRj6#&0878m|^fv0W{SM5IRERZwzNF|ARTkQZHGS^IebVPH zQJkLy#V@q`aE@AsNuT{Lrj@Xyh(1xj5ZY#wrcV%>(B~ExyAJYG=mR%}BDlq$G+akl zw9X zl`JQ}(i0Euk59Zdv=kE$UQk0!ymr4Z)i}$>I?3|Kc$STFl3|1n${Yb#G?Qf5?n9)I za_K&VUyF60^d2@q58Hbc!}MPM=(_Kydk;%UaV9nT?!%NLnMb{c4yu$6Lj1Sl4g&Tn z-9asOehDZ{k{HGKv23BCeIhrHdjRn0DtYv^UGU1L5Ny*za5>iqJDolYPP*n56yY(^ zF%`@UvyFi;<8MG-2k^0-Rz3$b1%SqffZhA+?g1YIGiW1p!CVGj&b9*X;-SAq-qEr* zAz(~f;OeAOXc?rixQG*b^^h9@Nv-Fxb)mhE$F$$pm0JK0EBOIODjqxUSqRCFlRS{r zM%M>c8;6;Pt!Q`&1GHhU(`k6{bbE=w8Av>QMYIMiGGH13#b%rHmrzWgQB(wt$K4%P zP*MEl+@2(T3xqM=ACL20RxXD%epFHY3SkmjZE#m++PT__l%>M)NpHKp8;Pjm4!x>lku@+kx<|B@AWxFq)8A-?KSVyYmGQd}mK$Lnub znb?9d+@fBras?8j4QZyibzz~(y1G<8QH-RGK_fE71E6baq9Z891#F#+F32z}j(+3rJpDr`TG1fd z305}*6-o>8QA39!!`WR!l3{dfFd0U-Du$=R{FER;h9c_{-w#TJ7BwUKd{7;Jci^{t zeQq&-X3Y2J&fw3iFIRm-k&rX&Qh5?$NNRFK(SC8yiRe*LSA^tI?KmL$gpkayRS`c+ zAbB)~4N#C&0r4Cm_+;|gm4xGzU+LOP%TB3<<_fDSM#0ZwJp;&5=8PiYCqX|zjhcoZ z=dV0|7N~d}x)Ih6#hJ0e7bhx-XMuqC$z(wM#fTpwL>{VPdvA0FTY7P2pl}7humN1| z$2l&ZMfy9chZPuZfDbC7_EO)Ip!0EjKfX9g;<}o?sEIpyaVWCp&V^EMRjE*w7wcx&8;;GgoDkk&8^Uj#=1xi&0|bZ&tqK-#1{nj^sc_cX7ywh&kr@MQU=pAWgzDgO9i){` zlUC(JIT=4XC2T@f71o3T#tBz!=Sd1*gG`2#kAWSlL(i2_RT@InQj!n*vJvWWFK5Xj zW4UTFl?EyNOY}y-oZ87Nc3{V@R%Q*jvzYGfwC&yDI%merDX)~P!Tc(6`vEQDQx+jioP z-Gv>hbvOuXWiNxFBT939LD)ZeZGzx`FLJ8my!2(;*=9rS@w20%5t*XVZ4Sp zsXb0Mhe<8gCz?=#9oNxbHLMw>ik8~Rd7%W&_HaQ0Ap^LuZvN& z!0P9sch0gT<}o_47oE777#ZgqagMnDa=s4d-TM46M8g`ai#c=isCQN><=3L6KCNfm z35o@XPCSF`oVl$PV&*vdxieF{_zXydJ|5d(kLM9OCUJQrHTLl0+=Vu*_K4)siAL~Y z)qL1gHe4Py4*?`-%=b@~xD!>pJ57Huh_VySWx+~b7s2Q_-akD_(&(GJf(Q znvTJUySqU?VrSMF5V(z!6$bQ?yC-mEW1cePATNTE;xFw8$ajEH{=5bQA1HJ#r03UhZBXD{CWPV zVqM5(zK?For$F?WS^cu~=5*S7u`6AA5W(i<=wDnTO6_7q%j3c);9Pa0KFaun40Z|Oq{VX&Sb0+szq)Pu74Z5xTQ6D>JGBBk zwTWAdOAAViGC1%FG=A#(sMn%8Ms8?hMC2&Z0?Pslt9#1(LfxAT6a@o2EJ?&+WJ!4a zS{V#v#t4^u)}5fk=KHV@kyT@PUIjZfeSn|BQgjgiSPvrC22>cXv`W3G*L>LM83Ga7 z@j`n64w#AaaKMmZYMzZ6>}fIWVh3#=(fo#x&?BM`la@n?iV}G_qQo6Tm&lL!5KLtN z(*2y$_%4~+_^`eFjW6rBgY_R{ON9NZNw17HD$qVxkJ$~;WEAnBwFOmB#j6J;?sCto z313s^mivlasYakW(vzk@O*gJZ=e7FH@UUqPzq!<%7_NRAG2@VQ?P=$e2}1w} z!rC)li-1nSVfF?gG!}Vb#>ngr|NLLwcl$S~rVLJ&0&S7DNG40U5Yg;j*zK&Sh|-&c z&#ZON3cvnu?ljyw=O(u^T=E8YO6>k8Z$g@vH+{j)Az?97Sp2o>1|KO=te{MC z4M7Qrlj=x)>KU|;s&Wl~^_X9hB7lu92a1d{P)Ub?#b+aAD*Spm59`0~PFX-&IRx8d zH^n5<9$ZWIuu8^YHk@?|GrC^!A-@4k3r;MY!T7HM8sy~xN4^7m9mpvB=+7rWW; zwqH9Hmm+DA$p%zy7W1mlOkIOiK1@Jl-o*GP)l38rfm3+4m_C^U2{~lMySUqulrrPO z`~S$Dfa!Pd)F^|DOh1rj(;`j?zmZu%((Jo(M372OE}wi(AO_tWAPpTzVwAxpDJbd* za`y11&&hQSoN~-$f{PYOy<94=VqR6sA;%h@gc|}~u9+pa#^aO4aoQ7P6Mi&?_ z2_{E@k2h1AtW)__ICf^TBPz5`uhMBFUk}T6*q2Gl7PQP+iK?0jT!>T61D2s!m9T&% zzH_l*0cWGYt}l|)0Y>nh{e0&NoIol`!yuK|FfEi+!`OJV3(P}+oU|=`a)moFk8ed0 zp@xWq6#HKLNR@&WV#xt&B=B0!o0z{zfmBPDh;xp3Rcy*HDj)V-fVnc~G3RsPxBu0t z2=_jQgwQvI&bORgF^70~!MB`g){MPhFP_+a5V9}IRq@Hu;wt}b=Oad3P4=6ksfu&- z05v~O)sBAWQX5`7-Tlb8xI6qzzwQgRA6z3y8H=94 z;1GCgz7N!)x0k?dp#KOg?%lg=rVbk}3;sSXQH&>1HCE!k$+Tbq&k z3M14MHvPcas)0P%A6~k_$j2TdAJz5E=K7}O^=;<*R&$+Cna8A&^bDj&aUsW`FdIp6 z6{Q`7gD)0@!IAt9FewJpu`uXre4h;e^oKIOAO0b}6BuFJ598kn3*+TW z0vl9YB(OE%s1kr{(W^#VCq7lp!y;qpNbft+cE&Uf%#uOs%5<@nAsi_U(+~g%DvLF1 z^!~=XpkFAHNN{&J=_zN%_+DNz8MEm*ph)#kpK^QywIr6RX0t@{S_6R1B!XJ<^qpT1 z?|sT?pQ?GOU_s1p?!6XR20}y)_Q{vSUq9t^v_~xTC8gD4myFqnBBTQFJ`Jg}gQtX__nVB2mNa`a8T_GcYZri4mAOUvlR@)1Xvma zVg1Hnpnb$Ze{|~JL70bS43a125hPC=E+@g9)M^1e^_QvSUzcZV)!euutUu3fU0Ute zWa}}x6sE2>9JCdPq=0;It_qmjH0V_WTw`6LK78kSZu9FDUa5xBD_2jv0y*Z_pP7P$ zDgln_1st*6Sdiw603T8qbC5xBFudbp2r)#=4bTroSP2;!JuJ-t6RhTXnJmE8Q%RQ} zzz>ZS`uH(U)CgEe;n|}S7Z#dEzbMtTh9caCuO?nX2R4;zT3>kR*9f+)JFBQ^c%w(g z-RUfm2H=}~(=;Xygae*54ZROkmO|5D7u|-;e)SlEYK%a&UQ0r^tImZhV7<0u&;uW- z|AaLn6d1Yz4h&jjLL6%k-vJvj9MoTW8Zw4vM})BMNFC-cwbY2dME*jf7?lkN@WhQx z13bSP$};DWFSw2BmN*g;{4Ko+{HGsAjxAQW@)9@Ovd#kD%V_0koIVowg&)1dy=t*! zCG5kX3(n){7o)V*Dq!-R!#O|Sq&dW=kdz(P6mpNa&1D>M2&Gl38>_;%Uh0m&((vLq z-l83guTYA3$r5q?KkBMPZB1#I38r;-hky2h^Uv*)hc)tF$7_KQgO`f4vxZOl?mG-9 z8>~NV)S%4hPeg)~e(jteGZb9;Yv*max+i&c(u;ES+83SWv9fi26cVh$^BeI8Z!8A}d0gxD2lbRCY>fbo4>!qe|=(Z79=-J;mTY*?U@t;bPzwwXV z0%F0FA;|~+(`lQd3Fi%QXT_5WH z^V8iKjnUX&p~wDmG~uGzaOW*g;PgH0@fc3WHx&(jqC|Y~6F1PD5vpn+KWj=b>Wbl- z!%kcJAZ-D|%ZiURI8mk)sZNSzjvrz;d@W3)U6m z4zVo6X=QU*68__IcQGcG&7R@u=ewsT*?&y! zx5FFGcQ0OC$qqfS>>oQD$U`;zZyYoGKk$lS|KeJ)K=XxpS|*G}i9be?p@#ErN}z>@ zhz9IQ4zJtg-Uiya>SylEmYc+C4425_9Pxs7tJKI z4X&Bap1JYiv&~qPm=HdAiQAZIj+xn8a2`H8)17tNiIvmX;T4n9F!qm8P1~YYbzgC6 zT7S_F&cVVsQ6i4i6E_rj6oGtQB9g@q{KVZ1RbohcQ~0yn+>O?bkyht!tF!CF`&YV) z!&_f~u>*z)n6`73+|kUn7fhQ<74jmGz+RQGRzO5y6#_mNekE<-gztgRpEyeeyB{pZ z>~XabHGEVyt906@5N4}uWK}DCcADGJR7KMXO%4=}*DP{YphJ{eX3PRG1>h##zp(00 z>^dN-H}xAa4HTZcqSmw0b~;V-V~2fVPRu7bTUq1E77?5wy_syKXC++-A5v?lEI3fo z?+U-TGXh2z*l()2)dO734IFL)=KUP?`&icHrGC}{P$iM-|Dzbc_sE1!4y~N*JUM|gy^@C64MGD2IHgL zdtjQWM8BX%%oSA=rMY*$np+5~mAOfEmhLh}g^-uwenu80D{17bqLDA<=V3TGGlkx- zz?+~8RYtl{y%?%T+Ur>}wb&bS??ta@yBu zGX#C*mF-WQ;l?Qg8?9sTbVT>S_NUB}g%*QIbc5@Q8{B{fbIq32Ik>^RiUzY*yuo>C z@iiq|jCR;crMreL7Gou6L}aY2*9{ht#Rg-S9c-#t_boIS>ZERPLs5elWUUOZ|Bdtd(<)&fRR)@317oFn z6xNSL%ysZcG1nNr{2OONUM(Y|5AZ*HHg2OkCmX{|%(x^3lmiXwwj|FxC2o7cZ$2ttG zjo_43|6>)LOZvk*?swOQnLTc~wUzR#E$sQ3o6ccO-S@z~PWvyGQa#~t(q#7o)Z7N) z_~=No?@QHo9X(T47_nCo6MGeLu~(tRUZ03PgxqP&L6T{)hqF}h(nG~!k2BJks!$`o zP7@PPBKBs0QpLQ2qn^l>WEMsSu29JW?+kx;zB|>(KyV=xHx3I%1cGrDi@thkUk*QmZNwfxIu}MGjK9#YLd{DI$Ws_<)t0SWg8$BRsQmGGoB z0ubluA2M=%g#wUrOEW77IL)k#0F)e|@*>>hf=yShg2Jy-2|oxddgSEG@e;_sib(cl z{7R91nlrNzG1;dFv|gNig&$M)RYaVbBNlnpaWZg#;Lb$ZC!Cp9MM5o+BvnBkv(1Q- zIt~hZ2C`3yl0t(i`=r5{qV~3;xs-gMI0(L?)(RQsSS2P#RAc9}` zlp}TV*4B|VNVJX=p`^$W4x_AuRbmt?AVw;*7~v$70fHDoIH)Rm^a>oQjfjRD_?y+J zSH)yUot%fKo$sD8zQV6k#eFS(7znGJHp%wO(tCuuoR;A-X2&QtBs&QtBowGWIJUqC}ZOboHHm4O59uc)wL_UJ9nB^%0cuCD)3{TZSY|48KpGki( zt%{ZK9%DbmaJTUugEXdLiRdm*a91Xe$0cRCsVCeP2Y9^@4&z=qUWA85zV>J!>_5r{ z9&b@-R5HdOrkRxk#;jCp-P^2OqiokB;>x>!_W-m!3J;XWS7n>= z$QFM>HUk{29Ef7Qicwol)q~rbiaH#(daWAR$7I+6;~9i8rgV@Ppp{LO(2SAN(I96+ zGrd;6SnUua4PH+lHL<*5=V?lt-deT#A(pp^)J<_G6YW`bVfezg)9QsOk&(UM_^u{e zgqkqes!uM*F@Q?4T2#I~2?&_ya{Bx74uC+kLA_Z)SWvdwpN>I?y-FFOsK?cV5=Zi) zgJOcsxkh)uKoPmx3p7zQO~)XjsZCVf{3hn&K^s5;y%xr#TE+S~m7WSlZT~TK0DHAG3?0jzAL834?T2rhv|lR)y8UP; zcPCSEK~wNI{t-AQGf^a{T|=~b0LpRr2q_;qI>E^eq#QZ9v5T96`<}S>iPW3G2r^Mb zE)b&YPw+EcS;S%`UFD@YYK)r9405iLnWOj-8Y=w*nv#}iuXG_-<)9NaP)K_+j&ExirYRTSkiT^--M4IwJXOri1@Z;ok}Z|DBoXmboMK~XQUIi{H(-D_p5LB+BN zIf3ST{Gd4n6N_|;w-jt6Y!?F%AsL^r%F|G`@g5eNV92=|LCcgwNSO)`!gq7&k6Zw& z5mn)a^Rek?Ql#Zpk+#IST^T+7Nz`)FRdH>#SdZaoC;bc)C8F3BCG{ZAqVWBPohrNE z3T3tG8$;`QN9Y~>;vc-Dsg3`^JKF3g1?!-9w3FOVD&EmW`$=Pq@0@&tXSgpjeAM32 z+F$2Y>>d5mE5<$UBzZ?iE^rTw#syBSC)UG5^Sqfa+g4c~tQ|W@AbWyT9gJjH-$0%a z@J`!Vg1-)L2g}0W{mebpS{cs!4|k?@84pv#>;A*7vsQ+7CKYThlO^vH}G_ zIiHvegV5HyCLKq>?W z)}!#Rf8ox3_=camwO0P6KZ6z3x~>JG+o#IHP0(NVj+~S1C@ddv-y0CeORhO0nWdKnyib)TT zSTV`qi9k7wUlP5g4?l3Z99V{d4rCi&c~_RMy93y(1f0R`IGf7UcARcU#h>rRkt+zB zaI92C^909)sy(pJs3SDQ1^FLuv3b#J*o{_h)-jnM9Hi1!5qGfQ1jADr9$POzIomtS*iFW~w%@vBU zB}@R!lf~Ii!HDd0Y_Vm3b=a3@XYz0bJHNwT&CctvuguQEA#bnYP;}T=vm3byc{UH% zviagzfe!7!<`M>cMsyNOML}9`v4gpbF?$M+$We#z%pKTc!p=s-b}I`_umhW6vh#V| zVr31AJC(nY;u93kL_K+SG6JPr+0%I3VX1Yjot6r-glL}72pOLhQ9W_oZE^6BM$5`B z1*BE0Z-ubu7SajQ)l0yf@elZem*Hi-*8V3U{-oz^BXA@G!)UCQGwn=_8N ztVuVuQ9K$RIz?}Ztnd{U$$<{ zo*PtTEqvWv`Ak2UpQ^|$TWY@fY_a?XOQu!8NMIecYkfR9D?Lr&VIz4^3WFg{dd?eF)4~Eenbo* zf5aT&*f0dlt0UwH$A%%~kC-DI8-|cSVvcZZ7(%|M%(rSlbXu?&nUX_h$3;#Dh`Sx8 z7m&C=111U{JxPCI`%5LrkIi_Q2o7ZXQzbHx?fZz|&EJS~w3){&w)OGYf$e)d!uEr# zf3{x>v#RYQCT)Ot47{)eOQSr(-ny1YSOmLyJZGW(l7%BogIKt;{nsKW8;@lR?L$1i zM)I-P{$#`z}92ZU$328THd z?W=Kson{RV(-+!T;xL;gCuF3cO%)z}wD;NmEZS6UzkvZX;Oel@z66Jvw5Y))ZJ~W3 z4*5z3#Slm^0QoS_x7Fe-@Px(%?D+!sl0OZ04nv3H zcn&xoA~Os31Dj%4aK#xFR|QY>a5axO;2rlzm(sWdi%aZE8Lp5g7s`~AN88vA{vvrJ z_#i2DH}a+;wb#op*IinJ+qky0?8e-=i=1s`;NR&t!~EEJ55!6N1u%}Cdk=&zqM^Sx zXNAiTyHoyh3mcA6p*b9Yx(uuw^TOdK`t^{eG&{Zou^eo;Pnh*#oa0vy%dNwGB1rrN z*H)&-IGbo79&^VyT(2`z=54fkpxfreCu2a}b4<5QJ;{`?`@TEVx~c zCf96$p_^dp0gOn!pP70Uv3lF3o=HuQdim<{rXqo|uB*~~o+);t4gbUow>vZ zEh(kVM>mB^yewddp6X0jJM)js@Pz)DHa3K+5dC4LlMCqWhQ&g7?0qlZ|vS?eGgGwJ=I@nb*NPbdGTR* zV9UvK`UwN*G~Vyg*L%@aeomi@$RUoN|EBX&IZGVX6pB;YrPkC)U{G`H96Fz%pZ(Mh zR`xy43U!Oz&B;?Uz>Ga)U8y+>P9tp(H;6X3*qoCpBL8z>D>o}H#-7)w2hceD5{7nA zoeO{A=LE1K2y?@lgfKUqU|0CdJozTg-N5Hiyd-yP@bMuO2H{10-UNnBN zp~pM29rhAgjiL(acTmYzXWZUmp2yc9VfRgIK}`%ohhf^LdBs-Y71O~h2Fweg0gzYF zSOAW&(T-S!dBj;TTxnjh%@$rE(LxH^WxVb9Tux=S9>}hYi4@Od$|DV`Kq?WY0@xZ3 zQ$a6=c}|jyR8&?~*VNW!Ci1`faSe@4<0s&(xuta?S{`WVvt8k?K0+UnCI)vc!(a<< zN&+w8VFJ8{VNLUfWlg6He!XzX#Oux5lgMjSZ=Y-4ZjjfiK0#gy{x~OryiO^Nyk;Bu zOzR>EE<#Yvn1NsWZXb|WCir(b+A$O~%hZdDrw9p6h}He=<9vpv>gEMP&D6YXmqW(Q zX|V^?!MV4~G0&wr73~RroXUI(kUhc?)%z#;ek=C<(@i}Zkj)FF-|C}!`2GVjmhpe2GfdQpeh#p>;q@h^{$f6hp5u{m-43&71hlcsh&Gco?PvBy3kpHUb4{;a7=>pYti zDG@bMJ$(Om`HncE_jPl6qvjNXoSSEI1)#V&)zM=!!Sm9b=2&yuv{(Z>69C&s0E<9W z2ES5{ZN@zjRekuekv~9mq8paxqD2yb0$`FB0CVF4U~VJ;=0X4{R=*JzP#|9ziIK#C z=}fH5KEvw~UtIBe$VKFLz@CXf0Wb2GK&eRNEh_7mTvJXXg2$-1)%eHjGs{R@UsxP?Ot-vUChF0cVd_03GO8-} zzE-?1FVc-moQaB5>rKU*<%N~8iZBN$+Tju_>qRodi`CmJGP)*KFR~DEO{$5sTgl*WFlh13091x0+f!Zp&uJ06vk_z&=Y|I(f7GpO{@Zb9lre~#QEacI;I<> z3RB?qcs3w4hrgHwDh`O&C^W3FJUMwSsEbg3ZUM-Xk4t|En4i16#*LFBjDJhR1-)Lw znZ=WYD%B7#M!%a^3lP8RN~d8?Nsfz;DT%|wtFBKsynSSNZSd_8ple@Ev>_D#7Jgk4 z+{-*aR_MCTyuFCa_QY8|2r|a3rj+Kg5%JN_ATdiww0nf;#sv?4hkPJDOCs|mzcevR zNVKNj(^9{oFiY|U<78#=3(3+=#r?vX<1cJ9(~`~-d|_xXH(9!=Hz0f<&OczKi*a;p zoKCXzda!gg-NhpU&)pb*u3-}&k`IZ4=f?PRp#mfyJ1!|H#$g@+fn@yfj9#yHki-xm za*QolqV<$EU?n6*y&)wdF%mSymT8GmYdUJ08i3$HDszkJD-OCbg8x#)aUAz%Ox2to zyNJVa%uT&s*j(~(9W78xb)Bg=weZeQn|E^DP2F$HxW}v3#>WRuO^%Ot#7_m|Yb1mfr^1K9VNt$o zdC_-i8M2{FTPSp z720^KOeHM-Oz57R((<3+AqZiE?)d6J>wl_TCb=2h3CV zM^9xOUbwxO8waBsa{aKm{$ld_T4SQ@j%2#MYhpR+6GGX zL)l4_M$i##q&rOmc9;gJ*X=gfcO|dyHP`!-*9Y?E#{T4u9@UfjBTDq;X45sBOxN%$ zi9}$-b27KF3wXZOlQ?hfQY#2YVgDn z`GG81q#VQYr9H!vE@4Smup%F@V&AU~MIIiTi+sHbK3??bz{1ClBHylEMLu1{zFfsV zT*bay#V%XjL%3>*iilNNUQ6qXe_ zm)aMJf0k^|sVv-RU_rBs9Tg=CwuwuE-?9;6dZGMymN&V`a3A}1Qoc?}MqZO|=7sr% z3g!Hbq@#$OShy(h0wk@O4xi1cNX(w{PcIZgu7Q-lsPKCdf1gqKEgOdrH2}d33Kw&d zqv~vZ!6y^Nqa~sNHjrEig{Dk+Z_(0*#ib2PmNs6?Cq`U6@ZHRJHT#iZIe~d}ho8&r z)pxS26Y*-_pO)FA?@Z+#-_-H^_RQyGg4WOA4bR+ww`X{Il{c?div;cf$w4JZ`HX#l zW2QUIS9ue#*nc&J-g8pfsPIg0H21yxc)rpTeE)D8)i5 z@Vhdfl{Te<^->0pLC|}?^w#jIYOlpaZ$?Hjb05J0c;9?wD%d0!^m~zR;(_pyYVT|` z@c&hNvkPCf%{*X-dcbXAP!oT_PIG^kx-Xq2&BtE)Li2a>1)r$#T6JCuDX}kJVlPYV zs*xsGwcY}>WMQoroE~)*EC*3nfpsn`bd{siI`d<2XC)rAwbpBy7_0hRyy|Kc7(fBM z;=gOXRven@;F|J4xCjRwycZ3WT~_)N@YpS81mxECsO`A5jcxyAojmGZ^{74S*H7!b z<#_NZ8E+;If0~hBn={@t{Q8P;AHz?1pB?mjU71g)H}V;GGQ** zxyUL`cLJO;djB$9*&s<0*s7pUow6@YybN|AexdV}Gn$PZdRTd73GU(E^;EtO?qvU< zXh2=e{6LR0h6PKqHtq219O|xk2~d{r$|htlm_=^K(T! zK%nqYgWQtp@e26vm)o)GS@t)u?clD*`g|_P1Xa-g>{kp>W^?%XIbKU%9;8M;2i9%* zcpW^y(W?_dkLdSqRD`Vfu%;9D9$`&JcG$tTbeE!OY)z4x(qd9mp$zs%sGKe~bGqQ+ zcCcB(&Df`|;}0ElgnhqVT}R*J2l^9>>MVg42RnHy^AF(z6TR$$-48*<3moq824$Uz zf#pdR%2x++55JH{v3CoLZRFp~_d<7)Hw!Fa-XyPMLd1a}t5&hiI9>t{@a{=oOXB7l zee+7(yd5`N;x*UNw#=$)$u}RLBz*I^N!}E^rfRZq;yIJO2{BPYKYyvi6f=tHT#gbb ze+|kf9)8d~`~V;R&}8o%l={_VZ$?2VV&?^(fp6U)ClOpo#aI_ww;l>f_=YK7^F)Ih zAT=Z2h5}f1e<18efdvJz+8Zyh#i%rR7dC;Ym+n+A{am;4MZ7(q+E4!umn@a+B8--syW+Bg^H4 zthWlq*JQnwDDY_3TV#DD{B72ok6*KL-WyOn+v82L_umlC{}XTg#C2)V$>&M1Sn$Ja zP>FZGk&v7Vm0M^__%f9 zDbr##AGq0@QB^4`Se$fU2tPi}n_&OEJAC|O7{M=u&;ONos&#jmeY+RbuhSF8kqHAe zC=8~1Q!#+uv%HBdn*5PWHKP7ToNj+8d|{*4TxLi;^BHf+gmpheyMt3OwR`vTOnt{! z!WWi!6T@|vds9c(*L~90;guV_hVW8&LJ!m3kE-tOQ{DY&qPw3SZFlcG;_fyzPj+{2 zln{tw~*oC^y7$8g>n&YJ59}# z+nwv4BBM}k8BKRu|EwtVkzqRY5k;Z@tSI!6M3?^i$X&Yeh`ZF(Jh@%ETPReuWmH|d zM|J7L!*uDxs!R8%E`2!Br9U0HOM8#FOHIv_+okJ-zpAz<{%ZYb6yU)V@DR@ZtoO!| z1levS$o@?UvfT+m_OsCnvK_jc$Br9J&2#_8n^B>0L*`p?)X-?-x4?!w6m0nDaexgQ zg&U~G#O2sW$12CZCL|r+MVTgGtw@T6@0tKK_cbBsaNh(eB@*npk%@Wt5fihid2)$) zpYR9O7Tw98eB%h%Y?bvT1%Ur4JZFZN)v7%=5!rBt%KRW)gR4LY*U#~qYHotAO~+d3 z4Onz}^jdF{!~EmVUh8$B$h=Q_+3@nqyiUZcy!mxN5?>0p-RjNp_NTj$B=x}#C?+@E zatrhljhdeq>Yr#p#daWqIAH$ZTfFv`eQHPusYP*ys)sbFeCZv3;x*`Y;qZ&s!`$-k z;iH}24E(BJg~MH8{mcUP*hajeRcV3g>%yBa1oqG`2m$mu!-2PY<<`C7p$lV>`d*@s zQ$xSoD-ZvqDqS14&GKf~e`L@cx&3WN3#|_-tS4VQD)zopvG*?z!`{EF*!xb!-oKn+ z?}tX75eJWWMwpr>c}7T=s_5~IDEV(hkn6Glf$|_Tv?TFI({?burM~&n)on&M27J!t@VGj%CTVV zOdDfo4}yLqjGfhyv9t6@e^o|0zm;>FhNOMiJ3u>$9qbl+A!-%JcGp~zHI^a{3T&5d zHGHLps=+(m@+>?NK~$ox3c+Su+c~}P->&t>ySx`?toEK%_~(~-)4cU%U74+Q?Qt>M}OUQ%lo{^ z%eA3|ZAvn9Wp`Pt+KOI={aKw?vUew>$W7*CCLh41GF!l`Ti)v_LP6n2)~!nssq<0Sua zA^9UQbp4CsW4lH&bnQ}r^jx8k{r^VW*E^25uT9O9-Pb#$uT^VwU%&XS5rFF(tJVr5?Zpbx zL*bTp1NDC~eCpj^`(Oy$u*Pejs<12PXRl)BF#qb+nh4Qew#J(d_^9#heQUhe;hF!r z22l2)@RX}yocdyT`Bk*3#d+!P^f-y-Rx{N7+CXNEzb{-x6RsYoDev)GPE*ZM3rP-^ z&bY$BhNYuMv8nnK!M4y;%_)CEPT3HC<~=~t0(GZ)Te+MR4!oxTclX6iZM{5S7moj% zSR26o=33t_Vtd~fsB3*bCe7F1P{icI8CM@I&fTHZl=#dNo9239ZQ3)T>b9qCr#$am zH_3?eL)JTT{xmRI2xs3%w(Dvfu)J1|1A=N~a6m|lMjQ~aq8SGSY?y=t!b;#T!&gkh z0Z}kIa6n9l**G*YAg<5A5eslYfQrTbTYUzwI2%6^5Mv1r2v4z00|$8@VpsS+4E%^) z;d7C*4@d5}#71%a$Ms@~f8ht+h>4ZOl@}p5azF-CvD!8*eDv?^@h#30dx`He9#bv_ zfPphaVw#RPm*ETdrYBb8H^Ks22p^Pd4`2QgD6T!U_Ik~=?KUf>R2ZK2Fms33w4h!6 zcDWIn@q%VZe4#?Tpp-v@gr{Fd$@V8*Ho>4m-BI< z^;)Mfudh__@#VQ0DkM;6P?1fcE%IzEt}rCfOojwP;1hpl6cVTtA%P$i+s&&PsiNar zY=B`%pbm!NX-9Jq-X~REk#ILe=mq8SYK5Q8IW>dg{M1*WXAffC)eqn+5ykmI&#h*M zb~0yUCZN@=hcj>W<7Qo21y2zi?nJi(Gmtb%5`8@oa_phmN{q{_T1!CY^IAJ zSno|qLG>xP>ftIdAF9j8;Yu1;ph3s3l;H{%jbm5J*)Kvae#(U6Kr8ujzr*YrMHO5_ zD2}PzRk{NGCZRYw?!gjm`I~C&xPxX*X%Fo*-?D|XhS5y$U(nAlMhFD1hh7WX#Uj;} z_@%wrS4$ZkdDjo%Rf2oy=)pUMs(p(cy$|(40GtYqAep!Hc?g=#dWBs>=)j^j085o> zgWfST`ZmCOb#NP&hHvfjDzOJK(FhD&XV~_(^!Plc@tLU=XcD3>^jk8eEERJ>CNx4y zuv46F93B0KK#pwW-;nO#jxBIN@v?_n9KaI=uD28!? zWLPVJ8{;;O9tQ|0)Q8c4XR-{v8o+ov-^hkK9A?#2M1PS^U`LpL1rkJSgaS!`Ak6{= z>R>RP;T;FProW8F_d-56*i9N^7lX#0Q~k*(LJ^hi!#RtQ3=l~J-6>NUjU7y9jKYGZ zu2LT6QnWx?Sn@A=wUBqIS8L)L%d02oR~INe{IfoAvvk zZy=IFoK5|T14<_cI5z~n-|Xv#dmC6Ik7lDU2d=t`Rz&C~u?(rHbx0&ZulyuyOhYOzo*@3DME(Je1{JKV8HI9ZXu~tk5 zIO#SXZs3gv2ROt{!Di`sy;WG6M!7FDTDiCQ@0v~zn5pVD6dB5cl6Xht6?$t#;DJHN zW+ANXKti*sIb9NR%nIk->rFX2ypbD(H*&`kZ{(7AL!J$;d93jUX8JM28?!XcG`x!O zM)irt8zp7^3C0_hirFMF&r#qF;tR^ZrQkvY803z`9>N*H?-aW#K#bK2VXPSzV1W4$ zdKi3>*8l?|KM63L%y(k|!{%)O3_w{hQGsvR_l^Li>X+<{N2F0kTjBnBG_-*I5Mr!T z$w=&)@8B6UG=dSZt-k*gLn9?WNn;Uw)LdS)Z@P*|cBH}od>A}~?=$^sKL@nN1> zG|UQ2U=szEK+6Y_4}~R4Zvxa+%TqK-vDY9%>ROfB)BOa!62nTDHr);vX3yThG!Izl5l1A*x`z?Z@@ef z&b`AM->9t_*op$+{d;2$0Ut2%r2jteXw4zBj~bqcZRF&cLt2M6hlGc>dToQ^Z;Enq zT&y54i^V13NwI<;=J((>90e-jv^_~y5U&`dcnK?rt3e7ZO32$<+6v+kc)%k3>av0u zBybX}ATaBRhFt(5Vg*6au_6>Cd$BLS$7>te__6VNO19P#xMO(ZhpG3F)Hk6ahQccs z6ab5<_%*56q@x531y}~*mGB1-f~^#XAvsw#53LF*lh{$%JkrO}=CPTOBA6KbKssCp z6)@Okw#;8`^T^MpK}>JcrYW7^W%Sr(BVRNUcA*cz5ZJ|CLX(TE9*Kzs0o09&WhJyR zEbXko-T2B5wIhTC<)Y3UfR8WY5Rz%X8U+c?CvbKdY9OQjvKDQ7irAat@a<40I}5&OuZj zd>I$D7}whOW9uyP#awHdE}d(#JgCJM1XaVH2 zqS1JEY|#fXM{q&+`;|4QGv~aTX0!&&f-=5{CvV2L593~P?QRQAXq|Z5Mx4+Ji><-g z88~uLuM9^n>Q!L;=VAQkJD;|k*%zo!*TWA*dOq6$``)QM!h%2Vl}Q2VBn708I|ZCF zDhe=)_uSHXKK#*>f*FD>%7X=P>N>fyBEu{8_H*n2 zNX_)bLN8cCbG}_lnv^r(DJ;jRFnCTnr|#BDf*ItO(YMp;cA36iSWgCHVRg+vu%gKf zFJRzg<{edjuW;$6Lic zK^FMS3o35O6@LUp8=3h>EB*^PWLULnt!BNrBpU6C|4CMHN3r7n$E7XsacksdWOl)^ zTJgUGJRxTF9Y)th-loVRs@fpd&Q-XY^g2jbL`UOwfEhiw4W)HmB%JEJr6Juo+=Blx zF~HLkBEG_}1i>H!Ja9wO0AH3cz^8c|Vxx?GM~I26y(J9rX|VZG8Q{yP2g4=m)nR~t zs~Y#xUI0xoa=WlV^1$uGk=tkt@NdztE$F^O8sHIPFeZ5}D?K?Is=)m%Kc$8ke|Hrx z?{}|-Iuq0fH_I_@ksoL3W{d0Lfq|*_C9xIPDg}4EkGF9Vl8z>Y<^Ax5kELTv-Oi#4P=z!NWd)ZkWId{$1hu(v zg_)5MML%|h*^`h`sE}r<13qf64VY&MLc~%YU{*CW3hf#u`FXIqmCWB1r-BQHQ?SRd z5U~D7B#LoC-;F$KUlHjEpxcF2KA3`D2v|sEHeK)^VEB$VV@kmPQJ@O)hK;EG5ULQV zl!I0)jM7>Xu`D|77J1`-2-ryn#B@&i8$@swPBMg}<)rZ0sljkHr!cAZUW~!jlpVp< z;k*eJVj(6s1Y8~3eeq99Yb|5*T3nK0D$I7`LXs|ys$Kz zJbw22*DL0dT){uVUIecz)rQg-W>j8_#{|R_yD1Ib%2;l)xehqF>%~}Y(b0>sG|TeNiTv+M(IVc=Zh3eO+l|f%Cv-zGx%^yg#%7USed*)(k-?NL)I0=YdKK^2d_*wgrEGLS3R;T!B#Pp)C6CWqjs(r5HY+fK~yhpFp+wtKuc^Ng{k=HAPY?? z)G`RPn3b&yOIuw|mQR6JjE>r;VEJ(H=sB<8|;yuFEWEHmf3843KkR7=t$oN z(~RDypl>vgX4=q@rt+_pLnQW@3Z_B2@DZ&p#rs980cmQ6wZ5D&1f)?5ezb?c9U-yy zm*VrHRXUcii`V~B>b9#4D$bzwKYib$$r1m_eo{Wj&B?yhG_Hr6|H-Q;T6NUb%G6^A ztvc%4Lz;1BjMh$=CtYzR>`tj-dfl^;;BR zLPQP$OpT)eOlFy?7C@5aOOm=NYxeNm%7A?RISD@BCv;ctEu(tMzgtcXYMk_EgPVnnXTU+XhKoH3A)n#ol zkf0@2BI0PlfSyqOu`qmI9}NCMKc$U z3C+CbU86xW8#S8Q@S(Ax8B=e}XvS1LN;I?Vm4#-sE_H-x2KgGVdN16f_U-Yi^V{x| zG#&8Tr!tc|HgQUOHIg}e1BbZ?$zb0TCb2;>NOW)eEk}xEHjf6$EEpQev}h!QQ0;TT(jq z!P;Lz(aFv!1vO4E+<9%OHvE3Vou*>A)0BWa6E)nycI1hEQ)#%Wmyl}qs-qLXR-GwO)!I|b=X zEghW5Mr#+4j*Ooy9{Vor!N!(aDgFMv%^=Q6L=#tIA@h0&O=8 zUd3QlGq9g~G7wKjf|U&pR+Le!Ejx)vM5~&7RKbc&6ta=ym6>>C+}|zXh{lP-a%y9^3 zhF$(LFcQyfvWjPh#6&_7Q$|SG5mDS88;|Y6`0b<@sA)a&>&EYjM-V(PXc| zkX!Z=q><5yWZ<};%G}538UC~`-|6xZN!rh=Fz;F1`T}ot`Cb=duIi|(h{B+&bor-r z`E&5^6mg%Kk@=P?J-^GJhkx^t;|0;;r(_;emrv{R7vSG%!8}|&GxKeA6^Sg< zI7?ocmv>em!zDMW%8j!NZK>+Q&Mm!nEBBg0TWY%Cq^#YPbFVF2uj_(OfpPIUr|_Km zE-bU@g|^(1LivWSJd|B+v&sd98%> z`EB?&PHvtT-OMc)pGV2!lk%5mehwytcqSe88bmS4Q!~W~4IZ1~At@e;S3F>K*D!u8=eCd1^6Ea7+c~Z`c$_>gLnn%9Tnp71lp2mut2&lI} z>QTt4=SvR0mdRx-!dZbLh)#nKV${AtA5_6&oFgcPKsP8R5uv4fV&7fGV%+YCVwF;i zJXJkSeRo(^ozB!(%RMsG_&w?2IzEDqa(G0o6hmN~!40ZsF|J;t*aRsi$-<;Tu^w(< zF`9)@tVN2|L{EzqYhp2~Qz$l3ib>9&;-_U;j1v&WCQGrp=xKK{r(w(FaV)}Vh$3xL zBoh^pB*sh*)?u$^ULlKjumIy*qSmd+TrblTJW~Nfdx<}tkJGt&V!`-v2jTcZf(kRn zLfzsHV%>u3%pI`J%ty&7aAz*>cf0m9=D z2na-D?nImYaR=M|K_})8xM=i2i_gpBmfkfN^A1NPxQC~Vdw9%23wPk61!6Fd12c^t zht*Duzqu0`4^ao!LkzjO6M=1eN!|zC#xR>(V5u3CY<&{%Og4AGPoq2Sywhgx_`xBo zYZ@V4ik5a+L`%uI7D_N10wU4j@={x6p4$9S9~M{h_G*yxU97uMWh~n+*Clu`?!bXm zrKDmI(4D+xav%g&P!tHN5GD#6xpXKVl{-REYP2JZ0j8i=NF*vGheOaQWDvCIgC7e{ z#c)-Cs#D?{x$s+M5VS_lAUJfye10nlezIVXpM5AjZczCAxFhIgKK=`iRY<`}oMnYX zGU#;Z^Cb;b5{)bo!v9!>6r5P94W$iKqYWw8gRfdj3PetyV;xDKtTaC;+@Q+#17e3x zpcDS!N1w$+J<07|R^~CVGMNy47UQMi{theGhLr?>GK?)rd!A0Ci?L?F%p5kb_JP1b zgt9+*`rxhbC9(>JS6%5e%#5;G;*}$$5`5S7>G8)im0*V&X|?`Ryec<=vq=-!g=nfK z@)bBK&SH23sRU=}SC6p$eY^^P{n$sLV%17>3 zv>x&C3K;~QSiQkXf1>b&xk9~nD(`5f9yBi;>>WLPY(i6S@M<2G22$)93F61hgGHeU zr<7j66J~(@KPNggA$TO&RcQiZqja)CM3!Lh4-=bkT!N7!g=U6ct=@3Z*j-i|d=+<6B zOE+|Phqd=(ul%OuYOZ3k31N4v1a8S(F(m~qKug3AmC!#{0#}rnVxeDJ;Ep=}-SL#T z)ccNu#04`MM&cq2)~i6`4!bbKR1L>Z;*N4*s7^^-leVVshT$acR`G+WDdE+NZA!yP zTvKnb#4Q!0CSQ=ars80UJN!N-Q*W@u9mRrDRVK=cTUA>Ao~$4>Vw5oQ_b3wIcqc*j z9sIG9eFZn+xa=FW{!&GAqSA2vq~<%e^f-t4+7V@6-_WuzMfp6Yj64HFzp@~0&+b}y z#R-tM^Gkb}9zTtCo`Q&@2rzs6G}^hP+E7}+j#i`X2Jkf+?KL<>l3J`Ma9KelFMf)i zi+r{;pp;e*1v?K|iR87^W~t2P+wCQVxQ%1cW}hsj%`O;Lww{)ht!!;p=}Cvo!}eKN z^~Hak4jatGw4%-CN3YG^lZ9pzIPYbOr>dkv&ZUC(y)jaNs?)2e={na!b zLtR~?ZNv5w{^~Z$>$Q=|xWis=F0PAdw1=N1c~%5l<78$O+IR-2JiRIwAa#(j-up@0 z{n$k8+8+%m)e9naQe2)y#FF=iMp(w}$iP3c<`2F~L-Ov_xkaYr`GbY; z$g=m*zq2PCvFuGl_NL3qB_{n*2w(VA3@3bN4#zSjdsX7yV$eB8#$~vTh*@$3;oB^# zt`WW+rIGOjqsYdkj|>|@fE*TllP#s4+f>{x6{}+}9A5mJ zdZQ5kT=eDQOZeN5rK>6bM8aXXS6IvEvI96{Q)|@yiKwG&b=a?4MO&B1f6m?#ON8 zJHYz``^;27occg;R$xoqbHWEGj1jaL;5m{Rn*|Qd_acRNwZaH%652T}-_*{t3FSNs zpDf~tJl2}C=hxVHD}Jra;SI>VtD>$$VfC#-Ag+~qp?O7a4qC|kb$EhV0sskc-5Dya z%6UgIhTu)+T84S>culWGpR&+iNjX!U7m@(V82l|-cgNRIb!W#E{$UZCu4Q$X@+(TO zNTWp;V1HZZJy{Dafeug4&RQEdB4)DQna2m?)uO`7C?sh>Yw)Y3kkAPXCmKPZ(M9Sz z*0&nq1I^V%err2TD~*0ThRm+UFV#Z;ROMYAHg2VmE0nTJV~U-sDFP}=G$oN{aWqYV zTlL6I$wzI81?j?f)T7xLunZ1Z;p*bHVwLw>6jrAgo7*-_uJUGRD! zLj<9~ zh9Cu04hsFRyf}*ESfJ1M+yKUo#Boo{QAbRN%FWNh+)i3fAduKSrcM&Yz^AwxYX_JQ zXf!M)!H-jUopY}pIz80rYMqsb5-x`exN6AYGchvQ`WTwD&_-ZQj&Dk>b&h&1Ux-(D zmI=H6Df~=wvpAqlMJ1JB}v^0W#|Pa9t5> z^fOO$f?y16T+)7uepvOHbZ6~WnL2ijh1;3!;nL5fuV|8MS%*(`IX_+B$!rb3{F(HW zsvFnhL9Or|MA-wMN#Bj{xTDJXqwuNErf)Il`!BU?!w;TkH=yC&jovBv$SKXv4E$R2 zc^khTe)p#ITP*9N;bXU@KXLwx{~m8(+INGsKZ#uldVYyt!PH>$AzmF&9|AIUeXGNE z$$HVi%!k7}KbQWXwJ!8;PfxOL3SV=3y2Dx@zWw&}N3D-P{KD;N*Q&eur+m_aU^kDM zPloOt=~E{?zz1TZlDIm;DLb&Q4qWt;eRbx(@Zvkt2cl~GbhY#DOurqC-+E`dW6G`< z_(&_Wo?M^Kl8(=*%IaO2kA}axGkv?iA^tgNc)9PQ;eq|$H=*rr=HuamccoWZJz?dR z^y1bHd=LgI#fga7SCf)o!NH$~mu*RZsjjFu!fAJ>&&b>(-;nZC9dg64pBS zf5Y_W(^KdFitXbCxtC3YtD|@xWG)xrIc^cDxiwZ53F<#?4B!0u^!(``B2~gO78OaP z4<>(Z<LIPnEAcQN~``}(-IpsbS1;QS)5Cj5AxCBhN z?^B>aQBhG)QQ!*_JOQsSiYRz|LAeza1r!t%6!Cp}W;bkt-`{(Gy!X(iySl5ZtE;Q4 zt7~SK_~~@@O|h=N{L((!R?IpyUGl@ea=g(DYvhR(<bzOX7v@muW~nh&fBj}@0HDj8r3S)!ir*sTVZmB&kzN(%)0Hifh0XbqQ#nP=UXXSR zOXiS<@% zlr*)())YKf)SAV#daJY#v7O(Xs6T+^S!oHx(D-h?vft0p3~;0$*6KeU%ANF z;7qmJ@HVHvc1iWh%C!el3-m@1bBeb_48D~UbBH&1c_Y3Yk~}xW(FWp7V&BM^|E9~F z@M29xjB)t>U{{qI5jF2ssbPF(H9!i_q#{jIW%)HFa9y z31Gj*;4=knSF4<1XE)w0*@RUzWVe)!Z2E4gUc>d8v~$Ic`fQAtD{j$eL$qK#0WZjJ zpk2GAIrZkK+*KNFDAj7MhWb@Njh3!`O-gOS4POns@xMx?SlgHq1*t+YCgJ-dP&PbG z+bg7Y!qfCqg)|f!qURn}7Yp}rT?DPn-j()?li~khifpWD*uV+%&qiq4O95WXVNApevj9s^TOj~dP7Qsl5~Hgn)>i< z^}belN9b9cULEqhDb>B3Xg;leQ<@0MHQtgI2+z=?Z%O@-oqtQZ1&#dXZA^G0b=WI) zz^G+=r8+6wxWe&Sss9EbOfmOxw(ONmchlw!FWM(vNY}Oij>F0=kQ>OM*QR5@2OxRSh=p)H2KsIk4lpd_cXSXlZfj|6M8k4+9Q+3ZVQMEYw z(fA^&+ac_TO*G?>)CV#;bcoBS;@TnUNkLdlkA5n7nk?qMa97}l2K#&q_CDX|nj%%I z)6Gw%w}fR>armxvyLMRG3S0j45t!QSv{c)pjvkUH0UCOlu*BlOZ{T@Ksy6!rL0dW|hq zn`6j)RI1x51{k;lV(*mevujpb9KZ=#7!wD1b^;7aP40)xrQZLMPGGhzj!NAirqZK# zOab{TLQzDNQ?ub8H*!J%&ST8>N0F`62SDUrF2H5jFo>YLTOw4DQ|`4COgj z#n|wgFT%!V+SgJOF3PWQN>pwe@bhQiVF7 zgaGEy(vwo-`g2uJ6b=_0m2O78$As@lRr@U%7Sf@Us(twmh_K)Br=)aA6@NUPJ|m@* z_mq@aZ6O1vq^H2d;_oCASx-Y$bLiA}QY!s%TB-#ShI0_bV#+@wjX=waGb-Kg=he#N zXQUSYm0B~JaY3p@Kc0nCHHR>(hKaEdF<(|~0&te->P5lO^%p6+x4R>HGUi}6> z2EdEoszZgxcbt=&R~u^VIk+%$sPXw|mWs~b#nR^UkqI`Z3ExTew8{2ISIjd?oU#8P z&dl#sabnu3)a!dyAVa^0W3-Sae}C5oyfctG_r37B+WjCEW1#In+!+X-l0!`64k1n# zJUP+q@Rc7h>va`5KT0ixdUJl-7j=$HP?&3~VlJl97o``PYg!cx0$HLF8NS2BavM_ZH2(q_ow&}D2EHET(If08E1sz$>A z&{elSl}`U8t-^GRe+GXGY0J+zK)2C^Um%YYKTCD0Ey?YlrPqX|oA+FiggUA@i<~x* zOEQi76;-y+)(8QGOemnaNU$P zU>P8~9QyO7v{17h9x;pYsV3l5;PwNH$E}B9ZpAZyNNxe9@x-6-5SLNITX!vn=a%#) zcJA$4caQa#w3TV{jHUeBP;r>fzahO=x1rnN@`T$`D=_}lZ7IJRtH*DvlSPj=YTr<= zmi0ZiE^w7Sy~fLWY5Lw!Vk)C+_OJrsF-jBI4D5%s0^5qLlgQRpBYHt(3-7w*mFpRt zK6+BmHVbnqy2P-SLW6a`@R7da&WtYJv;8@KscYd`pw^zLSRTs;3k|lYP}q&EbXy}H zw#b-&*q(nRb3h}b5yyASg69Um=-xHl1-15!h6g3bN3xZ7@>;l)?`P~~FkU3HXOJbu zv4168`W1w*dh%$)oAh)M;vCbS6H~-}A_;L~owZj5iKYw??-!5GBGUk|4$Y~-o}mLn z#T05C&j$TN_igcP)tzX{oCLN}_@<&sP1aU`g#ESHK!6psSZ{&d_>IqDaYcfGH5Cwz zc;p`TNZqr4qtbJL|80!Rz(3zm51HX0eVE8b3Ma^%#O!f%)WC~iI9O4X#PZR#;;Cd- zAd2NLtxaW4WaLg|CgBYloyszWH)&xi8^_jhl7{1SJC(H(W>>VV%MR#;Ep$Dd_0C^? zi?@Xr54VwW!Lup43Y#0=eXf|6t@rG@wU3H3m|OoA3a@0aT>aZ9e3il8zQY%7tj`)) zwW$~k2l;x`j8TI^xRCQx)^lz)6oiNMP;qNkxQuCDsm~_Gsk8Ug16b66wT%1vCb&Z! z;UH~lz^skFihwHF+HhPB>$=utSi|kATqGd=(SRA#o{oq~L*yn3R|&%ovShOC^cS`0 zRhTwn91@xoUY!?pW-fIC&U>;bpoCpXuRzvcSCUgtU7i~m^Zv1ueDatgodnRMisewYsT?d zwuZ2WK5od;8=O!l9LK}T{Ko)zAeg&R2F~Vdq&Kow>6_IN^x+Zk3mhr|{B!89Qx79+ z+Fe@$btDM(Z(%}qOopeP$6$GaXhk!;UDgbo~>0_<{w^#h5fpb)fZl)qqxR3 zex19V>I)Q=G7(io(X%@uZpz4FO&k1=<5NKvv!zuXG3L&QFJ-Y8QWmN7#4xjPEp>*S z6{E75mG86-jab{bN-@&eM$FVyU+HSPaxSzd?GmQow!G!X-8nfc4zB?PUAEFfY zxhBk>UrAXNRD*>2=o!`mI2Y-dG4~7(-j1ksTn_6HcePRg{c>1t6gaCYxHE_4ec7#*$YnD-LrGlkO#%X<1mKin6 zeNCCMO;ydui!LgC!#lgl_UICkqDmytMm@1sPZ7@ipHAwr$>w^(CfJ@J+5+t z(#c$w5m&hvNodA0+WdpffDFTPtQE~7-^_fDm3D&eYsLmPsj>+8fzSl?tylPgd=rKx z_AVW6#_C7ewd>88b3|2r#=mPASw2+(`94=au&FA6s>V%ZEm(T;2kI)t;hV}k6sNbqGyC`H zi5ARLWyju4;?EYWNz|atT0*@psS6y70s6LN4dO1SAdDVOYRQ^faJ=v})Hbje$A@ZD zFgYVL{9ENk;?JRUo=UZ*Pg^omeVj&j`qk89+iHU3-6*3K+tr|oX~4}9?flmVpd^R{ z)1_AI%czs=qdfLFEJmV*wWm$_EG6wNK6aL*b&x#sD!D$K&rESkB1%hfCT5JQ9E!SH zS>w8@jlqauoO30q#>Vg#jWw}WQPR2B#&YSPi9P*~e5|ZyykUNIhPPFTi1fFWr6xlx z`o1-B)rjKmyrl|vnby0w6JDn=RyH-I>d~ND&bR5NmG!v8VFftMAe2|CwrptTvcY_l~#Z1249Ev$BkZ$vXKj2*fDqP z(Mo&4^pPL5=NaK`MF#_=U}$vxuRJhAkwxSsS(`>;-jlvz}~E7+B+G zpQWAR2RDxg@J$O_FKF9l8)Li~Zd~Oypk?h?dL!-Z z#pHxmx?a#Eyg3fXf(I`?PzS()M+e(suN_c9*jl>Tj*ZEvR75T+P3L3yGkt!dmA7Y> zC_DH@dp11fpxQm+frO8~RvnmAI7CVZHX%y0Pj_JHO^#P_dt$Mfu$}lN8e>6}s_U_h zGCQ)|Dzej8cP%K;5gy;2ExoQI>)(94s@!U*MwcD_>7p}{`KfEq2UO>h;$a=*PDGfg z80LY2f}Z{FUF%&mty8p$5?t##^hqZc%=!n}@t-Ea1{Pp`xWhQ0GkY#dB7&EdM9pD_ zm%Ruca=XAM-$p~au$(F~V5$s6O@BnLKO4HRhZ<{>j)8x?eKmI%Bd$!u(NPC((Y1A@N!Qu}8Q z=1E_&n2+BA%V-?!ImRz7o&(qMHw@R{o-9{bLuEag1ATY*!~l2J?s8AokS);mSVi)^ zEJlbxl-Ua|&fc)4K1O|du{y%n6-qDGQ>fe%`_voAnTox=nO*=(@Agqyy3mKU7uHlX z?Tej)vu9*KmR&deBs%Qu#lqE$!z1E@v=NO_3?1yp8b;0d*M7J>&7(&BSx57o`$$~$ zeMH+W>S{-}>NT!-*s81hvqqKkdAmRRxRUV&e{tcQsaQXN%@@le{lc}JV)O-B!wuK+ z*z!8HCUTKJtjZ|Yb3+rx|JWM`3O9lLy%M~$(^`k$e)8z(slhB;I9l<}U^Yr{eyAQ^ zd`Fr_ds0Sw7I1?6H-H3B+tHpacc3)2S+6y{K)(A~ntt8weKh@kW@dZ1=ZXu@uKTh2 z3+d$jY#$!xJUN6}#iz?Dv6g5j`2m(lBVt5Jc#@0{;L+|g<dc@);dwSb$W$hh!fYr%5F;j!Kv%}f~$2qYzf zD<}qc+0LIPWt5!hmwJPib7t^fmDgQ%dfW91w7{XR+ zH;R?j-V)v4@B$qi#fICC@k;ge4Vcq}e4Wno&PM(=nMZXqt2BJJL~Z!`CJifObu-ij ztAgjTzk-rcr<^`oM6;>E-V2}evjvGih8ba z2s^N8F-$wolw#Jjwi-E%k59mzmA_R%%Zph9al_;EN-^u$;0m|lUskBED_|%K)AHa=$uqCel~R^6 zM6KkjYYeY0e#9VRYR~ZlGx8)KD3DuyWR*e{HKB^0eUAf?3sv;s_czrg{ECK6WPSdB zkC{7(JukdSpH5;e&Fhw_Oy%O$3cM4JYoiN!QWHwzmO8HaZogbtgQ*e5oSPP0Cewa?2!tz_* zn#n;Y2SjxY+`;;A@^UZ?g`S!+t!V49<|^xW6g{^L9E)+;2IF$>QfW$ZwYyY>q|f?>=M z&4|3Ugk#!M7I|X{AF2Ud#{=jNyyk=qAd2T+p>E}@!9SRW)uiHvO~W1z!89x>XKlov zXVZt}>>eHxt~rz0GhX77;ew0FMnD8T_+MfxodGXt4Vwuwt-fma&j_4vU3?0 z1^@9i;OZFEm&X2~NJHnbW{s+urLFw%srITE{p8i>Kq)?*$NKZBHk!|x3A3r!eAWoF znJ}MqO@4z*I@&(PpIeIu3Up>ZbKMJ>W1GZaZ{q_*&mR89p(ojMP|XGGEtuwyRp12w z8x;w7%a#`nA8@h=SKwOCw5Of~?vU>cPSA=3^!bGK{w5Ygbyf2^>23zTL zx|nbhkdH4e3Kfn~N~rd7*08sVRD$Ygv^>CFm7)QhK&N8GSE>YqzM=wOFj%aVl&D=I zK$U*^WZKVCY20$=FjOOHBGWr8llCrWEt0AZW(FqxxSVBJtI)EbS_u~Nc~q&lq8?Ki zUsU27Q&32kSFrkJrM{rA)K@UExG>UEeMUA;ZHf|@h^Z7rAw|#H4xGMW%E$wlsuBzo zjVo2gm2%qAxDMbBnCMqU;h{b&n6VLRqA{G+U>9I2TEQAMtAgf6^`xRwr8>i{IXbOi z`DInm+f<|47O*Cz$_1%{->w>dd%zu#A_~zFWe?IlNMj29#lGUH`Mxn@iURp1#ew`{ z-{b;$k`l-(E*Yw)H7nUYWxO;0!!@ZB(%qdxV@rYmvEHCdLwiuv>Ee(_584^9Qe0eA zT&>;Tsmp9zr1$7BXoZ+rIU8=4d3f+;otoa|65juPvdiTkr_-n)}#>DsT zp~6*cmbf*BF0W$gwbEh@DwP^Fbh?(YROeCFT{83^M2*K(5CO zxz0!6M8JHW1Ca(H4Mr-Oq!fq76ir?*z@Qrrcp-$#^(+Fv3K)7uq1DWnx==Fc?nfin zEWQGH*wxo0I=Py4X;6z9bVgo>JPCR9s@_K(*RT#{el*oX)3h+kQsjIg)+5&=AA$7W zaNYzCUl&d`vUr@8AxM0#su-u$Xj#KJ&6t;GoRN!ViB^yYF$c?fmPEJLuz0b)Of}cC z|I~@b7z!%GkcN|KJtCP2#Nv~3;|#hC)RkhknaFeFs2Q<5F&IZfh~3kCHQM=PpGTgJ zyx2Exq+(RY1&xK{g31)*G1POj^?V$?PprA&2H;e{wQ3l2HIb9Bjy*y%*0EQ_mhseT zJ20$m1JFt+02^K?48Ut=t7#Net#fu z1e{(-rh3{&+0##>&--)wk;Av|n293`$Aynz)ZYtyt~U|-sr23!*0fdSNfZbu<8i`m z02)^dFV4@Bz7zdp3QI;QkjO67*P@M^Sw^#u!;~Uj`zvE%U4ptxsIMJ0LJFPR%rEZm5a9$qHXNB`Q;e1{=Ul7h0h4Urhd|5bO z5zbd>d6{l?xMFQMUl-0F3+Efc`IF&%V>o{%oNo%}&xi9Z;rzvLzBQb`63(}W^M9#1 z49s90*PVPNrMntyn=7&y_37FcHa|9{i9y$n&h2Ct$H2m|@Wgy$$B*-kD}pxxXChcq z+))!C))-y}cg6ZEBMVDPm0~5h1$|TK@bj#(6D59hM2PcM=O%UUmN^AN%?XAlmZ$Vz zlAoH;^;rGq&-S<}-5m7J{4Pg7dx2)IV@7JYn;GIFUDGJYl@JZ4isi4d_w|&zi+Rg* zx(Us-wJt}_t<7TO&5?7pDJqU=gid!D^;|0>&XG6lNL@fZSF=ccrJlCX=xTI4!65W1 z4Rw5sUdmX%!f6{-b;EIt22NaS(2zTGWZG20I#Gw+tbXh|z!`L|f;BSkHh%k!aQ*5N z4`tqZsr$r(-*qj0w)4MJYtM+!sXh5Y-P~i;bPwxje189pYfZ<#`%5S9lgY2%ccAz3 z-YfofX2tl|zx-{*hMz`FU&RGvrhU5^qiMTY%h>5H4Z2P=VmHg6fA40w@&Uly+|kHA z%s6O-QaZ}#FDwWu#f6iU5jZZeSmS(SjA17xBItDV;A_+cDRS(EP#%di3aJ$m|HE-Q z(U!NEwX6`u2r4%w4@JRas=;Hc!Q8ABMd6RH);qd88W|z5FWeA;zpe(yVzlT1GpoUtYH-(T@PpOhIRbVh>MA)~1)y&f{A9Hb zZ&ZViR)epE;X8JwoC2`^XyTC-P_9L#e(M0|Bv-Do?0WldJBHO$q zjCTh0eEV~ISi%h=$~REQoy|&I6ts&J^uvthqz(I7MtUxa+^>n8J|)_|*L5?~5!@iV zj6i#|Whsf69Q2ujHtw%$21Dz)8g*P_G>fCvZ81};cUbfEH_@h^x2olV477tzcfm{( z-eIY+ItxD(m%PgwifI;l`CT?xY-^#|_gMQLe8X}L<_W8#Q~gBb(e>qkcRCF^zI*vb z=LR$a^G(m)fyP!E`yTsOtHxG?j_+bGQmk69!Q3I?FsIAiH9p=mu+@z}BetizstpMA|Q*%*TqrzoDEJ1@pPUN3Lv76LfWT+`>gVWMOp9gvmuuf5axy z)el)Zj+p!12AvPp^U;j|tE}%Vz_XF&Ak9UZhcq8)0n$RGMKt9g>ssYrv>4S(kd~71 z3)Y5ef6UUvDXpp5$8322W33IkKD-@^o`pODuLI0&bu`S|`2ooPaJH5qMcV5_J?pA4 zef2R5l`U>#P;at)wl$C3GMfL5DGS{;REv`6xmquVdxtd7hCytvMC<-dmTFo#S+tJgXGDmg<#|%+JvXy;o zfSai>-Tah2lD(z9LFWd17CDqbcOE&PC+nb@X3$%InDw?q=;qA5nwJC z^s9G-wHA>NIsyxZe8&--M99B9!a_-l;5zpOo)3x7X;DY&^%?7u6fKJtTK#jMu_w!> zf}dGPk0A9znugRDiPtGeBasG#;S%HpNMn%hN9u{h@pzhq=iBdtO5jX|(BIMwJcLiB915{#D1TC_*^qiXOv z8grCASR=2CK@BM-cA+CjS&yu8zdYsxGLr6D*_7>2RQC&W$ zV(Kw=TWnR1@D~45vxnyYw;inAcv~A=S7B!ZaGs#;r||C1$!}Q=v0D#%|2TU%a~JwG zM;kOm*9~RP%ikD;t2l6monXC1V^4bd1nVLe^rY)2Sa!P&JvF=;z~OiixGRY8IdGpZ zvMNuZ%*DdR%;&U`2A*Wj^cx^y12_po@!e@u|6m2~rRPqv<~1VIGWDRZ0Jo388}HSk zV|=yhf`+;iwa(h#zEa~p;BcW>FddNB8M=_?6rT0mx|imjVmYFz7rlInwHF8WqRXf7 zKS>l!BiP%Z?YiD{{xr+0 zu^Mng^g(-rGjNPP2F%52M9z=CF-WQv>RsVG!)gg-o4XoxgftUr43ZD2CsKPPE0PiE zukQcPQkhEp5(fAh=_91qkv1c(L0W+HFp`2a1gSTY8>ul;9VCWyt(!sj3DR1m8Au_d z2ax(9bwzR_8Ic&$O-$wz(lMmNNUwIKvEQ&oNfY{MdvGf9Oi0MkkK(>%m+Dr-O*t6pC{SV&wjfV!V&%fys{^woLh$V@>5(1-RckmSm+1?dH(7mO1DBaRNA5fd3ju zW4~j5F=Y@P`3~l^d=Op#juneP52C{F5&O%;p5&X>j65EB+rbq(zGtb~#Pf zpxb74dE>*_PQTOY_PYWOlVS<^?9}fP$5zaKi{EauTU-GXNO@~gzbni|zyFN!YpLbL zpw(hi%r>*hY;p%(inq4LRsaLoLuRMh67)IE=8)GAuJ@U(c8AFsP@F-Z-{JNqYV|>< z(-#cbeD9rNv+-i04fOh2sjwkHMq1#`g|v+_--in%PcHq3c)ixa^T%nSnn} zV+|U2MH`aYIm(T(Eq0g78pK$3m)To~T3%&=WWUMf@|&%S!yR&40v3xmbsDw0%9@bj z7v@cJ_*@~Y!(sM^LSQIl^VX%2zc9OyMk{Wx9F8N?!CzQ@n$2%_xNRYe&*co79KN8p z-V`wHHq(x4tP$s^LwYb|#((Z$FywTZok6QNeL0_)*<|NPZTM3@Mx(CcXJ^J;W6hK7 z0mW@H+XAkD%jF2!L*5K}@fw?uWV5;~{vae~w^@B|r_EcRQZKUgSWk-$*YtoAvIjsu z=xspz|H69y_5;>4lO|nfZlNJc< zz^4S9iqoc8yjk?nZ)|v)!=aeW0W);WZ#Da{F4;xk-esW)zp-X4d}E~}zp!RWipdG3 z@!R~0%ja-F4;s;mTP$bo4Q5XYIBh1g(`5@HuxY4t(IIfWdB%vV_!HT;8FlblM(;&#~`Hk(s1 z+XF#wQ*~h8$mr`oSYDFNtXLFt5DMV4gB7bc7auROA!#ASW(t_>j)2o-4*7jnZ?ma< zb~bhR_^8+(jkv~KNiIvk7PQ)&Ha9k=-Rbu>=L0>MquAY{fW;4`cDbBZzv69CtDvBG zVo7NMd<_1Cuw`qIrNer;K0Tn9GsIRsY4~cn8Ew?d*+L!-TP?SspY(E$nD5~Yxzs*J zt|yv0X#l#^pv5tAqG;|x`{U)NG$Kw;qNAu0Ec8Q+Y!$5JGs$gfNGz&s^iZtq7VK1` zp`1>8W97PngM9Vm?qrnE?BqSNX&^7V)NV;uQ^;iTTcLWcpvz_Qd)>54lG_Qb=@&_! zB($MICOd_;^fZ&33hn4ah7sG7DOvU=n|uzJKjbvKgOIV`>GO8DkIc!klb(u~Yt!R0 z2I)xUi-8%mK!a@|E0&t$I=!9;=}eq#ZV?!RM;<3GW`QBG zg`D1dG{fQyI;}yo!|ijKV8%=)Zzr{$b}qzdoq5@1HHQK=cR;ZP{AQ=a?e=H!?3T@)(sSG?nubgXrsUT5M1a5b<{DLMyW5y4W#_f8xjj^qCka zEeI7VV}cfBo}OvYMR$NT91TCz>JpO)5= zTZ=j~nn}t!l^I)M+YdMsRmeE`^U4@5K)lM>-eP%lj zpOC|3HoFvucMQ!75kJc^v(jA~zO_D65X#Rv1qOb!3+?f!5anlg0F99oZq2 zP|Z|`rId~oL46-i#Sjx|X{u}yCei*>%y2UOmI_v;P_w$|HIIwAH+*FZ`PCBrp^%( zRh!|*BaU$e6UR+P2yL#gcAadePU+xg9t}#DE&BP`wW_{sOqa9u3j|d`QwdOQ`Y|0Z zi!G#t4B4e$By`nQX=nyGTTII{=#y( zGgBUpH|N)8%EiK3ifbra@WnA1Cqs4mHw35asI;M6h#$u})ew?@jBX{#S!6R}l*cJQ zS?)qhP}XmN#@;b0-=Ru;LeLbUeHL(^q`p~lJMk%v{UlQ`WO4W$CJSu6+inSZH`1~! zD9Y3HAD%r!nc4Eaco9C2G~Px#bq;v95_&H4!6ns60OLQ zy|ke*lz%Jb<;b1r@5XYb{^baX2Xo}qhE+(w%2{0|oVJSDY2zA$0lQ+d`)uAlg1TkuIc(;j z$!4>=eKwoh?KFE|izfKr%{*KTo84@+I26Cxg{AYpPTQJ--8TgKtxz`7;ij@ot#W0z z{!M7Yj;3;dbDr7eFux^~^26E@ZPWP+IC*&HR8&xi=T3Qfc+y?e9VJ@XPHvrKf3!ajPSnLI?lAIdPHIZWb*&7h<2(8XqQZ~ePCY1PU; z&9R*CQBiYPmG^0LbL{gEsAUV;L+LHB2><5g{`gL$tc9E}ei&Y#@6jZFqynyFp8{XS z8Sn=c7aWG5_aO8E2jLJo&k3jVV__&a^A0lo1b_BYOF22l?6w}_jJ8WL+i?&EOp4j% zaA6S??f)@-XqbKwF)t|4pDyPI;vGyFe#gXuqN9Z?egT zxmX}dT=N`0chGw?(%=u__Gh*Fuz7J|v3dW{8tD6*EK&S3jAd4QcDo-~irXB-HOPA_ z+yH&YW`J05Z?L%BF7IDzgDcU8JE|)P>m6_@PK()lo9|FJb;cb}_?wqoC;9>btDUQ# zEnqPPz2&0j1O~5T;F%hb?8La@E8L36-l^Dfay=C=jOrCL{~8P~Z0ZjF9-2qr=CE~CG_ z@_6dYWR`?o0Z!qsnh;j72mRjVl-O0CmgK;_*zXIu?GBea=ytihE9hi*d4ztYXrr=@ zI3(X~k3(`5oobJh^U+A9r2{HgQ?CxPO}|ELuVETH%E>8qSR5BLB;*fZdO?$SZB%ng zvdI(*;))q^_{|pB9WO<-HrB6;f|8S5E|#ht_Nv}58n?|ORq9ynZ&(b;?8w?0n& zI^p2npb4U8X9(g6tz62>Pip1ky!;f+=qTqHOt@db`}79`_K;0c%rvc|oSS6gXIl`; zjx#ri>xcJg4I8V9_=E|EG$I`)yPYm}l$#~Of&_eipFe=W3~mYDXX$cB+|f>SgsH%< zu3?xYhY3UA{$u9dpbOsT!u58O#pJ^J`t3g4Cw<=MX_!ZLikro#qi<|`*)47nY5GI5 zF@?uN^74wtmlhU{%ggJd=Jat>xlz4v#3Sgp+00NjC$=LL!{L2_FZtvoYY1m{0GHDc zuHs6_?|o6LcK{Jbk=0~#ITc613b#eYciG$yXpI>QW`-ehd$)4!n4V}i1)Nw&7c875 zWVd@?rj_00p292CzK7hJlx~piwlF55SV4afu^xxIx3}}^8HSL<%$*#Q+vW_y6zouy zuC_ygs^UBh_?&jL%TBer%8w)=NP?J#Kj=Wv%N~R)x08+xlc!U8cZhZuAF-$Ks@gxv z9CBd&{0;??F00??f>Wa^vnzlbKIUbzT3il?&F!sF>nXM;7~MnWd%=+}fUV_1;KFA1 zq33J7c6y?dAEH5<(~Q`Z-{OQz8)rqY1zDQXz1AB&`Fy+XvK~Ll{drH zKAb&vx7F^##n)!?zNJyInXC#oULm(X7_?aI@I*Lu`k)us+8f4ky8V6xfe;{p*@dI9 zPs1782RQq+@*gPE)!vXvw*jbqSF4R1jPiS0c`Yx$ua=YCkh{YNI{@b%$ED)^K$T~0 zoP(|)93!rWPIrKI^pj^K`Aq(R9nmjbz%8(3Chq|iInf+~?`QV=V9FhSd%*jlM%x#1 z!NlXX&4Y&u0#_et^+A|Bzr!91nh~dRD2n%>Ru3=IZ&7fMhp?Q8dU-!q>nUw0_&r2_ z6v+7qhPiAOc+~D7R0-zM`-xWXbi3eS+qo0yFgs!TK2_`KLIL_7rZywsn;qe{U@(0+ z0;=*E-}r;c?wQ z>q8sxl7_Z@q?}myvc^)R9q<3}*MENE7!Im6N;cH_S)-t6A0cQIu4oiSjl$qpMVdBB zE)aha>FP;*y^+Ox<`kmknriAg(CfEYyh#h%x~x{S)8a!+#b<#@uz0VFb;4p-KV>M1 zNbfgwge1Qe?zF=Of7Xfkpw;jFolCN9`^pz3Eu_m7vfDxqE0hb4pV{oaA*NO( zuYUbN{X+0K=7GnIKPs0!JU$dadsF96m4ik;L?#i}!UYCiWe`^JmRO6ERKHdz2;hC6 zzcgVyIT};GEz*wB^3a68MK)3?Dkz#*TCUfWta%ZdXX-Uirj!G-!a#>BED?c%!$o*j z@HQIoOJ^u|*U!~QT>xm%c=*usB2_EK%Z@@+@ z7E-|kd3TLP`j^z;wAI2dfvxD?VtI;wvA%+Q6XY~HT`X_JuUVFt$Q|Hd>?=V$VOgZD zVJX^{)4o!8kt_6ccD3A&tP|x#d8Ixa60f}$ceybWZ{mdN z@&2{QJY8OfA2{7NU0#96LcbYuXK}NhN41PpF#{{SMXv?MYCnQ?c!9DWk%!yAV5Xd- z-vx21&`UG%D}b*?VJ6YvGcgQ~*;$CA;8dLjeVH)}ReLxWo%FBi+wqYz=~qzGzpn4a z31yOXHe!ZvP++$FG=8-$c8>h4{w@7bZ4d++OEpKCjwerK-j}RJ{{bm13}%us3ZkyU8B%!9jbMeDma9I3TyplRM&UyfRPjrvCt% zpfWgQJ|biP#%inMzcgQNg4_I&`SK#+LmIk3wu>Kyx8z3)FwjALA0C`arE3ci*ZY|A z7RvYP59#}Bw9YTYcKAfEh0g{qf^a^i&>}e`9u6;h@?z8-;fvml#`5xKeC6*GKM!lj z4PN(!+Ma}4hy&4i1&1bF2AkdcrK%=9mV`N{7Sl3s4zvR%f zOM&pURzA+l$LaD?c_~h(Y0Kn?gp>6BGI^1BN}ZOAURo|2#M1!yW2EZ<^k?)B(A)L! z>|)(2xmAiUV7B>8co^hznEi-#dCy|DS+yX7X)ENm;x~GFZG}8m{8mr7D`mfUPESi# z%6-N2dOEdIeq8@u6tVVk-|MIGn3Jtw?J7jJJ0{36l>I2egcrib>8VGtLw?Znpm1^)=Ke>3H9`!oWq%xKWSQK)a;p4^sMxm-V!LHG(fcsb&awVLh4G$V0>{;AD+F zO}wh7xV7>W@fSVKUMn{ff8}<_PT#Htjceg`X+sdxb!}bN@bYh(tS_T1{?0pesdGag zt3FA%sb@j$G0z`Sb8D3XKgq9{6~*Zf*<842dH;+EYVmrxt^QUtG9^C-!hh*0=P@|@ zw=u29Acep2A=zWHFBT4cc?=oa$pfj+<6vec`5u>>i?d?1gW^5ZnP}NHg)t7=u>m)`2R6v{@vHr4 VG2-i2JUCj+%LgiEJ|Pd(|1ZTKBZL3| diff --git a/sdk/Cargo.toml b/sdk/Cargo.toml index f3d9e87..350b8d6 100644 --- a/sdk/Cargo.toml +++ b/sdk/Cargo.toml @@ -11,6 +11,8 @@ neo4rs = "0.8.0" prost = "0.13.3" rand = "0.8.5" serde = { version = "1.0.215", features = ["derive"] } +serde_json = "1.0.133" +serde_with = "3.11.0" thiserror = "2.0.3" tracing = "0.1.40" uuid = { version = "1.11.0", features = ["v4"] } diff --git a/sdk/proto/geo.proto b/sdk/proto/geo.proto index e3aa117..bda2ba5 100644 --- a/sdk/proto/geo.proto +++ b/sdk/proto/geo.proto @@ -2,21 +2,6 @@ syntax = "proto3"; package geo; -/** - * Profiles represent the users of Geo. Profiles are registered in the GeoProfileRegistry - * contract and are associated with a user's EVM-based address and the space where metadata - * representing their profile resides in. -*/ -message GeoProfileRegistered { - string requestor = 1; - string space = 2; - string id = 3; -} - -message GeoProfilesRegistered { - repeated GeoProfileRegistered profiles = 1; -} - /** * The new DAO-based contracts allow forking of spaces into successor spaces. This is so * users can create new spaces whose data is derived from another space. @@ -25,8 +10,9 @@ message GeoProfilesRegistered { * but it's generally applicable across any space. */ message SuccessorSpaceCreated { - string predecessorSpace = 1; - string pluginAddress = 2; + string predecessor_space = 1; + string plugin_address = 2; + string dao_address = 3; } message SuccessorSpacesCreated { @@ -42,8 +28,8 @@ message SuccessorSpacesCreated { * address with the address of the DAO contract. */ message GeoSpaceCreated { - string daoAddress = 1; - string spaceAddress = 2; + string dao_address = 1; + string space_address = 2; } message GeoSpacesCreated { @@ -63,9 +49,9 @@ message GeoSpacesCreated { * 2. Member access plugin – This defines the membership rules and behaviors for a DAO */ message GeoGovernancePluginCreated { - string daoAddress = 1; - string mainVotingAddress = 2; - string memberAccessAddress = 3; + string dao_address = 1; + string main_voting_address = 2; + string member_access_address = 3; } message GeoGovernancePluginsCreated { @@ -73,9 +59,9 @@ message GeoGovernancePluginsCreated { } message GeoPersonalSpaceAdminPluginCreated { - string daoAddress = 1; - string personalAdminAddress = 2; - string initialEditor = 3; + string dao_address = 1; + string personal_admin_address = 2; + string initial_editor = 3; } message GeoPersonalSpaceAdminPluginsCreated { @@ -104,52 +90,14 @@ message InitialEditorAdded { // when first creating the governance plugin. After that we only emit one // address at a time via proposals. repeated string addresses = 1; - string pluginAddress = 2; + string plugin_address = 2; + string dao_address = 3; } message InitialEditorsAdded { repeated InitialEditorAdded editors = 1; } -/** - * Proposals represent a proposal to change the state of a DAO-based space. Proposals can - * represent changes to content, membership (editor or member), governance changes, subspace - * membership, or anything else that can be executed by a DAO. - * - * Currently we use a simple majority voting model, where a proposal requires 51% of the - * available votes in order to pass. Only editors are allowed to vote on proposals, but editors - * _and_ members can create them. - * - * Proposals require encoding a "callback" that represents the action to be taken if the proposal - * succeeds. For example, if a proposal is to add a new editor to the space, the callback would - * be the encoded function call to add the editor to the space. - * - * ```ts - * { - * to: `0x123...`, // The address of the membership contract - * data: `0x123...`, // The encoded function call parameters - * } - * ``` - */ -message DaoAction { - string to = 1; - uint64 value = 2; - bytes data = 3; -} - -message ProposalCreated { - string proposal_id = 1; - string creator = 2; - string start_time = 3; - string end_time = 4; - string metadata_uri = 5; - string plugin_address = 6; -} - -message ProposalsCreated { - repeated ProposalCreated proposals = 1; -} - // Executed proposals have been approved and executed onchain in a DAO-based // space's main voting plugin. The DAO itself also emits the executed event, // but the ABI/interface is different. We really only care about the one @@ -171,25 +119,27 @@ message ProposalsExecuted { * only consume the `proposalId` in the content URI to map the processed * data to an existing proposal onchain and in the sink. */ -message ProposalProcessed { +message EditPublished { string content_uri = 1; string plugin_address = 2; + string dao_address = 3; } -message ProposalsProcessed { - repeated ProposalProcessed proposals = 1; +message EditsPublished { + repeated EditPublished edits = 1; } /** * Added or Removed Subspaces represent adding a space contracto to the hierarchy * of the DAO-based space. This is useful to "link" Spaces together in a - * tree of spaces, allowing us to curate the graph of their knowledge and + * tree of spaces, allowing us to curate the graph of their knowledge and * permissions. */ message SubspaceAdded { string subspace = 1; string plugin_address = 2; string change_type = 3; + string dao_address = 4; } message SubspacesAdded { @@ -200,6 +150,7 @@ message SubspaceRemoved { string subspace = 1; string plugin_address = 2; string change_type = 3; + string dao_address = 4; } message SubspacesRemoved { @@ -217,7 +168,7 @@ message VoteCast { string onchain_proposal_id = 1; string voter = 2; uint64 vote_option = 3; - string plugin_address = 5; + string plugin_address = 4; } message VotesCast { @@ -228,6 +179,7 @@ message MemberAdded { string member_address = 1; string main_voting_plugin_address = 2; string change_type = 3; + string dao_address = 4; } message MembersAdded { @@ -236,9 +188,9 @@ message MembersAdded { message MemberRemoved { string member_address = 1; - string dao_address = 2; - string plugin_address = 3; - string change_type = 4; + string plugin_address = 2; + string change_type = 3; + string dao_address = 4; } message MembersRemoved { @@ -249,6 +201,7 @@ message EditorAdded { string editor_address = 1; string main_voting_plugin_address = 2; string change_type = 3; + string dao_address = 4; } message EditorsAdded { @@ -257,30 +210,141 @@ message EditorsAdded { message EditorRemoved { string editor_address = 1; - string dao_address = 2; - string plugin_address = 3; - string change_type = 4; + string plugin_address = 2; + string change_type = 3; + string dao_address = 4; } message EditorsRemoved { repeated EditorRemoved editors = 1; } +message PublishEditProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string content_uri = 5; + string dao_address = 6; + string plugin_address = 7; +} + +message PublishEditsProposalsCreated { + repeated PublishEditProposalCreated edits = 1; +} + +message AddMemberProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string member = 5; + string dao_address = 6; + string plugin_address = 7; + string change_type = 8; +} + +message AddMemberProposalsCreated { + repeated AddMemberProposalCreated proposed_members = 1; +} + +message RemoveMemberProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string member = 5; + string dao_address = 6; + string plugin_address = 7; + string change_type = 8; +} + +message RemoveMemberProposalsCreated { + repeated RemoveMemberProposalCreated proposed_members = 1; +} + +message AddEditorProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string editor = 5; + string dao_address = 6; + string plugin_address = 7; + string change_type = 8; +} + +message AddEditorProposalsCreated { + repeated AddEditorProposalCreated proposed_editors = 1; +} + +message RemoveEditorProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string editor = 5; + string dao_address = 6; + string plugin_address = 7; + string change_type = 8; +} + +message RemoveEditorProposalsCreated { + repeated RemoveEditorProposalCreated proposed_editors = 1; +} + +message AddSubspaceProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string subspace = 5; + string dao_address = 6; + string plugin_address = 7; + string change_type = 8; +} + +message AddSubspaceProposalsCreated { + repeated AddSubspaceProposalCreated proposed_subspaces = 1; +} + +message RemoveSubspaceProposalCreated { + string proposal_id = 1; + string creator = 2; + string start_time = 3; + string end_time = 4; + string subspace = 5; + string dao_address = 6; + string plugin_address = 7; + string change_type = 8; +} + +message RemoveSubspaceProposalsCreated { + repeated RemoveSubspaceProposalCreated proposed_subspaces = 1; +} + message GeoOutput { - repeated GeoProfileRegistered profiles_registered = 1; - repeated GeoSpaceCreated spaces_created = 2; - repeated GeoGovernancePluginCreated governance_plugins_created = 3; - repeated InitialEditorAdded initial_editors_added = 4; - repeated ProposalCreated proposals_created = 5; - repeated VoteCast votes_cast = 6; - repeated ProposalProcessed proposals_processed = 7; - repeated SuccessorSpaceCreated successor_spaces_created = 8; - repeated SubspaceAdded subspaces_added = 9; - repeated SubspaceRemoved subspaces_removed = 10; - repeated ProposalExecuted executed_proposals = 11; - repeated MemberAdded members_added = 12; - repeated EditorAdded editors_added = 13; - repeated GeoPersonalSpaceAdminPluginCreated personal_plugins_created = 14; - repeated MemberRemoved members_removed = 15; - repeated EditorRemoved editors_removed = 16; + repeated GeoSpaceCreated spaces_created = 1; + repeated GeoGovernancePluginCreated governance_plugins_created = 2; + repeated InitialEditorAdded initial_editors_added = 3; + repeated VoteCast votes_cast = 4; + repeated EditPublished edits_published = 5; + repeated SuccessorSpaceCreated successor_spaces_created = 6; + repeated SubspaceAdded subspaces_added = 7; + repeated SubspaceRemoved subspaces_removed = 8; + repeated ProposalExecuted executed_proposals = 9; + repeated MemberAdded members_added = 10; + repeated EditorAdded editors_added = 11; + repeated GeoPersonalSpaceAdminPluginCreated personal_plugins_created = 12; + repeated MemberRemoved members_removed = 13; + repeated EditorRemoved editors_removed = 14; + + repeated PublishEditProposalCreated edits = 15; + + repeated AddMemberProposalCreated proposed_added_members = 16; + repeated RemoveMemberProposalCreated proposed_removed_members = 17; + repeated AddEditorProposalCreated proposed_added_editors = 18; + repeated RemoveEditorProposalCreated proposed_removed_editors = 19; + repeated AddSubspaceProposalCreated proposed_added_subspaces = 20; + repeated RemoveSubspaceProposalCreated proposed_removed_subspaces = 21; } diff --git a/sdk/src/lib.rs b/sdk/src/lib.rs index 741a73f..47bdf41 100644 --- a/sdk/src/lib.rs +++ b/sdk/src/lib.rs @@ -4,6 +4,7 @@ pub mod graph_uri; pub mod ids; pub mod models; pub mod pb; +pub mod mapping; pub mod relation; pub use ids::network_ids; diff --git a/sink/src/kg/mapping.rs b/sdk/src/mapping.rs similarity index 51% rename from sink/src/kg/mapping.rs rename to sdk/src/mapping.rs index 10fb829..b92d43c 100644 --- a/sink/src/kg/mapping.rs +++ b/sdk/src/mapping.rs @@ -1,6 +1,7 @@ use std::collections::HashMap; -use serde::Deserialize; +use serde::{ser::SerializeMap, Deserialize, Serialize}; +use serde_with::with_prefix; #[derive(Debug, Deserialize, PartialEq)] pub struct Relation { @@ -103,16 +104,6 @@ where } } -/// Neo4j node representing a GRC20 entity of type `T`. -#[derive(Debug, Deserialize, PartialEq)] -pub struct Attributes { - pub id: String, - pub space_id: String, - // pub space_id: String, - #[serde(flatten)] - pub attributes: T, -} - fn deserialize_labels<'de, D>(deserializer: D) -> Result, D::Error> where D: serde::Deserializer<'de>, @@ -195,12 +186,239 @@ impl Node { } } +/// Neo4j node representing a GRC20 entity of type `T`. +#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)] +pub struct Attributes { + pub id: String, + pub space_id: String, + // pub space_id: String, + #[serde(flatten)] + pub attributes: T, +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Triple { + pub value: String, + pub r#type: ValueType, + pub options: Options, +} + +impl Serialize for Triple { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + let mut map = serializer.serialize_map(None)?; + map.serialize_entry("", &self.value)?; + map.serialize_entry(".type", &self.r#type)?; + if let Some(ref format) = self.options.format { + map.serialize_entry(".options.format", format)?; + } + if let Some(ref unit) = self.options.unit { + map.serialize_entry(".options.unit", unit)?; + } + if let Some(ref language) = self.options.language { + map.serialize_entry(".options.language", language)?; + } + if let Some(ref space) = self.options.space { + map.serialize_entry(".options.space", space)?; + } + map.end() + } +} + +impl<'de> Deserialize<'de> for Triple { + fn deserialize(deserializer: D) -> Result + where + D: serde::Deserializer<'de>, + { + #[derive(Deserialize)] + struct TripleHelper { + #[serde(rename = "")] + value: String, + #[serde(rename = ".type")] + r#type: ValueType, + #[serde(rename = ".options.format")] + format: Option, + #[serde(rename = ".options.unit")] + unit: Option, + #[serde(rename = ".options.language")] + language: Option, + #[serde(rename = ".options.space")] + space: Option, + } + + let helper = TripleHelper::deserialize(deserializer)?; + Ok(Triple { + value: helper.value, + r#type: helper.r#type, + options: Options { + format: helper.format, + unit: helper.unit, + language: helper.language, + space: helper.space, + }, + }) + } +} + +#[derive(Clone, Debug, Default, Deserialize, Serialize, PartialEq)] +pub struct Options { + pub format: Option, + pub unit: Option, + pub language: Option, + pub space: Option, +} + +#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] +pub enum ValueType { + Text, + Number, + Checkbox, + Url, + Time, + Point, +} + #[cfg(test)] mod tests { use std::collections::HashMap; use super::*; + #[test] + pub fn test_serialize_triple() { + with_prefix!(foo_prefix "foo"); + #[derive(Debug, Deserialize, Serialize, PartialEq)] + struct Foo { + #[serde(flatten, with = "foo_prefix")] + foo: Triple, + } + + let value = Foo { + foo: Triple { + value: "Hello, World!".to_string(), + r#type: ValueType::Text, + options: Options { + format: Some("text".to_string()), + unit: Some("unit".to_string()), + ..Default::default() + }, + }, + }; + + let serialized = serde_json::to_value(&value).expect("Failed to serialize Value"); + + assert_eq!( + serialized, + serde_json::json!({ + "foo": "Hello, World!", + "foo.type": "TEXT", + "foo.options.format": "text", + "foo.options.unit": "unit", + }) + ) + } + + #[test] + pub fn test_serialize_triple_multiple_fields() { + with_prefix!(foo_prefix "foo"); + with_prefix!(bar_prefix "bar"); + #[derive(Debug, Deserialize, Serialize, PartialEq)] + struct Foo { + #[serde(flatten, with = "foo_prefix")] + foo: Triple, + + #[serde(flatten, with = "bar_prefix")] + bar: Triple, + + other_field: String, + } + + let value = Foo { + foo: Triple { + value: "Hello, World!".to_string(), + r#type: ValueType::Text, + options: Options { + format: Some("text".to_string()), + ..Default::default() + }, + }, + bar: Triple { + value: "123".to_string(), + r#type: ValueType::Number, + options: Options { + unit: Some("int".to_string()), + ..Default::default() + }, + }, + other_field: "other".to_string(), + }; + + let serialized = serde_json::to_value(&value).expect("Failed to serialize Value"); + + assert_eq!( + serialized, + serde_json::json!({ + "foo": "Hello, World!", + "foo.type": "TEXT", + "foo.options.format": "text", + "bar": "123", + "bar.type": "NUMBER", + "bar.options.unit": "int", + "other_field": "other", + }) + ) + } + + #[test] + pub fn test_serialize_triple_hashmap() { + with_prefix!(foo_prefix "foo"); + with_prefix!(bar_prefix "bar"); + #[derive(Debug, Deserialize, Serialize, PartialEq)] + struct Foo { + #[serde(flatten)] + fields: HashMap, + } + + let value = Foo { + fields: HashMap::from([ + ("foo".to_string(), Triple { + value: "Hello, World!".to_string(), + r#type: ValueType::Text, + options: Options { + format: Some("text".to_string()), + ..Default::default() + }, + }), + ("bar".to_string(), Triple { + value: "123".to_string(), + r#type: ValueType::Number, + options: Options { + unit: Some("int".to_string()), + ..Default::default() + }, + }) + ]) + }; + + let serialized = serde_json::to_value(&value).expect("Failed to serialize Value"); + + assert_eq!( + serialized, + serde_json::json!({ + "foo": "Hello, World!", + "foo.type": "TEXT", + "foo.options.format": "text", + "bar": "123", + "bar.type": "NUMBER", + "bar.options.unit": "int", + }) + ) + } + + #[test] pub fn test_node_conversion() { let node = neo4rs::Node::new(neo4rs::BoltNode { diff --git a/sdk/src/models.rs b/sdk/src/models.rs index eee28d8..fbb9ce7 100644 --- a/sdk/src/models.rs +++ b/sdk/src/models.rs @@ -5,9 +5,7 @@ use serde::{Deserialize, Serialize}; use web3_utils::checksum_address; use crate::{ - ids, - pb::{self, grc20}, - system_ids, + ids, mapping::Node, pb::{self, grc20}, system_ids }; pub struct BlockMetadata { @@ -47,9 +45,9 @@ pub enum SpaceType { #[derive(Clone, Default, Deserialize, Serialize)] #[serde(rename = "306598522df542f69ad72921c33ad84b", tag = "$type")] pub struct Space { - pub id: String, + // pub id: String, pub network: String, - #[serde(rename = "`65da3fab6e1c48b7921a6a3260119b48`")] + // #[serde(rename = "`65da3fab6e1c48b7921a6a3260119b48`")] pub r#type: SpaceType, /// The address of the space's DAO contract. pub dao_contract_address: String, diff --git a/sdk/src/pb/geo.rs b/sdk/src/pb/geo.rs index 04b4855..baf48be 100644 --- a/sdk/src/pb/geo.rs +++ b/sdk/src/pb/geo.rs @@ -1,26 +1,6 @@ // @generated // This file is @generated by prost-build. /// * -/// Profiles represent the users of Geo. Profiles are registered in the GeoProfileRegistry -/// contract and are associated with a user's EVM-based address and the space where metadata -/// representing their profile resides in. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoProfileRegistered { - #[prost(string, tag="1")] - pub requestor: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub space: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub id: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoProfilesRegistered { - #[prost(message, repeated, tag="1")] - pub profiles: ::prost::alloc::vec::Vec, -} -/// * /// The new DAO-based contracts allow forking of spaces into successor spaces. This is so /// users can create new spaces whose data is derived from another space. /// @@ -33,6 +13,8 @@ pub struct SuccessorSpaceCreated { pub predecessor_space: ::prost::alloc::string::String, #[prost(string, tag="2")] pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -130,6 +112,8 @@ pub struct InitialEditorAdded { pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, #[prost(string, tag="2")] pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -137,57 +121,6 @@ pub struct InitialEditorsAdded { #[prost(message, repeated, tag="1")] pub editors: ::prost::alloc::vec::Vec, } -/// * -/// Proposals represent a proposal to change the state of a DAO-based space. Proposals can -/// represent changes to content, membership (editor or member), governance changes, subspace -/// membership, or anything else that can be executed by a DAO. -/// -/// Currently we use a simple majority voting model, where a proposal requires 51% of the -/// available votes in order to pass. Only editors are allowed to vote on proposals, but editors -/// _and_ members can create them. -/// -/// Proposals require encoding a "callback" that represents the action to be taken if the proposal -/// succeeds. For example, if a proposal is to add a new editor to the space, the callback would -/// be the encoded function call to add the editor to the space. -/// -/// ```ts -/// { -/// to: `0x123...`, // The address of the membership contract -/// data: `0x123...`, // The encoded function call parameters -/// } -/// ``` -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct DaoAction { - #[prost(string, tag="1")] - pub to: ::prost::alloc::string::String, - #[prost(uint64, tag="2")] - pub value: u64, - #[prost(bytes="vec", tag="3")] - pub data: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalCreated { - #[prost(string, tag="1")] - pub proposal_id: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub creator: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub start_time: ::prost::alloc::string::String, - #[prost(string, tag="4")] - pub end_time: ::prost::alloc::string::String, - #[prost(string, tag="5")] - pub metadata_uri: ::prost::alloc::string::String, - #[prost(string, tag="6")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalsCreated { - #[prost(message, repeated, tag="1")] - pub proposals: ::prost::alloc::vec::Vec, -} /// Executed proposals have been approved and executed onchain in a DAO-based /// space's main voting plugin. The DAO itself also emits the executed event, /// but the ABI/interface is different. We really only care about the one @@ -215,22 +148,24 @@ pub struct ProposalsExecuted { /// data to an existing proposal onchain and in the sink. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalProcessed { +pub struct EditPublished { #[prost(string, tag="1")] pub content_uri: ::prost::alloc::string::String, #[prost(string, tag="2")] pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalsProcessed { +pub struct EditsPublished { #[prost(message, repeated, tag="1")] - pub proposals: ::prost::alloc::vec::Vec, + pub edits: ::prost::alloc::vec::Vec, } /// * /// Added or Removed Subspaces represent adding a space contracto to the hierarchy /// of the DAO-based space. This is useful to "link" Spaces together in a -/// tree of spaces, allowing us to curate the graph of their knowledge and +/// tree of spaces, allowing us to curate the graph of their knowledge and /// permissions. #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -241,6 +176,8 @@ pub struct SubspaceAdded { pub plugin_address: ::prost::alloc::string::String, #[prost(string, tag="3")] pub change_type: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -257,6 +194,8 @@ pub struct SubspaceRemoved { pub plugin_address: ::prost::alloc::string::String, #[prost(string, tag="3")] pub change_type: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -279,7 +218,7 @@ pub struct VoteCast { pub voter: ::prost::alloc::string::String, #[prost(uint64, tag="3")] pub vote_option: u64, - #[prost(string, tag="5")] + #[prost(string, tag="4")] pub plugin_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] @@ -297,6 +236,8 @@ pub struct MemberAdded { pub main_voting_plugin_address: ::prost::alloc::string::String, #[prost(string, tag="3")] pub change_type: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -310,11 +251,11 @@ pub struct MemberRemoved { #[prost(string, tag="1")] pub member_address: ::prost::alloc::string::String, #[prost(string, tag="2")] - pub dao_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] pub plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="4")] + #[prost(string, tag="3")] pub change_type: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -331,6 +272,8 @@ pub struct EditorAdded { pub main_voting_plugin_address: ::prost::alloc::string::String, #[prost(string, tag="3")] pub change_type: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub dao_address: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -344,52 +287,242 @@ pub struct EditorRemoved { #[prost(string, tag="1")] pub editor_address: ::prost::alloc::string::String, #[prost(string, tag="2")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub change_type: ::prost::alloc::string::String, + #[prost(string, tag="4")] pub dao_address: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct EditorsRemoved { + #[prost(message, repeated, tag="1")] + pub editors: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PublishEditProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub content_uri: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] pub plugin_address: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PublishEditsProposalsCreated { + #[prost(message, repeated, tag="1")] + pub edits: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AddMemberProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub member: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="8")] pub change_type: ::prost::alloc::string::String, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct EditorsRemoved { +pub struct AddMemberProposalsCreated { #[prost(message, repeated, tag="1")] - pub editors: ::prost::alloc::vec::Vec, + pub proposed_members: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RemoveMemberProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub member: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="8")] + pub change_type: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RemoveMemberProposalsCreated { + #[prost(message, repeated, tag="1")] + pub proposed_members: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AddEditorProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub editor: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="8")] + pub change_type: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AddEditorProposalsCreated { + #[prost(message, repeated, tag="1")] + pub proposed_editors: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RemoveEditorProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub editor: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="8")] + pub change_type: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RemoveEditorProposalsCreated { + #[prost(message, repeated, tag="1")] + pub proposed_editors: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AddSubspaceProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub subspace: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="8")] + pub change_type: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct AddSubspaceProposalsCreated { + #[prost(message, repeated, tag="1")] + pub proposed_subspaces: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RemoveSubspaceProposalCreated { + #[prost(string, tag="1")] + pub proposal_id: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub creator: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub start_time: ::prost::alloc::string::String, + #[prost(string, tag="4")] + pub end_time: ::prost::alloc::string::String, + #[prost(string, tag="5")] + pub subspace: ::prost::alloc::string::String, + #[prost(string, tag="6")] + pub dao_address: ::prost::alloc::string::String, + #[prost(string, tag="7")] + pub plugin_address: ::prost::alloc::string::String, + #[prost(string, tag="8")] + pub change_type: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct RemoveSubspaceProposalsCreated { + #[prost(message, repeated, tag="1")] + pub proposed_subspaces: ::prost::alloc::vec::Vec, } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct GeoOutput { #[prost(message, repeated, tag="1")] - pub profiles_registered: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="2")] pub spaces_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="3")] + #[prost(message, repeated, tag="2")] pub governance_plugins_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="4")] + #[prost(message, repeated, tag="3")] pub initial_editors_added: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="4")] + pub votes_cast: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="5")] - pub proposals_created: ::prost::alloc::vec::Vec, + pub edits_published: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="6")] - pub votes_cast: ::prost::alloc::vec::Vec, + pub successor_spaces_created: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="7")] - pub proposals_processed: ::prost::alloc::vec::Vec, + pub subspaces_added: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="8")] - pub successor_spaces_created: ::prost::alloc::vec::Vec, + pub subspaces_removed: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="9")] - pub subspaces_added: ::prost::alloc::vec::Vec, + pub executed_proposals: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="10")] - pub subspaces_removed: ::prost::alloc::vec::Vec, + pub members_added: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="11")] - pub executed_proposals: ::prost::alloc::vec::Vec, + pub editors_added: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="12")] - pub members_added: ::prost::alloc::vec::Vec, + pub personal_plugins_created: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="13")] - pub editors_added: ::prost::alloc::vec::Vec, + pub members_removed: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="14")] - pub personal_plugins_created: ::prost::alloc::vec::Vec, + pub editors_removed: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="15")] - pub members_removed: ::prost::alloc::vec::Vec, + pub edits: ::prost::alloc::vec::Vec, #[prost(message, repeated, tag="16")] - pub editors_removed: ::prost::alloc::vec::Vec, + pub proposed_added_members: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="17")] + pub proposed_removed_members: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="18")] + pub proposed_added_editors: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="19")] + pub proposed_removed_editors: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="20")] + pub proposed_added_subspaces: ::prost::alloc::vec::Vec, + #[prost(message, repeated, tag="21")] + pub proposed_removed_subspaces: ::prost::alloc::vec::Vec, } // @@protoc_insertion_point(module) diff --git a/sdk/src/pb/schema.rs b/sdk/src/pb/schema.rs deleted file mode 100644 index 04b4855..0000000 --- a/sdk/src/pb/schema.rs +++ /dev/null @@ -1,395 +0,0 @@ -// @generated -// This file is @generated by prost-build. -/// * -/// Profiles represent the users of Geo. Profiles are registered in the GeoProfileRegistry -/// contract and are associated with a user's EVM-based address and the space where metadata -/// representing their profile resides in. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoProfileRegistered { - #[prost(string, tag="1")] - pub requestor: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub space: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub id: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoProfilesRegistered { - #[prost(message, repeated, tag="1")] - pub profiles: ::prost::alloc::vec::Vec, -} -/// * -/// The new DAO-based contracts allow forking of spaces into successor spaces. This is so -/// users can create new spaces whose data is derived from another space. -/// -/// This is immediately useful when migrating from legacy spaces to the new DAO-based spaces, -/// but it's generally applicable across any space. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SuccessorSpaceCreated { - #[prost(string, tag="1")] - pub predecessor_space: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SuccessorSpacesCreated { - #[prost(message, repeated, tag="1")] - pub spaces: ::prost::alloc::vec::Vec, -} -/// * -/// The new DAO-based space contracts are based on Aragon's OSX architecture which uses -/// plugins to define functionality assigned to a DAO (See the top level comment for more -/// information on Aragon's DAO architecture). -/// -/// This event maps creation of the Space plugin and associates the Space plugin contract -/// address with the address of the DAO contract. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoSpaceCreated { - #[prost(string, tag="1")] - pub dao_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub space_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoSpacesCreated { - #[prost(message, repeated, tag="1")] - pub spaces: ::prost::alloc::vec::Vec, -} -/// * -/// The new DAO-based space contracts are based on Aragon's OSX architecture which uses -/// plugins to define functionality assigned to a DAO (See the top level comment for more -/// information on Aragon's DAO architecture). -/// -/// This event maps creation of any governance plugins and associates the governance plugins -/// contract addresses with the address of the DAO contract. -/// -/// As of January 23, 2024 there are two governance plugins: -/// 1. Voting plugin – This defines the voting and proposal rules and behaviors for a DAO -/// 2. Member access plugin – This defines the membership rules and behaviors for a DAO -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoGovernancePluginCreated { - #[prost(string, tag="1")] - pub dao_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub main_voting_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub member_access_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoGovernancePluginsCreated { - #[prost(message, repeated, tag="1")] - pub plugins: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoPersonalSpaceAdminPluginCreated { - #[prost(string, tag="1")] - pub dao_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub personal_admin_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub initial_editor: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoPersonalSpaceAdminPluginsCreated { - #[prost(message, repeated, tag="1")] - pub plugins: ::prost::alloc::vec::Vec, -} -/// * -/// This event represents adding editors to a DAO-based space -/// -/// The data model for DAO-based spaces works slightly differently than in legacy spaces. -/// This means there will be a period where we need to support both data models depending -/// on which space/contract we are working with. Eventually these data models will be merged -/// and usage of the legacy space contracts will be migrated to the DAO-based contracts, but -/// for now we are appending "V2" to permissions data models to denote it's used for the -/// DAO-based spaces. -/// -/// An editor has editing and voting permissions in a DAO-based space. Editors join a space -/// one of two ways: -/// 1. They submit a request to join the space as an editor which goes to a vote. The editors -/// in the space vote on whether to accept the new editor. -/// 2. They are added as a set of initial editors when first creating the space. This allows -/// space deployers to bootstrap a set of editors on space creation. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct InitialEditorAdded { - /// The event emits an array of addresses. We only emit multiple addresses - /// when first creating the governance plugin. After that we only emit one - /// address at a time via proposals. - #[prost(string, repeated, tag="1")] - pub addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, - #[prost(string, tag="2")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct InitialEditorsAdded { - #[prost(message, repeated, tag="1")] - pub editors: ::prost::alloc::vec::Vec, -} -/// * -/// Proposals represent a proposal to change the state of a DAO-based space. Proposals can -/// represent changes to content, membership (editor or member), governance changes, subspace -/// membership, or anything else that can be executed by a DAO. -/// -/// Currently we use a simple majority voting model, where a proposal requires 51% of the -/// available votes in order to pass. Only editors are allowed to vote on proposals, but editors -/// _and_ members can create them. -/// -/// Proposals require encoding a "callback" that represents the action to be taken if the proposal -/// succeeds. For example, if a proposal is to add a new editor to the space, the callback would -/// be the encoded function call to add the editor to the space. -/// -/// ```ts -/// { -/// to: `0x123...`, // The address of the membership contract -/// data: `0x123...`, // The encoded function call parameters -/// } -/// ``` -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct DaoAction { - #[prost(string, tag="1")] - pub to: ::prost::alloc::string::String, - #[prost(uint64, tag="2")] - pub value: u64, - #[prost(bytes="vec", tag="3")] - pub data: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalCreated { - #[prost(string, tag="1")] - pub proposal_id: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub creator: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub start_time: ::prost::alloc::string::String, - #[prost(string, tag="4")] - pub end_time: ::prost::alloc::string::String, - #[prost(string, tag="5")] - pub metadata_uri: ::prost::alloc::string::String, - #[prost(string, tag="6")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalsCreated { - #[prost(message, repeated, tag="1")] - pub proposals: ::prost::alloc::vec::Vec, -} -/// Executed proposals have been approved and executed onchain in a DAO-based -/// space's main voting plugin. The DAO itself also emits the executed event, -/// but the ABI/interface is different. We really only care about the one -/// from our plugins. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalExecuted { - #[prost(string, tag="1")] - pub proposal_id: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalsExecuted { - #[prost(message, repeated, tag="1")] - pub executed_proposals: ::prost::alloc::vec::Vec, -} -/// * -/// Processed Proposals represent content that has been approved by a DAO -/// and executed onchain. -/// -/// We use the content URI to represent the content that was approved. We -/// only consume the `proposalId` in the content URI to map the processed -/// data to an existing proposal onchain and in the sink. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalProcessed { - #[prost(string, tag="1")] - pub content_uri: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct ProposalsProcessed { - #[prost(message, repeated, tag="1")] - pub proposals: ::prost::alloc::vec::Vec, -} -/// * -/// Added or Removed Subspaces represent adding a space contracto to the hierarchy -/// of the DAO-based space. This is useful to "link" Spaces together in a -/// tree of spaces, allowing us to curate the graph of their knowledge and -/// permissions. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SubspaceAdded { - #[prost(string, tag="1")] - pub subspace: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub change_type: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SubspacesAdded { - #[prost(message, repeated, tag="1")] - pub subspaces: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SubspaceRemoved { - #[prost(string, tag="1")] - pub subspace: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub change_type: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct SubspacesRemoved { - #[prost(message, repeated, tag="1")] - pub subspaces: ::prost::alloc::vec::Vec, -} -/// * -/// Votes represent a vote on a proposal in a DAO-based space. -/// -/// Currently we use a simple majority voting model, where a proposal requires 51% of the -/// available votes in order to pass. Only editors are allowed to vote on proposals, but editors -/// _and_ members can create them. -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct VoteCast { - #[prost(string, tag="1")] - pub onchain_proposal_id: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub voter: ::prost::alloc::string::String, - #[prost(uint64, tag="3")] - pub vote_option: u64, - #[prost(string, tag="5")] - pub plugin_address: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct VotesCast { - #[prost(message, repeated, tag="1")] - pub votes: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct MemberAdded { - #[prost(string, tag="1")] - pub member_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub main_voting_plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub change_type: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct MembersAdded { - #[prost(message, repeated, tag="1")] - pub members: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct MemberRemoved { - #[prost(string, tag="1")] - pub member_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub dao_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="4")] - pub change_type: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct MembersRemoved { - #[prost(message, repeated, tag="1")] - pub members: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct EditorAdded { - #[prost(string, tag="1")] - pub editor_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub main_voting_plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub change_type: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct EditorsAdded { - #[prost(message, repeated, tag="1")] - pub editors: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct EditorRemoved { - #[prost(string, tag="1")] - pub editor_address: ::prost::alloc::string::String, - #[prost(string, tag="2")] - pub dao_address: ::prost::alloc::string::String, - #[prost(string, tag="3")] - pub plugin_address: ::prost::alloc::string::String, - #[prost(string, tag="4")] - pub change_type: ::prost::alloc::string::String, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct EditorsRemoved { - #[prost(message, repeated, tag="1")] - pub editors: ::prost::alloc::vec::Vec, -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct GeoOutput { - #[prost(message, repeated, tag="1")] - pub profiles_registered: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="2")] - pub spaces_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="3")] - pub governance_plugins_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="4")] - pub initial_editors_added: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="5")] - pub proposals_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="6")] - pub votes_cast: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="7")] - pub proposals_processed: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="8")] - pub successor_spaces_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="9")] - pub subspaces_added: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="10")] - pub subspaces_removed: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="11")] - pub executed_proposals: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="12")] - pub members_added: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="13")] - pub editors_added: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="14")] - pub personal_plugins_created: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="15")] - pub members_removed: ::prost::alloc::vec::Vec, - #[prost(message, repeated, tag="16")] - pub editors_removed: ::prost::alloc::vec::Vec, -} -// @@protoc_insertion_point(module) diff --git a/sink/src/events/proposal_processed.rs b/sink/src/events/edit_published.rs similarity index 80% rename from sink/src/events/proposal_processed.rs rename to sink/src/events/edit_published.rs index 1e429b7..4a16ab8 100644 --- a/sink/src/events/proposal_processed.rs +++ b/sink/src/events/edit_published.rs @@ -1,22 +1,21 @@ use futures::{stream, StreamExt, TryStreamExt}; use ipfs::deserialize; use sdk::{ - models::{self, EditProposal}, - pb::{self, geo, grc20}, + mapping::Node, models::{self, EditProposal}, pb::{self, geo, grc20} }; use super::{handler::HandlerError, EventHandler}; impl EventHandler { - pub async fn handle_proposals_processed( + pub async fn handle_edits_published( &self, - proposals_processed: &[geo::ProposalProcessed], + edits_published: &[geo::EditPublished], _created_space_ids: &[String], block: &models::BlockMetadata, ) -> Result<(), HandlerError> { - let proposals = stream::iter(proposals_processed) + let proposals = stream::iter(edits_published) .then(|proposal| async { - let edits = self.fetch_edit_proposals(proposal).await?; + let edits = self.fetch_edit(proposal).await?; anyhow::Ok(edits) }) .try_collect::>() @@ -46,36 +45,36 @@ impl EventHandler { Ok(()) } - async fn fetch_edit_proposals( + async fn fetch_edit( &self, - proposal_processed: &geo::ProposalProcessed, + edit: &geo::EditPublished, ) -> Result, HandlerError> { let space = if let Some(space) = self .kg - .get_space_by_space_plugin_address(&proposal_processed.plugin_address) + .get_space_by_space_plugin_address(&edit.plugin_address) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))? { space } else { tracing::warn!( - "Matching space in Proposal not found for plugin address {}", - proposal_processed.plugin_address + "Matching space in edit not found for plugin address {}", + edit.plugin_address ); return Ok(vec![]); }; let bytes = self .ipfs - .get_bytes(&proposal_processed.content_uri.replace("ipfs://", ""), true) + .get_bytes(&edit.content_uri.replace("ipfs://", ""), true) .await?; let metadata = if let Ok(metadata) = deserialize::(&bytes) { metadata } else { tracing::warn!( - "Invalid metadata for proposal {}", - proposal_processed.content_uri + "Invalid metadata for edit {}", + edit.content_uri ); return Ok(vec![]); }; @@ -86,9 +85,11 @@ impl EventHandler { Ok(vec![EditProposal { name: edit.name, proposal_id: edit.id, - space: space.id, + space: space.id().to_string(), space_address: space + .attributes() .space_plugin_address + .clone() .expect("Space plugin address not found"), creator: edit.authors[0].clone(), ops: edit.ops, @@ -110,8 +111,9 @@ impl EventHandler { .map(|edit| EditProposal { name: edit.name, proposal_id: edit.id, - space: space.id.clone(), + space: space.id().to_string(), space_address: space + .attributes() .space_plugin_address .clone() .expect("Space plugin address not found"), diff --git a/sink/src/events/editor_added.rs b/sink/src/events/editor_added.rs index 4141932..56791e5 100644 --- a/sink/src/events/editor_added.rs +++ b/sink/src/events/editor_added.rs @@ -21,7 +21,7 @@ impl EventHandler { let editor = models::GeoAccount::new(editor_added.editor_address.clone()); self.kg - .add_editor(&space.id, &editor, &models::SpaceEditor, block) + .add_editor(&space.id(), &editor, &models::SpaceEditor, block) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; } diff --git a/sink/src/events/editor_removed.rs b/sink/src/events/editor_removed.rs index 4d0afd6..8cbaece 100644 --- a/sink/src/events/editor_removed.rs +++ b/sink/src/events/editor_removed.rs @@ -18,7 +18,7 @@ impl EventHandler { self.kg .remove_editor( &models::GeoAccount::id_from_address(&editor_removed.editor_address), - &space.id, + &space.id(), block, ) .await diff --git a/sink/src/events/handler.rs b/sink/src/events/handler.rs index b9787d3..f6859fe 100644 --- a/sink/src/events/handler.rs +++ b/sink/src/events/handler.rs @@ -66,17 +66,35 @@ impl substreams_utils::Sink for EventHandler { let value = GeoOutput::decode(output.value.as_slice())?; // Handle new space creation + tracing::info!( + "Block #{} ({}): Processing {} space created events", + block.block_number, + block.timestamp, + value.spaces_created.len() + ); let created_space_ids = self - .handle_spaces_created(&value.spaces_created, &value.proposals_processed, &block) + .handle_spaces_created(&value.spaces_created, &value.edits_published, &block) .await?; // Handle personal space creation + tracing::info!( + "Block #{} ({}): Processing {} personal space created events", + block.block_number, + block.timestamp, + value.personal_plugins_created.len() + ); stream::iter(&value.personal_plugins_created) .map(Ok) .try_for_each(|event| async { self.handle_personal_space_created(event, &block).await }) .await?; // Handle new governance plugin creation + tracing::info!( + "Block #{} ({}): Processing {} governance plugin created events", + block.block_number, + block.timestamp, + value.governance_plugins_created.len() + ); stream::iter(&value.governance_plugins_created) .map(Ok) .try_for_each(|event| async { @@ -84,19 +102,13 @@ impl substreams_utils::Sink for EventHandler { }) .await?; - // Handle subspaces creation - stream::iter(&value.subspaces_added) - .map(Ok) - .try_for_each(|event| async { self.handle_subspace_added(event, &block).await }) - .await?; - - // Handle subspace removal - stream::iter(&value.subspaces_removed) - .map(Ok) - .try_for_each(|event| async { self.handle_subspace_removed(event, &block).await }) - .await?; - // Handle initial editors added + tracing::info!( + "Block #{} ({}): Processing {} initial editors added events", + block.block_number, + block.timestamp, + value.initial_editors_added.len() + ); stream::iter(&value.initial_editors_added) .map(Ok) .try_for_each(|event| async { @@ -104,17 +116,13 @@ impl substreams_utils::Sink for EventHandler { }) .await?; - // Handle proposal creation - stream::iter(&value.proposals_created) - .map(Ok) - .try_for_each(|event| async { self.handle_proposal_created(event, &block).await }) - .await?; - - // Handle proposal processing - self.handle_proposals_processed(&value.proposals_processed, &created_space_ids, &block) - .await?; - // Handle members added + tracing::info!( + "Block #{} ({}): Processing {} members added events", + block.block_number, + block.timestamp, + value.members_added.len() + ); stream::iter(&value.members_added) .map(Ok) .try_for_each(|event| async { self.handle_member_added(event, &block).await }) @@ -138,12 +146,42 @@ impl substreams_utils::Sink for EventHandler { .try_for_each(|event| async { self.handle_editor_removed(event, &block).await }) .await?; + // Handle subspaces creation + stream::iter(&value.subspaces_added) + .map(Ok) + .try_for_each(|event| async { self.handle_subspace_added(event, &block).await }) + .await?; + + // Handle subspace removal + stream::iter(&value.subspaces_removed) + .map(Ok) + .try_for_each(|event| async { self.handle_subspace_removed(event, &block).await }) + .await?; + + // Handle proposal creation + // stream::iter(&value.proposals_created) + // .map(Ok) + // .try_for_each(|event| async { self.handle_proposal_created(event, &block).await }) + // .await?; + + // TODO: Handle AddMemberProposalCreated events + // TODO: Handle RemoveMemberProposalCreated events + // TODO: Handle AddEditorProposalCreated events + // TODO: Handle RemoveEditorProposalCreated events + // TODO: Handle AddSubspaceProposalCreated events + // TODO: Handle RemoveSubspaceProposalCreated events + // TODO: Handle PublishEditProposalCreated events + // Handle vote cast stream::iter(&value.votes_cast) .map(Ok) .try_for_each(|event| async { self.handle_vote_cast(event, &block).await }) .await?; + // Handle proposal processing + self.handle_edits_published(&value.edits_published, &created_space_ids, &block) + .await?; + // Handle executed proposal stream::iter(&value.executed_proposals) .map(Ok) diff --git a/sink/src/events/initial_editors_added.rs b/sink/src/events/initial_editors_added.rs index 7435071..2efb279 100644 --- a/sink/src/events/initial_editors_added.rs +++ b/sink/src/events/initial_editors_added.rs @@ -21,7 +21,7 @@ impl EventHandler { .try_for_each(|editor| async move { let editor = models::GeoAccount::new(editor.clone()); self.kg - .add_editor(&space.id, &editor, &models::SpaceEditor, block) + .add_editor(&space.id(), &editor, &models::SpaceEditor, block) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly @@ -34,7 +34,7 @@ impl EventHandler { block.block_number, block.timestamp, initial_editor_added.addresses.len(), - space.id + space.id() ); } else { tracing::warn!( diff --git a/sink/src/events/member_added.rs b/sink/src/events/member_added.rs index 3691969..518a58c 100644 --- a/sink/src/events/member_added.rs +++ b/sink/src/events/member_added.rs @@ -20,7 +20,7 @@ impl EventHandler { let member = models::GeoAccount::new(member_added.member_address.clone()); self.kg - .add_member(&space.id, &member, &models::SpaceMember, block) + .add_member(&space.id(), &member, &models::SpaceMember, block) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; } diff --git a/sink/src/events/member_removed.rs b/sink/src/events/member_removed.rs index e3a0185..078051b 100644 --- a/sink/src/events/member_removed.rs +++ b/sink/src/events/member_removed.rs @@ -18,7 +18,7 @@ impl EventHandler { self.kg .remove_member( &models::GeoAccount::id_from_address(&member_removed.member_address), - &space.id, + &space.id(), block, ) .await diff --git a/sink/src/events/mod.rs b/sink/src/events/mod.rs index f4f5433..1b5bd70 100644 --- a/sink/src/events/mod.rs +++ b/sink/src/events/mod.rs @@ -5,9 +5,9 @@ mod editor_removed; mod initial_editors_added; mod member_added; mod member_removed; -mod proposal_created; +// mod proposal_created; mod proposal_executed; -mod proposal_processed; +mod edit_published; mod space_created; mod subspace_added; mod subspace_removed; diff --git a/sink/src/events/proposal_executed.rs b/sink/src/events/proposal_executed.rs index 3428660..1690147 100644 --- a/sink/src/events/proposal_executed.rs +++ b/sink/src/events/proposal_executed.rs @@ -1,6 +1,4 @@ -use sdk::{models, pb::geo, system_ids}; - -use crate::kg::mapping::Node; +use sdk::{models, pb::geo}; use super::{handler::HandlerError, EventHandler}; @@ -20,11 +18,11 @@ impl EventHandler { .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; if let Some(mut proposal) = proposal { - proposal.status = models::ProposalStatus::Executed; + proposal.attributes_mut().status = models::ProposalStatus::Executed; self.kg .upsert_node( block, - Node::new(&proposal.id, system_ids::INDEXER_SPACE_ID, proposal.clone()), + proposal, ) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; diff --git a/sink/src/events/space_created.rs b/sink/src/events/space_created.rs index db04d55..bab0423 100644 --- a/sink/src/events/space_created.rs +++ b/sink/src/events/space_created.rs @@ -1,9 +1,9 @@ use std::collections::HashMap; -use crate::kg::mapping::Node; use futures::{stream, StreamExt, TryStreamExt}; use sdk::{ ids, + mapping::Node, models::{self, GeoAccount, Space, SpaceType}, network_ids, pb::{geo, grc20}, @@ -21,14 +21,14 @@ impl EventHandler { pub async fn handle_spaces_created( &self, spaces_created: &[geo::GeoSpaceCreated], - proposals_processed: &[geo::ProposalProcessed], + edits_published: &[geo::EditPublished], block: &models::BlockMetadata, ) -> Result, HandlerError> { // Match the space creation events with their corresponding initial proposal (if any) let initial_proposals = spaces_created .iter() .filter_map(|event| { - proposals_processed + edits_published .iter() .find(|proposal| { checksum_address(&proposal.plugin_address, None) @@ -81,7 +81,6 @@ impl EventHandler { &space_id, system_ids::INDEXER_SPACE_ID, Space { - id: space_id.to_string(), network: network_ids::GEO.to_string(), dao_contract_address: checksum_address(&event.dao_address, None), space_plugin_address: Some(checksum_address( @@ -121,7 +120,7 @@ impl EventHandler { .upsert_node( block, Node::new( - &space.id, + space.id(), system_ids::INDEXER_SPACE_ID, Space { r#type: SpaceType::Personal, @@ -129,7 +128,7 @@ impl EventHandler { &personal_space_created.personal_admin_address, None, )), - ..space.clone() + ..space.attributes().clone() }, ) .with_type(system_ids::INDEXED_SPACE), @@ -141,7 +140,7 @@ impl EventHandler { let editor = GeoAccount::new(personal_space_created.initial_editor.clone()); self.kg - .add_editor(&space.id, &editor, &models::SpaceEditor, block) + .add_editor(space.id(), &editor, &models::SpaceEditor, block) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly @@ -149,7 +148,7 @@ impl EventHandler { "Block #{} ({}): Creating personal admin space plugin for space {} with initial editor {}", block.block_number, block.timestamp, - space.id, + space.id(), editor.id, ); } else { @@ -173,21 +172,21 @@ impl EventHandler { .kg .get_space_by_dao_address(&governance_plugin_created.dao_address) .await - .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly + .map_err(|e| HandlerError::Other(format!("Error fetching space with dao address = {}: {e:?}", checksum_address(&governance_plugin_created.dao_address, None)).into()))?; // TODO: Convert anyhow::Error to HandlerError properly if let Some(space) = space { tracing::info!( "Block #{} ({}): Creating governance plugin for space {}", block.block_number, block.timestamp, - space.id + space.id() ); self.kg .upsert_node( block, Node::new( - &space.id.clone(), + space.id(), system_ids::INDEXER_SPACE_ID, Space { voting_plugin_address: Some(checksum_address( @@ -198,13 +197,13 @@ impl EventHandler { &governance_plugin_created.member_access_address, None, )), - ..space + ..space.attributes().clone() }, ) .with_type(system_ids::INDEXED_SPACE), ) .await - .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly + .map_err(|e| HandlerError::Other(format!("Error updating space: {e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly } else { tracing::warn!( "Block #{} ({}): Could not create governance plugin for unknown space with dao_address = {}", diff --git a/sink/src/events/subspace_added.rs b/sink/src/events/subspace_added.rs index ed7d451..9d3b9cf 100644 --- a/sink/src/events/subspace_added.rs +++ b/sink/src/events/subspace_added.rs @@ -16,7 +16,7 @@ impl EventHandler { ) { (Ok(Some(parent_space)), Ok(Some(subspace))) => { self.kg - .add_subspace(block, &parent_space.id, &subspace.id) + .add_subspace(block, &parent_space.id(), &subspace.id()) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly diff --git a/sink/src/events/subspace_removed.rs b/sink/src/events/subspace_removed.rs index be500f0..ba3c9f0 100644 --- a/sink/src/events/subspace_removed.rs +++ b/sink/src/events/subspace_removed.rs @@ -19,7 +19,7 @@ impl EventHandler { .run(neo4rs::query(&format!( "MATCH (subspace:`{INDEXED_SPACE}` {{parent_space: $space_id}}) DELETE subspace", INDEXED_SPACE = system_ids::INDEXED_SPACE, - )).param("space_id", space.id.clone())) + )).param("space_id", space.id())) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; // TODO: Convert anyhow::Error to HandlerError properly @@ -28,7 +28,7 @@ impl EventHandler { block.block_number, block.timestamp, subspace_removed.subspace, - space.id.clone() + space.id() ); } else { tracing::warn!( diff --git a/sink/src/events/vote_cast.rs b/sink/src/events/vote_cast.rs index f5af4cd..90033f9 100644 --- a/sink/src/events/vote_cast.rs +++ b/sink/src/events/vote_cast.rs @@ -3,11 +3,10 @@ use sdk::{ ids, models, pb::geo, system_ids::{self, INDEXER_SPACE_ID}, + mapping::Relation, }; use web3_utils::checksum_address; -use crate::kg::mapping::Relation; - use super::{handler::HandlerError, EventHandler}; impl EventHandler { @@ -32,7 +31,7 @@ impl EventHandler { INDEXED_SPACE = system_ids::INDEXED_SPACE, )) .param("onchain_proposal_id", vote.onchain_proposal_id.clone()) - .param("space_id", space.id)) + .param("space_id", space.id())) .await .map_err(|e| HandlerError::Other(format!("{e:?}").into()))?; diff --git a/sink/src/kg/client.rs b/sink/src/kg/client.rs index f04ce31..0a149a2 100644 --- a/sink/src/kg/client.rs +++ b/sink/src/kg/client.rs @@ -9,13 +9,12 @@ use crate::{ use web3_utils::checksum_address; use sdk::{ - ids, + ids::{self, id}, models::{self, EditProposal, Proposal, Space}, system_ids, + mapping::{Node, Relation}, }; -use super::mapping::{Node, Relation}; - #[derive(Clone)] pub struct Client { pub neo4j: neo4rs::Graph, @@ -69,12 +68,11 @@ impl Client { pub async fn add_space( &self, block: &models::BlockMetadata, - space: Space, + space: Node, ) -> Result<(), DatabaseError> { self.upsert_node( block, - Node::new(&space.id, system_ids::INDEXER_SPACE_ID, space.clone()) - .with_type(system_ids::INDEXED_SPACE), + space, ) .await } @@ -82,23 +80,21 @@ impl Client { pub async fn get_space_by_dao_address( &self, dao_address: &str, - ) -> Result, DatabaseError> { + ) -> Result>, DatabaseError> { let query = neo4rs::query(&format!( "MATCH (n:`{INDEXED_SPACE}` {{dao_contract_address: $dao_contract_address}}) RETURN n", INDEXED_SPACE = system_ids::INDEXED_SPACE, )) .param("dao_contract_address", checksum_address(dao_address, None)); - - Ok(self - .find_node::(query) - .await? - .map(|node| node.attributes.attributes)) + + self.find_node::(query) + .await } pub async fn get_space_by_space_plugin_address( &self, plugin_address: &str, - ) -> Result, DatabaseError> { + ) -> Result>, DatabaseError> { let query = neo4rs::query(&format!( "MATCH (n:`{INDEXED_SPACE}` {{space_plugin_address: $space_plugin_address}}) RETURN n", INDEXED_SPACE = system_ids::INDEXED_SPACE, @@ -108,16 +104,15 @@ impl Client { checksum_address(plugin_address, None), ); - Ok(self + self .find_node::(query) - .await? - .map(|node| node.attributes.attributes)) + .await } pub async fn get_space_by_voting_plugin_address( &self, voting_plugin_address: &str, - ) -> Result, DatabaseError> { + ) -> Result>, DatabaseError> { let query = neo4rs::query(&format!( "MATCH (n:`{INDEXED_SPACE}` {{voting_plugin_address: $voting_plugin_address}}) RETURN n", INDEXED_SPACE = system_ids::INDEXED_SPACE, @@ -127,16 +122,15 @@ impl Client { checksum_address(voting_plugin_address, None), ); - Ok(self + self .find_node::(query) - .await? - .map(|node| node.attributes.attributes)) + .await } pub async fn get_space_by_member_access_plugin( &self, member_access_plugin: &str, - ) -> Result, DatabaseError> { + ) -> Result>, DatabaseError> { let query = neo4rs::query(&format!( "MATCH (n:`{INDEXED_SPACE}` {{member_access_plugin: $member_access_plugin}}) RETURN n", INDEXED_SPACE = system_ids::INDEXED_SPACE, @@ -146,16 +140,15 @@ impl Client { checksum_address(member_access_plugin, None), ); - Ok(self + self .find_node::(query) - .await? - .map(|node| node.attributes.attributes)) + .await } pub async fn get_space_by_personal_plugin_address( &self, personal_space_admin_plugin: &str, - ) -> Result, DatabaseError> { + ) -> Result>, DatabaseError> { let query = neo4rs::query(&format!( "MATCH (n:`{INDEXED_SPACE}` {{personal_space_admin_plugin: $personal_space_admin_plugin}}) RETURN n", INDEXED_SPACE = system_ids::INDEXED_SPACE, @@ -165,17 +158,16 @@ impl Client { checksum_address(personal_space_admin_plugin, None), ); - Ok(self + self .find_node::(query) - .await? - .map(|node| node.attributes.attributes)) + .await } pub async fn get_proposal_by_id_and_address( &self, proposal_id: &str, plugin_address: &str, - ) -> Result, DatabaseError> { + ) -> Result>, DatabaseError> { let query = neo4rs::query(&format!( "MATCH (n:`{PROPOSAL_TYPE}` {{onchain_proposal_id: $proposal_id, plugin_address: $plugin_address}}) RETURN n", PROPOSAL_TYPE = system_ids::PROPOSAL_TYPE, @@ -183,10 +175,9 @@ impl Client { .param("proposal_id", proposal_id) .param("plugin_address", plugin_address); - Ok(self + self .find_node::(query) - .await? - .map(|node| node.attributes.attributes)) + .await } pub async fn add_subspace( @@ -194,7 +185,7 @@ impl Client { block: &models::BlockMetadata, space_id: &str, subspace_id: &str, - ) -> anyhow::Result<()> { + ) -> Result<(), DatabaseError> { self.upsert_relation( block, Relation::new( @@ -206,9 +197,7 @@ impl Client { models::ParentSpace, ), ) - .await?; - - Ok(()) + .await } /// Add an editor to a space @@ -347,7 +336,7 @@ impl Client { member_id: &str, space_id: &str, block: &models::BlockMetadata, - ) -> anyhow::Result<()> { + ) -> Result<(), DatabaseError> { const REMOVE_MEMBER_QUERY: &str = const_format::formatcp!( r#" MATCH (m:`{GEO_ACCOUNT}` {{id: $member_id}}) -[r:`{MEMBER_RELATION}`]-> (s:`{INDEXED_SPACE}` {{id: $space_id}}) @@ -439,7 +428,7 @@ impl Client { &self, block: &models::BlockMetadata, relation: Relation, - ) -> anyhow::Result<()> { + ) -> Result<(), DatabaseError> { let query_string = format!( r#" MERGE (from {{id: $from_id}}) -[r:`{relation_type}` {{id: $id}}]-> (to {{id: $to_id}}) @@ -448,14 +437,12 @@ impl Client { `{CREATED_AT_BLOCK}`: $created_at_block }} SET r += {{ - `{SPACE}`: $space_id, `{UPDATED_AT}`: datetime($updated_at), `{UPDATED_AT_BLOCK}`: $updated_at_block }} SET r += $data "#, relation_type = relation.relation_type, - SPACE = system_ids::SPACE, CREATED_AT = system_ids::CREATED_AT_TIMESTAMP, CREATED_AT_BLOCK = system_ids::CREATED_AT_BLOCK, UPDATED_AT = system_ids::UPDATED_AT_TIMESTAMP, @@ -497,27 +484,28 @@ impl Client { }} SET n:$($labels) SET n += {{ - `{SPACE}`: $space_id, `{UPDATED_AT}`: datetime($updated_at), `{UPDATED_AT_BLOCK}`: $updated_at_block }} SET n += $data "#, - SPACE = system_ids::SPACE, + // SPACE = system_ids::SPACE, CREATED_AT = system_ids::CREATED_AT_TIMESTAMP, CREATED_AT_BLOCK = system_ids::CREATED_AT_BLOCK, UPDATED_AT = system_ids::UPDATED_AT_TIMESTAMP, UPDATED_AT_BLOCK = system_ids::UPDATED_AT_BLOCK, ); - let bolt_data = match serde_value_to_bolt(serde_json::to_value(node.attributes())?) { + let id = node.id().to_string(); + + let bolt_data = match serde_value_to_bolt(serde_json::to_value(node.attributes)?) { neo4rs::BoltType::Map(map) => neo4rs::BoltType::Map(map), _ => neo4rs::BoltType::Map(Default::default()), }; let query = neo4rs::query(UPSERT_NODE_QUERY) - .param("id", node.id()) - .param("space_id", node.space_id()) + .param("id", id) + // .param("space_id", node.space_id()) .param("created_at", block.timestamp.to_rfc3339()) .param("created_at_block", block.block_number.to_string()) .param("updated_at", block.timestamp.to_rfc3339()) @@ -548,7 +536,7 @@ impl Client { .next() .await? .map(|row| { - tracing::info!("Row: {:?}", row.to::()); + // tracing::info!("Row: {:?}", row); Ok::<_, DatabaseError>(Node::::try_from(row.to::()?)?) }) .transpose() @@ -671,10 +659,11 @@ impl Client { pub async fn get_name(&self, entity_id: &str) -> anyhow::Result> { #[derive(Debug, Deserialize)] struct Named { + #[serde(default)] name: Option, } - let query = neo4rs::query("MATCH (n { id: $id }) RETURN n.name").param("id", entity_id); + let query = neo4rs::query("MATCH (n { id: $id }) RETURN n").param("id", entity_id); match self .find_node::(query) diff --git a/sink/src/kg/mod.rs b/sink/src/kg/mod.rs index 1be1fad..be467d5 100644 --- a/sink/src/kg/mod.rs +++ b/sink/src/kg/mod.rs @@ -1,4 +1,3 @@ pub mod client; -pub mod mapping; pub use client::Client; diff --git a/sink/src/main.rs b/sink/src/main.rs index 6c19a27..16aa9d3 100644 --- a/sink/src/main.rs +++ b/sink/src/main.rs @@ -10,7 +10,7 @@ use tracing_subscriber::util::SubscriberInitExt; const PKG_FILE: &str = "geo-substream.spkg"; const MODULE_NAME: &str = "geo_out"; -const START_BLOCK: i64 = 25327; +const START_BLOCK: i64 = 28410; const STOP_BLOCK: u64 = 0; #[tokio::main] diff --git a/sink/src/ops/delete_triple.rs b/sink/src/ops/delete_triple.rs index 1c26429..1e6de26 100644 --- a/sink/src/ops/delete_triple.rs +++ b/sink/src/ops/delete_triple.rs @@ -1,4 +1,4 @@ -use crate::kg::mapping::DefaultAttributes; +use sdk::mapping::DefaultAttributes; use crate::ops::KgOp; pub struct DeleteTriple { diff --git a/sink/src/ops/set_triple.rs b/sink/src/ops/set_triple.rs index 05c77fb..2264579 100644 --- a/sink/src/ops/set_triple.rs +++ b/sink/src/ops/set_triple.rs @@ -1,9 +1,6 @@ -use sdk::system_ids; +use sdk::{mapping::DefaultAttributes, system_ids}; -use crate::{ - kg::mapping::DefaultAttributes, - ops::{KgOp, Value}, -}; +use crate::ops::{KgOp, Value}; pub struct SetTriple { pub entity_id: String,