From c195f0cce7647a5a764d55a35c499f6834e3f2ff Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Thu, 30 Oct 2025 00:12:38 +0300 Subject: [PATCH 01/31] feat: add deps --- .gitmodules | 6 ++++++ Makefile | 28 ++++++++++++++++++++++++++++ vendor/GraphBLAS | 1 + vendor/LAGraph | 1 + 4 files changed, 36 insertions(+) create mode 100644 .gitmodules create mode 100644 Makefile create mode 160000 vendor/GraphBLAS create mode 160000 vendor/LAGraph diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..adabfa3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "vendor/GraphBLAS"] + path = vendor/GraphBLAS + url = https://github.com/DrTimothyAldenDavis/GraphBLAS.git +[submodule "vendor/LAGraph"] + path = vendor/LAGraph + url = https://github.com/GraphBLAS/LAGraph.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..00724bf --- /dev/null +++ b/Makefile @@ -0,0 +1,28 @@ +LIBPATH := $(shell dirname "$(realpath "$(lastword $(MAKEFILE_LIST))")") +GRAPH_BLAS_PATH := $(LIBPATH)/vendor/GraphBLAS +LAGRAPH_PATH := $(LIBPATH)/vendor/LAGraph +BUILD := $(GRAPH_BLAS_PATH)/build +LAGRAPH_BUILD := $(LAGRAPH_PATH)/build +JOBS := $(shell nproc) + +all: build lagraph +build: $(BUILD) + cd $(GRAPH_BLAS_PATH) && \ + cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_BUILD_TYPE=Release \ + -G Ninja -B build + cmake --build $(BUILD) --parallel $(JOBS) + +lagraph: $(LAGRAPH_BUILD) + cd $(LAGRAPH_PATH) && \ + cmake -DGraphBLAS_DIR=$(BUILD) \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_BUILD_TYPE=Release \ + -G Ninja -B build + cmake --build $(LAGRAPH_BUILD) --parallel $(JOBS) + +clean: + rm -rf $(BUILD) $(LAGRAPH_BUILD) + +.PHONY: all build lagraph clean + diff --git a/vendor/GraphBLAS b/vendor/GraphBLAS new file mode 160000 index 0000000..50cca24 --- /dev/null +++ b/vendor/GraphBLAS @@ -0,0 +1 @@ +Subproject commit 50cca249482611a47b6bf29c34b08bc8d7fc4644 diff --git a/vendor/LAGraph b/vendor/LAGraph new file mode 160000 index 0000000..e2539e2 --- /dev/null +++ b/vendor/LAGraph @@ -0,0 +1 @@ +Subproject commit e2539e2e8642a09ba6111de67739ebd7b59cc09d From d4d94bbe0347b88e092b7a05f6075092ace9a07e Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Fri, 31 Oct 2025 16:41:05 +0300 Subject: [PATCH 02/31] feat: add input data --- .gitignore | 1 + Makefile | 19 ++++++++++++------- data/minimal_demo/README.md | 6 ++++++ data/minimal_demo/graph/call.mtx | 6 ++++++ data/minimal_demo/graph/owns.mtx | 8 ++++++++ data/minimal_demo/graph/transaction.mtx | 7 +++++++ data/minimal_demo/graph/vertices_type.txt | 9 +++++++++ data/minimal_demo/image.png | Bin 0 -> 92563 bytes src/main.c | 8 ++++++++ 9 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 .gitignore create mode 100644 data/minimal_demo/README.md create mode 100644 data/minimal_demo/graph/call.mtx create mode 100644 data/minimal_demo/graph/owns.mtx create mode 100644 data/minimal_demo/graph/transaction.mtx create mode 100644 data/minimal_demo/graph/vertices_type.txt create mode 100644 data/minimal_demo/image.png create mode 100644 src/main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c795b05 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/Makefile b/Makefile index 00724bf..27e7020 100644 --- a/Makefile +++ b/Makefile @@ -5,16 +5,18 @@ BUILD := $(GRAPH_BLAS_PATH)/build LAGRAPH_BUILD := $(LAGRAPH_PATH)/build JOBS := $(shell nproc) -all: build lagraph -build: $(BUILD) - cd $(GRAPH_BLAS_PATH) && \ +build: graphblas lagraph src +graphblas: + mkdir -p $(BUILD) && \ + cd $(GRAPH_BLAS_PATH) &&\ cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_BUILD_TYPE=Release \ -G Ninja -B build cmake --build $(BUILD) --parallel $(JOBS) -lagraph: $(LAGRAPH_BUILD) - cd $(LAGRAPH_PATH) && \ +lagraph: + mkdir -p $(LAGRAPH_BUILD) && \ + cd $(LAGRAPH_PATH) && \ cmake -DGraphBLAS_DIR=$(BUILD) \ -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_BUILD_TYPE=Release \ @@ -22,7 +24,10 @@ lagraph: $(LAGRAPH_BUILD) cmake --build $(LAGRAPH_BUILD) --parallel $(JOBS) clean: - rm -rf $(BUILD) $(LAGRAPH_BUILD) + rm -rf $(BUILD)/* $(LAGRAPH_BUILD)/* ./build +src: + mkdir -p build + gcc src/main.c -I./vendor/GraphBLAS/Include -I./vendor/LAGraph/include -L./vendor/LAGraph/build/src -L./vendor/GraphBLAS/build -llagraph -lgraphblas -o build/main -.PHONY: all build lagraph clean +.PHONY: all build lagraph clean src diff --git a/data/minimal_demo/README.md b/data/minimal_demo/README.md new file mode 100644 index 0000000..95726c1 --- /dev/null +++ b/data/minimal_demo/README.md @@ -0,0 +1,6 @@ +This example contatins the following graph: +![alt text](image.png) + +`.mat` files is a edges decomposition of the graph above. +`.txt` file contain map from every node to its type. + diff --git a/data/minimal_demo/graph/call.mtx b/data/minimal_demo/graph/call.mtx new file mode 100644 index 0000000..4974f6b --- /dev/null +++ b/data/minimal_demo/graph/call.mtx @@ -0,0 +1,6 @@ +%%MatrixMarket matrix coordinate pattern general +%%GraphBLAS type bool +9 9 3 +1 4 +1 3 +3 4 diff --git a/data/minimal_demo/graph/owns.mtx b/data/minimal_demo/graph/owns.mtx new file mode 100644 index 0000000..2ef0fa8 --- /dev/null +++ b/data/minimal_demo/graph/owns.mtx @@ -0,0 +1,8 @@ +%%MatrixMarket matrix coordinate pattern general +%%GraphBLAS type bool +9 9 5 +1 9 +2 7 +2 8 +3 6 +4 5 diff --git a/data/minimal_demo/graph/transaction.mtx b/data/minimal_demo/graph/transaction.mtx new file mode 100644 index 0000000..f386f55 --- /dev/null +++ b/data/minimal_demo/graph/transaction.mtx @@ -0,0 +1,7 @@ +%%MatrixMarket matrix coordinate pattern general +%%GraphBLAS type bool +9 9 4 +5 6 +5 9 +6 7 +6 9 diff --git a/data/minimal_demo/graph/vertices_type.txt b/data/minimal_demo/graph/vertices_type.txt new file mode 100644 index 0000000..4bd29f8 --- /dev/null +++ b/data/minimal_demo/graph/vertices_type.txt @@ -0,0 +1,9 @@ +1 User +2 User +3 User +4 User +5 Card +6 Card +7 Card +8 Card +9 Card diff --git a/data/minimal_demo/image.png b/data/minimal_demo/image.png new file mode 100644 index 0000000000000000000000000000000000000000..bc5faa8fe514326bdd6042e7339d227322554252 GIT binary patch literal 92563 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⪻xs}(L6E&bg(N|{`_I= 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..e633abb --- /dev/null +++ b/src/main.c @@ -0,0 +1,8 @@ +#include +#include "../vendor/GraphBLAS/Include/GraphBLAS.h" +#include "../vendor/LAGraph/include/LAGraph.h" + +int main() +{ + printf("Helllo, World!\n"); +} \ No newline at end of file From 6a2fe26f482d47941c9c1b593a9fbb5ab15071f8 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Fri, 31 Oct 2025 17:25:48 +0300 Subject: [PATCH 03/31] feat: add custom types in main.c + change matrices type from bool to double --- data/minimal_demo/graph/call.mtx | 8 ++-- data/minimal_demo/graph/owns.mtx | 12 +++--- data/minimal_demo/graph/transaction.mtx | 10 ++--- src/main.c | 55 ++++++++++++++++++++++++- 4 files changed, 69 insertions(+), 16 deletions(-) diff --git a/data/minimal_demo/graph/call.mtx b/data/minimal_demo/graph/call.mtx index 4974f6b..388c043 100644 --- a/data/minimal_demo/graph/call.mtx +++ b/data/minimal_demo/graph/call.mtx @@ -1,6 +1,6 @@ %%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type bool +%%GraphBLAS type double 9 9 3 -1 4 -1 3 -3 4 +1 4 0.33333 +1 3 0.33333 +3 4 0.33333 diff --git a/data/minimal_demo/graph/owns.mtx b/data/minimal_demo/graph/owns.mtx index 2ef0fa8..fd44ba9 100644 --- a/data/minimal_demo/graph/owns.mtx +++ b/data/minimal_demo/graph/owns.mtx @@ -1,8 +1,8 @@ %%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type bool +%%GraphBLAS type double 9 9 5 -1 9 -2 7 -2 8 -3 6 -4 5 +1 9 0.2 +2 7 0.2 +2 8 0.2 +3 6 0.2 +4 5 0.2 diff --git a/data/minimal_demo/graph/transaction.mtx b/data/minimal_demo/graph/transaction.mtx index f386f55..d3dc451 100644 --- a/data/minimal_demo/graph/transaction.mtx +++ b/data/minimal_demo/graph/transaction.mtx @@ -1,7 +1,7 @@ %%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type bool +%%GraphBLAS type double 9 9 4 -5 6 -5 9 -6 7 -6 9 +5 6 0.25 +5 9 0.25 +6 7 0.25 +6 9 0.25 diff --git a/src/main.c b/src/main.c index e633abb..e906ebc 100644 --- a/src/main.c +++ b/src/main.c @@ -1,8 +1,61 @@ #include +#include #include "../vendor/GraphBLAS/Include/GraphBLAS.h" #include "../vendor/LAGraph/include/LAGraph.h" +typedef enum { + VISA, + MIR, + MASTERCARD, +} System; + +typedef enum { + MALE, + FEMALE, +} Gender; + +typedef enum { + EDGE_OWNS, + EDGE_CALL, + EDGE_TX +} EdgeType; + +typedef struct { + Gender gender; + uint8_t age; +} User; + +typedef struct { + System system; + double limit; +} Card; + +typedef struct { + EdgeType type; + double weight; + double aux; +} EdgeInfo; + +void edge_mul(void *z, const void *x, const void *y) { + +} + +void edge_add(void *z, const void *x, const void *y) { + +} int main() { - printf("Helllo, World!\n"); + // init graphblas + GrB_Info info = GrB_init(GrB_NONBLOCKING); + if (info != GrB_SUCCESS) { + fprintf(stderr, "GraphBLAS init failed\n"); + return 1; + } + printf("GraphBLAS initialized.\n"); + + // custom type + GrB_Type EdgeInfo_Type; + GrB_Type_new(&EdgeInfo_Type, sizeof(EdgeInfo)); + + } \ No newline at end of file From 23147e16b6cc49b910610beb4d0070806b99edaf Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Thu, 6 Nov 2025 01:43:36 +0300 Subject: [PATCH 04/31] fix: change data matrices types --- data/minimal_demo/README.md | 3 +-- data/minimal_demo/graph/call.mtx | 8 ++++---- data/minimal_demo/graph/image.png | Bin 0 -> 83187 bytes data/minimal_demo/graph/owns.mtx | 10 +++++----- data/minimal_demo/graph/transaction.mtx | 8 ++++---- data/minimal_demo/image.png | Bin 92563 -> 0 bytes 6 files changed, 14 insertions(+), 15 deletions(-) create mode 100644 data/minimal_demo/graph/image.png delete mode 100644 data/minimal_demo/image.png diff --git a/data/minimal_demo/README.md b/data/minimal_demo/README.md index 95726c1..d308006 100644 --- a/data/minimal_demo/README.md +++ b/data/minimal_demo/README.md @@ -1,6 +1,5 @@ This example contatins the following graph: ![alt text](image.png) -`.mat` files is a edges decomposition of the graph above. -`.txt` file contain map from every node to its type. +`.mat` files is a edges decomposition of the graph above. third column stores edge number diff --git a/data/minimal_demo/graph/call.mtx b/data/minimal_demo/graph/call.mtx index 388c043..b5e40da 100644 --- a/data/minimal_demo/graph/call.mtx +++ b/data/minimal_demo/graph/call.mtx @@ -1,6 +1,6 @@ %%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type double +%%GraphBLAS type integer 9 9 3 -1 4 0.33333 -1 3 0.33333 -3 4 0.33333 +1 4 4 +1 3 7 +3 4 6 diff --git a/data/minimal_demo/graph/image.png b/data/minimal_demo/graph/image.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec4d3a38b1c094256dd72146f46faaae2738878 GIT binary patch literal 83187 zcmeFZgHpo^08 z4Se9O6(3kQ`u!tb_r7D66SH^4(a0c^yNnNzrLR>)`a`d zx7legS^x9amjTcA@;~q80)4?#UVOchxibCFTbRnDd1zsvuQ>ew_p4$5Z$Y3?`2RtK zFiKq{&8LvLt=QKOb`Cu`a74+;$#;%V*U@NoNy+wAC+Au{@XE@{vVTSfUWmixM5KL< zQPtGY0RglMB5&?O=@aKWhEj8IDDxCbt<$%e?swozwy)7etfY7>IoBc``3PRpLO-3U zu1|IMfr1Mjcpvwe%$$dtyK8Ho9#cPUT_r$q=k-O}syu|!t%J(D(V*64OI=h{bWn8j ztpG(>en9~?0?KA10VsWaal)~i_oBf^*HI{NQ-gXCpuxm0(mdP*7Z(?NpgZo>v5cc5 zl;It!7b$J_Yxl6+2{l?BE5XXhM0wbFh$QIiOR*V4rdTI$k{tHC4i69KA`pDVrqHhw zd31pfna@Q<{Zc%4I^(u$gMM@=u(s`YWT?*|xk@t5l0eS)vOF)Vs4% ztjUl2{dO9hq}pc%o^2j)IM+hYw(W|qegSoVkxeA%z*ER-{M&Q?*K(*MBBBD!PmM}? zuHn$-o#Lkl z_kDS{qHg5iK!&7o)l`(h1L&i{&o7=+YzVjNdz2-S#cIaj7Ir`hc}x?-Kx z_|OOPBrYy-1uW%AzFJh@v_9C9m3)JNUx&y%Cg$60CyoJoo8jMFV<7-z4$tU`s{b3+{AKo12>lxqH_;d`v0urd?dNQXIqE652dk z5LN2mbgm7h5M+$)j&8}nxP1DF<9+ZZT%Lr4gbuf=)lj;J#9DTcWM9H-_nm2a%JHc; z*w)vB+sx39hu;W(45D4?ZYz7a-J--*zvfRX3${~ohSKSWyC|DvN8P}=Ee-Yu!}l8x zehlA(N)%Pj&t@pds46Ndlxky4r)1_wC3+Y3Ly)TO087fNOONCah3$J2{t z$No7!{%q}SWXQgCf4(jMhE9rUMQ)+M`r&Aij*12j_(9(!(TnwlIXO8g_2*BMVl>pk zvc4q@|FciQ?r4lV663C-3FWn~?hELr@8-0%Nf7(vZCfg7)leW@Jc5{HigXw?P;6VF z6!T-FquJj`z)!N+HV0M%ZyHw2(~RJ`3(;Tx&8VL!C141FG0mS{Ft9*F46Z zesfme!Q&5Y@Ptuik>j9(6XK%0(_DtivIrSi*Yp%Y@N0&NBC#5@F`C04qa5v^v$u5|j{THO?Y3s? z`G1Un{}1bMzPiQ={%k5FAtlX7Dat*0ag*sV>b?&`g^gkyZ%EK$niNVBf}OK6t1Rus z+1%8VlL>57fMoh`4eKiYhg(;n-{S~DW{=3T!jPrPXjFx(x10H`ql_}WO*6N-5^J3r z)^%b-8R!RTF6c%Rj@-Rrgm9VA$LL^}Jx`CxS^kZft`Vj7FW=rm`5^M>Njiw=SJ&un znGZcp5sPHSIENh{PgD-(zTO?T!0)ZMuLpT9?>d9R0J!b8uA)B?gdTW_;_ssTKJ>&h zXq+v1WVI-r8Av`oMKMdifBs2`gGNhT)$`$-CYF$s$tM92HxhZo{`Xqx*QWc37>bSR zx&<{HZDTWYRF0r~>YsI6NggJ;1b&pN-~x5NcdYDoZtY77)HX*n_#PXzZ)3w*QhfAC z7$ffWvW4*-WmZ%?{bzmEFCy|u&^?e9n7%|6%}&?Y%LFKG)nzhX)Y|9-tEg#h@RyOY z$6dKGXf*m09NJou!Z;}C?^3sZqQK87Fw~A@)#FY1uAZMt=A|GRwmB5gc7V3t@4_5q zuMo2^GAU{c@;p;t&3sZ)kaYWk1_r*k$md|XTh*=PLuGe_P-h6F8E(mM@q zFMTivPVU=HeVHQ!R$|!TqA;497a{jPlmDmS)Ck3{AlsQ^fcMVs3cf*b`nkK@9u~C1 zu z+2qhuh+N3?8M==rwwpF*D9;03BMAaO!|xhQ1pR=YgoZ$u*gBv_qd4)dZK|A1Q?gbg z1$3{acd&RO+qU*m?ZRgzw<(2~;bVzEO^-c=z%P8t!y`+AUB_cHD>se{lL~x0NAu_> zIol-s`rP+RZ^np7e)gXqN4op_8#au^q~@^cJ(b*LIYCi^gcUl$zK*?uaUYqUE(CaV zc$#-;UfRC`3UDHgG)0&sc!9g4-NJ=+2xess#6C&cKfW0XJH z5N!Pi-a6h5XqLrR5CP#{H>xAp0SW+Q#@-qYRWmfq03ZUWk(!Vpa~eabx7- zr9CL1Cta)uG#dZJS=$!>oY>vuv$sqIRE^SQE4|bngy)+a7XbxlvM@fsDd*mtY)o+R zPhZ4~%kI1OTdNjCKSl=>Y!G$t)|eL0H2_Y;{8HqN!vodyb?dc5&xW`yy%NVfbvA?I zM0l-2fgWo#nRJMQ(9Wu|v_Yp`H;4mG-X zjWv$QxNubnR7M0mwyMV<4!NI5k+{uh z$CASCasrsLD6XOVH4)S`a-@%8VkmxGTBTT*526i0_8>mM3s5;wm&TH4oZ~2kw=KL1 ztew7>C30I0$orJhnr#V^SDtvPO%@_bIv7or(ikmA%SSKEUB4&>MxLp-DnLEu=jSJk z)@`pt}XW-VHEUO4R=P*39nTE?%JF1^usjFH*R9nxn>6aiSmr% z+%PvO^a-s7BFo;XYi?KSOP`%IVmY){Swo6YP*fDeHCs1Rgc^W4!Uqoq=`Z`0B3HKM z0jCJ(T%B*r%qF#tWz)^QPw62CVnMX$>)uZd z=hZZis+{WdKm1c8#f|PKh)<@pW1cb=XPZbu4K7aOm`l7x_YidvPtu)i=R7L(t_y7! z6!AP;NcqisehRKR5$sDErCnh@@?~KU3e(SF!YQN0n|T}KjXqu0)-S9Kt_cy5 z$({z42FU2aNc_{|19vPSTjyG0<&DeUAX$xx@MhKnxxeAfAC&YmB8&UFA<0;81-9+XW{<7+R=L(dLlgsMH;ohee z$uNrOsm&O!QXDw-gTX+N)Jb>0^&9@#PfePGTi)?>GvUGCV(lLlte7J$6T6tpjKD^L z0^{onPgHlbab5BD_1`k>$1jbYilb5{nFG!hx(6e?SX%0~MLdO&R+0`5% zDtVI?o^o?b2tWxrL91bmZ0Q7|V6tLAE%!4m(C6GXvt+vtR%JU*@@eA5k#A}?X%YM8 z#~r$;7oVBk+(^PpO$w!5-H?q2XmUOMLuZe(aZz(@`*N;cZqg-5;_>xV zfOJvabF?)amgkuvbmEc*_jR;-xT2z~WG>L)0tX`M@vrz9>#;xrdSLdb=n}!2g0qk4 zh8;%WtAOX{F+ILYQB*4mypE^qhaOw?vE>m4hP8Eyf3B1{7h-oaJt43Xe7<>f`aPKw zwbDCMZ+tRw52V4JOV&~(YqPWEW-8yyK$6y?(2)?Cq{X;wGHwM)gCp9rUIpsXTtC>TY$^gx58Y8NI!|liyy84)0oG*W}!+ z0#3~=c#2^nLU9nvp|2Vht{fR%5!ISO>Y0_5*5PM_>fyZInz%)vf8N&OWOED^G3tP+}6;yth9y6yAWnQsaOS zwkUi?4V;P;YqvQ*8lX!OteE8OoC2RD+a7mBP&2Z~pZA-x#nA>-ykuG#|067Gib5AG zul5HOmiBkW(y}S)UG`gJeew`s65o*U*U=Oq^4bSKn-y8}i|BK~t-la$EnQm4GrDIe z--8Bd6|}pXgX!P#p!C7tCdF~-Pt4$uea_JZq?6PwzUn7t`+M)UJS9;!y$v5VBg$Qz z*AZ|Z!C%B>Kv|dkz9?pq{VSi{L$vszm7-nCiq#*Stgui~d3mWEbIthAUO|zIQRx2R zPZ5NyOc00cyCn6`*36~(gC@p>ft_S0OX;^gf5oy0D?))Vv%4%&S8V!L>bT#j+v5rQ zLSc{cS09A6U8yX{RVju`XfmFOv0MnlHJmqP?8Mh99L~Kr#~X!zY2~kcx&-U#y+9MX z^?;5+sSds4RV;`#v~-y)+bdS-3w%=%<~`cT95Zg+iZzVYaK0jHj>65Z&CI;P26xnC z(dM0M+v&m?1)8Bsn2!@(0dAKusK}mBTY?`E@~SaZZzGV;BV`*93Mx`O+m-5Lbgklr zVX)U#tfyV?=>}{JcqgJ7l*h-gCIR4gf?}V}nv8Rty`tp>)R>B@+D4yqMZwX8htuFQ zp*5#Dw?FWTBD8_Bs+xJo=8iQA7sL}o#eNSxpK~64v8gHqm(tFxA%FnZg!u9Y0NxHL zGQ%&e|Ky}ewc!+Z{p2Lc_QvW!hJEb}Loo;_lOf!iv1*?6G`MAdbp$PV@FcJRqOl$b z`g(LTn|_X$;>pJ&>)GP8iBLkdSfQG7kRcVh>Ern_I(T}sW`lS*W@Bp(oM*3$0g^YA ztTLWWV8MI~#hQ{^fi|fy8_NDEAS2XNu_P^+m&DOR&}S{Mw5q4=!; z;8SRHM0i?xx#OfmbGx_r?3yE87B@`92;AL$K%_+X(LYJ{{TT9@5fGSRS_A&<1#0Bf zagza&|GV(b)mW?Ez;KU3plF<~i1OjBs_59fByWDH?&79Fs3X~CNJwNZbnBK%I)L`e zdS`KbHCBg*+CCVv885XZw;2Gl6TV>8OF^uZIyeXZFCZ8XAt#9)7)Y({f`64_v#KUS_ zJG;SH@ojZ3Gcj#K+jtYdMvMmE=bLJ;%Rn#{IwOM*n&!jZ+dboylTzU_iE1EIRh4># zp^|s{wyNW`KAh(l3Xrh=HCvrX?pdc;fT(X2E7TMM) zne;?$T`5=;pm}ENrumPw#Y-@X8S*kg4?-eD0DFtpx>;`TY=@8qMnuPrE7QDPE4$*S z34Z`rlec>sZ#q*{C4p0&6>;YpWP5QgIP#4Q4yMzmxV`{|QbnKgHllIvAa0sz%p$}i zLtWMT;cHCNCdblgzaQV;XtPtlvZwsb+F-6JWJ*Q@7a#+tjopXT`v4NySHAHN=lhff5aHNW=SDxA#>8=|bIQnY zV7_a%e90Lz)4+SRJEd^QE)YcD`msvwVByw!8{bOL`54}{g2M{z<>(Y(FgnAp#F4%S;?ag+VdxsJPfzb>2%(KZg>#8Zxa*^OC z%BZ(FII6H10~)@dq(lh_<@MFopP)WqKnbT^&AH;+vk2B~+jV$+{DI5QWU0T>pAm#k z`kWvO#;Nx}>*|XB*tZI~hwZThny;;Ivcc=DtOGM6tXByHn+tXHCpft>dD!+P^z_#r zGY)&+I_CqmD;#w|@H#YzJ3Z6$`5$AY8k5p*bL==Zy2XU*QJ!G2@{5X+f4e{PoUQk$ z0v^4po*wzOH_-kNs8Q6R3jf!(9t$J*D4 zjQ%U0W;Bh|vUBb8lT zs=$qflJnEGva9Oo6x2AZn0Lo)JE-Ee{!DmkA#q-dbgp&k7u?S+FIV+{oeOvm_%~Sf zNC?<+D~3l#LPCGqT^M^q>txq`E%9$7TIULRJr8V^Yr(t9yu3Vcp`ZhntcCQ_i16bB z1tjiX&p|zN&K=N)> zE^hhJkHqer$-MnfW!o@BL7w$ zHK>PGXQ(fp$ty$%N3%Z^-ATNRNt_xnybi{-%OqOMJ!)$qM2z(%%7ap|a1UuqO6xn( z%u46-I!0C@Cyo0wwh~r^3RXpdB2x#*$K8ES=YbsuEe)D{Up`R#Q*+b@{K=vMLd8^J}v-A@=mxL z>W}n%6t2Mv??y(Bp`z!u#y~)Vq++R>5@dZ_Ikky*d95|zPMAlZQA__Vmv^R9=?XCR z#L{Ok>fU`!)c^n-GbEh2&AD^U!`N!7=x=ScZ0mn+AH2D9o0Qbmbm(HAGLg}J=`YmA z3snRl|9tHQ$QrWHRXyc15vq^TR4N-2Wu}hOnXeyAmYYRoMu_m$vD*WMgttXrYwOVJ zj~msX=;Gq?{TK$@zJ-(BP{zHaNiV(qak`n6sQ#GiVU_fU+Byd-w=6D>K~u+aX=yw| zd2ksHFfr1$MmJCKbOJ738S)cAuKQN~K9qym+1Ud>j2D_}L7FM#r~tXK<0`O-CMVTy zFZ+!HyPG<@Fn$?b`d-Vf(WawB!OgFp@!%kq)4T0$NBx^x|67)JV;_cV?A@|xfFmFo zdy!YJh0@jCi5Kx0|IU~Hy8OL9XM={M78wp5R_8L18oAlo62L14BE@~PVr+PFl2JM% zc?PuRl}xQ9b;yXZ7o}lTC6_L*C5BA<%v@t2eA#?B*KjJr!fi>kVV5|0@CY7xruOq3@xiEe zCro|_ryCWXb=h=HYQs;O{s^nq4;J3Cf$HtBPwN=ICNYO}IWn5O*&D=k=MDc-M0YI^ zCQz{#xwM^JLssE=xbq3FI9icpk$$S3=~3=KV@)}xCzu>wo0j(a4;-G9HUkuVWF&s{ zmoETopR9AX&GI-uUm8b70WV)=w8dT;CKXyt+{3G2biIlOx1Uk{+Z%`J?nk%!>RDym zd+uwrc#;7{l&F&)aNnTF=dnR1rS3U{7b=0nE6;JSnreCj_<4Vpk@}lk>!ZbUsY8C0 zNu$L>E5nZHM$B?nN@2VP@N>h#KoT#bw$v2)jl1^e0|h=wf?ipU*QW;$zPW*RMii@y zB`}UvRH8Ds7hK23Lw|Q(LYF*08fUeI77PbI#($(A!S(d%T7pF}@%`${u)!P}ELl1@ zm#%7dgRsvdboiA0(cOnGx66<#7RZe^g5TyDt#nF7gpdBhV@q>14A zIAWAyAcuI_Qx74_?72zxhUQ0*kxGb>Ys zfDC~|V@=EV)tk7vfMEmjA@c?bnI_epOYfR&5uZiebsc)2;Nn`ZHzuR~gE-n3 zJ@(fpL<1hBRFsz+iFIu5A45D5abm{-#s>g!D2W<__6N9WvyeM(>v=hkgmM6=0Bbp6 z$2+zg$ZB`97UpeR5q&+qqJ)G5hSbZj2R1;UJ-P0AuGyfudn;;eE1dEfi-m=k?!zh? z%-nA$T;>Da_xUd>0cYZJKgOtk<*|s-kigg1*HW^K9x{Io-E@bU=bzNp^pE90zUA}Z zl>*!!`ASyy`&hDqsl3k23RkN2 zr`AcRIa?lj$jWwqUAC)jogLXr=Q_ z9?7;p)KX}#;dMuC$Smx~8Jo?kOe6Pg7O#+Tvl%ywcqz&}CgpJRrlUvo_ zjwI-P%3h=kJ3U{uLlR(s#>U9iIwTWP`ToAq%v9tbaHCHoNnqg-0QoRg^gfhBg5bBE z4mo{}QXN>jDeS6$b;XBZjMHBx=5e(p(?g!Ybn0jL_Ki+?k|0HgPSYG?zYtcQoCrI) zP6aJJF8v89D2~2DkTv9Mte4hQR8=z@8X9u-rrT;9CSAw$7>XGMDduW5+J%pRuL;<8 z`=Yd+I1DBi=JU$7{IUZAAoTQJB#jzZO>=>8#>wX`CgFq5;M9owh}@IeGLoe8i7V>Y z?sk6%tb_6J-z24o&`{*Aq@{~Qda`r2*3|Hq^ zbq94~Jun7dr-Q%0UGonxK40tyGd1C?zo7!a|Vb;rje=by9_bw$~n9f#PImLg2hpw2L3TxwP+0wUrp(rra@~B{=Y{$5> zTV<^26+%|-6Yy-3*C=0FD5gRWJ5PUqWRyTv@|yvuoLW1(svMt7=pfO*I`5wu!HQNZ zQ14_9{(0iuA`o|A0X zolf&2rM0ST?dRa$S?&Ai5O)Yyfl|%>22$kB7-*e?oiRk@q>nRdNZUm+20ec#@3(8M z)Lb+7*v564n#@Gc)1dY62T8)QDK_(Msbb(27PD2ZkJfN|t>yFD_p>N{ERx#OI$WnD z8U4`=VlwV7u)qzrumAac-cUFyk_uYUT`DP-J{#u1+l#{nW~%~7;bA4($nvf2cFcUT zOZK<)C9|!KBuB2mp|xSiNB;#{GoNNkK4WbPdOXbb80}9i@aW!<&VTHD_-?4Qa+Jx& zc6m{TChy!I4oMt*Ribcx&>92{8lyjZs3H+K-}{Fc9An8_*PVeu@lbOTHYi{*pw0x7g_EErUGb(f*}a6>`YBS+t<{|Pus{7pZxvx?EpTbWv2Il34S-R# z3Xgp>xDGCK9k^btI$Ql8<(mbUU{pdAgtoGgS&QM!IX?FQq!byi>+F31iV-Z`D+&vhnb2_a3O4?hhN=Xwlp&u#h zGv9~#5dZTWC3>w_<4KnGlG((Utfd)G=G};r&gFIcAAo8;Ut08G zx`~GGJ#~iMEMho{pqq&)s3^ajsH6@b=F1G8g+ZQYDTbpU@wi4bpxp5MOjt=U8q-_ywHGK(lf$_%6fu->-|S`IGhQk+U}b^hTn7bK9qcXy z>Aszyb*GKf`qLkmbZPf6yRH&E!)Eolx1j4vGDEIqxqsa+P45y z+T7YYWfZgU^%yvm^j?nAE>vIrSXhn*y4e(YLuq=D_D~1p(eyP~+-#MiS7GtH<~a1> zKu#=8Ucyqx|BhE3Rv<$^8NYdEOwS!rnw4kUSF3wSs9F5cjuh?%K+JnD!+O21tnTF)DW9 zCIKbhtc(MSFD@_)5&U;b__ek}O*_$2Rir3%ypOuoyTv#p(lDa-Tgy%iW|A5M`$$k4Pt{rw^V0e zDeCsGxyI9r*A=T<$)6)t zmCSn(2MwUU{!e6snJ@yse{yG6?V|e!^SwenFVVuq&7EId%xd`Fx^|{`ecjw@qLg+f z3+x3Kpm!i4CM#)bZhcir`@dm~%5O|a1_bP`iT1icQ(!BR)ENaUaXU+!(d8};f=`Dv@91)?|n?O)82hSc`%BC^-CCIcg6MWk_ z?kcf6YzeWML4z5;Gh$VLZ?i4_z1_c^01y+I$`|yo5#SOKRVJI71dy4?PJzWU*a8Ma z*>S*tAF$Vm{U2U*lF)VwRYPlEz*B%1cmrNw7GY>j&JYB>QK;el%aa~^FF?`AbF8G$ zv{j2_lu2#5lcE9q4?x?~B546_m+8PYdZ(+c&pWwb1xZEW)W_Njg zmcs*llnqsj0q%t`s5pJK;>|KKs+T9|Vq-M?FJD-mP<{gC5lFtegPQ;N`N>RFFP6*y z&cXnb<_8~ltZz0R?K(D z{=enr)IhNxg0Jo5F4Ex5u@#xqzGE)i%~((;VP&YBxE)Zq4CO$cJh?>+5E8yx|E#Hl z&+4GgyV*Q8GHMMFxLtRWVk#@bTBPuYQ19TnTUKRcM-QBTi2j2OZ%$6{H<>vOrU=(rdCNZV&iw$B`QdwIG+UuexSdz&7{PCkLC+mZSAD3U#)7PP@);?OyOS8x6c z$4_pa{g%~IIG1zt6I9XXw`5UyJCICLy(i1*{!cRcNbLLLLfP2GVkc-w2S^gQ89*e# z0Rzwq_~o4qAOV~?5!|1qu9}jc$Bh$lbu)I2ap7iz$OE*Kx);aznlk?vu=l(v?D-sI zUf5y7&q$}6ybWZ#Ucj=2c(w3Pyxn?3V5nTs1l|5PR`^%}m>CAs$6=@*g=@f}0VSBg z`7#{=ddGWL8QvFgt+eujKKQa<>_k+8bQ7ScU?lNYr0PHq^pr87qMQxF)s_XL|Xf_4Z)}wEW3@AIRA4L`4NxuMY2wYxg|8joO^v$(ISa>6Ee7kv|Eh zNb<;d-(A&raLV~)sqX_g3N(+6NC1d)+sA$K5i6R-11cKWu^x2A_?{S^P~y%NEora^GxTh4W7A?&Tc7?ZSkY8WvC_n!js^ z!Qlq?3g}!{j6_V#m)!D9G0@`7_grYfUI8XaWaeUyLLUF!xb0&pWqJ7!a5QYu{hDu2 z)c*-f1aGK_0Om_O;eJ1hwg)~pK4YNh+c!-l+8l>*Va)|Lfe&m~aQE8Ox?XnTW9G`m zp{7%c%HOUHsRPepl%i0czrTOn9Ne?{QjtN043B|JvU;s9qXGLV9@oq}UueJ>j0X)i z^UVGP#Oq1DiJat-Z8%c^K@W}iRg!q_VoXPc#_`2VCu8ruZbOZgZu(T zoHpKwc=YRkT1)wNaZ8AQ?*K2DpGI}}{@vIAl+Qpc7tL9b{*D)&41jfce`iGjX+csx z7Zd~wJ4m|`ZgQ}n?t7-fLuoPhDpC_? zACpPMz-m|kV~f$cxpYxod~q&Lp}kTD%&f7*Hs!+G`9cyAqkQ{*be;=R1=}mtC}0{4 zI=KG|q|dI9;)n)E2`BmaE4Glam<)qcbM5CY|P%)J2w89gu*}b{y&wQm#&LD zaO)}DmLeFoSPZIPvI*^JYQNuPs&H{Ohm4W^oo*Fv(~5ZF zDh%Z{^#ffW_&)?))5baBBNjMlU`taQHn%i3@+B*PIYMZr7@)|=t;~NmVN-B7FjQ|n za4p43_Fk|Ki3y#X7c@^|hP+zaR-Y1#-Yj|K6x?q9w-A_DH*s&;9)khz^3$_pHSI_( zN~yZZ$$a2#nt<6}fQ2zJF@$PYn+i*v+>p_r(*snS+GNn`PTOO^%jEjZ7mDhjRe;T3L;TEv{6R;N4x zh3XU~odd#vea#7o2EO0PTSj7I&RkFccy7%y+*jf#z9LfC(#@oJRbNHuY zGJ)@@rGtv5T#ei2oaDcZK-z=?-@Kl` zPD#^GUOg7k^SeLHIn1QvU6S;1Y<*p8m#cAp-7z+RjEDQT(7!06i7+TJlarH~{*wc) z0x1LENISUy1Gtpk_bt5B-1xqyf1EOu^v*1gnG-CkYbefRYk1*dD&lf7bDp!;Co*gS zoeKcNa$VICG%E259j9RM!mK-ng(3e&$+LS0E^e34i!0|lbH|=Brw+z07sk{su_r!AEQ~bIojhEx(Q4iN21f6rDctuaa#w(wWMN_P6y)=B#Pv+C zzn?&dTM1WHXIJ!T{4G7P^EpbBn4J^M>ZSbK0{_@*KHw?)&YFS2#4QV(i-!jVX4ZQ? zf#L-^u#%x<3;QNU7t@`vsH45SFyOa77!m}HD&XHnX~sXW4nSg@@>ZeQ1_hhu6$fE2 zgRs-?DW(2i3hMx90v|ZRJnJ=o53XvtMq?qa2@Ra{oqHuyR^Q#NpFO$x(wtYvGy`syDlua;4qNgYS6IbOQEC45i0^;u5 zKqEa%w*1V(w%VXdFo>e_maP-5miJV%Ni>xIHhBouKQLi%Fze?Vo{Z+zdfX_+Xd>OB zrk7y~0YVf$>b4k4{_4-lN{rzz|2^Lt&AP?)_TrF8@`<-k&%XYaW*Sj+fs@~&iQblO z+5~Nuwx@Wt;AniYbF$!Eaa0@s(YM8F1(J5B(nZ&vE!4%4quz1+xO;!$S@58FEv}fY zjBquzSSKmd9G}|etEo}EVgErYOH|9|H?8|~u@x2GgBEn8^2*xE=~a#Ar-j&6t=vMp z!QOv%x|RBMw6&M)2e6V@ud`7MV4X)`!}*!V*54I0q~AngGT=_Qx-X~B`)6k)d7QFW zS{f~xeLAl3Qtgs=zNRV}(taX3_94mdLCyk>^L+}cg7^j6lxrNg<%an4R+s&fdE@%V zDV{kfP(87F=SXF0*_gR@^W~6VROBx)Iq4Og=8m#&QPtmd9(*f#Mf1(5d#C+4fci(} zUJR|)-lJw$6VOrtzoTMKdSNuAjJ8v-1npCV4S2F~Y1jz$(32C8<2J>hs1%?Bf)x^h~3K{V|*Pn1bhTTJG~- z!ZdKf5(j#H*X8(^(f7FTCF05&coUPmpg$D@1_L~XE?uIU6U^q#Ftk<3n}>Tn-r}X4 zQv$AcmeV|Nsu-3h0s;oiU8;HD!AMpcYkgu}i3~haZp+_pqkC_xgo4y9Uo3Rpe~)i2 zTQf6+)ruTC$l1S>);+y2^fakge&7=p4;~(#5+Miw^=%D<**z4Ae9$G~kv?1{ah2FX z=LbV*Z$9+6R6fb6&u>Nv<&oF<=Jq#-h#y;@l(lb5djIqdwN6}pny6mXvQ5taLQi{~ ztD<~=c;t}92hJ<059~cqv!N9=Q_9X1 z{QiEXeV>X;KJyEN&YTjlPM&X78!`>1ewXD;y`v&7HekB398DKMVC5BR8%u~^+{^To z;U;tUOZ#0JY=DO2rN-TvE5?sGOUzF7J>l#p2G-|0^*58ARoD#fsxlG*+QzFMoPO!D z^`l3R(jO0-xO_#ZcwYJNMGCh%s?qbhbd^xt4hl!`%boT`w(Du>O*B4k_|jEpM85mz zO-*unj))&7t<-D{H$Kas^uN=a-Z_@u_l~>P*8joBcr?{8K62sefGU`fu|_$3-_Rtm z*5^%uFYKij&%W#JN8_$N#`l>)uZds=dZYSQO*-TU-iyY30$;yA@LgK5P^k5weGHsk z8XU}3q|>FRzdNoqnTcBIB^y;I3z{nEewb=nrAzSOvHsp?*e*84#Kbi5gQYAGe8Pyf zm!xbKJF1MJa$(>+W_ZZt5tG?HuFhM=1rd))keOLj^ek5ko{)=dSnIDP$a-&|t$HLC zbn}Dn)^rV5ukY;9PWQbudD9=W_>)bCUPY}TF*Z7cr;AN)ve&9YTS-&%lWZ)joi4U` zdB^b=QII%dQKh&)BwRGpdkN9_@6G22D1RNm=VEl>8?SX$qApHjDJ?Re!CCHlUgWHJ{4%7pNF>Y34FS(+f?;sFXKlg!Hx zX6go)Y|}?Z!zzU&do1ic%X~C}Gp@T$pY2&A3SDajRDH%j|MDE-f1ycdMxS z>U&mRl6AQC(#x@I$~S^&0l`cfyc^6L$8f_Po!oq0tzBjJ-j%U3=dl065LNfWh~NqqlwU_NpqXXvWob$)y)~|nDL3laJn{m6t;UNi4+CGPS5RxJGSBg&G0ZU}>OFt?T^CwJpHtqLax3$8-%q-`u7 z7noy=);)ICPYI58EgiS4c0WC;HdJKR{?PO1Pxvekryx0mJGLW)`c>m?nWn ztV_A2zLuIA^69jGVQ<)^E$M^gZb2=27kPPHM?UftpEEbN&(sN5{$}>Gw4{4()G}`Z zscx`8z)80NH}L}eZ5bRIT(g6*277TIz0wdQS2?b1S;Vs4$F0Vi2diPyM2@BYxbfo( z<&nx`0u`*_P})Pc{>0UI_Sz|-!Rw-1^qPW;Yqnpc2{q_IVgqVFf}UTF=D@##6&)QN zi7Jkt8X&Q*Jpg_0qxAyKk~ddZ>{P`5g@qffNgVghf+aGR638Bw@*IOG<8l8Y`&^%b zV`xac{fm?rgUF5&eQ%3wnG79SVj!hyeQ+Z}Z^7;?=adDfI1RD}CZV)~)nM zYp2)W&`vwYgDeGmXXp`qFt@8-Km<(cw$3Pe~RIIHAz!Z1uj(?EA@z z?$~Z{N}qgYCNfc=%WP%``D}Y3fTA7u+GVgmJViI3*ieg)_C6*QELKRsmfyJ)cg;GK zUub(wjF3V(Q6u5Mi|?cE<>;sox`{I6GmwJ;8)pmOxT;`m!smRmg;NZO*`Gg~@C*r+ z4j2M1g1W?ye@E)-bTJxf>*n5{@@>YW&}Ic0cx}4r?LNOSO+XCCbH4e}9ASoP>2|Z+G_XZu2NzA=z|PfAu4HV4wW>H@o&`XxvoYppZatcfD8j^wf$FxAU%yyg5fH zp-NcYmFFTrpD!I{o9@3cvu^&fMG%<6Gz}^%=UZzFd_8z!p%^&JT_=tw{pw$3%Iyj- zK2LlwtunRD&V821nn?JjfHQMphIHEwcQ$f;qyVQ{R4$oI_SZp=uYNzbrD>Bq;ngpJ zftoQ9_hJ(@@`W`|nd=eY_7QmH$k# zP*?yw1aoMQ85r9xn8EL&qctg#igTeTKM() zWhqWJCer?**>{UMjACO2`S}lQRmA@F*gaT|I$88j=5G@fj4;+@CkyJd$w)Xkx)`nu zWGsdv*|a|_qsENk#)TWa4q_I+xu?For>8eAnOl_T5#1LEWgr+Fua_qj&Ab4K01gaZJKjiV=rP_nX1@*3ql{SII2FvOh zU-kaTSQx2%so4ml;bT=+qXjK7+J8H9hZ1of5Yz5{PRjF^7}uOGj7 z$D|8J05m_(7?=;FPw|z=c&A=~D+(?z7SSs343xgNI5t>S)1-1K&wRY6O+qIemS1hP zg}mM2kPv5$CnjECeOQdlWcKHHg1fh{Z740|`WsI@Q#h~?+W~+f?|#=>b3XHlwbP!p%RQshtdJ&3 z*43L7GGkdc0G=*u9 zZ8=|WJRDxgDk|VDyFcm8U>_snx!?XID=fJS_vkE8qt**fNFU64zz0-PixjF)=S6xGxY3XPbk-)UU60di&(wB5rEtb`V>yB5~ zO4drYE|ut5ZSU9Tfw}%+Jo3kQ$N8yf=+9?=i#rv8nn<6Mfe;QiLUBYBO!0Fxim#?#{c5R~ARoTvdjCTjF4xTZ5b2 zyzbm^d(C)7;EcGEym~A{g+sA%gugVeoznAjwWhz<+&`VHaN`6 ziSLy%t~trUQ$2X$X#1{1mT)~JJ>y`N>;MtML~D?(dF#dAZbtu~LrROYwfyVj6Nu#i z`OHY_MuDG+)3O9~IAs5tKLcREvugF-Lqo;d>^KF-7?Dl+!JkWimc!N(BcG*o%lLAu z@|s(b?GTZLBVqOG;W)s8efaU?2TP5TFE=3!hF$8f=;_6NiiuT1s4zT<-aro? znr&zCAA)snRo2c+5lyD~gfz4lpwE_|fT&@`{d^rYmH{y z?$kzdP%L1!@Xn@xnl`scJUwx6BQO`+yM8O5h#0rLgA<_EBhV$37b|P^-sD=#)F13t+aQvsB$7`C()>S69^uj^{Fu@ACY%|Dwx{0sytKfR!JCOlrcw!ZWYk)Rz zMr%s!7QWo(gaK8!vPukN;q+lpSWF`Iz;Wwq;$?m;uP)>>alNSpQ<=C_DwRf zh^@1+@$p^YOgQ36S__`7Z90`vo28kz4( zgIfptE|gFU8>uXvVr1HyP41|#pLNdh4=eOhx0C9mJO|_w31}NNPq84+e-4VE5JusZ zaYNk)2b@#i>jP91t?-Osk-}hz`t5B?E)(@WRw;vU;`z64>5RC8($rSyP9`B%RLIDJ z8waztNh-G40ZcBmg%RF%oUp5@VcyUcvn%e@foA+_<5K?$&%k_#VD9737GjzS*UxBj zT7cx(w480QNqx3xVw@^lhYje8!)*lqH~W~{o&ARr;gryfHFMFN3$12Q{pMBYR=%Y@ zSAS5i#uxbQ^L|6AdZwR5LurB6c}QW0X2&?%K;`-r-ATqtfQ_F5hJmIh>T`lSfB+HC zreaA7Pn0MTzsIU=&9tf8VsGNN+$-p2jXoIdqqkibB@-^M>Y}19DvLJV+4_x85DU3< zUsD+?q)ziKbPDIxRc~{>g-NdIuhw$7PUu7xZ~{@}yjl5K#&@S_n!9<@YUOL(fD!9X zM{k*H*A1_@)M6e%_3OWz5ck+OUOz8d*X`ugg^V@e@zaD=cpg>+RckBHTD)ZWFH?yW1UP40z5zz&2zi1~bV@zNHarI7ue^8&u6cARw6+Sahcm(}Ux zo9c{8A@xb^G^^80ayn&}3HEFqrHck_2RKgcYAVxzhxp>7Oz}z=B)ynXh2%Og4-Ww6 z=+ffjhi`PflbYdpE1j)d@zi#0mpSSA$yf=u#;lx(TWMRhMMdQgiPvUtTTBS`;_B{J zEBB51olNLWW^4#xc)6uvquw9>?OxpVaj`@<$MWqU$up*<=$wbp9u{$}Qf(R^MXgEl zgd~mmbw~0Z_>jk8vgpEUX2P{ha1o1a?knJxa^@UP13V(%JX8$#7!_tae+E#qV4dYJ6afrd7@$j)f{QF8ZDw-o{b9fc9>`R`eH&Xu3eJ|UKQ>D!J$zS3-gA+Cj{wx*zT@Vd?SHH?c-Zlk~nFBeW+rl>V@7y#PQagJ0`K2=45X3 z9nI-|+qLKMm`E#y_fUfleIx)1PTK_Y3Axwd4?0aY!`2B-vR`W}a4RV{uM13UsG8vj z_xHyLi-{3BlH=BnRlWVUo>e>>rEarQ=FSt*vQ!YgrA)*D&~X-knQKB!@!HWay)BQN zXLsk1NAn@7)KktOASr8*u>!k?!){FHxf=Nn@i>4qsC$8LHTWTMT=$A|#H;g{w}5Qm z)*upQT2$06KEt#^o?!ul>wfrs{FZamDe_9C|m`*jI_PnpkDO+|$la{Uw8W$~$sOONoJij97_FoS?WxA%FZjfS)FAc%voG zLFD0Z@FRLyGZlS(4m)Gm9FsPY9qk(W`XP;tlKmxt$FA9WwW8TY<@5HiQ1-|Q`bv$b zPrZ{k*e`7kcCEZsD&F@*Zx{`r=+UwLL`DES)OtS?$G@gl&z+7(-qQFP`yk+s2LtX{ zxM|hf_xgkczN_oA^gp9WHN<>pJ}lu0s^9&%WFzD~>+&pdR_t^wYJaGigssLgXfDa` zR}zg%=DlgAGT7%GB>*U@%K?uXzTDQG!9((2qmJV#rxbrf%E-tVPyY}wgksKg=o{OC zmA!~KMMrz5*}fQ_kt!P_(z}tGGEQZ~1#Iv;*DrEZ*t{MUpaFM#nTs6nT8~okURl%J zs&rhc*xcTatQ5_?eOF-N)l>;GJd(l3!jdn@46v2g=>xK z9VHNrr<*%qCTLO?xr_$k+i*(7h~zHm`F&MxO@<^AV6TIsl~Wbw;#7bugwIYXWGj8% z2;-^rh@VWO9>!6<4#@#fSDTGl>g|bQIty8IC3&^f#BqxD-Fu8)L=FRwGb2p^-u1X= zclYDHnD!N62=NJ~QtXL?^+Egc`0+!_AF0l4^AvqdoYG1^BDgeVr7tr~968;|z3|k3 zXAynbkE~;@PCBKA@KWd-1K&U1o#VLcobMOHLd^&Nq5XA(gE4mJgEJ{-%e{S@#RQ)C z&83u{XtVh2G8^_)RAJ8_H9w6aS_IldMJ4=YeGQxmqu0CvpP^=;2*x>7*n6Y}<^ueN zRmx@qcbD-zgzaBeegsdIUggD$WK$9WG@`lr8A*qdu3H_8%||;UZ=RfD3!#-D8&WGWKyc{2 z|6J7m_=K$WXR(k_29|pf+}G$?UNZ=G$rexCteM>MtKv#?W&34}Ie2=s^P)ssEMyT7 zU~u6z+PaH>IOF8B^6Qg2Y-61ezs!`a+Jg&m@7zSZ&{@|SYOr<|{<_bLf61~DNJWm( z8u!dq$#$BC0HQKC;mxMuPx6+ZtXGEE#Vw&zz8LVXZKU>Hco7w0g0aKH#Jz42y^AuU@C-dlgl-+cTUC?dGS#J-vAYQ z49?WNkJBVj>0@xXAcvi`D=7YX&tO`2_u@H&+|gczfW&>bt}>V!`u4#P!ePR=d8&R+IJ&dz-y}zFjC~>feisB0}}*$rLzNOk5&< z)?2lQx<)KhvI-4_xS0Ag`L^@&)q6ua)`FBND>P^8PFe@QRNEgbM^_Z~jkv6mDtT@P z%pFgic27-nMC=Kd)`>+@N2?H-*86f-^S$7k^|8ihRq^$ji3q$Ld+T@tjC)YkO zgj$`GCvIJb;KfN&ut?%kdC&`WJP_5A+4=n|tEz0yPhCQ1FZFo5QPA{C(2s~N88)BA&%+!FR+~AcL3#q z*r4aSMts^aS$Xrw;oE} z%-oP;MP?w(Qd4U6ZN&&^^h$3Wpo%KuV$syD7zQ^o!Z=N(G@x#C3~B!lt~ioDTA^{J zq)6N%J!TXxBs}hxtuhE8G5W6;pn80^+-}Bc=GUWMS&pBcrF5DHGAW2-^*9Q~x6(WeRxhX$mCrnQPctL4|q-u7GFN2v-y zbQDZlIU1z6m`i)dTx!HgK(2MX#6VlJ7Y^~KrNihG;9fo8`;%ryoB95Yx~}erfq|!# z;%v2Y(FhXBSW8wuS-a2J}-~&17oy#UQ#{n5S z3OOlqBpaM|?#}G`G3JH;8BmJv8>IS1fVn1H=|CO2cgl)mU)29{mlE44y#yQD9-EQ8 zE=o2U;1iEo7z&kcvUtAxiYmq0u%47jWsJFq2v?nBdPSKGjko0ckbSeKqAL)*(TlPlsQj% z$gQ~~5!CIQAQSq#*^kCm3^;bSERm{Tay-evJQCZl!@kWI9FIx=NHu;D`(iB`)$DB%z1Axp7&tZ+pnqUF`#`kJwJKW= zIWuIu9)??9qRk%He`l4{y6xV#`@9lmx9O-ou`}q-n5s|CAB4_&-@bqIz5nuk@C`P7 z&#T4xKKMucE1>bG-=3FfPqbb6OH{q!jzJMVxwZlRcOFOm6ii_tFfGxJ7j+@<@$s3R ztZMtSwB93s`5-yTg49waJD{KFov&!L}fAx?r1HyxYCmKdaA1LCaUTt>r;!1iQpRG+1GZ#?4uIF`-t^O3xYyn-W{TgmE zEOHUcD=y|;XtZF-EnxZ!(LCVpuh9U08Mn`@@xtEwNt<$z7TQ7m(YcN>Wy~ZsE04#=^}t z9imF(d0H^1EgH&fvsFq_@N4z45VrSpqT+Qla0cO1Nu&(Eo(R1r2G`HzYv;g#ArKf8 zL{FE-Oh@OEW*6Dv{~OWn{`=Ggd<$Pd0jb{X;^Ee~lY4aRuqx_^tH{nCnFw|kavP(G zIbN7!(29k|XmOGC8Sd=&1cv5P)&$U?-`^R+?cKyJC-glILu$W!%g71oNTu^_Dh9!3 zfv>m%o&d$XnN8f*ev6+^idXAyyK*T6%jT)UTn9M3(flnP2CR}XcYxJ45XQUY>#ae! z#!OK7`#E^svR&dF*rR{^kUzjOG%!IRO0=UseX5k&g4;FP_WYFSQcO*#DRG>zi7pE# z;6-!jZ3{R zYX#MgHg%piSwH2p3?RK()W}9BEkxe~PU&z6xt}f@{=8`PQKR1Fj=cQ*C%l>6(7-8- zNgAK1%()afW-NUs0PR4htnmO{`sQWP^TS!RNAFe;!?{QH34^a&02rOsa>T`^nAQ+1V>qRPM?0jZag3X^S~dzzQj zJWyx;zGY!oYvs@KeZa_>V>Wk94}va3iyQ7|(9Zc}V2aY9sWQ?Q#9Dusg}jZ8`^a9w zbX9UhygvBMwsESP67`)26(%LxU>?;#(HxUy@KNXI=Tkyy-A}jL)-6{+@(8so4oEPA z0oQqNP*dz&kCzk|rHRyGGtoudY-fsGoeVJtY7h&L(n~2rN?rY<@&uAN&Z4;L_|)a) z*9>~kemWR2l5ca~fY;(|*iVj&=FWm zy;S}299unqEkaCyN@PgF7u7y;4XWRew<)hRL1%pDv0?oU$fbdPhBs3gvW?0jHtpkn zOjgO3)iKeG6AxA`q%xmSP*|Uw`2MzNZiC+O2d`|;RSbBP+4U4lQ@CPDkIJjRfY!BU zas^S*XrVdmY+|xd9dBdrNg#%}` zE7yX$nZ|4q#N7A`7rV9u>!1XHu?$|A{9cwCY7lMS;6$=mleb`)5?#xuJCj38oymv# zJapdMzhD{~)6J?!wSpppr&oXt{5lVnPvx^9A7bWLc1y9FX4nXV{CZ_%6sg=()SF6< zQMeb8CY{o4SCCh+Q!^ddJ1kDXYuoLN&K!lfwreJSBIG zXq`&>(mh8H$9!=${TkQ7v$`a3o%Gv*Zj_H0<^ZVMLAGwxD`q|IwG`X%+}cws`glPT zJ`J+M&Kd3xX&hr$mL|Fu_46x;ayVWqVuf(W){h5H`I%~WiAYG?CL-T8S^;4W%Ei^c zbO~TWm#zq}(RKC8M^EoAv}_+)E3`eOPM5N^ zDs>*rjE?3&AX0AhmUW5vGP=ZRl8#Nu7S5`Go0OvjbSgf?&@`6B;e(OZLKRd0V7_}o zR+X2mLilLu?gi8^;l6UF;fp|S;So^I3M5m?sT-MUJV$q8xH4`;C1{OC9MrPnLDn|) z9mSsObGT5E$uDnZppfSM(S|)!lGvI=O%06&RaHura)2~alafvP6m1U<>Eas@CMI7+ zoQW^fW=?(atrRg|ogKu@3-CW}!?PTCUE-W|YR2Zgr!rzGe!thsa(2iC{Zpx%Do!={ zv|th77oeSqI0@A^))x9K{D6`F5@cPsloEbv5rX~Z4G&)^yx(fsB?0=qKjI(K-rPFx zA)`5G0;Uh?p=&SN(I<6uKE){s?LM&c;J1N?8`-DcF@|0tFkY})D1run0W!opHM31p zj-*H6JX|UXvWj1Rs-fWvGigi~9S-g#OY)4e-V+1!t+Y-yu@!C}o;OqVuX)LxNbK_$ zRDssX(J2eLR?3GOdIrmUIB3@5*7XCfH%jAb@~7UQopfW7mP?>5zC#BY5uJJg<7Afj8y2qGRvCvRLkH;sUP40+z<|f|1A|5#@m+l~bn& zworQfdjD-#2KDQUrxy!5?kTh*m}p?8@U+F99dA1q5O-bft@cIgiBTO+_Q-%}gafmL zo3y>16UfN09pTL+?&|uE6S2cML2G4|S;LQstiAe5=I6-81*!-3E!&G5tc)=bpuzV; z{T8ovJFs*r*VEPxgjd)4wC9d^zk_vB zJ*fkic{bOKE+{UXHmH%6n_%<(k0Jz9Ee4c0j9j<7z&^mFgc9_v2XZaEX80eHz>FxL z+V9+@iRtASc~GISHFu4ZC$sS=$IZs3z)dQs=vD7AA6BQs#0X6y%)#K1MElTlAZk5* z|K@ipD?Yq%g8W-MDqCY=3%u1R z@QTxHC41N41+6n)%x!3qOXmalZW^AG4vVG@zJ}*6FzF_T(ukFc{6aeZZS8xwT8Z+E zBkz^*deic=ogV64!Mbyo$M@VZ&pR)KKOj5}-XUaOSL;s={(Sog6cTFfv7zqN$)vEV?4n9((+l1A4MH$2jL-zW89n_56&Z;r|8PB4swN;x zKHb){;2ogq#O76$mB!R0mZ5ux2IlV!kL`8O9`2>(@$fI{$Ete4oIAJZAu?Ur z3^X{1{l7t;{w}@F3_}&suFVlFwL4~rhw0*0t7VXE={`N$GT5gSwa$Tkkm`KJtf3%p&$Qp!Bfss zTE1X)B9;2wkHyCiksScyl@=w!kY>GYUOaW_f84OLiZlx>DGbN?A57tJ13UQ8!h#)2 z9sH@6j&VuY=)b+j6+M>vOS91?55I5r;NddGiijdrQa56ddY4QV>f)YYdc73=OKlrY zWYh9qJY#R2*O78wqYUR6*=iY+XWjar<@$<5LX^7<1R^bXBd16Vw*EPzf_>~dggLwr za1Nl%{x~IiyRKqzY6(8t{e~!D8%u%`GdcDC82h25X)8g_g$Pw!EY!)Awk9g;ODHqT z6HQI52REOC2oA1i05tNo_;63=_}SG7xIwYiokC-v#mzU(DsMLo%&=J};H@ z=+g&2{#8sb7(+jq?tlW)tm{zfX7|J8k2&%@>s|pET%s#3fl30*-KI#Nqslim6rm$a z5cvAEnJ@#GE0&5ON1TT)4S6dKJC{FDt*EpC6 zXwH^ooFTD?;$7g4>gZg1*TA*z0TS3&&)h1mY4bZKmj_p~Xk&%JCGaVInV~HfX+0^~ zJ3YarK}u<8q{tiSW8mP-IkWH)zwvbm>IL!f)%r!)f(-z);}#&V3Op~)GnWd3_n%Xs zP1YTtWvm}x#O!X>jbN@h4bPTcxZiN)xMfc_1KDutXRt4ZC{`J$~L1Fc@w)BA>y`g zp6&LB1te6;qab2h9x?ZUophj!rc*x=$Dhv;@*32w+g*nTgi7?$+z`i43%eA(9<;Dz zodJs1$C5d+jjTI^?RQxo$jJq`<+=*CO>vEU)oQ_87u0|%xE_+Q^dCiwTa$<^R!5?d zRsBi|0;;&6?VNx0l_S(HxMT`^LXHN-6E5?=F!try1G$@*Uz(V3w=>agryRFZ74He1 zR{ByQ3ueQPNX6H7^2V)FUyEt?f=}C zozDbTvvPt=V6bXr3G+H38Qlr{*yXox*q~f_(8N1Eg*78qWbi=g$M2i!(nK*}8yq_x zNAWf$ZL#H#Vj(1S0VaQxsB{7$A+Z0C59hXolpvVbe&Ky3TdBtPL|DR4T~M*xp|yW0D7TiODe(S{jT$2Mb3PfS}%NH zMwv(+w|rI?l*_r|t-j*(3@YB#_>uooEQ0bXY^w58=_TKed(*>wxaCG| z*91nB8g^sR)k_c?LAdI3yugdUb|0@38$=8ym{Ye6^7=Z}*DQUg?he$((u++(0Y-mYAyKZz_t3d=FfMn!5Ub zspvImR6RM6_sTE2apT0Hmir#9^v5vd<&4GDj>!HyAU7Y$LuG*pSL@UMUg{YrhgUBN zY?>J;pkBC;RpVTBKu~G_v$`$rAuwMmkz2m%jd`a!Ki_UpEc-RX4>J z3h>e$JKnH$r2ZbrjCCdP(22PCVj@wA6WYAR;<4j14?SZ;3|^Lwx1Syo2|(Tl1c~st zIM#}W)=ow&FiWp-Ycl46CbcQA{`RkW4-bg1GE%d7biJ-e6ArcnO$_#Y576q@ud~^y(gYtDFnQnpl9_qc`?hQ%s)H!O zcW6p~VAvXjAer@M7g^pSO7v)HY4NCYtcFPfR9dRG%CGz>vQQkAOYFePuzrf z@Ht_Chax@yoroiB=CfKRRx^#OcWDC+2-{*u{zvl+eL0{<>lYhpeqC}*WNDC@ zi?{M9;;l3I3ctuJx78lIcG#6#PT(XcE$%FiI^#echm_cQ&ql^B`Rj)S9@Sik0c*Ei zkMmIG4mkzvG`5uTCa*X&H0U)_5Q|u%@XVX=&Pt8jdNk?-f}|^Of>N5wesh(SRZj@< z@qN5GX-e;GkIEclkO$Y3A*GWc@YGVso3I1{r2hl(dGEHy!v1P`S-$oZSZy>}UnGQY zz?N8_t`J>at5l7ePiE^W%DOy4Jt<&r@TcMIlKf=2ZQ3m^>Rl@CH+9g*J&6N`X z-~_Kd-28S%jo2bJzmz(&-z(zQM_B*U#>m3p%RUP@I92N|CdSc3$^+iCkRf?{;8HiR z=-;lWebtFggtGRh^qG;wqHKqZ!=T3H>QylrfjvliU~Cmn&1rILg}le&!}Se`axd3T zmb%;{lh@RxuWE==0{!nifv5c(pHOZt&^WjH0oY7tTMPXPUUp74BSogTsx_RlRI`Qs zmx+@_SfKDktblCdtt4<<{Gb{WGLXI#7kW#Hw&gYdD)Q#hsj3O9(p1&Pu$b*XW6P0K z)Sal22E|!mQZN72pL`<$&b`RhMg>;4iHTnVG>)Ru-q?!=G}oba9omKIoeafmD4FJM z*Iu{WGfHoHf72`&=+-%`q6>@^Ed{NTUs=DVn0$!w&skhiRsHdw>!QSFo&acCsY(}E zsC1y+3y3W*)qfk-Z-T7Zqc*B7&L*d|F`t9pT9UGcQiZ)>5mmgh;qKTO&GPHFzictY z68TIG-)v#UMDm8nr#GT*r5DP&jP~P3ZX2WoAz~R_P&mEJ?KJ%{D}y7imzPP zJLF4l{TRRXBllqb`5CCa(#c$4(*aHV@+;>5cIDRC@`Z?`+NrB(>)}id)Cjt(7!cxR z7(TE>lG>q?qhB*-q0$SZhB<4c z|5jc#4+D~R_h?1UWB2PS)v@4a)5l+@yHi;1t@p0scBT0AYFnNAHXiSe-Is(U`d4PE z3ku~Zju^gGNvalQ2YG`s@R;R!h88TcsD^)k43TDr=rYfXP!EHhHw#5i81i?5?vS$( z{^T;ahgDgudur2)lbv|ZYj0NZMA_|X{ZeaDPxv>7FOM)*HZPqndU;(eRe9fVm1ul; z;yKMDBf=)7!N7dyOYDMyUv?+#&OW+(S@htdi1%14`4&ah56t`9L6autBzLAtkG&vj z^Wz@6G$y}w?7VO_zW7k{`uYfxd-1v0qwc2;$LsFZRxVuW!&;w`n-%O{9lIxV%rs-6 zBTtS-W8g`jy=^CnZ%~Y2ifg+Lx#*mFRK_UF^fjPG$ z!Jn9Z-$WocPUzCg;2Y&26Q)^bd59=%v%@N%#JB)_l~pbwtCW(9ozLV5Zk5|c ziZG0!EJYRP^PHY!k?@7c&&>JrQswc^=LHJf&r%=MSur@8SH;)5(PXR#hQ8SQ$n@~7 z*o|IDAN6k_reHSOGg+pT{Nn-n@x2p$>8(I|dD#IV3vOS^mRQx+ zKc{veRSSA#HLeJO^Lw!;!KfUS$dLm7pKE{atG)}^yK`5-z2Q$602CIe6`*4=y?S-O z=!8D_fBdDgeYPB&i@6mG?UK6-V6?DT>sZk#eSX&K0WW^Drq`R?TE-UDE<07PmkkCo zRC60pJt@C_ncouv%8Xy!@LO0t{?N*S004QC-O3YQG?d1VvXcn__{$a6sl{;b1F9Ct z&GLb9 zm$$Nh>LH(({P=P6{?Q)*;gG8rQ@VJyfOr~tsg_wq^mhhzY!rgS0g(2v4P*WA1Tt<| z^NZ|-_v2e3PCeEb@X$Mz;c3?ZtI`D$1L>#ClyQN6&@8hb;O~{!7Mm^WNpOEPm~UB- zQSV|Opj|ctH>iNLAO@m_vVtM|Jv_D=rI#j$wPZH`VK7mn(ukj5#;&lZ_yMiy)32p3 ziU7nP@V$OG5GCo5;@o^;*v<@l0eV6soN8S<8=MmAp2qnl9K%S2Kfpf?#pR*>gMP@O zyj1uuwDdiWRRJ3RTpzdn(iRgb6IWNQ^_u0FSNT#5(@+jC_7sv#Y-CjbJ9))y_bO5p zsX>K^w-w7N^{C66aVDU<0NJIE5;O*QWC&?RCXNF)DS&XA?jEB;CAw~P4n3$dx9Hy{@Mh!1~ z?B^bm7G$h3Xt>rZN^it?AI8MV^G&IEK~HM9rs9K6r$O;m7!pQm9dp={Pp*B}c+pm1 zl!C~(sQHPgr?P0^-*hOaYL^Ww80wCF3nR`|dBv~j7YIl$&q-h+=gLql0*HXZ(Qa&T zKLwYrc<^g9NcMz5`UtwIRIHrKWcNv8#^LY{Eo5|XJ+R4p^W@i zwH{R6!+En{ONB9qd5GPBdcYN85{v?I=I6>mOP?c5aZBI!Gf#Nmvdl|L$B|bwS$uw< zUcUI7Dn*baQ7DAL?t?lHTg4aD`J~E-P07DT(;w5GN3HKcZOak#`eLT*ZL$UD( zSkKJ}>oVeJ_5rDa(dNWH7p{vqPCCOS$@(s(KMN=F;U!Cj4Yb(23+gMC{Yu-wa_VJS zA!7i{82WOXLPNfK2CJ*W#B@Kh@j6q$X^XNLFJrFdx?Yvz47fDWYaRiD1&8o$&3!%y zBf`>vw=Qe~m52H@(m>^j5##<{g$);IM(Kg(*4SO#$(9VqRDe||Qyc9@nB(%&I`Q?g zYunpl@Uq!zY6Kx`OuZ6!gSt8TV)F)Vj>X#ce1ws_c%>`W)cMe?3Ka}pI(i4sZ4YUf zLeu3`rqe4LCekW$dS?#!D3v9NNCCANLwDGy-ob;(9}FQcxJVoI2)z0$QU0i>PYKqa zLbLzcHPsyv^;h7XBap>%(s*hu5l@JJ)Cp#n!Fh}SpYO?x)7(E@D4iQ43?ja=CO%1d zyy&?vSPB_o%Bg~;vz3r_OVRBnnh=o;P|g7&(ysmPN#wx-I?%1_5|&q|SW$nOxo7)2 zyWcT2EAByyOyi+Ej53LS?<5Gt!nPQo9AiK^_I?D4d_e&|1SsK~hx35?B`FmiDS#%o zrPOhqDK)lZ`Qp?9rg535n<~v5 zG^hKh)amk`t5dr<7b$!-$UEZj7=wniep7gh-oJkvF4%zXutR3sJ$$k^QZX<*scbbAo zcjz^gx<>x-L@nVjV$g<1gV3D<{;6r#uMN)w{(3yil>7IlzlH&FK{*0hSl<4emk8-hDfhj5D63@g*vVO~?+m}nG%DQO z>N|l3bMgyba+|$B>YpDoX|WN*Kl>3NAc9_*+;92?^rD~3q@YTw=-w0Y1N(kQ*Ie~7 z_)E=rq@G~ohoAlv-)t&+1ue4!cHTN?n3q?kr`y{*xta4Wlj{(?o^14p>>yH4$^!}t zixD}wv$+}u%#^@qh6svFmN-ELR3k9n5WV?x)5A2ikLSjbM2d9Wwlz$$bb+}4_0b6r z&28_o9x|W4TRMUOxb3IKnLm3g`6K4=%M?l(R&V^4;No7ienk4Gu3h^Mz6Uo`7VM7Z z^+iG)u88MN7|*Ug1|IA|rfh7-%f5&@7=J+}JX5G6udH@57 zV22J_*-VrT>8F`o6?E(}l9G#tA6s2(d<`lkhn;$V=bZKLoZKnpBL{wyZ(ovVsSdHE z;wI2fHuI;3eT40q1C1$rWKo}M=I=z2cv;v}C+0J;_iOMZM-K{@sN9+(Z_EQwv4zw#b|K!Nw({jjk7}c{P}wntZTkvuitxHou#0OsqhrY2@^Hr9C%yzY_Z; zmsaEHEBrg~!~b!iuO+bDnR%p2!3SZ9dnn-oZpuwFF%Z%4;U7`SS&C?MSTafp!Ob*Ld~FL#Mj*`_$B(FmY8?F=BI#(K+m)E^k&nFv;LV>-2kZiKv1LyLboVWh zOE%d@$9rK@n&oyfw%y}NFUl{oB8SrMY!2wUOwlNY)Gt`QD!BL7RQ}Kab$^Y@`=bAX z!mgl4Ffc&g&ODXwv}?gYto)3bg}I z8fs#=>a>1e#Lcn&_3ltNwHXz1e`e;3&$t^k-bB*3C=H#usbSNnaI*ui`sp0%rXQji z=qnPgm_nX${_QkS=^v%`&pJcUhwXp_w1$W7XXQpKpHR1`q-RQdZ#>@~V$2So>H%@^0zejudjV#q`&85vyIR&QCrJMx$E%43}BvBlIHmSh0~To1(-D zOckf?)7N&B;t*Y>HOg0uZt$9Y9e?`RDNbVmQ0Zx%rgh-qv#M}}`gUEPR>ZO=3 zSCBO7k4Ss)m#0h7Kai{EJ{%beH}2RzYYI2ik;t}t6VemD>v8r|Z9wQ4qwv0!d(VkT z4%2+$K*e+AUUEH_7;0I+G-lA@ygKa1@5|^5ldmS%KH=52NJ;M zrc1ciUamH*-RdPmbEP$1GfGfVK}`$FpvRt%)pXX>IqG`Qd9sPy zz1Dd(r^y0s>6#BCO_M7Do$-~&&4v^wIv>D5iY zn??p!bDAgJego7y9o=z4*yUxp`oWrUaa+e9I4p1Pm_*Cyzrhd9Dz9MhN}G1if(%m@ z{FzVakfo%!&POk*zRvL1d&S8rKqH64W*-vwm>5gwY<$0vTnpFamWGscn%F&JZ)Rt* zVab}MYZn~zMjt-TXJ+L!JfFHh;J%R{5lS!OlvVQ>tsc?comr^8HMIPbOv(aHYq-w~ z{?G4@bOm*T;pNWgpOYC559Jo?!{`9jF*;a(E?z4jHX__UE+exhWPzCyc5!%*+{DX) z+^x&1$$?nxhHO#g-TE4r${aq@Egp1Wmn(d~Y2OOmqWdzx3D4CD*=Ddkh6oT2oY+4f+}m*;%fG+OyHDCFLw z#yuEWTwFY7&G?gr#FDfA2Tl+MYi!j@O7Soonk9!^+HL6W@Ru;tt9Noi$!^rimE}XnH`?~Jv=7*h5d@`lP6!(o&m+E76ci95D zL2T-bLCi>bpYiSz{&Lp6omW53E$A#zhBZ36yIjcUPoKSALQ}$?$dU+^pc6xWWB;!5 z0ub(>j<1?JA#Js1%!jKZb&M0@q`1Fxer9aFwktC1{dhwOzN4@78f@35W%~u^hd+GA zbr5$8k}IFSy~WZ-6Cx{aQsIz@!%BNs=|8)O?IziU;Pa$!=ag@k>WeKm%!PiC ze9tGRqnn3=Q%_j!jYw8z)C_w$TOe`qGYW2Gtadr()t@X(&-_|$(8*Pk^H3}xVrIXT ze66xcb(yd!;y?lYOVGM?iX?>ZVXJ1=TSv;x+v7Q;O5ClX(76kn7LOhV=z+4@&Fi~9 zo_|BriU4My#`zvaBEUBqfzL%&RG7@GPP`(V|v7vY_E*&1f_0 zx<65~vc%uDAf}8K$Cv(5e%ICRsUim2u#Amv@wGx9hRNK9BkJJ&ebXa9XOytHD|rO_X=@*{o| z_~T92VP7csBq}RiIM$fOz$>JSP=bXPJJpG&IKQ))ysuU=_2$kj(ScJaWrH8qjo0~w zNSB&adW!?cT(Fu=(r_GFQ%qwZyWuInb zqDf{Bw`N&rPPApP&a;!zl{xfcXVtS-cB-7Vc5B_uHhSlG9ecz4ooXpR@3@e&vXAI% z=F|uNn!Ta0G3EIAL*~2(i*(>`WyosdtGq3UDol~iy>E|}Ak|Sb&N*)2MM|jdqU1SO z3eU=D@}Hs>^|(`i?eQPQ&iqCsS{ZzsoUcp3_`$|h=>ERrRY_a1*5_RQ78VwVWvMbM z#w82365Iwz4dLy^~rIxC>~)(SwK|l-;H_anjxES zy%v$7Ih~D8&BL?v=KJpnkrlg-E_x%F2+A}py_?EO-CrzIJTNgbxh2p4D_a3FTuf3H zo^$+gG&f}|S4_0W^|gZ^t-R*d)=VyC+cT-+kGsyS6kiWQXVUihVet;^1!C#;Gglcb zVNL@jH%|nDHC`#>&&nMXK=a_a>+T(QHZJ`G?gxS0%o}u{AyB~bAl38H$mxI-pO(;6 zN`KZsk!_^hGhx5V$VL;lXV*(d`M(`k+j`p#Mcxe8K5i7SR^LsLIn@$KE^T@KDAo9u zhPLiAtNig_zuvEnm(4{{s`4%P>s;{8}*>5w!TFO8soNg=3y{n>7V@3x1=UvlbdofOg`PtgkIlHT? z>-5gi)5(j;qaC!cGTH<4nbK~PPB}hQ6@iA6Pl}6^E$?32?>}d>+RCjFb@Q9ozo#HS zx4ta1arvd<;+=;dS{P`W0tw78`q8W1BwQM;R!$YoI6XBZpj=MpvUi3mlm*DvZRbF_ zbgr*5>5h$ZN7lb=KZD*YxEGl;-CtQLBxb--124sSXLtESDA<|u{|qv;kXv55Z*Yh0 zh*U<%NRWn)(FY`3mqP&%YUKvF?q&uWbT0ua%8$`Oh{5i$X%H|;l+2k8dIYibTU z!|4uACTfDiOwG-eYaFYF8qL|ckv-Io&?4J&ZL65Q0u=t)sVEJ9UaXZyp6l`ZjN5V> zvniuZYWV&~VTNv@btf}iNS+l7d)i;OhH_kJ5tVZ>ibkDiNr4SS{0fCIXC3n(< zS&YMQ=D3<4;iE{_wMTXW3tcZ(nuao9JVs{ybV;|iByw5YZ^>0jab^K2vzw%(gIz5? zQ3<5j)9QZ}oxD};NK6J}sT%zbcl&%pnoKNQUJju>gwv0w6W@SXFu?U7LtTsGUn=rvu^0MZi}_m&i>EiH8{ZTs z8Qgk1>RFA;FkB~-l5pZKj;NItB=u93mv29!_^2(X$Htx;%Q^tz~*8{Z29lepw9M>#R&tUwiTLA=coJAcKi$9{D$w3CFIFPQCVD# zBsU=p=ifTk@&(V3;c4xy;YR*PI0Sb)v2&>qaqXSfjU>y?PaE^woh|rkeuQo{7bOI} z8}&O}rWZWRuN8Q(dj2pt?4`?Y*>z0<$y@N?;uf<}zjL#n|BEIaE+q>Mi*_@sWs@x+ z#zSkcl%;P=$nCmrBib9a(H*Gk2g;Jzz{k- zT_;-j;h^A>2D~>Te{+A6)x*znEohOuhKkx2X_8TFTj%i?uka{vmOc05BjzRS$@i|o zjXykN`}+C%a6RUhmnb0MXcyIenSS?<#HGYG9cJxWls#NFUi-|tvnQ2M8{NL@fZ)`v zsvuPz96oORi-FU5DByeD;_B9tByWvON?wDLBjOvUMFQ|4@yFt%L)1m4%&?0h+;S($ zWyD-K4=8zSn~clM<2TWX+JG{ZNdf6ED^e2u*i}B>;IO&XZ+m7ly<-m@R=$V1@6f>( z-Q154Lg2eKHO*eq8nuqU`V@S#J5i?@v3fb~5A5=adiwB6tOZIx#CP-^g|A-gcbe=^ z!|c)=F^E&hkX`fpr}>X+u<)>tbt3PXEC-FQwt$%7cYnX{Y-?EK?B?rAs*mlyaCQrK zhtNnZjArn}XG#Q-Hc9VjRQprYQ;#$ae;|MFK!@$#_{ychT|N2`V^AQ^l>;(PY*N2kWZXKQHJh~erz5sdzx7%_Pnfjt^xjI|we|y>5v4q+XI^JDxRhP|I(!>euM$!zD5;S> zQ=5Y0x!N>o*CGk5MxO<_#6o&0f_vL}sGR%~l}m-di! z&ypxJ|Nf*k;=JEQrA86oK72HQ;>fowDe)$gn{!P4r%6PGUcSS0kbkdYRUztQ&#r}M zDC0gpKKLleaE?Gify0I$SemYW@8NB~(P2!HK#|+orNDqcb&+t@((QVrAIlEtIsC$z3ug7v51p|X@~ zH+&v@DKEx)NQ((#9+w5$Tvqk+$hx9|XB}~$I?x);71U|?-+!Anpz=v;=>EB}-$)d(-)K)@A?87&engmt#e5gNJnKJDgyv5~!}jvicjbR>JTjk9yhVd5WpuYdfTOm6NiB?uKw%+UtDPm~Rb6Unj-tld)6;fpfEc!o1 zzSXBTWi?!ajwa98j2{@@o^VHJXPSe+lmaPhXUUVHZkHa#j0*_(MrRZ$Y5Kz2_4hBM zvmexk9=~z+6fBO!+oZU>ehm%}9(}!fP~s%&STk~MR?nkm=nJ6Yu4K0f z+n8t#)yYIXgnIYg_dcsp!{Q`JJ6-lxB%NXWXW$)6B&W@0l5QAiED2B!l7s&6x9`Jx z_rH{C>YPUvk?)pJNimdp#FC$fM_lRliYgloVv=~3&rN*QZ?x?%(Y$@Mtv8(B!5#3v zuw%tIaumv zH)Y7iap#_vjBJueIBm-lULG4{!TPXn>JQq)Dbdco9Ps6#`)?AcynnApYQfUVsP7{Q zSyn}}XO(A^h$yLd*>l2cuWPPfxi4=b_G{^TlR#D4@~4{?W#7J~;FhJ2)OmO$hm9`p zHq34U!jxShO-mc|_7rEvXQ(siZNvTP zK~@1Ft&~5qBQjIqJEkgIs#lI@=u$1BxgVc$iY%Ye(LOtK?C@SoNJwb%fJS3Ow=rk~ zEVP~#LyEk0h)(VLMz1eU;e_jjrM9#^OCDlml` z?FDE9FW-lA;=~fCZ2OTUFOuRUd$7=(9+4YKtr|kHrcb#uxTyYhmj+14C zO`9{-By8HhKm|@cI5CmHJ(X~?L2mpPhfwC~u5-G11fQad%R_i{7=RP`WXZ`%Xm=m( zCQR258H!(YqD^+yzw=5oFyWA{>{c7b4ZcN5DGgogB!|COcjSi6in=SM8i{|BtoPRn zIX{I|)MA-A=e}?~7GYap@xFgI0jbiQCQe!1pMRhTRJ+VMegQqY-{V`Q#I7*O zqrLixU+r5|RVQXQ?eS~aRuq3 zw6u_Vr-s>tlcoO)rIytaLH0qBO0$dU}2}3q6w2*;Z2d=eE z4=TGB8sRS5DKbJ0Un%1C1WY|rq%U)f} z{6Jy58bd{K;(YTZ7)hY#LuD(<#5M>1cv1?Aw=@_B&1~*of-ZaX@jO%!maqVR)fP50 zxo*^>_a-n3$<%^N1m_P1nc{i;>oaHItkJ}R9e=uc+UGlO8EJc-ynf>Ry+ej!x8tJx zb%5J@yTJP`6RfFlu+7CK&tf6wQ%x%8VyN+OL0y&%un9$Wq+-E5D$%|oX@DVl{_-J- z;?u>ftSr8GQxmmXht&}gJV#gxt#JB-&3zLaDN=Emh=>R=+q5%|FY>xo>(f_AforQu z6CUTMQT4V0bD{gDtxtEAOl1+7@-=_`fmQ;7dG-5km}^hy(mh7y_X+?zY@`0asw|um zNyW=>uP~>{c2^zAF;zL-miQg`?=uOdE$h%XfakSwp^Y8p^yTbgF@;IvRxPxxIxup7 z*>Mt(M0TuBNP%A}l!ynSF=@VAl=+O-6`IB@N;4%)iv}^}p{kipF4YilBB^?NdLl}x z;{qg}*>FE7B0rRSD2N^WET73bCOQM0nH!P*Ehq1f*7y3dtFR)7|DcuUnyNj15<{rZ zZZ}5$)`*FB!S)3XT6ICjO%|5BSUEWb2V$vmmZKrBGUn@A;ZSq;-wZx zgzpLkyVcl=^Y|-O&T29cr0F`jcddscO2_;CVXkrz(0{sx!#1v!1E@U`eSB-0js*Yy46fmpa?JZq?!#( z4RV4uSwy$yx3aSAE#L)giQijG<}^QtJW&GE=BVr*0>rG=3&YaTIY5&YIxsq!3R1P+ znCP-2FwwvKS{Bxkt_}2h%g6?UjImdGKTW_N)8P*3A-~gWKn091`2- zrKAmYs-4)akNcb>$|)Z@z((i_%EXCKIp=JUTA_}^bWH0Rk)Ca*nhBAijz9}qW)u~u zWi-4pcAN>t`O?cW?*|s*1N6B0QK#C^XW!k=mX3NcSqEqpGmbv@zxHPNXE%;ZBvr43 zGfk9_vt<)GGgKAg2)n05PdlLLnO!;C_%t^gZR;aRE3+{YD8N&?a^6twajp>+jP^|% z>(zbsuF!7bL*33qN0ToP?c4atg%T~*F$9a3N1!BtdSG^wzEiL`fu5Dh58ASIPG(4k zijCxwM?^ZT9fjA`G;UG^1iQ&&M`=0nY zCPC{B(k6}j!4mn&H1jf1FYt@|=?t}!7x@vk3i&BgB>6pe@SVj}v)hM+txa9wQi_U1 z;MGuH7NyZE3rdcKQa(iBB27(>)r2CsXXg2XvCt0%i<-04kQwTb5J8;VVhrPvb_g~> zxO&sjTe#Dxhjcwx*G7uQEM#R;q9FIwB(C{OAUq(ti*cXKghyRPH?_HWiJ*;K@G0%Y zq0OUkTRv&A6%7USATQg{;rEJiMc%vgA~Cw(wH_f}M5rrt6LrirqP7&kF6heOD9oIN zu=RUnBxY|DMrS~_5r_o3mD{T*WgUh-qpN-p*EVNc6$c`lWODBqo0?wzvbIw?xEz0@ zCmpLCxgg?gfZa1lIf3Lsht=KZN-)NL7 z{}HNa<7#}638}@i-;7dtWyoI=ka@xldH+0BLK(B*k&WXG&mc0kv=oP|1^zz-FC=MM z0XbYR$O9mSfkciop(-;I(`A26=H%SYp5gl-*KNhYRG1Cx2U)-@a5_*YhY6qYB7lhB zzmZ-Rg{EX@V|(8}#1l{N%`};k6`}voC&K{g*$0&;w(}Q7KM5jGy!!tY!9}%tl+j%- z!Nl}YWld^0l>2DYWLV5LwYgj$hEy6^R8qG>r1BYc%VkpT0goz5tIbse%j!hl$6NIN zjE=qm*$HpeJmw$Q0ds7%ba@st>hPdPN3mrx~1Kb24&%x|0}MKh3KZ>ZL? z-KO5hYrj#v5GV2UAD2ibYejO+L&W*KG_~oMRjf@OI5AaGHs_`=KtXz5zwrHVgM>vQ zg9g%d-Z$&WO=@PH3q_g)S!CXtmG#`RC+{?b`d%vCeM6v)k zxJ-yLejHLT(CyvJ)ED%7awR+?ht;lCK-P-L_#c0UJms(9_OGttLR4@BE+v6Gbin20 zK14of>|uPXXq@xy`>HX*)!iaPVueC3n62S5Qg-oK_x=Lrj&WahK0LX1g`%&@Nw21rD zU85Ya6!a5GdIW-q2Go-zXnVdcs@q*6tfx5%546NPSV!CN(HA z4b?^2zm^6gJ6@QWa(58brasj14=&>;7Gd&(lWC052~4IN7Wp{^Qy_YQTJc?6 zSPzjtQ4vFVJODR#KL6A>R*^qX1`+qC;cRtgK5VR|zVH{zlZ8G$B&yfRdg@hzxwMD|taZb!rCS+u2U&5jLB`88_AGVRPl# z!{ah+;L_@;D?${XlmRFOnflG#?BQ$~das^XNp&2w2ZPG>TE@zAu2F(u`jGGfKp(F8 zPlqA4bi4D$(?BVfTNP;kqv~2jhWmpR1b=@dpv$+Pja~oOu%Rw zEwYkU_U)WKD6&$%KSPJLmTWwJY8!QINi2<{_dNM##>jhc$^wD2S@S%txsuH7R z6}7#Dlw7g&m&9tX{=MFUhK{n=s(t^v_^`R~-ntHimHS_Q_n|1XvrxzUVWRm8T2F&B z-F$9&Ym5uT@sWz0Ek6j1%rf$nR$S>PbJ-U?^56;n{Z;t{ebK<$gVr;eLsG!e5YWs2 zaYe$t|CwRw=alA`-`j&$aU|>;s6&4o72E$}Q3a8}1Csx|70>5B5(p08wJrc|2~54a zZ$UgXjj7$Ol>rI?9H7ZMp2td{O6{B5a!Q_V`nS?k>+?i!cDhE#bu->rWfJ+&FHteHh%nW z*Zk_3v_coc>%Svh5cmoaH@V{S!=e^eR=oRg5i-3VRB-zo1p2oQ=*q06{thT-tlnpB z!72`_84=-2vzz4RiR=@e%-Ff(7LnF;2jz46ChdoE z{DSz5Pc|;}KB9q@muNUD;Ht0eQ?l#z?lm|P4-RSb%Zo`hF_6Q+%oXNkWC;9{^wa!`^&u}yDu!zI0r?=J;u%P{)Wck#V?_Yp2u?M40Kkn1!x z&^NdlJoWbwbc8I;d_PJtuF%d!PV-ph+#Lt5*Z!Itj!0`^iC=7@g6`#Sk6QS3yZX91 z-rSDm!?qW49I8-nCYvE*u{|Ra$SD4JFBVun6xJe1J=aQ7DPP4Cw|W3uuVMk=0nOBV z*Rf1wYJGJ&pVv>Ze7^Xq%73N^VR|DacA@7FV#7ZHcYKV0pO^QO)33ffqvaVa zwHvBmOx|?NoevDA2w0lGSQ@=U23}brG}QfZw-lkL+vuTe=k;@&?4tE`kJYM&>A14T zO;&9o97eU=)MSxh}m_j4cem=}-zgItST_(f(udvR2DJG#Ch$5P(?tsn*U< znLSnfqrGQ z)5A?qZGgV6(Ll+LlIvBfEmpZ;gG7(HgZ_&)HtiXr@j>q-TG%@KnM-U}j+EfKnt7Z!NQY+ycn4FHk_YvH)YqcQ-Xvo$b~-45&nK zXhVhi@BBv=Mf@5MfXsSjcCtRT_s+5;McUT4)|9Gzw(E#<^~%>vrkw^t z3rZzp#nH?rw&u0f)#jw9{x;wEX+cuQmLC0%XbetX=vzt2?Yx^kHk4HktKJ=kPXVp~ zEIWwd?+yK1nt10o7W{;J{&y^4lFN{nyn^&E$nC_X#B1pH=un%$lKKMM?kgzCvw_<> zl$~q59x-?9T>P@Jd&YUlqBM$K^k^wT%cO(?qyV@12$1jSNWc&yrZEF{0+a#p1;E7t zLvHow7ukWU5XD0W93)a3B7#MV^q(m~a%N>ECB`*T#xN7>k}ZJ029QP8ZiG@V1oZ4= z62Y0)$}Ae=Z&1$!1wp`g^JnE$*KUGZp*q4~AsIExH#W-U%t}OMy+mL8=;z;x0`hha zzn(>uR>itbP8mJ$Vvz4i3e$}p`(mM9wMeG@JuncBQKrR8B6Kk2W2`j_)HdL#@B^E< zWZzCh#o7o&{xGhTNEDsdkMe3}q%tS# z3;S!S4+Xv+7`%a(0I&etFsABKhG93DjR;WOqqdMeZoMZBnjUAPo?4P{=)X3c#S^>H zkc_%A%6dQ3M9>g&8~c5J3CHG1Gu7P}IJfbQ3}$Wes33s3okkIc&j?V-&GeW8X>r}6 zYtD|}dZq~zFcX6B2E1qW=+tutxgsL;@o_&B_2@CK05;{Dm&f|ERj9)54hV~;0xeyy zE^D%aGXLXlA&6fBc!ekd%twefV!k(s&@tbwz6Avj{;4bE*7)&iHOppJU^l4lHcbdH2hz7 z6;62gi2tJn!0_yUS+Dp94P*>Spc^T+m##TE0-lSkah11h6c^AyaEf8AS0CdS!F>M! zi7>DjSj&6Z)Gs}Zkkx~-d=?=$X3jpbXk+}y+8p`pAeFpO;wLnz*pEC0SI_0VN3^^iIMkG5@5m)|DN1nZsxK%@?AmfBi z>ZIuP^1Bw&N%$y;c}Y&YkJZ_H4WTe>&@M&lD76GM?!)#13CgX)%oGsJ00leHS~_ea>e12BVMd;BON$t=(euszR-oX=6iM~iD7uhAH(0L>v9F9* z@hrD`EDRfMt{NrOSNfqT4-ny1>r51(f^>0ndwXGXBHx{B*?RNz!38Pe!MKdb)g{bL z%<2D?MdQly?`{5fxy> zGX+Nw`X3NPA=7};IPF?5SPJ5S^4T(BR>+AX$fR<3B2GGsyJmiL#@ogWM4Nz43SmY4 ze+;W9y4g*CuU^vX6#RA=Kz0A@X66L0RmM3&V=n=IboR- zN1rCiZwG0SnE+2uA1)-y9jfII25}m7B7Le(sVpi|;Gu2^4A{xjX-O?Uc^RQzI=u%+ zN-Mr{Ci-1=h!G1pcjab5Q9UqXR{Zl zn4S&mE3ZFX?|W9mrd1hbm-%gQxf$mFAxWd*AkzCj1nK!xdid?AvI>i~xkbx$wqMg z0oRm@Nu&gza6>7kz#ramc?ABD+j1fp&h!yJ3OMRLYa)VIxB3lmB_n0ZPZ7trG4&YX zKE5hTZmZjJBFv#mJk%iWkAb@$>`P@9SC4c@<hQs@^y*2+W%;oHG zp?iE>Fug9Z`TxX1<~0*ZTPo@aG)csJRSbrJ9^{EFC`pU3C$UZW)5pys`EJx+{)kw@ zc|x3zSRgvSX@_Tg13 zE=xth5RXu5;m{xwwua?hW_NemWIg(H{is-J*#RS&@e|$;uGnR>Sve|kM?d8@5L(r3 zom1v{{h7Kmpk^e6gjpm46qYGS8#29y&)vuaM7oIrXGQ`7aGnhP(oCYU8ffth-G!XD;7exa9fIhxvNA?iW%#ZcEhnO6 zcZGvtFy~b>r4{@^M0;|1GVfoeGUHhwzj69ZU)#s2~4pqP51jR*UD94rzNBq!4nEmjXFRAWtwxsm=>3!^wHqu%wKakuRBi%}e1&Soy? zu$WD}nk0wQUin0JT_@N~?RjA5@lPEb${M2Y&+tZx>g`XSr6>s-g?u=g2zx654cKoi zK$mcw84M5c| zRaa2(Y4H$(n2Ympp%$7`vrdX%Z^E z)WI-*e%z+VRDYCp$jiekus@zpN)q^v*n>BMW2%h2eX10i(;MnNtB}l!&7YVL zUvcuLUS4X%mXW>9rLH<(9YfyK+_9L}Qx3(8)s?rg9&n5qm+=5;*6Lh`<$2$&V+*P>e zH*iwpIulk0Pr+JCqD50MYqv=PAia6uPMo|azHVB5^9oXSeR5D{%IWdG{%lJK5<`0a zxW#@>{SK&72~S55Qi0L*JttLVZh_wXP;WxarunHn^W2;isUZgCdW~ z5#isDHA<%-zfzny*TFke71&=nN1k;x=Ls$P-#(^SIc=I5E z_-0OU%}CVbU9_hPKkk)e(M z1iwtXzEs>I#d4D+7tl`(k=FFnsvceDg(hxdfwPWhN+_WHf(nP|7NorhtrG`T@5snI zusFtXA+EdYOG{7SsoNHgyUq`V^$`lU+O=(HpHp~}wz#@3aBNnu68Y;}UJ^1i3|J+V z@hsN<_)RJ#ysIIwx8RXAvR$kii`5O*j&3Pa$C1o-y=D0L=}^H-XH>CDFW3BOv$z|35)mRytz_V&bwxfLl*))C0--kv zrW}J3kJ@$Pahugc_k^`I3$w{u!9}5e>}^l#GjOxw$+bW;5Ol9x3AfJu_?`sjW_{)~ z>X|r)zLaaKUu&f6CLS)FW(gQUKbCgZ8)T33-^)YVr}z9um7Xtkq(vdyi$D5~=YEa~ ze8W^c+xje<`#w65Wf4@WE3p*XlmwfDwN+WZ2#37E)9H&-c88^o4Cs)K!5i}K%$R6C zW5_-k7;kE{fh-jX2>_ZN1Ss}b+cHreOS~QAj=k624e(sgZlEqjb^KU*9N-AV4@rns zDMegdTt>3r*KV&ABYM+>TUmN0dXM)~<6yO+@NxRWbHIE4oKURvr|EHOB(6#~3n}No zIU;#@NLB)DMtyRI{j>En#8!7g&YFn$>&&Ui=ZqiC$7Ks}!3s5E10-(MThH@MGK&Bh zV!X~$y0}^nJ=fN^WJvbobq)>C$2PTB=eMb5qqvFV!FT|-$l*_!t*K}(w~mFHcg!a| zs&_@|1(X2h4jS@jXA!Qo-E;0I!;sA2lm%{Gza%j!F=Qn0%7e@!B>_hWYmMBhwa3Mc zaj^908x4X&8x={Q(C!ZOYdkROssR&%3>wX+KIK?Q*#4^Aibniy#a%Scg#U`Z<(G*X z0bV@KVJJVH#yD$pBmq55X~vRdifqNR=1lV#Y(7;Y-nO8Hg^wA(H_|^M;5u|~d0DG2 z2CZ^j>4C_(nDq%kM1#wOfSa>=`H8x%tt>RZZVjG8bB<)0xL?a}kNKb%>E$mTKiMhi z^h)|h^b@?C-rd7fenfkjo6d}{D0V?nL-HOWS3jelwaKIBxuGaiecT=Kaf6I?(zn`l zE+KzA8s(Q9u|bzM=M*)l|FR+q#*s zT8!uS%8e{G_fpG%3k@*;GV8a{z4<2il8U*8Vqo{_MlVVk4FxA5!h}C z*yNhNmZ)esW6}9C@eOCxtc$&mp>1l(ifMiom^j4=3-+ifk7DI7boY5z_a4z>dGIRW zEB-LqH@g~Hf)DiRbEVVyl)P-ZOpjU3g5-+>gk(3L+P;QKWyvp6mR6v1g9ELfWg%8^!d3XmFNPS>NlFg1Q@^XhVONG_Ss2Vz@SC=X<8V*X?y3n9WACCueZ;&;K~oNId?!VoAJchC*5s#LthNM(PaT8%JDO%Rn9>e0bp;ufFHJNh zbmpqvp_3(Q^0G&75eW#NU+eqn)inT4!ShFQRae+D)}F2u^SKCRa_qjxeqxh8>?knS!Rs_;#=E_Cw-vpr)R{q-no4|`NLq37yQ~P?6P|^NldwuxbsJPp3ez6N2#T&olEy-_XB_u?8CBo+OPbEt14OKuX}*Zh zOA!Oiy4z1Y^jt6zERH!b7?%Oardrm(EsB44{(bS!l#(1Lp?Bn0Be4mZ$t?w5gH96&vTs;x1}W#5htSFc>F1;4vhkrcD(d`z2M5s$oxq%C z{M8P5AMm+9PPdO#l;x4fs?v8k0=6QmvaSF&AHn<;ZUzYK@X~(<+@6notVY8hYD$+B zwX5Ku|Jj0t7t$4I6A|lr&y;=h8P-7f`x|p8W3C~D^Dxfr;v2*dFkE|c&jEU30Q+T2 zSw=S!#q3^zo^Z3=Oc8O9tz#J)LQxvRX63hrf?b`W*nMgfadS3$vG(*SkbTlF2a(t4 zSU(mizU=>u@?WX$1LtZ@p0)5axVc9q>{nXFKw7r(Z{UH#?ngwzWO@}9wGEGf5jF8A zF%pA;iGhs&9vcPdh;2 zn2G#YMazf6`FK~+x{_bunD_=KpY%L1J0OO?yl*X_8sDYgD^dXJ(zk8V4w&`i>K-*? zQHU;}YZ>(UiXrlK!=Enj*tAVb_a4`GZ52P_?T*UNYMu54=Io@uH8oJn?%4|x%CnB& z4ElBUh3p^|M_%`L>tqAs&_sdcEw<&42W7rw8D41c>w=r7M<;7q&?=|&9ONF5dknPy zkO*$JTC2x^<5zK;{lU9u7CC`J+ntkN{wZss0h(3t|MBXdcoSkD(IyU?l}43$xUXx6 zswP`5x(icW6Ax8=B4PqQznq^o*+}Bo3z%DfS@`G|$W+e!>m*wIvxH3>Lw-gNdRT(_ zB)w4s4y|T1#^^e3Qk=9Jws8^^ktiJyGYtCZ#*tHWzQC2#{0FSiNL1RHiyVn%h1%3c z2V$Xm#2{Gg2Vf!lIXyBocxXNw<5lQJT3Vs1DZ+^p)t~oj5qqTlVa7q~VIzSiIp+K~ zKl)H|2?e2zu%8)>)21;QFaN!i8tARnQlbN0W?xG#WQ?;q74M;TQpu#Q_jiqVk$J%2j5 zQ89AHawQG?c;q*fIEKD@&%j&`dJnV!EWCfmsHFIo65c$~?&8hQvUP}GeLqFOFRN}q zR&-8F1-ug%__Y@jS}%N~-tvj=PJ2eILM+G&j+U^@G7|8D>c8yT1YCE##{`pBz9PnL z+`A0&$<>HPMZ|PTZyNgXeHbC&R8moq!5w>&QT7p3rOX8S>?mK^p%V>5q=g_rj2)lS zUzno%)hEFZP`b8AVf&afJK1D;@Yc&HIsG#}>5D%48JxRj+~goa54nndjeeX5+L?Dl zuK^UR=<~sNwj?z4+kQ!D=^v}xA|p%Gv98p(&3a(XNS;#%yiasa9hvJl)smmkYZDU( zNc#;buD3I;45sPPmZ1fJu$Y+Y(kk9$d}7=JqDTR43~2*$F+}q{0-Bsvo}YljHj10D zFgE_V`7R);U-*V7(~YOlwf)F|0x&=5TDR6<;tnr+{4GN5>67NRe;uKRwojBi|GfvI zqMxC-`_3S9QU77zeRn#U-)@c6LQy9`rIOt@;~bqWJHc zx00`j-~j}ICam`b7;)1f~Ss553`E|I{6* z$q*+FL}YsPc}eIsvlqo_G}%%xDx)PfT`s*QaeOo-^{kM|od}EbhsyirmydveWLeM{ z%9Yvq@Q9vyxu%&tjA%^6H-nxOXG;;LRuY7ZK`?aRIA)`#RD@_U8PR}kkqXOG+CQ@S z(_q|L_pqCOax&We6-FT0R&(sSy6>|lOq8)fOQ%tyTlB25d|}K@!{bJRVe(pe4oCvh zbG8dgv%KT$Meb-)UYq_)f-Knz+5f?@r9ev0J7}T!r;NmBET0FJDCp@?5FAj{z6X4A zt;-yS?CBgMpY~^dNcn?d%%7d3PQ2miN4@f;2@4Unc1e4fs!h4FyJ0VPf*lA&2&x1xm0^&Q=!13A1U3i@733*HlG( z?+V4c30`l3TQv}zVPJBK@zgwd<*+rSj)^A zX0ar+EqdM`t3$6(hR;o3Xh5nUeG~htZF&;Tk~GsN+f}3*^F~jXt9Ai{IMPqo;-<)} ziamQr?n+eAMs~wy&v0Aj#vc$j5e89mzVID z88@PfJ|idRdbQ#H=IrZQ>#O1k&dhhX6Ugb4SI+0A!g_Lc#!v)CRuh+r^dZ|YRB7&Uq|P$T*jvx z{dKuxUuC_E2y}UkVeUp%J-FP0o+s4#JKFPct~a|IZxgp6&iOeGu8tm&q|7g;2vL}m z8r5?!`jJWWQ->ieOH$dWuB(DoO0)f{I>gnXUdFDlL<#nTT|t8VQ?QnA>x*eLo6a>D zMu|~+xc-ibD_}AC!Tm=BbBRwWS?4U^2v(rnaB1{=Oa7u~)ke2#bC!2#hKo5esI`vZ&@+p#iGGON&|IH64Ci zeA1Oux3Xf=#JD~U(V#HQw^nkzx7r8{(yNSjgk)9U{K@(n$=8o2Ph#`VoawaVrO3Dg z62kX(pXvFC;pQp?N~h|L*^6AK9vtiTAN{^@*OgXE3z4-%1Zd~`Yv+eKl8Ib@dX2#A zI?rbc9T^#1rOxGp;iU72EB0p=Ycebo2R@Z{awGlJ>&jA$u&NO(;#I7sc!t6<)s+LO&b5iJOMY+K}*3 zEqHQ!60jBe$Joo@iBj`uBL!ZExWtBylzJipux1jdbZ`ec%672pTi0% zt9Eq&0Q*RYm4d@&Enr_Lt;TOFKLXPSf)m&P{d;^oBrc8u)P>s2yYOM)kSD%?Fn;NB=Uwfv8#9d>v{Go2Qs%?#Vj-I&N+?FHe)G^ydbt^VY)8YfsLp?%fEQN=pv!LnJCIqh)M! z6|lVq`~i%&)vT~V4HMiO%J?nV(|RlU$BOxSa3$R~32L!eM@VY-gVppe#^g1U`i|>J z2}i5wyhklY^1|AWwW*}uy?d^p^mb;rxbS6XT)=>Rm1Y4XCQo47vhXnuW4>k}bKf2; zMIndug?g7?O6ctQu|n8G<5<;iQn%Bxl|SXn_}`%mA?F~J|MhLxWrJ-mRzClDbu^m3SxCv$0~?avbhRgq=9LIIl_NO#_=D@R?WXg)|szea}%7; zcdHH4LbaD1pRZ8%ApYzb>=k~@nIrB_$q}&N=izYn3-?(%ir6n zfn9glu56IN!cK0Ks&Szu7j_%{=jpv<7=Ojx6UE)@=-9b4*x(P1=^IeO&H1~wMzw1w z%JeMyuGhE)o~sNJsEckKxXA11gu&B($#bWD7v~aCgI1XG*A@llFuafa;72Ftfj#-+ zeUKoV$8~w0G96QK^iT)8DR2Z{`luBZOh4Mm-Ob{!@x6HAWm=`hYPY{9_U(lMuVFD6 zV&i%GD+SFW|B*xE7w}J5&jCuwHQQn9@XcdB|eFa1w87`I<$Y`DkfUTAHC! z4V+^}R@N2I_d0k4qHBqkt^~WEB0koJv&nP)WZNERW;&wO&0k!j{9Z47g6VQoC?YfK z@84Z#B~?{_H~mi$8by91>Zyc~Loof4_P@g!QcpnebE%?>Qod_SJ36;<;Bzm1RzLtD zYGMd|;r^OPUB#7V)gp5&#BGCZc<=QE#X_%=4Q~oW44Ykh+wD*#h_4`S%NF_b0rNKt z6BELm#z|d)0dRm!T~({Cjg445jMNSL zy9~Dk>+LkSVXxy*im!ScpBpR;jUU{+I*E6V7FEb$(AJh#(~jhZYHuE&%~SIweJNmPDX8 zPi^`QTMR^pGD4f)2&01l24B+NOoyl^@=_&ox^GDY;^mT_lp!a5M?1{xKU{McI$n@c zR#d!ttwcCh+6%9909W$HVH;U4SPDzZ9-p*ZItSPo=YyZp(ir8pHJi`)>5_eWG7pZ0 z2xQdh2t3T>P1YaeHJzQCV(#f380tbMUxyk!<6u7*<%$B<2&_BDf=%p?H;32w(W#A1 zBBj`RUr%1ryne-$R?0~CF*f+>L+e1Jut~Qi$)C~j*GF;pg@dLWqvIXdso?gYG*n=V zBDike)-6zx)6@(E&w$ogm`zSb29qZMGRprQxx8h0#SEtH!3fd8wCANG9NLUR*APwnmV{HwlGq2jIOpbk0v>bu4{9F1tQXDRM(>>M08Zy904U=OrN zitXe!HotuTq&5l$bpl}QlH+eK^Y+>}TGP_7-DlX5;LA}!*Q>bhZ}VA&iy^!o2bTd` zp8Q$brXfX-e*O7ycr*hOCR6RQ}t);&PIrcG=8iNLM#~ti7p7@GUOtn z-(_u7BrRGy3$Cl>c*sWjCb1n(EaE?i(Wi%%Y`i8BjxSVUOZi|F+j+fmjOxHGX#!g; z1(%nX*ZsUyg-zZi%qPqP0Cv9_@wok%%%U8>kc`LSunk*$@?2U7BBE&cda^l&N+UV3mbOD`nKdA|8$RQLZa6Up7fMOjnG0hVtB_+_9ag>)K{k1YF)_kcNg=QJphJ zf`@@*y1T^)wE!0vSDkV3G&E625%z*Tcv5BxZxJHQfjl~*ips+W?#!z6f5x#`7Hq$n zRpa!n889DxnL0l%xr~_I8+9uitRi3LrE+g)qZMi&$1iuF88lo19|b1U*sn@5UoP+ey8V27 z+1LIKK?^KNg-5WMJ8;W;D31L`WQ0pw5_|*+XjrzhG}{tHfN{;9#e!nA$%KF#D>$w6DxLI5d&F{xgvem zlreiR7CA;4-zeL&iHG0z3}3V^K8+RmE*0rKvQWM#6RN68)22bsH<3VRQYcE zXv$*RapL{AFP?Yy05xDd_)}m!OaO6LYh_$C8E<+8j97iuuqOATqoct2(CTM`kkGx7 zrX?HUyn)~t^=bgA`N4Et@%s9u`wrWx;@6i8kZ2U;Lk7~)9c2S<2UFheLd1lG&DpnT z!{Xy&pRrV#>2s~)_R-`l+W&W&a=Pedkxoxj+OYEJEf+d&$N`-MJc0Z-nbzs-DY;l5 z=9j*Qq;bZ1^}ft75b#bzqP*Tp_R=Q1hY zFtr!xJ#jM6<1VzFvIjf9!MMj5?&m5#XfcxBe>w9R^O3oymXHJS(!i~xJcoge;`?9U znBxh?=t~H3WcJW=m1|h<&oteI@m+%G138+}pSybK5L`<>q_RL$8d*&hLfiV`Hnh^D zBpUrkP-I;Ip&w;J@RGS$x6i6i$2DMxLi^aO3 z{nv+qz|j!v!>zdw1HQ$kBiv|>4`FyMh8AS}i4PoESXdqy!C`i2CqIjmW|+( zV{ciZ)^Q>G>EW@nk2gzC6K;<3S(CZ)?`sK!C-}eolLkO1S+Y@Z7Qe6F6e@(cGB!Tr z;)=@T4crj32HsX+Z&1%2`MPo}2*!i6seZo-9bZx!UfeNI491FLWn~q=hCG8|*{P}S zPQj~6+@GJh=QSD^>z*F%rql!-9XXxoXhKV@fdKK>pfQYTk3eVNj%`6LE8+1W@Vjq@=7YesX{yaMHZuE2Q*R z2T63GI9!)-Of~9T{|3{8@B5APyG?bcNgjHU+iK5DejF^S_LvCnTXLaeTSGuu&2L{& zT8)3cv9$2Wvg7l;q`lvF)KFWX-SyeiaLc-YEtYZw!Nps=D>_k)o$nEA^nD5%`s2-k z7DlDo(KgY#qNs>#F$S6m>B38MH`C3yjD%=o8k7$1GW4DmQ6kqW=xT$&@qtp=^MvoG zfpsE3bg;ViLBCd6>)q?o*3E%@;35-ei2ScHhTpku%%S?7-lF=~Vx(Mh#tcNKulBj+ z@i>iUU5@5E?j`0q5EFRV-~ZZy71t&LqN!LKx*lMyN#|DE4-w1RJ0!&fDxo8$OSD6>-PBP+RW`Bxr?O zx8^#;1IJ06sNDqh2E32?z~{kHm6Mmh1Q!~bxn3ec?oj~;;T8u(MPg0OGad_N?bjBm7aL66+OLW4}s6&*|mVB8;?ySRW zQ3QJD`B!Kz#gzLh9irZc{f$OkV!KUa)Hh{!R-mTBU7pdg`ti3Jeu{Gy-1DjphrXwX z-%e8<>SZ>qlzlO99`H*ZNRC;OzDcMdu{l9byWA(m3_CQ7Ttu37y99rCa>A1;G6VF5 z^6W&_xBS0zLert2KpbjRIp9K{T=xa{85h6b=W&1ZIg?=KCmeeqdkwE#Vfg5Fu(SQm z&6R1(8o=uHi{!*3$<+7ib5%h_S-WyrL1&J-glt(tZdcyq^ZdjodV80HCk2}8& zoZ2C)PgJG3+AS{TJ;Xh#^4Mg5O5izw-KR{Ab?#w!(485-@^s*xp))_@R0(R&kMH!X zcyiZ%?fu=q?%p>Pdv9zQx&g7!iL8Z^`?Z2w_2@Kc1oq-`Y$2E|>umJ)`ApWM!x4%@ zxJ4I)t`zN`mw+YF;IqEfI*4pk$>w-2)L1#JYm&wu7eBmi>m~jpwvxbOXj@m|21A+& z(lxGZ?wJp2UwtEA6y`r-#c$aua)=VS(^AV6;O0ioJG5p8)*l5EbPE#G(!4as=y~r8 z4d8FSFhkG_UZeyp!`Nb{ZNl}3 zZwSceO?AIYZvU6jk1M;8LM_ipcefy+=FSmC+kpj6Rk`$3yPFN*QtY7j^q$ndiF!ao##8_X%rCsjokmJqMn>@Qq((6x-oBYP)WAX%zaSo6D z9r$|DoYbZ;iC8f*Ak88oeP6yvzt_ts33~_F(J#K>OUj=lAat6o=M(?qAx<0BKzjmg z1zO_BoUpw)M;tq`8b5!}aF2U`*K@9kGThy2kbXlCj`uM!WDq9$XGR%imz=qO8zA8_ z{`u?PJZ((Cf%aq6v&JF#)t+W4N+?R&Tu;M^v%h>QUk>{ zwXiB%B&A-<`SJxfFDECb8I(PiFm=w(`p-w-A)PRx6kkRTPms5F^`ly4Ce!a9Bn+oi zj3>&^L=_rJDt0!ZUXRf@ei6-Aj`RhSi?RZzfMI9ZdNDTmhRdONK)@_St{w7{TO~fyXJ0P71YOp*Ocj*%lBqG!6{qtU-1hSzQleE94e8fHI(T} zkwoqFGZRD(!=c8qW&N^E^TR=dQf>x6iN-ZblYSIw9rkmOC<`tEBsDN5?y!*AzeN`@ z^ZNuq`{eU;uJV623{NdmYR@T?f5L0I|Cl7Y`f)PSsIOC+CKzWa;MD*es$WG9{W5XU zj%p5z7K`a~U@;A5rczv?A5o{-&UElSr3v1CXC*M@iC@3nTroE3ah~y-w8bjFqkyDI z_{Q^823`!~zkH_Uby^UBn9U?1b1r|$m;p#cP;lv|@A>_V&6oR1xq zY`##)ghf+OacEV#+(2C;%#xuT8Q-=gn;>#C;@P<=giPRSVM#MkV2w9wj|k%(r>;@F zC2&po4$l69xr->^lj1gYndT;&?|zru{;x4eSV-k|FSXfm20w?$*gH}%&y#=V^q9xc zjEdy;N}f&`duJ{058dFsh$>3$_MhYHjcQk<}ae{`%hMXPio6?X#Jc9Dj2{J{Jlp3L9+1MEzZ! z)Z=cNV2FyYTz<8u0*FB1Fc>3Vd51Ug>;zkW_flQmDIC?*K|lL^fagJ?70*O_p_jT-azF>_wFY2-h zZXjv2tE5Q=LfEP8iPt?UwzoD<`GQC8%MpXA^FWZ)+a(s@1RbQbr|J?ACl6Zdt)% zdeiJQBVk4+*=_{*8uYjy7G!&S>0Qd!>~&U@z*f71Nuuc<7#K*&&c-707oGpX9I9!( z?|<|~_t}7i95yZk{y!f%NktLh*cniCAYi*a&+Z9+BO=$1`O84!s;P(7B+;a;$dqj( zI7-=6PYxHp>(&_eBLq3#=3}3{zS6PxBH09^bcjKcX`Ec#>W_q!62t@msy-~>yd8@n zAeR!GX_9sG^E}^?HCkK6dglr=Yay}d_w%JZZK405&hO~lDe^A}=$Z>jcV?=vBoC)- z8qLREHi!4$WfzdEh&57|g*#94YO7}{>Z+CyLDqou?F$7mbFOxj&C!!tHvJTv@@J~; zh3wRnVLbY~ap)5Z?;S8}R5_=VVqC2ZLU+@Y{jcr4{pU3EB@6vGgzNv%ICsUv+g4&K zshvjn3--IeeD@v!!V`FknJ8<6S9(ZAFOrBNXhDYJL$)-)G1{HJ)@xBzR8S-sbl{AD zTz9^nx{=iz6cfnp#&a7N2K1r6>1$|)#M$`OAV$es>tp5q1C{Gdsd}+`63meoh~;Md zMD;6?A3w*4wq|1M-y`nST^kq#&@;l9zHou&eBbF_Sg*=gi` zeWjd(H+5@zzpg}VFwLm|)@xFR41O&@cgftW+y-AIQ7@MK--`_ipp(*lMVlh&wX^*w z1|fWrfOBXZVr9{f{w7+1l^ye`Qzupdny!WG?AuAo<5IcJ;(lfgn{a>`#*}=h`5Yp7 z105QlZGJy~hYLU>B?xd-S*3&ape>}_Q2!I4;>>tslo{$4-usrolca_(s$N@mIP!oi zpxDQU4n_|7_)OD&=KdT&7`a_>&_i#0_h`Y)*HZK<){PM+^W90{rG00D%v2jq&q=~2 zx~hp~$N4>`xKra$Vf%-LAc5V8fXF6gcsfX;2*-oq4Fz*w=SuJamLMZA6Bk}G78l!& z_kj^0ay$GXXFaap_?u6)WVrsOyzi$KI>q{UU085Gk9Oek_uBoF2OJG^Cyl~L$VuNO zl+6)5B-Ubs93-|E#feoHTXt-&w^Dl)Lxdy1ovW3lJUJ?%TPcz)7(6B?J4=5!m1wa= z6Rs@XJx)5Cw(T(y590Dw9A>H|r+OVW3oMwMb)>l;UZ}QJ=_PS_QRaGg;a#<=?2d!7lep^+hq=ljU__4(2TNMo;R!HDth27GX9>X1 zts1&tFYjJ+Bi{G?^eNFA@_!H-8x*RRIO>W{*@~Pt^P*t2;uCB%Qffi+qW<*$hV+is z5N>L;M4M8PC9JWroWoVZ9pW_t+jYd`hJ$Dz^ZnOG^xwRE!sM-L72wp;CVxy{w0`oZ zpV`r6f+r#9)x+?p#+hbxZ~XPjBYm6_UhP;$a$p|^BQ-*zm>%WQeTp$3t$V>yb(>R; zO0@&*t3Kvvf<~cOetcS5+E=WyKSGW~Qc(xDjBQ)z5_#Tx+Z+N##N=$e_H9N=*{SWh z`O9wGZ*c?Rc2uR+-T1p?ISTc-3w5&#RGbbTcW2qItWc`^@6u z&ro!Ic9)h$1zm2T9NRx=WV}oe^k0%Blg9oY@?Hv`?p!L*L{rd0f_P~M;a){Q2zU4_ z&^md{ChPih!Uj+d|ra%tL=_$(TTlT2SWmcsW|SiggINccizCcPRR;R-xp@LBvc>Jf`)?pyVqE2 zu(Vp##0;y_&3Md#!}xE1!RR4!BcV?X>*v^qr%AW@uC5DCU|$`6TukIKG}XANc&r%i z)W&3X#tjcd=6-Rn!=7+LH>Q8rDW@)^i=@$5VFF&z^HHlGWX4xUAB7pQUC_x}alM75 z>im4dU1e0H#>BJp(;nLAWQC<~N&Du;)~u2aTd)bbKhwPloT8dAD3o+G&u|DZx%aiB zb+X74(7BwwR*=J5-Rdsak#E3>Y2lov9L~jLCHhS~7-1 ztvi2j9`8V675PcCN5u@MqTqmN&MpuohtfP0fx-3M^18SfrI(gk!<`R?44<|Fwv>}= zwS%_Xr~B8#9B!4eyl}9Q_;@}2Zond6`jh6ts zZ5cM!jow(=n;F`U+npgMspDvWI5e1?)YZwaAaDQmAnNNkDECLBsuCP4=8@h`%tx}t zq<N+X?7jLBpw3Ffunqb61=I$+lL=9kAXyF zBl3S+Oz%-7tA$l=IrpSqZ)3cY^A=&VmuA!TaL8qzR3i{iFLts0r{Ju=J$e}Ufk8j< ze8?vi*r{=|IWFr!guQ`7gC42xfSDbP? zqnISRmeOOWy*y)9VpJ#0N0*^M`|nv#O;lW+e11GDiefq=t+~)i-r}czKwuj}raL<; z2bMd9R7hauZhB1Biom z)PRwD{-cK;tHhTv9qj(ldilbEK?b!B^sBFdZ3U%BxiXkDd{k*2})Kj*=` zftAn5u!mj$?<0#F$Q$H@auThyMiIe{=Pr12lE*OW8ab5-G0zD$I}$IHWJQJ8=R z5*@lI+L107Oj4MjYqo~b8}xV1oG1XWUou$D78dE$=3R2O$P*ox*AapuP6(YDQEjgf zxPKthcfF7Nn^|1$#M`|wk~da!W&c+Q+rB=0Nm+wuk$G{E1epaBX3{OQlpbblhRsxx zi1qNtzR5WpM;2hBVd^ffXR~1w>hn0Q9K!59B>#WBB#APCHk@Q;g2ExTvYuJg(FiyB zO8zGzJkk>^dC$t+%?Z%j;l|ZNZj`>Zmg0Kh!Yc_O^WOXGz0;E`X&eo53vq zE(0fzL?Y`FWXG4?)$gD1KXdA?#ubD?Dzs!c38bj14Tdtrpgt#Kill&I zESN`bQw7c$IHk6pCHnGp6dwn_!)6Qg=4ScVZ^oV{>Fewr?2i!cIq^Rnvaq{X;PDZ19 zr4bqa-4Upo41JpcVwXC~bs5H&T`SY#;opky+>e=s!0>!{GxBZy-Zb0YGc&Jva6Vxy z930}1vTL&jGbP?WUd^c-K{Ad}h;EP>z$9sVCI@=ESEI;PU(`3FejjWQJ8c>kl7hI) z19Fq?`eCc_h={6#fWK|b#MsTZY%S7Vwvrc%~G&qgHO#*V~v`~387UvwD4ZfBIY-kOk*kW)#x=et@CBvP;s?bVE7yCWkb(Y(&% zfunt}$e1i2vB~}(mTAO^`=C%2SXntq{r{UesM1fe$ytPp#87_t-awJ3D7IY;^pf1RDfDg`L2(?yu3WEiGj<21{CjBbLCAi0?F;u zo*d>=zbWk%Oy|KKYhs1_IrNP zb>_pA-UAFVP3yue!fG?78k?f&7cd>s)I=<=QoZ*S-WLpEXsi`Mgp(Nlo%YA@NRxv5 zbKIg)m_B;xn23nOsU3>26Yo8UHiEMqqXAkdMiL8ZU{L{Oe3<67*3Xr4ovJ8hWnm$C z#&{FBC3q3v_)84QF!JASs;Lm=)oZ-CpJrs;qRl0A@QZ2Bz}eW`Yxh))OS}5E<)rC_ zoD7m9*Fhd7-}fAm;ZFItRDyGOgz9t=v%FOqENq)|p484!rT;#|NlO@*8wqwP(eIB9(*#KVfQ*b;MQodj zS<^JR-_bCqt}d?D-%_-|Hlx)uywvg6+@_Q(2Sn$^f4;x!S)s2b#${l1v(E_eP%oWs zf7rg65oJ{Tzv#)ZZ9BGxpIkitOldOVM&Uv|gu#ifRL)D+y~a5+^77#F>YKkcd}F6)c=Djh@!gnd3P7g|I67W zls9o9y}omI@LGb}*}JLGvUy~yuljRU?%-aQNELn;3?-S)PbXT4hy!C2lSVVI{rWuD z$gmWt{?n6%M~7YfG~I-=OBQECwW9UUrg+d?SndMdg;mXf(%pet*fP&wJYP_W>uD+E znppFyE`#xRd4(Xbzd$GYJKa1r?*T&e#h}O%wN!;;F(ea`)f#1*CoSH2Rv_ zDc|PB#dt!>r)_IJ0K_|>=?r6#)+rqkiRXZr@UYrRJ|vda`t|Q2>yt-z-k+;oc4}QQ zgY)7jcV{?vg1!JfzMePi-Z?QsSgPZcjgzYdaD!(iE#={=Eoc!9yW?NC$#9|nKd&>@ zd{$bq)98)c5oNEYxxd;39#acNUovah8>6-uD;o3eCvA8OkWGZzUpLIG_cH&D`k z3eBxxF2~#gTz)NwryI_`yu=G`o2B~6BuNqJ-D1iBj`%{GV6_igS2n0#tH1tUOuz<>( zJU`h<=Tsta;;24kGev!og=q_(d_5o=ZJRm zDtQL9zgd!@0+E(XUBfC1^4mf&^h75~`ysC58|Nzl=-czz8qnoF-}Uq;e;`7QN_-bz zeC`hO^_o@V=5SjaZ%S2A2U^ViAOxA_AqE}o(7&bo0#1Qka<_a=DBa|9&mQ{q-HOe1 z&F41ns=_9+pzOj;$ePTc57*Kri0L0rK_(G>|6gp>v=tswQQ*IO-i{t!I zl-Fl`u}IlIQ7tnu;(2$)u0vTd0D)(v&PIf)l&DGek>LKfbikFH-3czFeK8F`Z3MzO zH0yw$zVth<58nI>lb%u?WepEBUY-y(NTl(3P(kz+HsSB1FygRX<~}>@U{!_9a7kw^ z%*j$WSTxO#(LixAhl7I3Ho3p0G8^4#()~t*o8y0yji$8{!bq3ny;mUZ+#(c3eAoHg zOqD*o#1-eP+4Vu@Lnv6o$Rj81bZQD_yyJj1?xfsOme~gWrOINP6<&Kp5fFKDs;Z=W zF%(~J-AHh_94xfu^X#Q4Dz=Nop=ttBEq{RUyiYOCZO=S3JT)}q``~se`PuKOF9{Jz z`wrHnwYA1KTorI@t_YFBW#A+WZ8J>CPrpXYN@v_}P~8^L)=>GN-4_>CK>NmJsLzl3+$L$V zB^;Cm%DEb$A@Ue3iuk7*%jncs19p`^FR8>ul5VRJxZHxw7+Ruv zJ^Pau;!WU&PlU9`>dkAaJc;ZRzV1VX%7J#eOg*T4??q{jAn23kI--CLo*6B-ewAke z1wer?^)^FQl{x-_c-peCQ&#FV)J|HbKTqnOL3c7`fr03WBsL=N_8EbDNkUd(buJht zBAv-WvB!KpPVS(pv6eM*^Yp0pbj=*IYb^c^^OLn8{OIHkSisV=o;e-0u4fvK96PZG zl$4aeR(20!YY)jkLyyo5kmR5!LPiw1uI)lP^yv0Jal#ce3@02*W>(sBccqMo9W4Zc?%~6SNuZlw zop*DE7<>?Tg;hOiRAdBc%|}P`vACMGmNQ}k$E$_WnMn8KiAyi{A2N@v$(0Q!ZB#Ji zau;ANZB0q@=-hLna#j^n<*#lf_uQ^baC?6&)BL@cwp9C}fam$1Y>fHo*4HQAXf%{?IPXk4%1B*Yh1Cf*gIaHvU>zZ7m{`GtK-w%#t+vp zLE}N^nDmJ)MRIoZi4`c)`$>0D@q!s>50yYEZiinNdh&E1(&zM)np;ZJn0C}ckCAa} zp_y4(@-JS{IcO~zQxiI}ei_h{H&zH`-MLj-p#R;Rg*RTyo~NXjjUcX7aD3tgtrXS2 z3%@n2Y`^i_aP8pagxA?}O2(%8n0f;=?0=k8*odHFB?(GjK+m*TmE7(Ab3YRybOtAX zvg6*fuT7S`0$Onvk1Ushb|_uJ5*!@E!4gS9IZE&aBWs{k7X}Hi;tEh-C@V?O9UpiN zpW+piQ%yCJ^H^+svA5V6Ew?m$8~k-(1(oiPh>8+-(T0q*lrnilwJBD$9)Y9x$~c^( zx^vsf2R*@G*dCWTUXtw>q}ZaUEb~>kaly`!qH4QNRt+IdbswkL6P_GYvx!wz0vpq& zkSwVxRMOGunrQysBoFts#_ssmsEA0|*bS0fB?F{8%(DR?KYoJB)MRD(8|k;Jz&T-# z7bHhXC?KAkU9^EDtA|#)NDy*G#(M2bV=NU9@KnG>6xrELqY6IEM{mC@yeO0rsVQe6 z5?S~490!z_Fyu&(6(vN~D1|>DYfLS+U5rW7UEm+f{P3TZ_W=jq!BHE4N{ryT&1zu4 zNdN&^l+Q``ixDe80>>)SSMC>?@U8Mmsz`qDd47@2k8JWlRp}Q$^;Az42x{8 zjL3%r2*&_b;)WKL0GQoh5$i^$R127cH^>C4xIAE>Kg*@%FWM6`LGXNwpT_p#SiD zCur3r<0A+W{-Gqz~nfF1-#AfR;`ZF~wj0cOV$635`1)wRci z;rVJgG7$9HFIkkFuOxA9Se&dkK_6K6Pk3k%soo#pd|YfB+hNJ4Bq#l>|?( zz2jRw>+x`Ke!XaxRsewLzQy^c=zd6iY(fEtK4yus%$EjidSB)Y2B}|PBfL!_q zuOW*6fs7--6I!yU-+i}siOro|o&YLEbISwo zgVG1oGmGR~UJ+pOAtFYnev2vZFeXY=eR_uz1V471IrPfZatmPu3@0Ulc4JyMbew&mz`wsm1M7 z=0H$59P?M*I%}jAC`XdhR9>y2g5edYT?y;HaSrLSg-cX#$_q+_piXy=8_##bZFPR>@X@f`zD2sOo6 zxR6bYmBgaXdEU_GkkI@hI(G8n&uqt9NK0aLZ&NZIT7af^q=bZH3qJ?M|R zs@>%IU2lvhe??rht^N1apk`w(Uk&S$a(8-MQE5mn9`zk1>X7-I7$(Y^;1as-xws zu<-<+uZ@4R%Cw=NkENxOQ~=ix3ufp@d!7|#-mp9uyYX6?H7IV7t}NrX#0}XKbf$?j zfqUP<7@)Lm=zUYb{#AAO?mLdnXbW8Wo8XqM&&(JK8~656Kvl>jz7ZlEEvLK|xy|=G zw_kSgK5Z(pjEw{s-1ZL|5o~Rgw%Lb5<})SA!Lq-p(96aCmLgs|O9-p|bKEFvju~Ib zrp5})022g&X4fP)~3(lTpNo352d2Kk>!&(Mwum9;Tr6$x_tM z+g8$IRH*Z7I2_cT$;O>GPfW*~3o<(X?@RDaveNRd$U)_rlc`0PjJ@YuYT+r9QVqrai+B&tGMNhIoGRz;uwl9Vs?Oiwe`KYLW5%a;EpOL* z^nCr$<@TQr`~MA1{c?Hm{0oZ?DoGv9{*y$=%kS_)3i=FP=(*T7(w7+j+TSc^kM|NN zSE{f|8F1Nml1$uP%jbDHtkn|NbFwO$J- zY-!KhD*hc|nU7GbqV4snA!#PjHU3+jDjP_alKbCbPXt*q5CjSBQ2mT2e#B_MIChed zBp&heOPxV~C=eWoD#_V(ZT_19pKpG597-D`Cj20@i1X0fscOL<5m9ylSwz8Y8;=qT zO=uTiiLEV_{*F!0^kbsarPlJ2tIO)0`ju5XCj?C?l#MW%kJX!$I(=p4sRQYMBbFeM z;Twi(9Ng3zczOR-&#kbd?4ro_Sqw~o&^%*PW+R_)1*2FJhW&NwR`SH4k1emBH-DFm|DZeT`r>|k z*5hEN6)GaEa;Q55Qvr&jnz{lI(w>;KDu;CsX?+g&1TGPxK)-UxQK0DvU)reSam8A% zW(8$=@JrRFjK8bbPzk)gkO)W!V;PVz5;)rL-?|weZgpnI1r`S1=IzjQ@%R4!cB&VV zM6Mq1eeh7_`@p~51H=h#u|X?50JK)wq}OJ=M#1i?l)NSV6p`D4$x}Ox+Be67<+q?AnzS|+3Frm&yT<;`g{7z8 ziyZ5%pRpByQm0t$S~t_5pKF^xW8~itQ!-uchTN&fNfe7D5~Uf2 zc;D6FhaS`i?hvEmoFhv4Jn|p$t;jV=gGCPa{Y2OC1LD?p8F3T2Iuw`axh*}d0GHrj zTOOJKo|vy?`ShpQ)EAcWqz`U0)A~`@_@N>{jHHqhB@3?hXCjy4-%b1cBy67n#!F5^h1TJ0OtZUb z_AwxF2Sy=ca_e-?K}K3KkughE#r+bF#*kl{Rb0Hg6_uOy#h58Uom>QUTLaDyynJ*$ z@)+SA__RQmh(~s-(UXT@vY46-WE9@b`_g?V?=Wb@u^}YwNCu59Bs1%W{SQG&vDdb(aj}z`%(OU?44li5?>$M z#N`S$W6H|XI~x0&lmn)utcSy-D?K4#bWZ3;;l;Jhtd28EX*qj7g)_m`;4n6lArPaV z-8q4OYrD40!fbT+jCVw++>p<}sJDPE(1)2J11h@as;GAP?9B1eNCL&`trJRIfY{dN zciK!%)XR!84XX{oZMlwgovLv|L=0Y-)>6UE^$S~0+gMMusPZyzEyI%%gOI?H9RJ4F|7ZcKAJ3M{u61%MKN!73X>8r@ z5bSvT6<}1uTkZ}Gblhf)i~Cy(Q$asKxzanc@3!X0o@>*O&kcSRMDnU0%*CmyJbbAB zos$)OP;mEEtawgEeD)C(uE%bQTWE2Gv5l z1)H`R>%iu+2}L&RhrTm6vg|$zAj|(;aXxtLYSj%CRRX47h1mQLSW6?Em-2G@z#`|v zt&moyv9VW;V=9F;_MD3bvJhQ?)AF# zJsk1QjyT>FG;0~mtCbn4iUQ~Sb-uqAw$5rhR8Bk|ZV^GgTNk#f0FV7^^^O)DDvC)B znyB5=_*KyN>7Z-;`g>qiZ@!D00$Ia_hWYB`bhH151-}J1@lRwBIUJmtbWiOY;$XN2 zI26Ce=XNtEHXy^$&p;=kdcg@6BsQoYB?o(1!Uu~Ag%|X)I{}gNdY?P+HRop?F0vk| zo3}xNXF1E5en0zgr=qgpo#_S@m6hj;aQ6B`jK{T5r5IjLM(f9L@xE@~G6tWiPbzEm zr^hd$S1Z?3{J;9?W;%_%zf59|Uts<&*ThsYv3DO=YKCRZ`P``^nWFY3MZi&{? zE!zS@hBebfMn%m4)A|&(xd)TW*V;Yi*-URKaZJ!J2{x4x=)U#Se)kSihqvXkEuoDG z{O9E{EI0py%ZWeC!s)9v&uSg%iu7+nt`?1yjTUL)34U5yvV^qLh;O!3bgd%tMpF&L zbWD3~Dw5N;hj;MM0BApB46nKdT|o-|5=4xGZp2p1n3&S^wdbKitLPY|g+;uBRc1W% zF0-Nv1k)<-M|Zw9$yeTM3n}G5h0@Pg|2I&!-^8D>||Ge6_yn z^{atz{OtbA<9n}3KpJ0+ISLU^Rz-z{rP(+4m~XLp$4BDP7dvzzfL<@ zQkHr2`t6(1sW$V!dlL0(j}LD|KTP>=qZ@M}Dsf;;aCxTq?DJUcz_sr3fa1>&FhWv0 z(RnL5d*ftjll3`41ONKcSuW!u{UbD&yNUcP>l9&zXWUq!ZzFJ@G*`>VAgP5nM<<>Bx<>V5w?O_k?VSy7=@qw6C90#b0| zM!)gNR>qEm zfOO+{AU?dD_OOpagUKOi41^;W3T_#=E%lnc?{~&VboG}$m{j1?(no!ua2LYu(NC;+ zC)vxFH#KrU_oKp48PsMB2F3;{9b$wH!O5s+di8jz1qp(d`U~;llW+HU`;ip6ObO;4Dal6Y={OgZ}hV+MQB2b#xLkYZ!ou^>vN;-Soec%gLi5ZW*lIK?u1 z{^KW7K6`yge7*@^sxrY(YO{tqki#J`bur98El0kW&m5_6z=?G~*Gu7xR$eRA7+ve; z(XM{4%_G2|C;Gb*?4Rs16_J2BbO*32!I$5XZ>>Z_Sv>@UcywH9XFZP6+RbIoOy06v zV4d>w^RL>Ej+O14wda2s+l&YgcSzBIRt-HDM$h-9mewu*=F5=W-#P(|@582fi#uWIg_5BgJ{THotd37!tvT`XH!=eZWl8!F7w zy+ltNb_HCf)-CGC0SwZgZkl1a%;Hqu2m93bsr7X(Tgl$zTG9ls&z041Gk|VuQ-NL* z7b-$H3Cq)=CMCAOrgXndpti?vMP;4J^%_>$OoQIWzQS-33J^ zV{&@}cIGdhp{PPg(p5uMORNQ?3qP~?1)`YJ6Ps6qveiqwj&Z!!Vit`uv{Ggi^1^Tt z;Y*46we5<3a9`GkFFwh)x#6l(p?5GIr1X=lr>}bdu=A-2n}7cg1#&d!-$X}rwJ1q1 z861kp3p+OhI$_~(RcN&Y02@-Wj1HY}aK!Sm$j=ompS1jF+B9e89k00q6Nu+WO_K>) z{!#@oI}O*0I+Z8F3c`BCyhh+p7|YLMfEQh!+xq#VYRPC0%2{bcp`Jh#ngE@zjcLD) z*oUSi>2B;@d|g4TPgh1AC`{#~_j;qhtKD_tyJ|*Oc$rWRpQcZ|z*=#TkSl~Pl4VBf zy&^@ZKfc6dgJODGW~eYP1_EKS!1A%(FH+6#L8wJ=153OH{ipn*_?%bDS@COHw-xFh z=#dNLEi@+te+(I)Sl>OqM@&-VI=-;KP^(6C9(HIz$)bCQA4a~HK< z_h0et+mK)K$TZ1P%8|;x^`5I@9cfxvnh_5AknW@F{Y|@@4mIYsaqkw4gkN@c?sR4> z@_&D*^|SEplH?ekbZ#jB+)g@FM9KZl0|T&!8NsE0@Hjg5L3 z;7I)0Gi&mFis9S%;WL}9 zs<%p4Px_A*$4Y9EyQ51#sM!@^WKhpk9pihl8mrUVu>qHg(u`729hg^bilO=z!SE3+ z>vhyJ_nKSv^m3UTOV@(?`CGpAjlg1=H69bglXUR~(NFg$tU%2%N*{DYe1q#MsLC+CT+_2u={6N!*C@HhHY^=E2aqg%oLGxft{pA1*LW|I0K-+!E z9+jfVB3hslppZc@XH`DE?^#k((x%TD+G#)++o^Q=YC@TDyf%;TtY}qee89z`_UPzH zcdWt|Rh-WpDOHH9<+P*84bb!%@ZJ+M>-^M~GlchrHNkKG#>u6VCjC1Ywfw~E=Vzl; ztxfRp04s}lI&{#FenY|cS=FE@8XDJ!+}vD0Jtle}jp=$wzreAuBk>v=`YxM5!2P?0}{Ltszgo-Fe?b~&i?+{>Y!g#T!JZZQ{p76L#R40Z?|@UB1q`G@B4A?HKcNeq8~_BnloOc zBUjD{hq{b3`>DQ6s8I*st=(P!+&{P0Ga7M7dlDaAMVKh7K^^S7GPBvklyd(*FO_l& z`%gzBeTL7^T3&_aH=)DXe$2zgMZj;5%r5J%Tzj%(CS!-Rr6Zwq;?P>u*0#*4tmMCb z{d(Blo0FFaF+3l+ojJpBCqcPH!PxY()9{{3WRHV!-$2SKdGOD}8X=cc^XcIaTVpnFQ7%EySsav!HSy_#;-ECwrB~gQ5^+Vb3gptQTuf=-xo}M&^J;v zWNjqUcZE@0OpG?FgF*dvoeOhRhvmt^Cd8U5nj&k)jy3xZJI?Ey4w*A6g~+~Y8M^YZ z&M~8>_V5)@V}5??60L9@Hkw5gB#fIkXIfcv?-sKo)y77kAR7{HF>jxuZ5IvJ?^UC= zm*QZgHfRApvDp?JN-`WL5fKq=TpP?1cPZ3E+A|Yi^z`+;v^34IwH#O;ry?Qofm@=F zc{w^o46|gt@6cRrdewb2pogKN^oNF5Cn8Wn|bE9r~H@357V`9jTn=?DkX$kjv`x&lGewt{I;>ShM6tis>EAD{7EBafr3D zHxk><_}7xDiHWL!)D5}5v8cGbscy5qHgS*73x{R zKL5_Z{^<`*h!a0R$x$n`0b$K8W;YMkK0Em#!k;-ihhKePT$#DgXGeok>&7}>>ujdAzqh+9`Zz&5giog+vSSXe zzxIiiBzJ5eG!QZWcnRkj92U8!aHU}Qj?&tb{uv(G&@P1R+Pg*+Oo9^8`(Y3Uzc|LjNJ= zqvPYO-1D+y34!gM_^Yg$d8jQ1r_)#d9sa%L((lxdS(m@%!fr#k6<2z-mSx+34WGX=*RLVK~M#d;NVmKG@dYdn4b%=F>hsigDvn(&xv|eLMA&Vf3-{ zfyL^0HGg?BnsKyr8EPK|)%RNqHTzoG?|OCT2DiqaVHet2W0qgiF{`N>yasmfJFw*2 zzw(x1UlgRfi8w2g$>e8xK8UiYtgKWo!{!Po|2UGIJj|BRMTumndk+T-6PH9<;_JVU|{!zG0daRi^AF_t%=Wx`XPjy+VL zPNnqNG9`5g$@!zg4w3&POp{HP< z)=j@7JIQZg#$61Ko!;7T@x%R-$))N|;r%T1mqqvHIlt3Kbu_oNNmz+qdg6!j^Yh;{ z*jr(MpP`H9Nu^0i6XsZ+*vj`keT>-j0oiI2L$RRV(eQSCU44CeK0ZFYOpL^e@_?1a zp%S6^3CI7+lZk$52qVWT?NRtWoD~C20cDEr;aGq19j>SnbS$Ov2`pd0%Y17$AeGW{ z?mu3}-BD#R#r@03z{!KLb864@|Fn1Q-%##r{4K>krP}Ng+G*#K4wI-`_1v`PtTI1t)N`l2vrQ&h>h}7w?96hkTNPg7OcH;+i!XJhR^9(i8l6 zjTO`?6v>oo;k1YR$B!dk&O4Ujw?X=G5-F-#VuKfZ3 zao$fJv9D*oJtHLPEcqHed}Q37FZ;RURqVLkn0^J3Gs82; zn73^{qLu7ip%y@Vh#hV!%CEdPR6{!eT8fco5{1UXSNJ^{KUD;w?7J>Z2NIr@=6~8xGRX zm_6K!%V0MAa4zS*a;E~^yaku1Nt)x@+t?&Dc<~$DL7SN``ENI=GBFvp6&jwYXqSg? zZ=6zil|NWeF8}sRO`pDeJ2$3l7$0Gq{PxLl$-?d9@;s=7;wA@@jtwa!|9RTLqMn*r*UJSo) zeGllczLo9>U~LBpSK_ub$3MZp@KER`+XoU9gi~=sIk3pg;@j^LBO4Tn*1{`T=5B6o z`05L~;i6~T_SHR!XBjSn3^uk%{?U&__q1t8gOHZ+2m`AfKSNvup zgGSE^n2Q?C4*YmrT3Wh}1>f1h(rAqy$~0a>5iOkHpqZq|Jk-e`^R%)?g`EU4X#=o- zCEgY_^Da-oAl19}8uj4V>;n-dCJUdRtzMdgsck4p!3?$v(=C>T>a>f0jOa^RpP8Pn zCN%f|musn#%8=zwszU+#aC)kITha` zj1iPR??eT5ZYXE&yX45%fTXA%D~QNE`CK@rP@|5N+oO1g+}aK!waieFUtM`m?W>@6 z$)+R$r*d$#72v`3`Qt4Bo&wyTS;+ks=IDxdD33mHuGDRnzYdtN#l-pa&DonKk|%od^zsm-U$`C4EHYbw<48%Xk$vPnV| z(GGlFu*wdf8VLDlab>T03SKkbyl=vpTuLX0Qd%+Na8e%MOTttIWeueK13JmKm}uwW zsCN7r(7Sv8oXCX_31YF-Q-LN(q82eRUT~p5tH>*1P3Y1@C5O-ASgBW0w@?dFVufAI z52o5_xcd1LqCu%*37Iv=a!JDIH9SV(yCJXCfvKGzM{yk*5$lHnLb-W$U?>!a5vRab zPLk&87gMhnEIql*293DYXI)Gtak2zs7Cu+ur9|!VpHPFIYB{midn_l|#SSdzWi(b` zXYTc>%Av0#Mx(oR?O8MDsbgB)>#!;cEafIU2p*7d{tt)eVL`di8kw4n|@xd2u=<$#9s2s{ahTFLhA6CiiM* z`s5*|Sh0P*Pt8a+lfxV${i^`zA3bp2;{Z4=BSUl9mIzUO`u1n~?&-LVw%mdvTH^zw zjsn+$aaF`$PsIvuxC6RJh0$Z1(`gmY4Zd?r>BgIm*>z(8> zSD;p3IcjKe`Aw$ELj}C+uCLzMn zE`j6Ie-;~TT^{bJp|*Z*TV_f_I;+9Yb#cGzT+6BYtS*)={5iBJwiGS(4TL--`gIE~ zEKNW)4L2&k9`=zNza_%;lQQh}*3q3g@RKUnbfs%DI6V7TC*FR#lt{I(j( zi!nY^pDB4qfD6$E21#pKKAmPFrUlwp#Ic?9d`LO95nGARy&vQ`DAv8+zJ$XM?pWN! z`EFIJ{JEu}r_f<$4r<&K%~gnE(sFReK~)vQ2Q6Zj$IVRmz5QML6{z?9da|M3e-(nV z7@`x0yCn4Q^9YF4i2?)e<`#5832CMn$?p8F%WY90P4Sr~gl*cS+^u@?I zmW~Pu-J?kP_2szV$-LZ&1~}-a%dNX|#dV zuM#vAP*2~w16PRFE?)s}A(V}DFkgF1*PINyYJqFscf$il8G`%Yt#|t<5Ez!DJqDz< z`j2*>>(7ToLca)S(&EUHXsl)7U;O@Flksh`j1rSOpxh!%*bhg%p^FSfqnWj}HL7H< z{P_fs*Yw$lKtR9n&I4N~_=V!m{!EAZgSL52?~OETa`s{~ZzYnRzq^}F8sNpctb*Iw z|GF$k-seUv%%(Xd3vKS^N6vuOzHy#)z7ii77pLm@J#zc17;O}BP;SE+#Qd(w-~-M% zO}3-oN`hv8L#SqJYfZ(P`U7g!pEd=3YLh9l%_*)d3huo0p__9cFGlGFz!h*;Jh8B) zm;%v`=L9x-%OZDC#f+E|N?fY;0n0ZV^NgzX(8ksKJ6z*9QsAfR4@+it%~_o?G7=IJ zE#2KYHph^pLt^hAFTi79wj;k}doWOZh}M$t0}RpbPI;)j5oM2LuhAYs4Q#mq1iHWt zo+ML@#`amne{CfZJsS7gjh&719fiW7pZP0=n4nszMdMk3Zd!R_g(*kOAC@_@SG$1g z3xWlg+CTf_|ap~1|WFrxOlrj#zn$GVpfg*re~WYHbGAc zk5{PLGdvH~M}NFtPn6HTs#{aYH_A61NwX?MCsly_4ejQGq;PmZ<_7b9qM;Qvjty#k zG)jY&Py_=)APG}jLL)m^P#0-Je+;tr#k?!xG$Kwmqm4~N0Z_quzf`dZy^*A@T9y|R5L>X^PPtgLBZ0?6v<$gG+XLbU#+zch6!lY}l?XTn?BP*y(xn3_ zw-i4Xg4}+cvAGJ;1%BAu#2ZGC-!BsR%so^9<=}K?CS5G{FP(oZ}0p+d*}6%)akMVR>5mzT~K^F MY-WpP96ELR--F+?p#T5? literal 0 HcmV?d00001 diff --git a/data/minimal_demo/graph/owns.mtx b/data/minimal_demo/graph/owns.mtx index fd44ba9..bf66bb3 100644 --- a/data/minimal_demo/graph/owns.mtx +++ b/data/minimal_demo/graph/owns.mtx @@ -1,8 +1,8 @@ %%MatrixMarket matrix coordinate pattern general %%GraphBLAS type double 9 9 5 -1 9 0.2 -2 7 0.2 -2 8 0.2 -3 6 0.2 -4 5 0.2 +1 9 3 +2 7 12 +2 8 11 +3 6 9 +4 5 2 diff --git a/data/minimal_demo/graph/transaction.mtx b/data/minimal_demo/graph/transaction.mtx index d3dc451..4067a47 100644 --- a/data/minimal_demo/graph/transaction.mtx +++ b/data/minimal_demo/graph/transaction.mtx @@ -1,7 +1,7 @@ %%MatrixMarket matrix coordinate pattern general %%GraphBLAS type double 9 9 4 -5 6 0.25 -5 9 0.25 -6 7 0.25 -6 9 0.25 +5 6 5 +5 9 1 +6 7 10 +6 9 8 diff --git a/data/minimal_demo/image.png b/data/minimal_demo/image.png deleted file mode 100644 index bc5faa8fe514326bdd6042e7339d227322554252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92563 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⪻xs}(L6E&bg(N|{`_I= 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 AqW}N^ From c57ce63c880ad65f5b2f9e87e95688a019ce2d94 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Thu, 6 Nov 2025 01:43:57 +0300 Subject: [PATCH 05/31] feat: add template for data initialization --- src/main.c | 96 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 19 deletions(-) diff --git a/src/main.c b/src/main.c index e906ebc..fe2e51c 100644 --- a/src/main.c +++ b/src/main.c @@ -2,60 +2,118 @@ #include #include "../vendor/GraphBLAS/Include/GraphBLAS.h" #include "../vendor/LAGraph/include/LAGraph.h" -typedef enum { + +char msg[LAGRAPH_MSG_LEN]; + +typedef enum +{ VISA, MIR, MASTERCARD, } System; -typedef enum { +typedef enum +{ MALE, FEMALE, } Gender; -typedef enum { - EDGE_OWNS, - EDGE_CALL, - EDGE_TX -} EdgeType; +// typedef enum +// { +// EDGE_OWNS, +// EDGE_CALL, +// EDGE_TX +// } EdgeType; -typedef struct { +typedef struct +{ Gender gender; uint8_t age; } User; -typedef struct { +typedef struct +{ System system; double limit; } Card; -typedef struct { - EdgeType type; +typedef struct +{ + // EdgeType type; double weight; double aux; -} EdgeInfo; +} EdgeOwn; -void edge_mul(void *z, const void *x, const void *y) { +typedef struct +{ + // EdgeType type; + double weight; + double aux; +} EdgeCall; -} +typedef struct +{ + // EdgeType type; + double weight; + double aux; +} EdgeTX; -void edge_add(void *z, const void *x, const void *y) { +void edge_mul(void *z, const void *x, const void *y) +{ +} +void edge_add(void *z, const void *x, const void *y) +{ } int main() { // init graphblas GrB_Info info = GrB_init(GrB_NONBLOCKING); - if (info != GrB_SUCCESS) { + if (info != GrB_SUCCESS) + { fprintf(stderr, "GraphBLAS init failed\n"); return 1; } printf("GraphBLAS initialized.\n"); + LAGraph_Init(msg); + printf("LAGraph initialized.\n"); + + // read all input + GrB_Matrix call_edges_mat, tx_edges_mat, owns_edges_mat; + char *call_edges_file = "data/minimal_demo/graph/call.mtx"; + char *owns_edges_file = "data/minimal_demo/graph/owns.mtx"; + char *tx_edges_file = "data/minimal_demo/graph/transaction.mtx"; + FILE *fcall = fopen(call_edges_file, "r"); + FILE *fowns = fopen(owns_edges_file, "r"); + FILE *ftx = fopen(tx_edges_file, "r"); + LAGraph_MMRead(&call_edges_mat, fcall, msg); + LAGraph_MMRead(&owns_edges_mat, fowns, msg); + LAGraph_MMRead(&tx_edges_mat, ftx, msg); + + // init vetrices + // 1 - 4 --- users + User users[] = { + + }; + // 5 - 9 --- cards + Card cards[] = {}; + + // init edges + // 4,6,7 --- call + EdgeCall call_edges[] = {}; + // 2,3,9,11,12 --- owns + EdgeOwn owns_edges[] = {}; + // 1,5,8,10 --- tx + EdgeTX tx_edges[] = {}; + + // apply filters + + // vertex filter: we will take only prersons over 30 and exclude cards with `mastercard` payment system - // custom type - GrB_Type EdgeInfo_Type; - GrB_Type_new(&EdgeInfo_Type, sizeof(EdgeInfo)); + // build matrix M + // build matrix M' + // run pagerank } \ No newline at end of file From e8d7d5a6a647438e4ce06143b392f96608629b6c Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Sat, 8 Nov 2025 19:49:06 +0300 Subject: [PATCH 06/31] feat: update example - graph is directed - edges have no numbers - "call" edges have been removed - all input was deleted from "data" folder and now it's hardcoded Signed-off-by: Rodion Suvorov --- data/image.png | Bin 0 -> 78104 bytes data/minimal_demo/README.md | 5 ----- data/minimal_demo/graph/call.mtx | 6 ------ data/minimal_demo/graph/image.png | Bin 83187 -> 0 bytes data/minimal_demo/graph/owns.mtx | 8 -------- data/minimal_demo/graph/transaction.mtx | 7 ------- data/minimal_demo/graph/vertices_type.txt | 9 --------- 7 files changed, 35 deletions(-) create mode 100644 data/image.png delete mode 100644 data/minimal_demo/README.md delete mode 100644 data/minimal_demo/graph/call.mtx delete mode 100644 data/minimal_demo/graph/image.png delete mode 100644 data/minimal_demo/graph/owns.mtx delete mode 100644 data/minimal_demo/graph/transaction.mtx delete mode 100644 data/minimal_demo/graph/vertices_type.txt diff --git a/data/image.png b/data/image.png new file mode 100644 index 0000000000000000000000000000000000000000..0489463d6ac8afb49b142f47f5419d49ba3792ed GIT binary patch literal 78104 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 literal 0 HcmV?d00001 diff --git a/data/minimal_demo/README.md b/data/minimal_demo/README.md deleted file mode 100644 index d308006..0000000 --- a/data/minimal_demo/README.md +++ /dev/null @@ -1,5 +0,0 @@ -This example contatins the following graph: -![alt text](image.png) - -`.mat` files is a edges decomposition of the graph above. third column stores edge number - diff --git a/data/minimal_demo/graph/call.mtx b/data/minimal_demo/graph/call.mtx deleted file mode 100644 index b5e40da..0000000 --- a/data/minimal_demo/graph/call.mtx +++ /dev/null @@ -1,6 +0,0 @@ -%%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type integer -9 9 3 -1 4 4 -1 3 7 -3 4 6 diff --git a/data/minimal_demo/graph/image.png b/data/minimal_demo/graph/image.png deleted file mode 100644 index 6ec4d3a38b1c094256dd72146f46faaae2738878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83187 zcmeFZgHpo^08 z4Se9O6(3kQ`u!tb_r7D66SH^4(a0c^yNnNzrLR>)`a`d zx7legS^x9amjTcA@;~q80)4?#UVOchxibCFTbRnDd1zsvuQ>ew_p4$5Z$Y3?`2RtK zFiKq{&8LvLt=QKOb`Cu`a74+;$#;%V*U@NoNy+wAC+Au{@XE@{vVTSfUWmixM5KL< zQPtGY0RglMB5&?O=@aKWhEj8IDDxCbt<$%e?swozwy)7etfY7>IoBc``3PRpLO-3U zu1|IMfr1Mjcpvwe%$$dtyK8Ho9#cPUT_r$q=k-O}syu|!t%J(D(V*64OI=h{bWn8j ztpG(>en9~?0?KA10VsWaal)~i_oBf^*HI{NQ-gXCpuxm0(mdP*7Z(?NpgZo>v5cc5 zl;It!7b$J_Yxl6+2{l?BE5XXhM0wbFh$QIiOR*V4rdTI$k{tHC4i69KA`pDVrqHhw zd31pfna@Q<{Zc%4I^(u$gMM@=u(s`YWT?*|xk@t5l0eS)vOF)Vs4% ztjUl2{dO9hq}pc%o^2j)IM+hYw(W|qegSoVkxeA%z*ER-{M&Q?*K(*MBBBD!PmM}? zuHn$-o#Lkl z_kDS{qHg5iK!&7o)l`(h1L&i{&o7=+YzVjNdz2-S#cIaj7Ir`hc}x?-Kx z_|OOPBrYy-1uW%AzFJh@v_9C9m3)JNUx&y%Cg$60CyoJoo8jMFV<7-z4$tU`s{b3+{AKo12>lxqH_;d`v0urd?dNQXIqE652dk z5LN2mbgm7h5M+$)j&8}nxP1DF<9+ZZT%Lr4gbuf=)lj;J#9DTcWM9H-_nm2a%JHc; z*w)vB+sx39hu;W(45D4?ZYz7a-J--*zvfRX3${~ohSKSWyC|DvN8P}=Ee-Yu!}l8x zehlA(N)%Pj&t@pds46Ndlxky4r)1_wC3+Y3Ly)TO087fNOONCah3$J2{t z$No7!{%q}SWXQgCf4(jMhE9rUMQ)+M`r&Aij*12j_(9(!(TnwlIXO8g_2*BMVl>pk zvc4q@|FciQ?r4lV663C-3FWn~?hELr@8-0%Nf7(vZCfg7)leW@Jc5{HigXw?P;6VF z6!T-FquJj`z)!N+HV0M%ZyHw2(~RJ`3(;Tx&8VL!C141FG0mS{Ft9*F46Z zesfme!Q&5Y@Ptuik>j9(6XK%0(_DtivIrSi*Yp%Y@N0&NBC#5@F`C04qa5v^v$u5|j{THO?Y3s? z`G1Un{}1bMzPiQ={%k5FAtlX7Dat*0ag*sV>b?&`g^gkyZ%EK$niNVBf}OK6t1Rus z+1%8VlL>57fMoh`4eKiYhg(;n-{S~DW{=3T!jPrPXjFx(x10H`ql_}WO*6N-5^J3r z)^%b-8R!RTF6c%Rj@-Rrgm9VA$LL^}Jx`CxS^kZft`Vj7FW=rm`5^M>Njiw=SJ&un znGZcp5sPHSIENh{PgD-(zTO?T!0)ZMuLpT9?>d9R0J!b8uA)B?gdTW_;_ssTKJ>&h zXq+v1WVI-r8Av`oMKMdifBs2`gGNhT)$`$-CYF$s$tM92HxhZo{`Xqx*QWc37>bSR zx&<{HZDTWYRF0r~>YsI6NggJ;1b&pN-~x5NcdYDoZtY77)HX*n_#PXzZ)3w*QhfAC z7$ffWvW4*-WmZ%?{bzmEFCy|u&^?e9n7%|6%}&?Y%LFKG)nzhX)Y|9-tEg#h@RyOY z$6dKGXf*m09NJou!Z;}C?^3sZqQK87Fw~A@)#FY1uAZMt=A|GRwmB5gc7V3t@4_5q zuMo2^GAU{c@;p;t&3sZ)kaYWk1_r*k$md|XTh*=PLuGe_P-h6F8E(mM@q zFMTivPVU=HeVHQ!R$|!TqA;497a{jPlmDmS)Ck3{AlsQ^fcMVs3cf*b`nkK@9u~C1 zu z+2qhuh+N3?8M==rwwpF*D9;03BMAaO!|xhQ1pR=YgoZ$u*gBv_qd4)dZK|A1Q?gbg z1$3{acd&RO+qU*m?ZRgzw<(2~;bVzEO^-c=z%P8t!y`+AUB_cHD>se{lL~x0NAu_> zIol-s`rP+RZ^np7e)gXqN4op_8#au^q~@^cJ(b*LIYCi^gcUl$zK*?uaUYqUE(CaV zc$#-;UfRC`3UDHgG)0&sc!9g4-NJ=+2xess#6C&cKfW0XJH z5N!Pi-a6h5XqLrR5CP#{H>xAp0SW+Q#@-qYRWmfq03ZUWk(!Vpa~eabx7- zr9CL1Cta)uG#dZJS=$!>oY>vuv$sqIRE^SQE4|bngy)+a7XbxlvM@fsDd*mtY)o+R zPhZ4~%kI1OTdNjCKSl=>Y!G$t)|eL0H2_Y;{8HqN!vodyb?dc5&xW`yy%NVfbvA?I zM0l-2fgWo#nRJMQ(9Wu|v_Yp`H;4mG-X zjWv$QxNubnR7M0mwyMV<4!NI5k+{uh z$CASCasrsLD6XOVH4)S`a-@%8VkmxGTBTT*526i0_8>mM3s5;wm&TH4oZ~2kw=KL1 ztew7>C30I0$orJhnr#V^SDtvPO%@_bIv7or(ikmA%SSKEUB4&>MxLp-DnLEu=jSJk z)@`pt}XW-VHEUO4R=P*39nTE?%JF1^usjFH*R9nxn>6aiSmr% z+%PvO^a-s7BFo;XYi?KSOP`%IVmY){Swo6YP*fDeHCs1Rgc^W4!Uqoq=`Z`0B3HKM z0jCJ(T%B*r%qF#tWz)^QPw62CVnMX$>)uZd z=hZZis+{WdKm1c8#f|PKh)<@pW1cb=XPZbu4K7aOm`l7x_YidvPtu)i=R7L(t_y7! z6!AP;NcqisehRKR5$sDErCnh@@?~KU3e(SF!YQN0n|T}KjXqu0)-S9Kt_cy5 z$({z42FU2aNc_{|19vPSTjyG0<&DeUAX$xx@MhKnxxeAfAC&YmB8&UFA<0;81-9+XW{<7+R=L(dLlgsMH;ohee z$uNrOsm&O!QXDw-gTX+N)Jb>0^&9@#PfePGTi)?>GvUGCV(lLlte7J$6T6tpjKD^L z0^{onPgHlbab5BD_1`k>$1jbYilb5{nFG!hx(6e?SX%0~MLdO&R+0`5% zDtVI?o^o?b2tWxrL91bmZ0Q7|V6tLAE%!4m(C6GXvt+vtR%JU*@@eA5k#A}?X%YM8 z#~r$;7oVBk+(^PpO$w!5-H?q2XmUOMLuZe(aZz(@`*N;cZqg-5;_>xV zfOJvabF?)amgkuvbmEc*_jR;-xT2z~WG>L)0tX`M@vrz9>#;xrdSLdb=n}!2g0qk4 zh8;%WtAOX{F+ILYQB*4mypE^qhaOw?vE>m4hP8Eyf3B1{7h-oaJt43Xe7<>f`aPKw zwbDCMZ+tRw52V4JOV&~(YqPWEW-8yyK$6y?(2)?Cq{X;wGHwM)gCp9rUIpsXTtC>TY$^gx58Y8NI!|liyy84)0oG*W}!+ z0#3~=c#2^nLU9nvp|2Vht{fR%5!ISO>Y0_5*5PM_>fyZInz%)vf8N&OWOED^G3tP+}6;yth9y6yAWnQsaOS zwkUi?4V;P;YqvQ*8lX!OteE8OoC2RD+a7mBP&2Z~pZA-x#nA>-ykuG#|067Gib5AG zul5HOmiBkW(y}S)UG`gJeew`s65o*U*U=Oq^4bSKn-y8}i|BK~t-la$EnQm4GrDIe z--8Bd6|}pXgX!P#p!C7tCdF~-Pt4$uea_JZq?6PwzUn7t`+M)UJS9;!y$v5VBg$Qz z*AZ|Z!C%B>Kv|dkz9?pq{VSi{L$vszm7-nCiq#*Stgui~d3mWEbIthAUO|zIQRx2R zPZ5NyOc00cyCn6`*36~(gC@p>ft_S0OX;^gf5oy0D?))Vv%4%&S8V!L>bT#j+v5rQ zLSc{cS09A6U8yX{RVju`XfmFOv0MnlHJmqP?8Mh99L~Kr#~X!zY2~kcx&-U#y+9MX z^?;5+sSds4RV;`#v~-y)+bdS-3w%=%<~`cT95Zg+iZzVYaK0jHj>65Z&CI;P26xnC z(dM0M+v&m?1)8Bsn2!@(0dAKusK}mBTY?`E@~SaZZzGV;BV`*93Mx`O+m-5Lbgklr zVX)U#tfyV?=>}{JcqgJ7l*h-gCIR4gf?}V}nv8Rty`tp>)R>B@+D4yqMZwX8htuFQ zp*5#Dw?FWTBD8_Bs+xJo=8iQA7sL}o#eNSxpK~64v8gHqm(tFxA%FnZg!u9Y0NxHL zGQ%&e|Ky}ewc!+Z{p2Lc_QvW!hJEb}Loo;_lOf!iv1*?6G`MAdbp$PV@FcJRqOl$b z`g(LTn|_X$;>pJ&>)GP8iBLkdSfQG7kRcVh>Ern_I(T}sW`lS*W@Bp(oM*3$0g^YA ztTLWWV8MI~#hQ{^fi|fy8_NDEAS2XNu_P^+m&DOR&}S{Mw5q4=!; z;8SRHM0i?xx#OfmbGx_r?3yE87B@`92;AL$K%_+X(LYJ{{TT9@5fGSRS_A&<1#0Bf zagza&|GV(b)mW?Ez;KU3plF<~i1OjBs_59fByWDH?&79Fs3X~CNJwNZbnBK%I)L`e zdS`KbHCBg*+CCVv885XZw;2Gl6TV>8OF^uZIyeXZFCZ8XAt#9)7)Y({f`64_v#KUS_ zJG;SH@ojZ3Gcj#K+jtYdMvMmE=bLJ;%Rn#{IwOM*n&!jZ+dboylTzU_iE1EIRh4># zp^|s{wyNW`KAh(l3Xrh=HCvrX?pdc;fT(X2E7TMM) zne;?$T`5=;pm}ENrumPw#Y-@X8S*kg4?-eD0DFtpx>;`TY=@8qMnuPrE7QDPE4$*S z34Z`rlec>sZ#q*{C4p0&6>;YpWP5QgIP#4Q4yMzmxV`{|QbnKgHllIvAa0sz%p$}i zLtWMT;cHCNCdblgzaQV;XtPtlvZwsb+F-6JWJ*Q@7a#+tjopXT`v4NySHAHN=lhff5aHNW=SDxA#>8=|bIQnY zV7_a%e90Lz)4+SRJEd^QE)YcD`msvwVByw!8{bOL`54}{g2M{z<>(Y(FgnAp#F4%S;?ag+VdxsJPfzb>2%(KZg>#8Zxa*^OC z%BZ(FII6H10~)@dq(lh_<@MFopP)WqKnbT^&AH;+vk2B~+jV$+{DI5QWU0T>pAm#k z`kWvO#;Nx}>*|XB*tZI~hwZThny;;Ivcc=DtOGM6tXByHn+tXHCpft>dD!+P^z_#r zGY)&+I_CqmD;#w|@H#YzJ3Z6$`5$AY8k5p*bL==Zy2XU*QJ!G2@{5X+f4e{PoUQk$ z0v^4po*wzOH_-kNs8Q6R3jf!(9t$J*D4 zjQ%U0W;Bh|vUBb8lT zs=$qflJnEGva9Oo6x2AZn0Lo)JE-Ee{!DmkA#q-dbgp&k7u?S+FIV+{oeOvm_%~Sf zNC?<+D~3l#LPCGqT^M^q>txq`E%9$7TIULRJr8V^Yr(t9yu3Vcp`ZhntcCQ_i16bB z1tjiX&p|zN&K=N)> zE^hhJkHqer$-MnfW!o@BL7w$ zHK>PGXQ(fp$ty$%N3%Z^-ATNRNt_xnybi{-%OqOMJ!)$qM2z(%%7ap|a1UuqO6xn( z%u46-I!0C@Cyo0wwh~r^3RXpdB2x#*$K8ES=YbsuEe)D{Up`R#Q*+b@{K=vMLd8^J}v-A@=mxL z>W}n%6t2Mv??y(Bp`z!u#y~)Vq++R>5@dZ_Ikky*d95|zPMAlZQA__Vmv^R9=?XCR z#L{Ok>fU`!)c^n-GbEh2&AD^U!`N!7=x=ScZ0mn+AH2D9o0Qbmbm(HAGLg}J=`YmA z3snRl|9tHQ$QrWHRXyc15vq^TR4N-2Wu}hOnXeyAmYYRoMu_m$vD*WMgttXrYwOVJ zj~msX=;Gq?{TK$@zJ-(BP{zHaNiV(qak`n6sQ#GiVU_fU+Byd-w=6D>K~u+aX=yw| zd2ksHFfr1$MmJCKbOJ738S)cAuKQN~K9qym+1Ud>j2D_}L7FM#r~tXK<0`O-CMVTy zFZ+!HyPG<@Fn$?b`d-Vf(WawB!OgFp@!%kq)4T0$NBx^x|67)JV;_cV?A@|xfFmFo zdy!YJh0@jCi5Kx0|IU~Hy8OL9XM={M78wp5R_8L18oAlo62L14BE@~PVr+PFl2JM% zc?PuRl}xQ9b;yXZ7o}lTC6_L*C5BA<%v@t2eA#?B*KjJr!fi>kVV5|0@CY7xruOq3@xiEe zCro|_ryCWXb=h=HYQs;O{s^nq4;J3Cf$HtBPwN=ICNYO}IWn5O*&D=k=MDc-M0YI^ zCQz{#xwM^JLssE=xbq3FI9icpk$$S3=~3=KV@)}xCzu>wo0j(a4;-G9HUkuVWF&s{ zmoETopR9AX&GI-uUm8b70WV)=w8dT;CKXyt+{3G2biIlOx1Uk{+Z%`J?nk%!>RDym zd+uwrc#;7{l&F&)aNnTF=dnR1rS3U{7b=0nE6;JSnreCj_<4Vpk@}lk>!ZbUsY8C0 zNu$L>E5nZHM$B?nN@2VP@N>h#KoT#bw$v2)jl1^e0|h=wf?ipU*QW;$zPW*RMii@y zB`}UvRH8Ds7hK23Lw|Q(LYF*08fUeI77PbI#($(A!S(d%T7pF}@%`${u)!P}ELl1@ zm#%7dgRsvdboiA0(cOnGx66<#7RZe^g5TyDt#nF7gpdBhV@q>14A zIAWAyAcuI_Qx74_?72zxhUQ0*kxGb>Ys zfDC~|V@=EV)tk7vfMEmjA@c?bnI_epOYfR&5uZiebsc)2;Nn`ZHzuR~gE-n3 zJ@(fpL<1hBRFsz+iFIu5A45D5abm{-#s>g!D2W<__6N9WvyeM(>v=hkgmM6=0Bbp6 z$2+zg$ZB`97UpeR5q&+qqJ)G5hSbZj2R1;UJ-P0AuGyfudn;;eE1dEfi-m=k?!zh? z%-nA$T;>Da_xUd>0cYZJKgOtk<*|s-kigg1*HW^K9x{Io-E@bU=bzNp^pE90zUA}Z zl>*!!`ASyy`&hDqsl3k23RkN2 zr`AcRIa?lj$jWwqUAC)jogLXr=Q_ z9?7;p)KX}#;dMuC$Smx~8Jo?kOe6Pg7O#+Tvl%ywcqz&}CgpJRrlUvo_ zjwI-P%3h=kJ3U{uLlR(s#>U9iIwTWP`ToAq%v9tbaHCHoNnqg-0QoRg^gfhBg5bBE z4mo{}QXN>jDeS6$b;XBZjMHBx=5e(p(?g!Ybn0jL_Ki+?k|0HgPSYG?zYtcQoCrI) zP6aJJF8v89D2~2DkTv9Mte4hQR8=z@8X9u-rrT;9CSAw$7>XGMDduW5+J%pRuL;<8 z`=Yd+I1DBi=JU$7{IUZAAoTQJB#jzZO>=>8#>wX`CgFq5;M9owh}@IeGLoe8i7V>Y z?sk6%tb_6J-z24o&`{*Aq@{~Qda`r2*3|Hq^ zbq94~Jun7dr-Q%0UGonxK40tyGd1C?zo7!a|Vb;rje=by9_bw$~n9f#PImLg2hpw2L3TxwP+0wUrp(rra@~B{=Y{$5> zTV<^26+%|-6Yy-3*C=0FD5gRWJ5PUqWRyTv@|yvuoLW1(svMt7=pfO*I`5wu!HQNZ zQ14_9{(0iuA`o|A0X zolf&2rM0ST?dRa$S?&Ai5O)Yyfl|%>22$kB7-*e?oiRk@q>nRdNZUm+20ec#@3(8M z)Lb+7*v564n#@Gc)1dY62T8)QDK_(Msbb(27PD2ZkJfN|t>yFD_p>N{ERx#OI$WnD z8U4`=VlwV7u)qzrumAac-cUFyk_uYUT`DP-J{#u1+l#{nW~%~7;bA4($nvf2cFcUT zOZK<)C9|!KBuB2mp|xSiNB;#{GoNNkK4WbPdOXbb80}9i@aW!<&VTHD_-?4Qa+Jx& zc6m{TChy!I4oMt*Ribcx&>92{8lyjZs3H+K-}{Fc9An8_*PVeu@lbOTHYi{*pw0x7g_EErUGb(f*}a6>`YBS+t<{|Pus{7pZxvx?EpTbWv2Il34S-R# z3Xgp>xDGCK9k^btI$Ql8<(mbUU{pdAgtoGgS&QM!IX?FQq!byi>+F31iV-Z`D+&vhnb2_a3O4?hhN=Xwlp&u#h zGv9~#5dZTWC3>w_<4KnGlG((Utfd)G=G};r&gFIcAAo8;Ut08G zx`~GGJ#~iMEMho{pqq&)s3^ajsH6@b=F1G8g+ZQYDTbpU@wi4bpxp5MOjt=U8q-_ywHGK(lf$_%6fu->-|S`IGhQk+U}b^hTn7bK9qcXy z>Aszyb*GKf`qLkmbZPf6yRH&E!)Eolx1j4vGDEIqxqsa+P45y z+T7YYWfZgU^%yvm^j?nAE>vIrSXhn*y4e(YLuq=D_D~1p(eyP~+-#MiS7GtH<~a1> zKu#=8Ucyqx|BhE3Rv<$^8NYdEOwS!rnw4kUSF3wSs9F5cjuh?%K+JnD!+O21tnTF)DW9 zCIKbhtc(MSFD@_)5&U;b__ek}O*_$2Rir3%ypOuoyTv#p(lDa-Tgy%iW|A5M`$$k4Pt{rw^V0e zDeCsGxyI9r*A=T<$)6)t zmCSn(2MwUU{!e6snJ@yse{yG6?V|e!^SwenFVVuq&7EId%xd`Fx^|{`ecjw@qLg+f z3+x3Kpm!i4CM#)bZhcir`@dm~%5O|a1_bP`iT1icQ(!BR)ENaUaXU+!(d8};f=`Dv@91)?|n?O)82hSc`%BC^-CCIcg6MWk_ z?kcf6YzeWML4z5;Gh$VLZ?i4_z1_c^01y+I$`|yo5#SOKRVJI71dy4?PJzWU*a8Ma z*>S*tAF$Vm{U2U*lF)VwRYPlEz*B%1cmrNw7GY>j&JYB>QK;el%aa~^FF?`AbF8G$ zv{j2_lu2#5lcE9q4?x?~B546_m+8PYdZ(+c&pWwb1xZEW)W_Njg zmcs*llnqsj0q%t`s5pJK;>|KKs+T9|Vq-M?FJD-mP<{gC5lFtegPQ;N`N>RFFP6*y z&cXnb<_8~ltZz0R?K(D z{=enr)IhNxg0Jo5F4Ex5u@#xqzGE)i%~((;VP&YBxE)Zq4CO$cJh?>+5E8yx|E#Hl z&+4GgyV*Q8GHMMFxLtRWVk#@bTBPuYQ19TnTUKRcM-QBTi2j2OZ%$6{H<>vOrU=(rdCNZV&iw$B`QdwIG+UuexSdz&7{PCkLC+mZSAD3U#)7PP@);?OyOS8x6c z$4_pa{g%~IIG1zt6I9XXw`5UyJCICLy(i1*{!cRcNbLLLLfP2GVkc-w2S^gQ89*e# z0Rzwq_~o4qAOV~?5!|1qu9}jc$Bh$lbu)I2ap7iz$OE*Kx);aznlk?vu=l(v?D-sI zUf5y7&q$}6ybWZ#Ucj=2c(w3Pyxn?3V5nTs1l|5PR`^%}m>CAs$6=@*g=@f}0VSBg z`7#{=ddGWL8QvFgt+eujKKQa<>_k+8bQ7ScU?lNYr0PHq^pr87qMQxF)s_XL|Xf_4Z)}wEW3@AIRA4L`4NxuMY2wYxg|8joO^v$(ISa>6Ee7kv|Eh zNb<;d-(A&raLV~)sqX_g3N(+6NC1d)+sA$K5i6R-11cKWu^x2A_?{S^P~y%NEora^GxTh4W7A?&Tc7?ZSkY8WvC_n!js^ z!Qlq?3g}!{j6_V#m)!D9G0@`7_grYfUI8XaWaeUyLLUF!xb0&pWqJ7!a5QYu{hDu2 z)c*-f1aGK_0Om_O;eJ1hwg)~pK4YNh+c!-l+8l>*Va)|Lfe&m~aQE8Ox?XnTW9G`m zp{7%c%HOUHsRPepl%i0czrTOn9Ne?{QjtN043B|JvU;s9qXGLV9@oq}UueJ>j0X)i z^UVGP#Oq1DiJat-Z8%c^K@W}iRg!q_VoXPc#_`2VCu8ruZbOZgZu(T zoHpKwc=YRkT1)wNaZ8AQ?*K2DpGI}}{@vIAl+Qpc7tL9b{*D)&41jfce`iGjX+csx z7Zd~wJ4m|`ZgQ}n?t7-fLuoPhDpC_? zACpPMz-m|kV~f$cxpYxod~q&Lp}kTD%&f7*Hs!+G`9cyAqkQ{*be;=R1=}mtC}0{4 zI=KG|q|dI9;)n)E2`BmaE4Glam<)qcbM5CY|P%)J2w89gu*}b{y&wQm#&LD zaO)}DmLeFoSPZIPvI*^JYQNuPs&H{Ohm4W^oo*Fv(~5ZF zDh%Z{^#ffW_&)?))5baBBNjMlU`taQHn%i3@+B*PIYMZr7@)|=t;~NmVN-B7FjQ|n za4p43_Fk|Ki3y#X7c@^|hP+zaR-Y1#-Yj|K6x?q9w-A_DH*s&;9)khz^3$_pHSI_( zN~yZZ$$a2#nt<6}fQ2zJF@$PYn+i*v+>p_r(*snS+GNn`PTOO^%jEjZ7mDhjRe;T3L;TEv{6R;N4x zh3XU~odd#vea#7o2EO0PTSj7I&RkFccy7%y+*jf#z9LfC(#@oJRbNHuY zGJ)@@rGtv5T#ei2oaDcZK-z=?-@Kl` zPD#^GUOg7k^SeLHIn1QvU6S;1Y<*p8m#cAp-7z+RjEDQT(7!06i7+TJlarH~{*wc) z0x1LENISUy1Gtpk_bt5B-1xqyf1EOu^v*1gnG-CkYbefRYk1*dD&lf7bDp!;Co*gS zoeKcNa$VICG%E259j9RM!mK-ng(3e&$+LS0E^e34i!0|lbH|=Brw+z07sk{su_r!AEQ~bIojhEx(Q4iN21f6rDctuaa#w(wWMN_P6y)=B#Pv+C zzn?&dTM1WHXIJ!T{4G7P^EpbBn4J^M>ZSbK0{_@*KHw?)&YFS2#4QV(i-!jVX4ZQ? zf#L-^u#%x<3;QNU7t@`vsH45SFyOa77!m}HD&XHnX~sXW4nSg@@>ZeQ1_hhu6$fE2 zgRs-?DW(2i3hMx90v|ZRJnJ=o53XvtMq?qa2@Ra{oqHuyR^Q#NpFO$x(wtYvGy`syDlua;4qNgYS6IbOQEC45i0^;u5 zKqEa%w*1V(w%VXdFo>e_maP-5miJV%Ni>xIHhBouKQLi%Fze?Vo{Z+zdfX_+Xd>OB zrk7y~0YVf$>b4k4{_4-lN{rzz|2^Lt&AP?)_TrF8@`<-k&%XYaW*Sj+fs@~&iQblO z+5~Nuwx@Wt;AniYbF$!Eaa0@s(YM8F1(J5B(nZ&vE!4%4quz1+xO;!$S@58FEv}fY zjBquzSSKmd9G}|etEo}EVgErYOH|9|H?8|~u@x2GgBEn8^2*xE=~a#Ar-j&6t=vMp z!QOv%x|RBMw6&M)2e6V@ud`7MV4X)`!}*!V*54I0q~AngGT=_Qx-X~B`)6k)d7QFW zS{f~xeLAl3Qtgs=zNRV}(taX3_94mdLCyk>^L+}cg7^j6lxrNg<%an4R+s&fdE@%V zDV{kfP(87F=SXF0*_gR@^W~6VROBx)Iq4Og=8m#&QPtmd9(*f#Mf1(5d#C+4fci(} zUJR|)-lJw$6VOrtzoTMKdSNuAjJ8v-1npCV4S2F~Y1jz$(32C8<2J>hs1%?Bf)x^h~3K{V|*Pn1bhTTJG~- z!ZdKf5(j#H*X8(^(f7FTCF05&coUPmpg$D@1_L~XE?uIU6U^q#Ftk<3n}>Tn-r}X4 zQv$AcmeV|Nsu-3h0s;oiU8;HD!AMpcYkgu}i3~haZp+_pqkC_xgo4y9Uo3Rpe~)i2 zTQf6+)ruTC$l1S>);+y2^fakge&7=p4;~(#5+Miw^=%D<**z4Ae9$G~kv?1{ah2FX z=LbV*Z$9+6R6fb6&u>Nv<&oF<=Jq#-h#y;@l(lb5djIqdwN6}pny6mXvQ5taLQi{~ ztD<~=c;t}92hJ<059~cqv!N9=Q_9X1 z{QiEXeV>X;KJyEN&YTjlPM&X78!`>1ewXD;y`v&7HekB398DKMVC5BR8%u~^+{^To z;U;tUOZ#0JY=DO2rN-TvE5?sGOUzF7J>l#p2G-|0^*58ARoD#fsxlG*+QzFMoPO!D z^`l3R(jO0-xO_#ZcwYJNMGCh%s?qbhbd^xt4hl!`%boT`w(Du>O*B4k_|jEpM85mz zO-*unj))&7t<-D{H$Kas^uN=a-Z_@u_l~>P*8joBcr?{8K62sefGU`fu|_$3-_Rtm z*5^%uFYKij&%W#JN8_$N#`l>)uZds=dZYSQO*-TU-iyY30$;yA@LgK5P^k5weGHsk z8XU}3q|>FRzdNoqnTcBIB^y;I3z{nEewb=nrAzSOvHsp?*e*84#Kbi5gQYAGe8Pyf zm!xbKJF1MJa$(>+W_ZZt5tG?HuFhM=1rd))keOLj^ek5ko{)=dSnIDP$a-&|t$HLC zbn}Dn)^rV5ukY;9PWQbudD9=W_>)bCUPY}TF*Z7cr;AN)ve&9YTS-&%lWZ)joi4U` zdB^b=QII%dQKh&)BwRGpdkN9_@6G22D1RNm=VEl>8?SX$qApHjDJ?Re!CCHlUgWHJ{4%7pNF>Y34FS(+f?;sFXKlg!Hx zX6go)Y|}?Z!zzU&do1ic%X~C}Gp@T$pY2&A3SDajRDH%j|MDE-f1ycdMxS z>U&mRl6AQC(#x@I$~S^&0l`cfyc^6L$8f_Po!oq0tzBjJ-j%U3=dl065LNfWh~NqqlwU_NpqXXvWob$)y)~|nDL3laJn{m6t;UNi4+CGPS5RxJGSBg&G0ZU}>OFt?T^CwJpHtqLax3$8-%q-`u7 z7noy=);)ICPYI58EgiS4c0WC;HdJKR{?PO1Pxvekryx0mJGLW)`c>m?nWn ztV_A2zLuIA^69jGVQ<)^E$M^gZb2=27kPPHM?UftpEEbN&(sN5{$}>Gw4{4()G}`Z zscx`8z)80NH}L}eZ5bRIT(g6*277TIz0wdQS2?b1S;Vs4$F0Vi2diPyM2@BYxbfo( z<&nx`0u`*_P})Pc{>0UI_Sz|-!Rw-1^qPW;Yqnpc2{q_IVgqVFf}UTF=D@##6&)QN zi7Jkt8X&Q*Jpg_0qxAyKk~ddZ>{P`5g@qffNgVghf+aGR638Bw@*IOG<8l8Y`&^%b zV`xac{fm?rgUF5&eQ%3wnG79SVj!hyeQ+Z}Z^7;?=adDfI1RD}CZV)~)nM zYp2)W&`vwYgDeGmXXp`qFt@8-Km<(cw$3Pe~RIIHAz!Z1uj(?EA@z z?$~Z{N}qgYCNfc=%WP%``D}Y3fTA7u+GVgmJViI3*ieg)_C6*QELKRsmfyJ)cg;GK zUub(wjF3V(Q6u5Mi|?cE<>;sox`{I6GmwJ;8)pmOxT;`m!smRmg;NZO*`Gg~@C*r+ z4j2M1g1W?ye@E)-bTJxf>*n5{@@>YW&}Ic0cx}4r?LNOSO+XCCbH4e}9ASoP>2|Z+G_XZu2NzA=z|PfAu4HV4wW>H@o&`XxvoYppZatcfD8j^wf$FxAU%yyg5fH zp-NcYmFFTrpD!I{o9@3cvu^&fMG%<6Gz}^%=UZzFd_8z!p%^&JT_=tw{pw$3%Iyj- zK2LlwtunRD&V821nn?JjfHQMphIHEwcQ$f;qyVQ{R4$oI_SZp=uYNzbrD>Bq;ngpJ zftoQ9_hJ(@@`W`|nd=eY_7QmH$k# zP*?yw1aoMQ85r9xn8EL&qctg#igTeTKM() zWhqWJCer?**>{UMjACO2`S}lQRmA@F*gaT|I$88j=5G@fj4;+@CkyJd$w)Xkx)`nu zWGsdv*|a|_qsENk#)TWa4q_I+xu?For>8eAnOl_T5#1LEWgr+Fua_qj&Ab4K01gaZJKjiV=rP_nX1@*3ql{SII2FvOh zU-kaTSQx2%so4ml;bT=+qXjK7+J8H9hZ1of5Yz5{PRjF^7}uOGj7 z$D|8J05m_(7?=;FPw|z=c&A=~D+(?z7SSs343xgNI5t>S)1-1K&wRY6O+qIemS1hP zg}mM2kPv5$CnjECeOQdlWcKHHg1fh{Z740|`WsI@Q#h~?+W~+f?|#=>b3XHlwbP!p%RQshtdJ&3 z*43L7GGkdc0G=*u9 zZ8=|WJRDxgDk|VDyFcm8U>_snx!?XID=fJS_vkE8qt**fNFU64zz0-PixjF)=S6xGxY3XPbk-)UU60di&(wB5rEtb`V>yB5~ zO4drYE|ut5ZSU9Tfw}%+Jo3kQ$N8yf=+9?=i#rv8nn<6Mfe;QiLUBYBO!0Fxim#?#{c5R~ARoTvdjCTjF4xTZ5b2 zyzbm^d(C)7;EcGEym~A{g+sA%gugVeoznAjwWhz<+&`VHaN`6 ziSLy%t~trUQ$2X$X#1{1mT)~JJ>y`N>;MtML~D?(dF#dAZbtu~LrROYwfyVj6Nu#i z`OHY_MuDG+)3O9~IAs5tKLcREvugF-Lqo;d>^KF-7?Dl+!JkWimc!N(BcG*o%lLAu z@|s(b?GTZLBVqOG;W)s8efaU?2TP5TFE=3!hF$8f=;_6NiiuT1s4zT<-aro? znr&zCAA)snRo2c+5lyD~gfz4lpwE_|fT&@`{d^rYmH{y z?$kzdP%L1!@Xn@xnl`scJUwx6BQO`+yM8O5h#0rLgA<_EBhV$37b|P^-sD=#)F13t+aQvsB$7`C()>S69^uj^{Fu@ACY%|Dwx{0sytKfR!JCOlrcw!ZWYk)Rz zMr%s!7QWo(gaK8!vPukN;q+lpSWF`Iz;Wwq;$?m;uP)>>alNSpQ<=C_DwRf zh^@1+@$p^YOgQ36S__`7Z90`vo28kz4( zgIfptE|gFU8>uXvVr1HyP41|#pLNdh4=eOhx0C9mJO|_w31}NNPq84+e-4VE5JusZ zaYNk)2b@#i>jP91t?-Osk-}hz`t5B?E)(@WRw;vU;`z64>5RC8($rSyP9`B%RLIDJ z8waztNh-G40ZcBmg%RF%oUp5@VcyUcvn%e@foA+_<5K?$&%k_#VD9737GjzS*UxBj zT7cx(w480QNqx3xVw@^lhYje8!)*lqH~W~{o&ARr;gryfHFMFN3$12Q{pMBYR=%Y@ zSAS5i#uxbQ^L|6AdZwR5LurB6c}QW0X2&?%K;`-r-ATqtfQ_F5hJmIh>T`lSfB+HC zreaA7Pn0MTzsIU=&9tf8VsGNN+$-p2jXoIdqqkibB@-^M>Y}19DvLJV+4_x85DU3< zUsD+?q)ziKbPDIxRc~{>g-NdIuhw$7PUu7xZ~{@}yjl5K#&@S_n!9<@YUOL(fD!9X zM{k*H*A1_@)M6e%_3OWz5ck+OUOz8d*X`ugg^V@e@zaD=cpg>+RckBHTD)ZWFH?yW1UP40z5zz&2zi1~bV@zNHarI7ue^8&u6cARw6+Sahcm(}Ux zo9c{8A@xb^G^^80ayn&}3HEFqrHck_2RKgcYAVxzhxp>7Oz}z=B)ynXh2%Og4-Ww6 z=+ffjhi`PflbYdpE1j)d@zi#0mpSSA$yf=u#;lx(TWMRhMMdQgiPvUtTTBS`;_B{J zEBB51olNLWW^4#xc)6uvquw9>?OxpVaj`@<$MWqU$up*<=$wbp9u{$}Qf(R^MXgEl zgd~mmbw~0Z_>jk8vgpEUX2P{ha1o1a?knJxa^@UP13V(%JX8$#7!_tae+E#qV4dYJ6afrd7@$j)f{QF8ZDw-o{b9fc9>`R`eH&Xu3eJ|UKQ>D!J$zS3-gA+Cj{wx*zT@Vd?SHH?c-Zlk~nFBeW+rl>V@7y#PQagJ0`K2=45X3 z9nI-|+qLKMm`E#y_fUfleIx)1PTK_Y3Axwd4?0aY!`2B-vR`W}a4RV{uM13UsG8vj z_xHyLi-{3BlH=BnRlWVUo>e>>rEarQ=FSt*vQ!YgrA)*D&~X-knQKB!@!HWay)BQN zXLsk1NAn@7)KktOASr8*u>!k?!){FHxf=Nn@i>4qsC$8LHTWTMT=$A|#H;g{w}5Qm z)*upQT2$06KEt#^o?!ul>wfrs{FZamDe_9C|m`*jI_PnpkDO+|$la{Uw8W$~$sOONoJij97_FoS?WxA%FZjfS)FAc%voG zLFD0Z@FRLyGZlS(4m)Gm9FsPY9qk(W`XP;tlKmxt$FA9WwW8TY<@5HiQ1-|Q`bv$b zPrZ{k*e`7kcCEZsD&F@*Zx{`r=+UwLL`DES)OtS?$G@gl&z+7(-qQFP`yk+s2LtX{ zxM|hf_xgkczN_oA^gp9WHN<>pJ}lu0s^9&%WFzD~>+&pdR_t^wYJaGigssLgXfDa` zR}zg%=DlgAGT7%GB>*U@%K?uXzTDQG!9((2qmJV#rxbrf%E-tVPyY}wgksKg=o{OC zmA!~KMMrz5*}fQ_kt!P_(z}tGGEQZ~1#Iv;*DrEZ*t{MUpaFM#nTs6nT8~okURl%J zs&rhc*xcTatQ5_?eOF-N)l>;GJd(l3!jdn@46v2g=>xK z9VHNrr<*%qCTLO?xr_$k+i*(7h~zHm`F&MxO@<^AV6TIsl~Wbw;#7bugwIYXWGj8% z2;-^rh@VWO9>!6<4#@#fSDTGl>g|bQIty8IC3&^f#BqxD-Fu8)L=FRwGb2p^-u1X= zclYDHnD!N62=NJ~QtXL?^+Egc`0+!_AF0l4^AvqdoYG1^BDgeVr7tr~968;|z3|k3 zXAynbkE~;@PCBKA@KWd-1K&U1o#VLcobMOHLd^&Nq5XA(gE4mJgEJ{-%e{S@#RQ)C z&83u{XtVh2G8^_)RAJ8_H9w6aS_IldMJ4=YeGQxmqu0CvpP^=;2*x>7*n6Y}<^ueN zRmx@qcbD-zgzaBeegsdIUggD$WK$9WG@`lr8A*qdu3H_8%||;UZ=RfD3!#-D8&WGWKyc{2 z|6J7m_=K$WXR(k_29|pf+}G$?UNZ=G$rexCteM>MtKv#?W&34}Ie2=s^P)ssEMyT7 zU~u6z+PaH>IOF8B^6Qg2Y-61ezs!`a+Jg&m@7zSZ&{@|SYOr<|{<_bLf61~DNJWm( z8u!dq$#$BC0HQKC;mxMuPx6+ZtXGEE#Vw&zz8LVXZKU>Hco7w0g0aKH#Jz42y^AuU@C-dlgl-+cTUC?dGS#J-vAYQ z49?WNkJBVj>0@xXAcvi`D=7YX&tO`2_u@H&+|gczfW&>bt}>V!`u4#P!ePR=d8&R+IJ&dz-y}zFjC~>feisB0}}*$rLzNOk5&< z)?2lQx<)KhvI-4_xS0Ag`L^@&)q6ua)`FBND>P^8PFe@QRNEgbM^_Z~jkv6mDtT@P z%pFgic27-nMC=Kd)`>+@N2?H-*86f-^S$7k^|8ihRq^$ji3q$Ld+T@tjC)YkO zgj$`GCvIJb;KfN&ut?%kdC&`WJP_5A+4=n|tEz0yPhCQ1FZFo5QPA{C(2s~N88)BA&%+!FR+~AcL3#q z*r4aSMts^aS$Xrw;oE} z%-oP;MP?w(Qd4U6ZN&&^^h$3Wpo%KuV$syD7zQ^o!Z=N(G@x#C3~B!lt~ioDTA^{J zq)6N%J!TXxBs}hxtuhE8G5W6;pn80^+-}Bc=GUWMS&pBcrF5DHGAW2-^*9Q~x6(WeRxhX$mCrnQPctL4|q-u7GFN2v-y zbQDZlIU1z6m`i)dTx!HgK(2MX#6VlJ7Y^~KrNihG;9fo8`;%ryoB95Yx~}erfq|!# z;%v2Y(FhXBSW8wuS-a2J}-~&17oy#UQ#{n5S z3OOlqBpaM|?#}G`G3JH;8BmJv8>IS1fVn1H=|CO2cgl)mU)29{mlE44y#yQD9-EQ8 zE=o2U;1iEo7z&kcvUtAxiYmq0u%47jWsJFq2v?nBdPSKGjko0ckbSeKqAL)*(TlPlsQj% z$gQ~~5!CIQAQSq#*^kCm3^;bSERm{Tay-evJQCZl!@kWI9FIx=NHu;D`(iB`)$DB%z1Axp7&tZ+pnqUF`#`kJwJKW= zIWuIu9)??9qRk%He`l4{y6xV#`@9lmx9O-ou`}q-n5s|CAB4_&-@bqIz5nuk@C`P7 z&#T4xKKMucE1>bG-=3FfPqbb6OH{q!jzJMVxwZlRcOFOm6ii_tFfGxJ7j+@<@$s3R ztZMtSwB93s`5-yTg49waJD{KFov&!L}fAx?r1HyxYCmKdaA1LCaUTt>r;!1iQpRG+1GZ#?4uIF`-t^O3xYyn-W{TgmE zEOHUcD=y|;XtZF-EnxZ!(LCVpuh9U08Mn`@@xtEwNt<$z7TQ7m(YcN>Wy~ZsE04#=^}t z9imF(d0H^1EgH&fvsFq_@N4z45VrSpqT+Qla0cO1Nu&(Eo(R1r2G`HzYv;g#ArKf8 zL{FE-Oh@OEW*6Dv{~OWn{`=Ggd<$Pd0jb{X;^Ee~lY4aRuqx_^tH{nCnFw|kavP(G zIbN7!(29k|XmOGC8Sd=&1cv5P)&$U?-`^R+?cKyJC-glILu$W!%g71oNTu^_Dh9!3 zfv>m%o&d$XnN8f*ev6+^idXAyyK*T6%jT)UTn9M3(flnP2CR}XcYxJ45XQUY>#ae! z#!OK7`#E^svR&dF*rR{^kUzjOG%!IRO0=UseX5k&g4;FP_WYFSQcO*#DRG>zi7pE# z;6-!jZ3{R zYX#MgHg%piSwH2p3?RK()W}9BEkxe~PU&z6xt}f@{=8`PQKR1Fj=cQ*C%l>6(7-8- zNgAK1%()afW-NUs0PR4htnmO{`sQWP^TS!RNAFe;!?{QH34^a&02rOsa>T`^nAQ+1V>qRPM?0jZag3X^S~dzzQj zJWyx;zGY!oYvs@KeZa_>V>Wk94}va3iyQ7|(9Zc}V2aY9sWQ?Q#9Dusg}jZ8`^a9w zbX9UhygvBMwsESP67`)26(%LxU>?;#(HxUy@KNXI=Tkyy-A}jL)-6{+@(8so4oEPA z0oQqNP*dz&kCzk|rHRyGGtoudY-fsGoeVJtY7h&L(n~2rN?rY<@&uAN&Z4;L_|)a) z*9>~kemWR2l5ca~fY;(|*iVj&=FWm zy;S}299unqEkaCyN@PgF7u7y;4XWRew<)hRL1%pDv0?oU$fbdPhBs3gvW?0jHtpkn zOjgO3)iKeG6AxA`q%xmSP*|Uw`2MzNZiC+O2d`|;RSbBP+4U4lQ@CPDkIJjRfY!BU zas^S*XrVdmY+|xd9dBdrNg#%}` zE7yX$nZ|4q#N7A`7rV9u>!1XHu?$|A{9cwCY7lMS;6$=mleb`)5?#xuJCj38oymv# zJapdMzhD{~)6J?!wSpppr&oXt{5lVnPvx^9A7bWLc1y9FX4nXV{CZ_%6sg=()SF6< zQMeb8CY{o4SCCh+Q!^ddJ1kDXYuoLN&K!lfwreJSBIG zXq`&>(mh8H$9!=${TkQ7v$`a3o%Gv*Zj_H0<^ZVMLAGwxD`q|IwG`X%+}cws`glPT zJ`J+M&Kd3xX&hr$mL|Fu_46x;ayVWqVuf(W){h5H`I%~WiAYG?CL-T8S^;4W%Ei^c zbO~TWm#zq}(RKC8M^EoAv}_+)E3`eOPM5N^ zDs>*rjE?3&AX0AhmUW5vGP=ZRl8#Nu7S5`Go0OvjbSgf?&@`6B;e(OZLKRd0V7_}o zR+X2mLilLu?gi8^;l6UF;fp|S;So^I3M5m?sT-MUJV$q8xH4`;C1{OC9MrPnLDn|) z9mSsObGT5E$uDnZppfSM(S|)!lGvI=O%06&RaHura)2~alafvP6m1U<>Eas@CMI7+ zoQW^fW=?(atrRg|ogKu@3-CW}!?PTCUE-W|YR2Zgr!rzGe!thsa(2iC{Zpx%Do!={ zv|th77oeSqI0@A^))x9K{D6`F5@cPsloEbv5rX~Z4G&)^yx(fsB?0=qKjI(K-rPFx zA)`5G0;Uh?p=&SN(I<6uKE){s?LM&c;J1N?8`-DcF@|0tFkY})D1run0W!opHM31p zj-*H6JX|UXvWj1Rs-fWvGigi~9S-g#OY)4e-V+1!t+Y-yu@!C}o;OqVuX)LxNbK_$ zRDssX(J2eLR?3GOdIrmUIB3@5*7XCfH%jAb@~7UQopfW7mP?>5zC#BY5uJJg<7Afj8y2qGRvCvRLkH;sUP40+z<|f|1A|5#@m+l~bn& zworQfdjD-#2KDQUrxy!5?kTh*m}p?8@U+F99dA1q5O-bft@cIgiBTO+_Q-%}gafmL zo3y>16UfN09pTL+?&|uE6S2cML2G4|S;LQstiAe5=I6-81*!-3E!&G5tc)=bpuzV; z{T8ovJFs*r*VEPxgjd)4wC9d^zk_vB zJ*fkic{bOKE+{UXHmH%6n_%<(k0Jz9Ee4c0j9j<7z&^mFgc9_v2XZaEX80eHz>FxL z+V9+@iRtASc~GISHFu4ZC$sS=$IZs3z)dQs=vD7AA6BQs#0X6y%)#K1MElTlAZk5* z|K@ipD?Yq%g8W-MDqCY=3%u1R z@QTxHC41N41+6n)%x!3qOXmalZW^AG4vVG@zJ}*6FzF_T(ukFc{6aeZZS8xwT8Z+E zBkz^*deic=ogV64!Mbyo$M@VZ&pR)KKOj5}-XUaOSL;s={(Sog6cTFfv7zqN$)vEV?4n9((+l1A4MH$2jL-zW89n_56&Z;r|8PB4swN;x zKHb){;2ogq#O76$mB!R0mZ5ux2IlV!kL`8O9`2>(@$fI{$Ete4oIAJZAu?Ur z3^X{1{l7t;{w}@F3_}&suFVlFwL4~rhw0*0t7VXE={`N$GT5gSwa$Tkkm`KJtf3%p&$Qp!Bfss zTE1X)B9;2wkHyCiksScyl@=w!kY>GYUOaW_f84OLiZlx>DGbN?A57tJ13UQ8!h#)2 z9sH@6j&VuY=)b+j6+M>vOS91?55I5r;NddGiijdrQa56ddY4QV>f)YYdc73=OKlrY zWYh9qJY#R2*O78wqYUR6*=iY+XWjar<@$<5LX^7<1R^bXBd16Vw*EPzf_>~dggLwr za1Nl%{x~IiyRKqzY6(8t{e~!D8%u%`GdcDC82h25X)8g_g$Pw!EY!)Awk9g;ODHqT z6HQI52REOC2oA1i05tNo_;63=_}SG7xIwYiokC-v#mzU(DsMLo%&=J};H@ z=+g&2{#8sb7(+jq?tlW)tm{zfX7|J8k2&%@>s|pET%s#3fl30*-KI#Nqslim6rm$a z5cvAEnJ@#GE0&5ON1TT)4S6dKJC{FDt*EpC6 zXwH^ooFTD?;$7g4>gZg1*TA*z0TS3&&)h1mY4bZKmj_p~Xk&%JCGaVInV~HfX+0^~ zJ3YarK}u<8q{tiSW8mP-IkWH)zwvbm>IL!f)%r!)f(-z);}#&V3Op~)GnWd3_n%Xs zP1YTtWvm}x#O!X>jbN@h4bPTcxZiN)xMfc_1KDutXRt4ZC{`J$~L1Fc@w)BA>y`g zp6&LB1te6;qab2h9x?ZUophj!rc*x=$Dhv;@*32w+g*nTgi7?$+z`i43%eA(9<;Dz zodJs1$C5d+jjTI^?RQxo$jJq`<+=*CO>vEU)oQ_87u0|%xE_+Q^dCiwTa$<^R!5?d zRsBi|0;;&6?VNx0l_S(HxMT`^LXHN-6E5?=F!try1G$@*Uz(V3w=>agryRFZ74He1 zR{ByQ3ueQPNX6H7^2V)FUyEt?f=}C zozDbTvvPt=V6bXr3G+H38Qlr{*yXox*q~f_(8N1Eg*78qWbi=g$M2i!(nK*}8yq_x zNAWf$ZL#H#Vj(1S0VaQxsB{7$A+Z0C59hXolpvVbe&Ky3TdBtPL|DR4T~M*xp|yW0D7TiODe(S{jT$2Mb3PfS}%NH zMwv(+w|rI?l*_r|t-j*(3@YB#_>uooEQ0bXY^w58=_TKed(*>wxaCG| z*91nB8g^sR)k_c?LAdI3yugdUb|0@38$=8ym{Ye6^7=Z}*DQUg?he$((u++(0Y-mYAyKZz_t3d=FfMn!5Ub zspvImR6RM6_sTE2apT0Hmir#9^v5vd<&4GDj>!HyAU7Y$LuG*pSL@UMUg{YrhgUBN zY?>J;pkBC;RpVTBKu~G_v$`$rAuwMmkz2m%jd`a!Ki_UpEc-RX4>J z3h>e$JKnH$r2ZbrjCCdP(22PCVj@wA6WYAR;<4j14?SZ;3|^Lwx1Syo2|(Tl1c~st zIM#}W)=ow&FiWp-Ycl46CbcQA{`RkW4-bg1GE%d7biJ-e6ArcnO$_#Y576q@ud~^y(gYtDFnQnpl9_qc`?hQ%s)H!O zcW6p~VAvXjAer@M7g^pSO7v)HY4NCYtcFPfR9dRG%CGz>vQQkAOYFePuzrf z@Ht_Chax@yoroiB=CfKRRx^#OcWDC+2-{*u{zvl+eL0{<>lYhpeqC}*WNDC@ zi?{M9;;l3I3ctuJx78lIcG#6#PT(XcE$%FiI^#echm_cQ&ql^B`Rj)S9@Sik0c*Ei zkMmIG4mkzvG`5uTCa*X&H0U)_5Q|u%@XVX=&Pt8jdNk?-f}|^Of>N5wesh(SRZj@< z@qN5GX-e;GkIEclkO$Y3A*GWc@YGVso3I1{r2hl(dGEHy!v1P`S-$oZSZy>}UnGQY zz?N8_t`J>at5l7ePiE^W%DOy4Jt<&r@TcMIlKf=2ZQ3m^>Rl@CH+9g*J&6N`X z-~_Kd-28S%jo2bJzmz(&-z(zQM_B*U#>m3p%RUP@I92N|CdSc3$^+iCkRf?{;8HiR z=-;lWebtFggtGRh^qG;wqHKqZ!=T3H>QylrfjvliU~Cmn&1rILg}le&!}Se`axd3T zmb%;{lh@RxuWE==0{!nifv5c(pHOZt&^WjH0oY7tTMPXPUUp74BSogTsx_RlRI`Qs zmx+@_SfKDktblCdtt4<<{Gb{WGLXI#7kW#Hw&gYdD)Q#hsj3O9(p1&Pu$b*XW6P0K z)Sal22E|!mQZN72pL`<$&b`RhMg>;4iHTnVG>)Ru-q?!=G}oba9omKIoeafmD4FJM z*Iu{WGfHoHf72`&=+-%`q6>@^Ed{NTUs=DVn0$!w&skhiRsHdw>!QSFo&acCsY(}E zsC1y+3y3W*)qfk-Z-T7Zqc*B7&L*d|F`t9pT9UGcQiZ)>5mmgh;qKTO&GPHFzictY z68TIG-)v#UMDm8nr#GT*r5DP&jP~P3ZX2WoAz~R_P&mEJ?KJ%{D}y7imzPP zJLF4l{TRRXBllqb`5CCa(#c$4(*aHV@+;>5cIDRC@`Z?`+NrB(>)}id)Cjt(7!cxR z7(TE>lG>q?qhB*-q0$SZhB<4c z|5jc#4+D~R_h?1UWB2PS)v@4a)5l+@yHi;1t@p0scBT0AYFnNAHXiSe-Is(U`d4PE z3ku~Zju^gGNvalQ2YG`s@R;R!h88TcsD^)k43TDr=rYfXP!EHhHw#5i81i?5?vS$( z{^T;ahgDgudur2)lbv|ZYj0NZMA_|X{ZeaDPxv>7FOM)*HZPqndU;(eRe9fVm1ul; z;yKMDBf=)7!N7dyOYDMyUv?+#&OW+(S@htdi1%14`4&ah56t`9L6autBzLAtkG&vj z^Wz@6G$y}w?7VO_zW7k{`uYfxd-1v0qwc2;$LsFZRxVuW!&;w`n-%O{9lIxV%rs-6 zBTtS-W8g`jy=^CnZ%~Y2ifg+Lx#*mFRK_UF^fjPG$ z!Jn9Z-$WocPUzCg;2Y&26Q)^bd59=%v%@N%#JB)_l~pbwtCW(9ozLV5Zk5|c ziZG0!EJYRP^PHY!k?@7c&&>JrQswc^=LHJf&r%=MSur@8SH;)5(PXR#hQ8SQ$n@~7 z*o|IDAN6k_reHSOGg+pT{Nn-n@x2p$>8(I|dD#IV3vOS^mRQx+ zKc{veRSSA#HLeJO^Lw!;!KfUS$dLm7pKE{atG)}^yK`5-z2Q$602CIe6`*4=y?S-O z=!8D_fBdDgeYPB&i@6mG?UK6-V6?DT>sZk#eSX&K0WW^Drq`R?TE-UDE<07PmkkCo zRC60pJt@C_ncouv%8Xy!@LO0t{?N*S004QC-O3YQG?d1VvXcn__{$a6sl{;b1F9Ct z&GLb9 zm$$Nh>LH(({P=P6{?Q)*;gG8rQ@VJyfOr~tsg_wq^mhhzY!rgS0g(2v4P*WA1Tt<| z^NZ|-_v2e3PCeEb@X$Mz;c3?ZtI`D$1L>#ClyQN6&@8hb;O~{!7Mm^WNpOEPm~UB- zQSV|Opj|ctH>iNLAO@m_vVtM|Jv_D=rI#j$wPZH`VK7mn(ukj5#;&lZ_yMiy)32p3 ziU7nP@V$OG5GCo5;@o^;*v<@l0eV6soN8S<8=MmAp2qnl9K%S2Kfpf?#pR*>gMP@O zyj1uuwDdiWRRJ3RTpzdn(iRgb6IWNQ^_u0FSNT#5(@+jC_7sv#Y-CjbJ9))y_bO5p zsX>K^w-w7N^{C66aVDU<0NJIE5;O*QWC&?RCXNF)DS&XA?jEB;CAw~P4n3$dx9Hy{@Mh!1~ z?B^bm7G$h3Xt>rZN^it?AI8MV^G&IEK~HM9rs9K6r$O;m7!pQm9dp={Pp*B}c+pm1 zl!C~(sQHPgr?P0^-*hOaYL^Ww80wCF3nR`|dBv~j7YIl$&q-h+=gLql0*HXZ(Qa&T zKLwYrc<^g9NcMz5`UtwIRIHrKWcNv8#^LY{Eo5|XJ+R4p^W@i zwH{R6!+En{ONB9qd5GPBdcYN85{v?I=I6>mOP?c5aZBI!Gf#Nmvdl|L$B|bwS$uw< zUcUI7Dn*baQ7DAL?t?lHTg4aD`J~E-P07DT(;w5GN3HKcZOak#`eLT*ZL$UD( zSkKJ}>oVeJ_5rDa(dNWH7p{vqPCCOS$@(s(KMN=F;U!Cj4Yb(23+gMC{Yu-wa_VJS zA!7i{82WOXLPNfK2CJ*W#B@Kh@j6q$X^XNLFJrFdx?Yvz47fDWYaRiD1&8o$&3!%y zBf`>vw=Qe~m52H@(m>^j5##<{g$);IM(Kg(*4SO#$(9VqRDe||Qyc9@nB(%&I`Q?g zYunpl@Uq!zY6Kx`OuZ6!gSt8TV)F)Vj>X#ce1ws_c%>`W)cMe?3Ka}pI(i4sZ4YUf zLeu3`rqe4LCekW$dS?#!D3v9NNCCANLwDGy-ob;(9}FQcxJVoI2)z0$QU0i>PYKqa zLbLzcHPsyv^;h7XBap>%(s*hu5l@JJ)Cp#n!Fh}SpYO?x)7(E@D4iQ43?ja=CO%1d zyy&?vSPB_o%Bg~;vz3r_OVRBnnh=o;P|g7&(ysmPN#wx-I?%1_5|&q|SW$nOxo7)2 zyWcT2EAByyOyi+Ej53LS?<5Gt!nPQo9AiK^_I?D4d_e&|1SsK~hx35?B`FmiDS#%o zrPOhqDK)lZ`Qp?9rg535n<~v5 zG^hKh)amk`t5dr<7b$!-$UEZj7=wniep7gh-oJkvF4%zXutR3sJ$$k^QZX<*scbbAo zcjz^gx<>x-L@nVjV$g<1gV3D<{;6r#uMN)w{(3yil>7IlzlH&FK{*0hSl<4emk8-hDfhj5D63@g*vVO~?+m}nG%DQO z>N|l3bMgyba+|$B>YpDoX|WN*Kl>3NAc9_*+;92?^rD~3q@YTw=-w0Y1N(kQ*Ie~7 z_)E=rq@G~ohoAlv-)t&+1ue4!cHTN?n3q?kr`y{*xta4Wlj{(?o^14p>>yH4$^!}t zixD}wv$+}u%#^@qh6svFmN-ELR3k9n5WV?x)5A2ikLSjbM2d9Wwlz$$bb+}4_0b6r z&28_o9x|W4TRMUOxb3IKnLm3g`6K4=%M?l(R&V^4;No7ienk4Gu3h^Mz6Uo`7VM7Z z^+iG)u88MN7|*Ug1|IA|rfh7-%f5&@7=J+}JX5G6udH@57 zV22J_*-VrT>8F`o6?E(}l9G#tA6s2(d<`lkhn;$V=bZKLoZKnpBL{wyZ(ovVsSdHE z;wI2fHuI;3eT40q1C1$rWKo}M=I=z2cv;v}C+0J;_iOMZM-K{@sN9+(Z_EQwv4zw#b|K!Nw({jjk7}c{P}wntZTkvuitxHou#0OsqhrY2@^Hr9C%yzY_Z; zmsaEHEBrg~!~b!iuO+bDnR%p2!3SZ9dnn-oZpuwFF%Z%4;U7`SS&C?MSTafp!Ob*Ld~FL#Mj*`_$B(FmY8?F=BI#(K+m)E^k&nFv;LV>-2kZiKv1LyLboVWh zOE%d@$9rK@n&oyfw%y}NFUl{oB8SrMY!2wUOwlNY)Gt`QD!BL7RQ}Kab$^Y@`=bAX z!mgl4Ffc&g&ODXwv}?gYto)3bg}I z8fs#=>a>1e#Lcn&_3ltNwHXz1e`e;3&$t^k-bB*3C=H#usbSNnaI*ui`sp0%rXQji z=qnPgm_nX${_QkS=^v%`&pJcUhwXp_w1$W7XXQpKpHR1`q-RQdZ#>@~V$2So>H%@^0zejudjV#q`&85vyIR&QCrJMx$E%43}BvBlIHmSh0~To1(-D zOckf?)7N&B;t*Y>HOg0uZt$9Y9e?`RDNbVmQ0Zx%rgh-qv#M}}`gUEPR>ZO=3 zSCBO7k4Ss)m#0h7Kai{EJ{%beH}2RzYYI2ik;t}t6VemD>v8r|Z9wQ4qwv0!d(VkT z4%2+$K*e+AUUEH_7;0I+G-lA@ygKa1@5|^5ldmS%KH=52NJ;M zrc1ciUamH*-RdPmbEP$1GfGfVK}`$FpvRt%)pXX>IqG`Qd9sPy zz1Dd(r^y0s>6#BCO_M7Do$-~&&4v^wIv>D5iY zn??p!bDAgJego7y9o=z4*yUxp`oWrUaa+e9I4p1Pm_*Cyzrhd9Dz9MhN}G1if(%m@ z{FzVakfo%!&POk*zRvL1d&S8rKqH64W*-vwm>5gwY<$0vTnpFamWGscn%F&JZ)Rt* zVab}MYZn~zMjt-TXJ+L!JfFHh;J%R{5lS!OlvVQ>tsc?comr^8HMIPbOv(aHYq-w~ z{?G4@bOm*T;pNWgpOYC559Jo?!{`9jF*;a(E?z4jHX__UE+exhWPzCyc5!%*+{DX) z+^x&1$$?nxhHO#g-TE4r${aq@Egp1Wmn(d~Y2OOmqWdzx3D4CD*=Ddkh6oT2oY+4f+}m*;%fG+OyHDCFLw z#yuEWTwFY7&G?gr#FDfA2Tl+MYi!j@O7Soonk9!^+HL6W@Ru;tt9Noi$!^rimE}XnH`?~Jv=7*h5d@`lP6!(o&m+E76ci95D zL2T-bLCi>bpYiSz{&Lp6omW53E$A#zhBZ36yIjcUPoKSALQ}$?$dU+^pc6xWWB;!5 z0ub(>j<1?JA#Js1%!jKZb&M0@q`1Fxer9aFwktC1{dhwOzN4@78f@35W%~u^hd+GA zbr5$8k}IFSy~WZ-6Cx{aQsIz@!%BNs=|8)O?IziU;Pa$!=ag@k>WeKm%!PiC ze9tGRqnn3=Q%_j!jYw8z)C_w$TOe`qGYW2Gtadr()t@X(&-_|$(8*Pk^H3}xVrIXT ze66xcb(yd!;y?lYOVGM?iX?>ZVXJ1=TSv;x+v7Q;O5ClX(76kn7LOhV=z+4@&Fi~9 zo_|BriU4My#`zvaBEUBqfzL%&RG7@GPP`(V|v7vY_E*&1f_0 zx<65~vc%uDAf}8K$Cv(5e%ICRsUim2u#Amv@wGx9hRNK9BkJJ&ebXa9XOytHD|rO_X=@*{o| z_~T92VP7csBq}RiIM$fOz$>JSP=bXPJJpG&IKQ))ysuU=_2$kj(ScJaWrH8qjo0~w zNSB&adW!?cT(Fu=(r_GFQ%qwZyWuInb zqDf{Bw`N&rPPApP&a;!zl{xfcXVtS-cB-7Vc5B_uHhSlG9ecz4ooXpR@3@e&vXAI% z=F|uNn!Ta0G3EIAL*~2(i*(>`WyosdtGq3UDol~iy>E|}Ak|Sb&N*)2MM|jdqU1SO z3eU=D@}Hs>^|(`i?eQPQ&iqCsS{ZzsoUcp3_`$|h=>ERrRY_a1*5_RQ78VwVWvMbM z#w82365Iwz4dLy^~rIxC>~)(SwK|l-;H_anjxES zy%v$7Ih~D8&BL?v=KJpnkrlg-E_x%F2+A}py_?EO-CrzIJTNgbxh2p4D_a3FTuf3H zo^$+gG&f}|S4_0W^|gZ^t-R*d)=VyC+cT-+kGsyS6kiWQXVUihVet;^1!C#;Gglcb zVNL@jH%|nDHC`#>&&nMXK=a_a>+T(QHZJ`G?gxS0%o}u{AyB~bAl38H$mxI-pO(;6 zN`KZsk!_^hGhx5V$VL;lXV*(d`M(`k+j`p#Mcxe8K5i7SR^LsLIn@$KE^T@KDAo9u zhPLiAtNig_zuvEnm(4{{s`4%P>s;{8}*>5w!TFO8soNg=3y{n>7V@3x1=UvlbdofOg`PtgkIlHT? z>-5gi)5(j;qaC!cGTH<4nbK~PPB}hQ6@iA6Pl}6^E$?32?>}d>+RCjFb@Q9ozo#HS zx4ta1arvd<;+=;dS{P`W0tw78`q8W1BwQM;R!$YoI6XBZpj=MpvUi3mlm*DvZRbF_ zbgr*5>5h$ZN7lb=KZD*YxEGl;-CtQLBxb--124sSXLtESDA<|u{|qv;kXv55Z*Yh0 zh*U<%NRWn)(FY`3mqP&%YUKvF?q&uWbT0ua%8$`Oh{5i$X%H|;l+2k8dIYibTU z!|4uACTfDiOwG-eYaFYF8qL|ckv-Io&?4J&ZL65Q0u=t)sVEJ9UaXZyp6l`ZjN5V> zvniuZYWV&~VTNv@btf}iNS+l7d)i;OhH_kJ5tVZ>ibkDiNr4SS{0fCIXC3n(< zS&YMQ=D3<4;iE{_wMTXW3tcZ(nuao9JVs{ybV;|iByw5YZ^>0jab^K2vzw%(gIz5? zQ3<5j)9QZ}oxD};NK6J}sT%zbcl&%pnoKNQUJju>gwv0w6W@SXFu?U7LtTsGUn=rvu^0MZi}_m&i>EiH8{ZTs z8Qgk1>RFA;FkB~-l5pZKj;NItB=u93mv29!_^2(X$Htx;%Q^tz~*8{Z29lepw9M>#R&tUwiTLA=coJAcKi$9{D$w3CFIFPQCVD# zBsU=p=ifTk@&(V3;c4xy;YR*PI0Sb)v2&>qaqXSfjU>y?PaE^woh|rkeuQo{7bOI} z8}&O}rWZWRuN8Q(dj2pt?4`?Y*>z0<$y@N?;uf<}zjL#n|BEIaE+q>Mi*_@sWs@x+ z#zSkcl%;P=$nCmrBib9a(H*Gk2g;Jzz{k- zT_;-j;h^A>2D~>Te{+A6)x*znEohOuhKkx2X_8TFTj%i?uka{vmOc05BjzRS$@i|o zjXykN`}+C%a6RUhmnb0MXcyIenSS?<#HGYG9cJxWls#NFUi-|tvnQ2M8{NL@fZ)`v zsvuPz96oORi-FU5DByeD;_B9tByWvON?wDLBjOvUMFQ|4@yFt%L)1m4%&?0h+;S($ zWyD-K4=8zSn~clM<2TWX+JG{ZNdf6ED^e2u*i}B>;IO&XZ+m7ly<-m@R=$V1@6f>( z-Q154Lg2eKHO*eq8nuqU`V@S#J5i?@v3fb~5A5=adiwB6tOZIx#CP-^g|A-gcbe=^ z!|c)=F^E&hkX`fpr}>X+u<)>tbt3PXEC-FQwt$%7cYnX{Y-?EK?B?rAs*mlyaCQrK zhtNnZjArn}XG#Q-Hc9VjRQprYQ;#$ae;|MFK!@$#_{ychT|N2`V^AQ^l>;(PY*N2kWZXKQHJh~erz5sdzx7%_Pnfjt^xjI|we|y>5v4q+XI^JDxRhP|I(!>euM$!zD5;S> zQ=5Y0x!N>o*CGk5MxO<_#6o&0f_vL}sGR%~l}m-di! z&ypxJ|Nf*k;=JEQrA86oK72HQ;>fowDe)$gn{!P4r%6PGUcSS0kbkdYRUztQ&#r}M zDC0gpKKLleaE?Gify0I$SemYW@8NB~(P2!HK#|+orNDqcb&+t@((QVrAIlEtIsC$z3ug7v51p|X@~ zH+&v@DKEx)NQ((#9+w5$Tvqk+$hx9|XB}~$I?x);71U|?-+!Anpz=v;=>EB}-$)d(-)K)@A?87&engmt#e5gNJnKJDgyv5~!}jvicjbR>JTjk9yhVd5WpuYdfTOm6NiB?uKw%+UtDPm~Rb6Unj-tld)6;fpfEc!o1 zzSXBTWi?!ajwa98j2{@@o^VHJXPSe+lmaPhXUUVHZkHa#j0*_(MrRZ$Y5Kz2_4hBM zvmexk9=~z+6fBO!+oZU>ehm%}9(}!fP~s%&STk~MR?nkm=nJ6Yu4K0f z+n8t#)yYIXgnIYg_dcsp!{Q`JJ6-lxB%NXWXW$)6B&W@0l5QAiED2B!l7s&6x9`Jx z_rH{C>YPUvk?)pJNimdp#FC$fM_lRliYgloVv=~3&rN*QZ?x?%(Y$@Mtv8(B!5#3v zuw%tIaumv zH)Y7iap#_vjBJueIBm-lULG4{!TPXn>JQq)Dbdco9Ps6#`)?AcynnApYQfUVsP7{Q zSyn}}XO(A^h$yLd*>l2cuWPPfxi4=b_G{^TlR#D4@~4{?W#7J~;FhJ2)OmO$hm9`p zHq34U!jxShO-mc|_7rEvXQ(siZNvTP zK~@1Ft&~5qBQjIqJEkgIs#lI@=u$1BxgVc$iY%Ye(LOtK?C@SoNJwb%fJS3Ow=rk~ zEVP~#LyEk0h)(VLMz1eU;e_jjrM9#^OCDlml` z?FDE9FW-lA;=~fCZ2OTUFOuRUd$7=(9+4YKtr|kHrcb#uxTyYhmj+14C zO`9{-By8HhKm|@cI5CmHJ(X~?L2mpPhfwC~u5-G11fQad%R_i{7=RP`WXZ`%Xm=m( zCQR258H!(YqD^+yzw=5oFyWA{>{c7b4ZcN5DGgogB!|COcjSi6in=SM8i{|BtoPRn zIX{I|)MA-A=e}?~7GYap@xFgI0jbiQCQe!1pMRhTRJ+VMegQqY-{V`Q#I7*O zqrLixU+r5|RVQXQ?eS~aRuq3 zw6u_Vr-s>tlcoO)rIytaLH0qBO0$dU}2}3q6w2*;Z2d=eE z4=TGB8sRS5DKbJ0Un%1C1WY|rq%U)f} z{6Jy58bd{K;(YTZ7)hY#LuD(<#5M>1cv1?Aw=@_B&1~*of-ZaX@jO%!maqVR)fP50 zxo*^>_a-n3$<%^N1m_P1nc{i;>oaHItkJ}R9e=uc+UGlO8EJc-ynf>Ry+ej!x8tJx zb%5J@yTJP`6RfFlu+7CK&tf6wQ%x%8VyN+OL0y&%un9$Wq+-E5D$%|oX@DVl{_-J- z;?u>ftSr8GQxmmXht&}gJV#gxt#JB-&3zLaDN=Emh=>R=+q5%|FY>xo>(f_AforQu z6CUTMQT4V0bD{gDtxtEAOl1+7@-=_`fmQ;7dG-5km}^hy(mh7y_X+?zY@`0asw|um zNyW=>uP~>{c2^zAF;zL-miQg`?=uOdE$h%XfakSwp^Y8p^yTbgF@;IvRxPxxIxup7 z*>Mt(M0TuBNP%A}l!ynSF=@VAl=+O-6`IB@N;4%)iv}^}p{kipF4YilBB^?NdLl}x z;{qg}*>FE7B0rRSD2N^WET73bCOQM0nH!P*Ehq1f*7y3dtFR)7|DcuUnyNj15<{rZ zZZ}5$)`*FB!S)3XT6ICjO%|5BSUEWb2V$vmmZKrBGUn@A;ZSq;-wZx zgzpLkyVcl=^Y|-O&T29cr0F`jcddscO2_;CVXkrz(0{sx!#1v!1E@U`eSB-0js*Yy46fmpa?JZq?!#( z4RV4uSwy$yx3aSAE#L)giQijG<}^QtJW&GE=BVr*0>rG=3&YaTIY5&YIxsq!3R1P+ znCP-2FwwvKS{Bxkt_}2h%g6?UjImdGKTW_N)8P*3A-~gWKn091`2- zrKAmYs-4)akNcb>$|)Z@z((i_%EXCKIp=JUTA_}^bWH0Rk)Ca*nhBAijz9}qW)u~u zWi-4pcAN>t`O?cW?*|s*1N6B0QK#C^XW!k=mX3NcSqEqpGmbv@zxHPNXE%;ZBvr43 zGfk9_vt<)GGgKAg2)n05PdlLLnO!;C_%t^gZR;aRE3+{YD8N&?a^6twajp>+jP^|% z>(zbsuF!7bL*33qN0ToP?c4atg%T~*F$9a3N1!BtdSG^wzEiL`fu5Dh58ASIPG(4k zijCxwM?^ZT9fjA`G;UG^1iQ&&M`=0nY zCPC{B(k6}j!4mn&H1jf1FYt@|=?t}!7x@vk3i&BgB>6pe@SVj}v)hM+txa9wQi_U1 z;MGuH7NyZE3rdcKQa(iBB27(>)r2CsXXg2XvCt0%i<-04kQwTb5J8;VVhrPvb_g~> zxO&sjTe#Dxhjcwx*G7uQEM#R;q9FIwB(C{OAUq(ti*cXKghyRPH?_HWiJ*;K@G0%Y zq0OUkTRv&A6%7USATQg{;rEJiMc%vgA~Cw(wH_f}M5rrt6LrirqP7&kF6heOD9oIN zu=RUnBxY|DMrS~_5r_o3mD{T*WgUh-qpN-p*EVNc6$c`lWODBqo0?wzvbIw?xEz0@ zCmpLCxgg?gfZa1lIf3Lsht=KZN-)NL7 z{}HNa<7#}638}@i-;7dtWyoI=ka@xldH+0BLK(B*k&WXG&mc0kv=oP|1^zz-FC=MM z0XbYR$O9mSfkciop(-;I(`A26=H%SYp5gl-*KNhYRG1Cx2U)-@a5_*YhY6qYB7lhB zzmZ-Rg{EX@V|(8}#1l{N%`};k6`}voC&K{g*$0&;w(}Q7KM5jGy!!tY!9}%tl+j%- z!Nl}YWld^0l>2DYWLV5LwYgj$hEy6^R8qG>r1BYc%VkpT0goz5tIbse%j!hl$6NIN zjE=qm*$HpeJmw$Q0ds7%ba@st>hPdPN3mrx~1Kb24&%x|0}MKh3KZ>ZL? z-KO5hYrj#v5GV2UAD2ibYejO+L&W*KG_~oMRjf@OI5AaGHs_`=KtXz5zwrHVgM>vQ zg9g%d-Z$&WO=@PH3q_g)S!CXtmG#`RC+{?b`d%vCeM6v)k zxJ-yLejHLT(CyvJ)ED%7awR+?ht;lCK-P-L_#c0UJms(9_OGttLR4@BE+v6Gbin20 zK14of>|uPXXq@xy`>HX*)!iaPVueC3n62S5Qg-oK_x=Lrj&WahK0LX1g`%&@Nw21rD zU85Ya6!a5GdIW-q2Go-zXnVdcs@q*6tfx5%546NPSV!CN(HA z4b?^2zm^6gJ6@QWa(58brasj14=&>;7Gd&(lWC052~4IN7Wp{^Qy_YQTJc?6 zSPzjtQ4vFVJODR#KL6A>R*^qX1`+qC;cRtgK5VR|zVH{zlZ8G$B&yfRdg@hzxwMD|taZb!rCS+u2U&5jLB`88_AGVRPl# z!{ah+;L_@;D?${XlmRFOnflG#?BQ$~das^XNp&2w2ZPG>TE@zAu2F(u`jGGfKp(F8 zPlqA4bi4D$(?BVfTNP;kqv~2jhWmpR1b=@dpv$+Pja~oOu%Rw zEwYkU_U)WKD6&$%KSPJLmTWwJY8!QINi2<{_dNM##>jhc$^wD2S@S%txsuH7R z6}7#Dlw7g&m&9tX{=MFUhK{n=s(t^v_^`R~-ntHimHS_Q_n|1XvrxzUVWRm8T2F&B z-F$9&Ym5uT@sWz0Ek6j1%rf$nR$S>PbJ-U?^56;n{Z;t{ebK<$gVr;eLsG!e5YWs2 zaYe$t|CwRw=alA`-`j&$aU|>;s6&4o72E$}Q3a8}1Csx|70>5B5(p08wJrc|2~54a zZ$UgXjj7$Ol>rI?9H7ZMp2td{O6{B5a!Q_V`nS?k>+?i!cDhE#bu->rWfJ+&FHteHh%nW z*Zk_3v_coc>%Svh5cmoaH@V{S!=e^eR=oRg5i-3VRB-zo1p2oQ=*q06{thT-tlnpB z!72`_84=-2vzz4RiR=@e%-Ff(7LnF;2jz46ChdoE z{DSz5Pc|;}KB9q@muNUD;Ht0eQ?l#z?lm|P4-RSb%Zo`hF_6Q+%oXNkWC;9{^wa!`^&u}yDu!zI0r?=J;u%P{)Wck#V?_Yp2u?M40Kkn1!x z&^NdlJoWbwbc8I;d_PJtuF%d!PV-ph+#Lt5*Z!Itj!0`^iC=7@g6`#Sk6QS3yZX91 z-rSDm!?qW49I8-nCYvE*u{|Ra$SD4JFBVun6xJe1J=aQ7DPP4Cw|W3uuVMk=0nOBV z*Rf1wYJGJ&pVv>Ze7^Xq%73N^VR|DacA@7FV#7ZHcYKV0pO^QO)33ffqvaVa zwHvBmOx|?NoevDA2w0lGSQ@=U23}brG}QfZw-lkL+vuTe=k;@&?4tE`kJYM&>A14T zO;&9o97eU=)MSxh}m_j4cem=}-zgItST_(f(udvR2DJG#Ch$5P(?tsn*U< znLSnfqrGQ z)5A?qZGgV6(Ll+LlIvBfEmpZ;gG7(HgZ_&)HtiXr@j>q-TG%@KnM-U}j+EfKnt7Z!NQY+ycn4FHk_YvH)YqcQ-Xvo$b~-45&nK zXhVhi@BBv=Mf@5MfXsSjcCtRT_s+5;McUT4)|9Gzw(E#<^~%>vrkw^t z3rZzp#nH?rw&u0f)#jw9{x;wEX+cuQmLC0%XbetX=vzt2?Yx^kHk4HktKJ=kPXVp~ zEIWwd?+yK1nt10o7W{;J{&y^4lFN{nyn^&E$nC_X#B1pH=un%$lKKMM?kgzCvw_<> zl$~q59x-?9T>P@Jd&YUlqBM$K^k^wT%cO(?qyV@12$1jSNWc&yrZEF{0+a#p1;E7t zLvHow7ukWU5XD0W93)a3B7#MV^q(m~a%N>ECB`*T#xN7>k}ZJ029QP8ZiG@V1oZ4= z62Y0)$}Ae=Z&1$!1wp`g^JnE$*KUGZp*q4~AsIExH#W-U%t}OMy+mL8=;z;x0`hha zzn(>uR>itbP8mJ$Vvz4i3e$}p`(mM9wMeG@JuncBQKrR8B6Kk2W2`j_)HdL#@B^E< zWZzCh#o7o&{xGhTNEDsdkMe3}q%tS# z3;S!S4+Xv+7`%a(0I&etFsABKhG93DjR;WOqqdMeZoMZBnjUAPo?4P{=)X3c#S^>H zkc_%A%6dQ3M9>g&8~c5J3CHG1Gu7P}IJfbQ3}$Wes33s3okkIc&j?V-&GeW8X>r}6 zYtD|}dZq~zFcX6B2E1qW=+tutxgsL;@o_&B_2@CK05;{Dm&f|ERj9)54hV~;0xeyy zE^D%aGXLXlA&6fBc!ekd%twefV!k(s&@tbwz6Avj{;4bE*7)&iHOppJU^l4lHcbdH2hz7 z6;62gi2tJn!0_yUS+Dp94P*>Spc^T+m##TE0-lSkah11h6c^AyaEf8AS0CdS!F>M! zi7>DjSj&6Z)Gs}Zkkx~-d=?=$X3jpbXk+}y+8p`pAeFpO;wLnz*pEC0SI_0VN3^^iIMkG5@5m)|DN1nZsxK%@?AmfBi z>ZIuP^1Bw&N%$y;c}Y&YkJZ_H4WTe>&@M&lD76GM?!)#13CgX)%oGsJ00leHS~_ea>e12BVMd;BON$t=(euszR-oX=6iM~iD7uhAH(0L>v9F9* z@hrD`EDRfMt{NrOSNfqT4-ny1>r51(f^>0ndwXGXBHx{B*?RNz!38Pe!MKdb)g{bL z%<2D?MdQly?`{5fxy> zGX+Nw`X3NPA=7};IPF?5SPJ5S^4T(BR>+AX$fR<3B2GGsyJmiL#@ogWM4Nz43SmY4 ze+;W9y4g*CuU^vX6#RA=Kz0A@X66L0RmM3&V=n=IboR- zN1rCiZwG0SnE+2uA1)-y9jfII25}m7B7Le(sVpi|;Gu2^4A{xjX-O?Uc^RQzI=u%+ zN-Mr{Ci-1=h!G1pcjab5Q9UqXR{Zl zn4S&mE3ZFX?|W9mrd1hbm-%gQxf$mFAxWd*AkzCj1nK!xdid?AvI>i~xkbx$wqMg z0oRm@Nu&gza6>7kz#ramc?ABD+j1fp&h!yJ3OMRLYa)VIxB3lmB_n0ZPZ7trG4&YX zKE5hTZmZjJBFv#mJk%iWkAb@$>`P@9SC4c@<hQs@^y*2+W%;oHG zp?iE>Fug9Z`TxX1<~0*ZTPo@aG)csJRSbrJ9^{EFC`pU3C$UZW)5pys`EJx+{)kw@ zc|x3zSRgvSX@_Tg13 zE=xth5RXu5;m{xwwua?hW_NemWIg(H{is-J*#RS&@e|$;uGnR>Sve|kM?d8@5L(r3 zom1v{{h7Kmpk^e6gjpm46qYGS8#29y&)vuaM7oIrXGQ`7aGnhP(oCYU8ffth-G!XD;7exa9fIhxvNA?iW%#ZcEhnO6 zcZGvtFy~b>r4{@^M0;|1GVfoeGUHhwzj69ZU)#s2~4pqP51jR*UD94rzNBq!4nEmjXFRAWtwxsm=>3!^wHqu%wKakuRBi%}e1&Soy? zu$WD}nk0wQUin0JT_@N~?RjA5@lPEb${M2Y&+tZx>g`XSr6>s-g?u=g2zx654cKoi zK$mcw84M5c| zRaa2(Y4H$(n2Ympp%$7`vrdX%Z^E z)WI-*e%z+VRDYCp$jiekus@zpN)q^v*n>BMW2%h2eX10i(;MnNtB}l!&7YVL zUvcuLUS4X%mXW>9rLH<(9YfyK+_9L}Qx3(8)s?rg9&n5qm+=5;*6Lh`<$2$&V+*P>e zH*iwpIulk0Pr+JCqD50MYqv=PAia6uPMo|azHVB5^9oXSeR5D{%IWdG{%lJK5<`0a zxW#@>{SK&72~S55Qi0L*JttLVZh_wXP;WxarunHn^W2;isUZgCdW~ z5#isDHA<%-zfzny*TFke71&=nN1k;x=Ls$P-#(^SIc=I5E z_-0OU%}CVbU9_hPKkk)e(M z1iwtXzEs>I#d4D+7tl`(k=FFnsvceDg(hxdfwPWhN+_WHf(nP|7NorhtrG`T@5snI zusFtXA+EdYOG{7SsoNHgyUq`V^$`lU+O=(HpHp~}wz#@3aBNnu68Y;}UJ^1i3|J+V z@hsN<_)RJ#ysIIwx8RXAvR$kii`5O*j&3Pa$C1o-y=D0L=}^H-XH>CDFW3BOv$z|35)mRytz_V&bwxfLl*))C0--kv zrW}J3kJ@$Pahugc_k^`I3$w{u!9}5e>}^l#GjOxw$+bW;5Ol9x3AfJu_?`sjW_{)~ z>X|r)zLaaKUu&f6CLS)FW(gQUKbCgZ8)T33-^)YVr}z9um7Xtkq(vdyi$D5~=YEa~ ze8W^c+xje<`#w65Wf4@WE3p*XlmwfDwN+WZ2#37E)9H&-c88^o4Cs)K!5i}K%$R6C zW5_-k7;kE{fh-jX2>_ZN1Ss}b+cHreOS~QAj=k624e(sgZlEqjb^KU*9N-AV4@rns zDMegdTt>3r*KV&ABYM+>TUmN0dXM)~<6yO+@NxRWbHIE4oKURvr|EHOB(6#~3n}No zIU;#@NLB)DMtyRI{j>En#8!7g&YFn$>&&Ui=ZqiC$7Ks}!3s5E10-(MThH@MGK&Bh zV!X~$y0}^nJ=fN^WJvbobq)>C$2PTB=eMb5qqvFV!FT|-$l*_!t*K}(w~mFHcg!a| zs&_@|1(X2h4jS@jXA!Qo-E;0I!;sA2lm%{Gza%j!F=Qn0%7e@!B>_hWYmMBhwa3Mc zaj^908x4X&8x={Q(C!ZOYdkROssR&%3>wX+KIK?Q*#4^Aibniy#a%Scg#U`Z<(G*X z0bV@KVJJVH#yD$pBmq55X~vRdifqNR=1lV#Y(7;Y-nO8Hg^wA(H_|^M;5u|~d0DG2 z2CZ^j>4C_(nDq%kM1#wOfSa>=`H8x%tt>RZZVjG8bB<)0xL?a}kNKb%>E$mTKiMhi z^h)|h^b@?C-rd7fenfkjo6d}{D0V?nL-HOWS3jelwaKIBxuGaiecT=Kaf6I?(zn`l zE+KzA8s(Q9u|bzM=M*)l|FR+q#*s zT8!uS%8e{G_fpG%3k@*;GV8a{z4<2il8U*8Vqo{_MlVVk4FxA5!h}C z*yNhNmZ)esW6}9C@eOCxtc$&mp>1l(ifMiom^j4=3-+ifk7DI7boY5z_a4z>dGIRW zEB-LqH@g~Hf)DiRbEVVyl)P-ZOpjU3g5-+>gk(3L+P;QKWyvp6mR6v1g9ELfWg%8^!d3XmFNPS>NlFg1Q@^XhVONG_Ss2Vz@SC=X<8V*X?y3n9WACCueZ;&;K~oNId?!VoAJchC*5s#LthNM(PaT8%JDO%Rn9>e0bp;ufFHJNh zbmpqvp_3(Q^0G&75eW#NU+eqn)inT4!ShFQRae+D)}F2u^SKCRa_qjxeqxh8>?knS!Rs_;#=E_Cw-vpr)R{q-no4|`NLq37yQ~P?6P|^NldwuxbsJPp3ez6N2#T&olEy-_XB_u?8CBo+OPbEt14OKuX}*Zh zOA!Oiy4z1Y^jt6zERH!b7?%Oardrm(EsB44{(bS!l#(1Lp?Bn0Be4mZ$t?w5gH96&vTs;x1}W#5htSFc>F1;4vhkrcD(d`z2M5s$oxq%C z{M8P5AMm+9PPdO#l;x4fs?v8k0=6QmvaSF&AHn<;ZUzYK@X~(<+@6notVY8hYD$+B zwX5Ku|Jj0t7t$4I6A|lr&y;=h8P-7f`x|p8W3C~D^Dxfr;v2*dFkE|c&jEU30Q+T2 zSw=S!#q3^zo^Z3=Oc8O9tz#J)LQxvRX63hrf?b`W*nMgfadS3$vG(*SkbTlF2a(t4 zSU(mizU=>u@?WX$1LtZ@p0)5axVc9q>{nXFKw7r(Z{UH#?ngwzWO@}9wGEGf5jF8A zF%pA;iGhs&9vcPdh;2 zn2G#YMazf6`FK~+x{_bunD_=KpY%L1J0OO?yl*X_8sDYgD^dXJ(zk8V4w&`i>K-*? zQHU;}YZ>(UiXrlK!=Enj*tAVb_a4`GZ52P_?T*UNYMu54=Io@uH8oJn?%4|x%CnB& z4ElBUh3p^|M_%`L>tqAs&_sdcEw<&42W7rw8D41c>w=r7M<;7q&?=|&9ONF5dknPy zkO*$JTC2x^<5zK;{lU9u7CC`J+ntkN{wZss0h(3t|MBXdcoSkD(IyU?l}43$xUXx6 zswP`5x(icW6Ax8=B4PqQznq^o*+}Bo3z%DfS@`G|$W+e!>m*wIvxH3>Lw-gNdRT(_ zB)w4s4y|T1#^^e3Qk=9Jws8^^ktiJyGYtCZ#*tHWzQC2#{0FSiNL1RHiyVn%h1%3c z2V$Xm#2{Gg2Vf!lIXyBocxXNw<5lQJT3Vs1DZ+^p)t~oj5qqTlVa7q~VIzSiIp+K~ zKl)H|2?e2zu%8)>)21;QFaN!i8tARnQlbN0W?xG#WQ?;q74M;TQpu#Q_jiqVk$J%2j5 zQ89AHawQG?c;q*fIEKD@&%j&`dJnV!EWCfmsHFIo65c$~?&8hQvUP}GeLqFOFRN}q zR&-8F1-ug%__Y@jS}%N~-tvj=PJ2eILM+G&j+U^@G7|8D>c8yT1YCE##{`pBz9PnL z+`A0&$<>HPMZ|PTZyNgXeHbC&R8moq!5w>&QT7p3rOX8S>?mK^p%V>5q=g_rj2)lS zUzno%)hEFZP`b8AVf&afJK1D;@Yc&HIsG#}>5D%48JxRj+~goa54nndjeeX5+L?Dl zuK^UR=<~sNwj?z4+kQ!D=^v}xA|p%Gv98p(&3a(XNS;#%yiasa9hvJl)smmkYZDU( zNc#;buD3I;45sPPmZ1fJu$Y+Y(kk9$d}7=JqDTR43~2*$F+}q{0-Bsvo}YljHj10D zFgE_V`7R);U-*V7(~YOlwf)F|0x&=5TDR6<;tnr+{4GN5>67NRe;uKRwojBi|GfvI zqMxC-`_3S9QU77zeRn#U-)@c6LQy9`rIOt@;~bqWJHc zx00`j-~j}ICam`b7;)1f~Ss553`E|I{6* z$q*+FL}YsPc}eIsvlqo_G}%%xDx)PfT`s*QaeOo-^{kM|od}EbhsyirmydveWLeM{ z%9Yvq@Q9vyxu%&tjA%^6H-nxOXG;;LRuY7ZK`?aRIA)`#RD@_U8PR}kkqXOG+CQ@S z(_q|L_pqCOax&We6-FT0R&(sSy6>|lOq8)fOQ%tyTlB25d|}K@!{bJRVe(pe4oCvh zbG8dgv%KT$Meb-)UYq_)f-Knz+5f?@r9ev0J7}T!r;NmBET0FJDCp@?5FAj{z6X4A zt;-yS?CBgMpY~^dNcn?d%%7d3PQ2miN4@f;2@4Unc1e4fs!h4FyJ0VPf*lA&2&x1xm0^&Q=!13A1U3i@733*HlG( z?+V4c30`l3TQv}zVPJBK@zgwd<*+rSj)^A zX0ar+EqdM`t3$6(hR;o3Xh5nUeG~htZF&;Tk~GsN+f}3*^F~jXt9Ai{IMPqo;-<)} ziamQr?n+eAMs~wy&v0Aj#vc$j5e89mzVID z88@PfJ|idRdbQ#H=IrZQ>#O1k&dhhX6Ugb4SI+0A!g_Lc#!v)CRuh+r^dZ|YRB7&Uq|P$T*jvx z{dKuxUuC_E2y}UkVeUp%J-FP0o+s4#JKFPct~a|IZxgp6&iOeGu8tm&q|7g;2vL}m z8r5?!`jJWWQ->ieOH$dWuB(DoO0)f{I>gnXUdFDlL<#nTT|t8VQ?QnA>x*eLo6a>D zMu|~+xc-ibD_}AC!Tm=BbBRwWS?4U^2v(rnaB1{=Oa7u~)ke2#bC!2#hKo5esI`vZ&@+p#iGGON&|IH64Ci zeA1Oux3Xf=#JD~U(V#HQw^nkzx7r8{(yNSjgk)9U{K@(n$=8o2Ph#`VoawaVrO3Dg z62kX(pXvFC;pQp?N~h|L*^6AK9vtiTAN{^@*OgXE3z4-%1Zd~`Yv+eKl8Ib@dX2#A zI?rbc9T^#1rOxGp;iU72EB0p=Ycebo2R@Z{awGlJ>&jA$u&NO(;#I7sc!t6<)s+LO&b5iJOMY+K}*3 zEqHQ!60jBe$Joo@iBj`uBL!ZExWtBylzJipux1jdbZ`ec%672pTi0% zt9Eq&0Q*RYm4d@&Enr_Lt;TOFKLXPSf)m&P{d;^oBrc8u)P>s2yYOM)kSD%?Fn;NB=Uwfv8#9d>v{Go2Qs%?#Vj-I&N+?FHe)G^ydbt^VY)8YfsLp?%fEQN=pv!LnJCIqh)M! z6|lVq`~i%&)vT~V4HMiO%J?nV(|RlU$BOxSa3$R~32L!eM@VY-gVppe#^g1U`i|>J z2}i5wyhklY^1|AWwW*}uy?d^p^mb;rxbS6XT)=>Rm1Y4XCQo47vhXnuW4>k}bKf2; zMIndug?g7?O6ctQu|n8G<5<;iQn%Bxl|SXn_}`%mA?F~J|MhLxWrJ-mRzClDbu^m3SxCv$0~?avbhRgq=9LIIl_NO#_=D@R?WXg)|szea}%7; zcdHH4LbaD1pRZ8%ApYzb>=k~@nIrB_$q}&N=izYn3-?(%ir6n zfn9glu56IN!cK0Ks&Szu7j_%{=jpv<7=Ojx6UE)@=-9b4*x(P1=^IeO&H1~wMzw1w z%JeMyuGhE)o~sNJsEckKxXA11gu&B($#bWD7v~aCgI1XG*A@llFuafa;72Ftfj#-+ zeUKoV$8~w0G96QK^iT)8DR2Z{`luBZOh4Mm-Ob{!@x6HAWm=`hYPY{9_U(lMuVFD6 zV&i%GD+SFW|B*xE7w}J5&jCuwHQQn9@XcdB|eFa1w87`I<$Y`DkfUTAHC! z4V+^}R@N2I_d0k4qHBqkt^~WEB0koJv&nP)WZNERW;&wO&0k!j{9Z47g6VQoC?YfK z@84Z#B~?{_H~mi$8by91>Zyc~Loof4_P@g!QcpnebE%?>Qod_SJ36;<;Bzm1RzLtD zYGMd|;r^OPUB#7V)gp5&#BGCZc<=QE#X_%=4Q~oW44Ykh+wD*#h_4`S%NF_b0rNKt z6BELm#z|d)0dRm!T~({Cjg445jMNSL zy9~Dk>+LkSVXxy*im!ScpBpR;jUU{+I*E6V7FEb$(AJh#(~jhZYHuE&%~SIweJNmPDX8 zPi^`QTMR^pGD4f)2&01l24B+NOoyl^@=_&ox^GDY;^mT_lp!a5M?1{xKU{McI$n@c zR#d!ttwcCh+6%9909W$HVH;U4SPDzZ9-p*ZItSPo=YyZp(ir8pHJi`)>5_eWG7pZ0 z2xQdh2t3T>P1YaeHJzQCV(#f380tbMUxyk!<6u7*<%$B<2&_BDf=%p?H;32w(W#A1 zBBj`RUr%1ryne-$R?0~CF*f+>L+e1Jut~Qi$)C~j*GF;pg@dLWqvIXdso?gYG*n=V zBDike)-6zx)6@(E&w$ogm`zSb29qZMGRprQxx8h0#SEtH!3fd8wCANG9NLUR*APwnmV{HwlGq2jIOpbk0v>bu4{9F1tQXDRM(>>M08Zy904U=OrN zitXe!HotuTq&5l$bpl}QlH+eK^Y+>}TGP_7-DlX5;LA}!*Q>bhZ}VA&iy^!o2bTd` zp8Q$brXfX-e*O7ycr*hOCR6RQ}t);&PIrcG=8iNLM#~ti7p7@GUOtn z-(_u7BrRGy3$Cl>c*sWjCb1n(EaE?i(Wi%%Y`i8BjxSVUOZi|F+j+fmjOxHGX#!g; z1(%nX*ZsUyg-zZi%qPqP0Cv9_@wok%%%U8>kc`LSunk*$@?2U7BBE&cda^l&N+UV3mbOD`nKdA|8$RQLZa6Up7fMOjnG0hVtB_+_9ag>)K{k1YF)_kcNg=QJphJ zf`@@*y1T^)wE!0vSDkV3G&E625%z*Tcv5BxZxJHQfjl~*ips+W?#!z6f5x#`7Hq$n zRpa!n889DxnL0l%xr~_I8+9uitRi3LrE+g)qZMi&$1iuF88lo19|b1U*sn@5UoP+ey8V27 z+1LIKK?^KNg-5WMJ8;W;D31L`WQ0pw5_|*+XjrzhG}{tHfN{;9#e!nA$%KF#D>$w6DxLI5d&F{xgvem zlreiR7CA;4-zeL&iHG0z3}3V^K8+RmE*0rKvQWM#6RN68)22bsH<3VRQYcE zXv$*RapL{AFP?Yy05xDd_)}m!OaO6LYh_$C8E<+8j97iuuqOATqoct2(CTM`kkGx7 zrX?HUyn)~t^=bgA`N4Et@%s9u`wrWx;@6i8kZ2U;Lk7~)9c2S<2UFheLd1lG&DpnT z!{Xy&pRrV#>2s~)_R-`l+W&W&a=Pedkxoxj+OYEJEf+d&$N`-MJc0Z-nbzs-DY;l5 z=9j*Qq;bZ1^}ft75b#bzqP*Tp_R=Q1hY zFtr!xJ#jM6<1VzFvIjf9!MMj5?&m5#XfcxBe>w9R^O3oymXHJS(!i~xJcoge;`?9U znBxh?=t~H3WcJW=m1|h<&oteI@m+%G138+}pSybK5L`<>q_RL$8d*&hLfiV`Hnh^D zBpUrkP-I;Ip&w;J@RGS$x6i6i$2DMxLi^aO3 z{nv+qz|j!v!>zdw1HQ$kBiv|>4`FyMh8AS}i4PoESXdqy!C`i2CqIjmW|+( zV{ciZ)^Q>G>EW@nk2gzC6K;<3S(CZ)?`sK!C-}eolLkO1S+Y@Z7Qe6F6e@(cGB!Tr z;)=@T4crj32HsX+Z&1%2`MPo}2*!i6seZo-9bZx!UfeNI491FLWn~q=hCG8|*{P}S zPQj~6+@GJh=QSD^>z*F%rql!-9XXxoXhKV@fdKK>pfQYTk3eVNj%`6LE8+1W@Vjq@=7YesX{yaMHZuE2Q*R z2T63GI9!)-Of~9T{|3{8@B5APyG?bcNgjHU+iK5DejF^S_LvCnTXLaeTSGuu&2L{& zT8)3cv9$2Wvg7l;q`lvF)KFWX-SyeiaLc-YEtYZw!Nps=D>_k)o$nEA^nD5%`s2-k z7DlDo(KgY#qNs>#F$S6m>B38MH`C3yjD%=o8k7$1GW4DmQ6kqW=xT$&@qtp=^MvoG zfpsE3bg;ViLBCd6>)q?o*3E%@;35-ei2ScHhTpku%%S?7-lF=~Vx(Mh#tcNKulBj+ z@i>iUU5@5E?j`0q5EFRV-~ZZy71t&LqN!LKx*lMyN#|DE4-w1RJ0!&fDxo8$OSD6>-PBP+RW`Bxr?O zx8^#;1IJ06sNDqh2E32?z~{kHm6Mmh1Q!~bxn3ec?oj~;;T8u(MPg0OGad_N?bjBm7aL66+OLW4}s6&*|mVB8;?ySRW zQ3QJD`B!Kz#gzLh9irZc{f$OkV!KUa)Hh{!R-mTBU7pdg`ti3Jeu{Gy-1DjphrXwX z-%e8<>SZ>qlzlO99`H*ZNRC;OzDcMdu{l9byWA(m3_CQ7Ttu37y99rCa>A1;G6VF5 z^6W&_xBS0zLert2KpbjRIp9K{T=xa{85h6b=W&1ZIg?=KCmeeqdkwE#Vfg5Fu(SQm z&6R1(8o=uHi{!*3$<+7ib5%h_S-WyrL1&J-glt(tZdcyq^ZdjodV80HCk2}8& zoZ2C)PgJG3+AS{TJ;Xh#^4Mg5O5izw-KR{Ab?#w!(485-@^s*xp))_@R0(R&kMH!X zcyiZ%?fu=q?%p>Pdv9zQx&g7!iL8Z^`?Z2w_2@Kc1oq-`Y$2E|>umJ)`ApWM!x4%@ zxJ4I)t`zN`mw+YF;IqEfI*4pk$>w-2)L1#JYm&wu7eBmi>m~jpwvxbOXj@m|21A+& z(lxGZ?wJp2UwtEA6y`r-#c$aua)=VS(^AV6;O0ioJG5p8)*l5EbPE#G(!4as=y~r8 z4d8FSFhkG_UZeyp!`Nb{ZNl}3 zZwSceO?AIYZvU6jk1M;8LM_ipcefy+=FSmC+kpj6Rk`$3yPFN*QtY7j^q$ndiF!ao##8_X%rCsjokmJqMn>@Qq((6x-oBYP)WAX%zaSo6D z9r$|DoYbZ;iC8f*Ak88oeP6yvzt_ts33~_F(J#K>OUj=lAat6o=M(?qAx<0BKzjmg z1zO_BoUpw)M;tq`8b5!}aF2U`*K@9kGThy2kbXlCj`uM!WDq9$XGR%imz=qO8zA8_ z{`u?PJZ((Cf%aq6v&JF#)t+W4N+?R&Tu;M^v%h>QUk>{ zwXiB%B&A-<`SJxfFDECb8I(PiFm=w(`p-w-A)PRx6kkRTPms5F^`ly4Ce!a9Bn+oi zj3>&^L=_rJDt0!ZUXRf@ei6-Aj`RhSi?RZzfMI9ZdNDTmhRdONK)@_St{w7{TO~fyXJ0P71YOp*Ocj*%lBqG!6{qtU-1hSzQleE94e8fHI(T} zkwoqFGZRD(!=c8qW&N^E^TR=dQf>x6iN-ZblYSIw9rkmOC<`tEBsDN5?y!*AzeN`@ z^ZNuq`{eU;uJV623{NdmYR@T?f5L0I|Cl7Y`f)PSsIOC+CKzWa;MD*es$WG9{W5XU zj%p5z7K`a~U@;A5rczv?A5o{-&UElSr3v1CXC*M@iC@3nTroE3ah~y-w8bjFqkyDI z_{Q^823`!~zkH_Uby^UBn9U?1b1r|$m;p#cP;lv|@A>_V&6oR1xq zY`##)ghf+OacEV#+(2C;%#xuT8Q-=gn;>#C;@P<=giPRSVM#MkV2w9wj|k%(r>;@F zC2&po4$l69xr->^lj1gYndT;&?|zru{;x4eSV-k|FSXfm20w?$*gH}%&y#=V^q9xc zjEdy;N}f&`duJ{058dFsh$>3$_MhYHjcQk<}ae{`%hMXPio6?X#Jc9Dj2{J{Jlp3L9+1MEzZ! z)Z=cNV2FyYTz<8u0*FB1Fc>3Vd51Ug>;zkW_flQmDIC?*K|lL^fagJ?70*O_p_jT-azF>_wFY2-h zZXjv2tE5Q=LfEP8iPt?UwzoD<`GQC8%MpXA^FWZ)+a(s@1RbQbr|J?ACl6Zdt)% zdeiJQBVk4+*=_{*8uYjy7G!&S>0Qd!>~&U@z*f71Nuuc<7#K*&&c-707oGpX9I9!( z?|<|~_t}7i95yZk{y!f%NktLh*cniCAYi*a&+Z9+BO=$1`O84!s;P(7B+;a;$dqj( zI7-=6PYxHp>(&_eBLq3#=3}3{zS6PxBH09^bcjKcX`Ec#>W_q!62t@msy-~>yd8@n zAeR!GX_9sG^E}^?HCkK6dglr=Yay}d_w%JZZK405&hO~lDe^A}=$Z>jcV?=vBoC)- z8qLREHi!4$WfzdEh&57|g*#94YO7}{>Z+CyLDqou?F$7mbFOxj&C!!tHvJTv@@J~; zh3wRnVLbY~ap)5Z?;S8}R5_=VVqC2ZLU+@Y{jcr4{pU3EB@6vGgzNv%ICsUv+g4&K zshvjn3--IeeD@v!!V`FknJ8<6S9(ZAFOrBNXhDYJL$)-)G1{HJ)@xBzR8S-sbl{AD zTz9^nx{=iz6cfnp#&a7N2K1r6>1$|)#M$`OAV$es>tp5q1C{Gdsd}+`63meoh~;Md zMD;6?A3w*4wq|1M-y`nST^kq#&@;l9zHou&eBbF_Sg*=gi` zeWjd(H+5@zzpg}VFwLm|)@xFR41O&@cgftW+y-AIQ7@MK--`_ipp(*lMVlh&wX^*w z1|fWrfOBXZVr9{f{w7+1l^ye`Qzupdny!WG?AuAo<5IcJ;(lfgn{a>`#*}=h`5Yp7 z105QlZGJy~hYLU>B?xd-S*3&ape>}_Q2!I4;>>tslo{$4-usrolca_(s$N@mIP!oi zpxDQU4n_|7_)OD&=KdT&7`a_>&_i#0_h`Y)*HZK<){PM+^W90{rG00D%v2jq&q=~2 zx~hp~$N4>`xKra$Vf%-LAc5V8fXF6gcsfX;2*-oq4Fz*w=SuJamLMZA6Bk}G78l!& z_kj^0ay$GXXFaap_?u6)WVrsOyzi$KI>q{UU085Gk9Oek_uBoF2OJG^Cyl~L$VuNO zl+6)5B-Ubs93-|E#feoHTXt-&w^Dl)Lxdy1ovW3lJUJ?%TPcz)7(6B?J4=5!m1wa= z6Rs@XJx)5Cw(T(y590Dw9A>H|r+OVW3oMwMb)>l;UZ}QJ=_PS_QRaGg;a#<=?2d!7lep^+hq=ljU__4(2TNMo;R!HDth27GX9>X1 zts1&tFYjJ+Bi{G?^eNFA@_!H-8x*RRIO>W{*@~Pt^P*t2;uCB%Qffi+qW<*$hV+is z5N>L;M4M8PC9JWroWoVZ9pW_t+jYd`hJ$Dz^ZnOG^xwRE!sM-L72wp;CVxy{w0`oZ zpV`r6f+r#9)x+?p#+hbxZ~XPjBYm6_UhP;$a$p|^BQ-*zm>%WQeTp$3t$V>yb(>R; zO0@&*t3Kvvf<~cOetcS5+E=WyKSGW~Qc(xDjBQ)z5_#Tx+Z+N##N=$e_H9N=*{SWh z`O9wGZ*c?Rc2uR+-T1p?ISTc-3w5&#RGbbTcW2qItWc`^@6u z&ro!Ic9)h$1zm2T9NRx=WV}oe^k0%Blg9oY@?Hv`?p!L*L{rd0f_P~M;a){Q2zU4_ z&^md{ChPih!Uj+d|ra%tL=_$(TTlT2SWmcsW|SiggINccizCcPRR;R-xp@LBvc>Jf`)?pyVqE2 zu(Vp##0;y_&3Md#!}xE1!RR4!BcV?X>*v^qr%AW@uC5DCU|$`6TukIKG}XANc&r%i z)W&3X#tjcd=6-Rn!=7+LH>Q8rDW@)^i=@$5VFF&z^HHlGWX4xUAB7pQUC_x}alM75 z>im4dU1e0H#>BJp(;nLAWQC<~N&Du;)~u2aTd)bbKhwPloT8dAD3o+G&u|DZx%aiB zb+X74(7BwwR*=J5-Rdsak#E3>Y2lov9L~jLCHhS~7-1 ztvi2j9`8V675PcCN5u@MqTqmN&MpuohtfP0fx-3M^18SfrI(gk!<`R?44<|Fwv>}= zwS%_Xr~B8#9B!4eyl}9Q_;@}2Zond6`jh6ts zZ5cM!jow(=n;F`U+npgMspDvWI5e1?)YZwaAaDQmAnNNkDECLBsuCP4=8@h`%tx}t zq<N+X?7jLBpw3Ffunqb61=I$+lL=9kAXyF zBl3S+Oz%-7tA$l=IrpSqZ)3cY^A=&VmuA!TaL8qzR3i{iFLts0r{Ju=J$e}Ufk8j< ze8?vi*r{=|IWFr!guQ`7gC42xfSDbP? zqnISRmeOOWy*y)9VpJ#0N0*^M`|nv#O;lW+e11GDiefq=t+~)i-r}czKwuj}raL<; z2bMd9R7hauZhB1Biom z)PRwD{-cK;tHhTv9qj(ldilbEK?b!B^sBFdZ3U%BxiXkDd{k*2})Kj*=` zftAn5u!mj$?<0#F$Q$H@auThyMiIe{=Pr12lE*OW8ab5-G0zD$I}$IHWJQJ8=R z5*@lI+L107Oj4MjYqo~b8}xV1oG1XWUou$D78dE$=3R2O$P*ox*AapuP6(YDQEjgf zxPKthcfF7Nn^|1$#M`|wk~da!W&c+Q+rB=0Nm+wuk$G{E1epaBX3{OQlpbblhRsxx zi1qNtzR5WpM;2hBVd^ffXR~1w>hn0Q9K!59B>#WBB#APCHk@Q;g2ExTvYuJg(FiyB zO8zGzJkk>^dC$t+%?Z%j;l|ZNZj`>Zmg0Kh!Yc_O^WOXGz0;E`X&eo53vq zE(0fzL?Y`FWXG4?)$gD1KXdA?#ubD?Dzs!c38bj14Tdtrpgt#Kill&I zESN`bQw7c$IHk6pCHnGp6dwn_!)6Qg=4ScVZ^oV{>Fewr?2i!cIq^Rnvaq{X;PDZ19 zr4bqa-4Upo41JpcVwXC~bs5H&T`SY#;opky+>e=s!0>!{GxBZy-Zb0YGc&Jva6Vxy z930}1vTL&jGbP?WUd^c-K{Ad}h;EP>z$9sVCI@=ESEI;PU(`3FejjWQJ8c>kl7hI) z19Fq?`eCc_h={6#fWK|b#MsTZY%S7Vwvrc%~G&qgHO#*V~v`~387UvwD4ZfBIY-kOk*kW)#x=et@CBvP;s?bVE7yCWkb(Y(&% zfunt}$e1i2vB~}(mTAO^`=C%2SXntq{r{UesM1fe$ytPp#87_t-awJ3D7IY;^pf1RDfDg`L2(?yu3WEiGj<21{CjBbLCAi0?F;u zo*d>=zbWk%Oy|KKYhs1_IrNP zb>_pA-UAFVP3yue!fG?78k?f&7cd>s)I=<=QoZ*S-WLpEXsi`Mgp(Nlo%YA@NRxv5 zbKIg)m_B;xn23nOsU3>26Yo8UHiEMqqXAkdMiL8ZU{L{Oe3<67*3Xr4ovJ8hWnm$C z#&{FBC3q3v_)84QF!JASs;Lm=)oZ-CpJrs;qRl0A@QZ2Bz}eW`Yxh))OS}5E<)rC_ zoD7m9*Fhd7-}fAm;ZFItRDyGOgz9t=v%FOqENq)|p484!rT;#|NlO@*8wqwP(eIB9(*#KVfQ*b;MQodj zS<^JR-_bCqt}d?D-%_-|Hlx)uywvg6+@_Q(2Sn$^f4;x!S)s2b#${l1v(E_eP%oWs zf7rg65oJ{Tzv#)ZZ9BGxpIkitOldOVM&Uv|gu#ifRL)D+y~a5+^77#F>YKkcd}F6)c=Djh@!gnd3P7g|I67W zls9o9y}omI@LGb}*}JLGvUy~yuljRU?%-aQNELn;3?-S)PbXT4hy!C2lSVVI{rWuD z$gmWt{?n6%M~7YfG~I-=OBQECwW9UUrg+d?SndMdg;mXf(%pet*fP&wJYP_W>uD+E znppFyE`#xRd4(Xbzd$GYJKa1r?*T&e#h}O%wN!;;F(ea`)f#1*CoSH2Rv_ zDc|PB#dt!>r)_IJ0K_|>=?r6#)+rqkiRXZr@UYrRJ|vda`t|Q2>yt-z-k+;oc4}QQ zgY)7jcV{?vg1!JfzMePi-Z?QsSgPZcjgzYdaD!(iE#={=Eoc!9yW?NC$#9|nKd&>@ zd{$bq)98)c5oNEYxxd;39#acNUovah8>6-uD;o3eCvA8OkWGZzUpLIG_cH&D`k z3eBxxF2~#gTz)NwryI_`yu=G`o2B~6BuNqJ-D1iBj`%{GV6_igS2n0#tH1tUOuz<>( zJU`h<=Tsta;;24kGev!og=q_(d_5o=ZJRm zDtQL9zgd!@0+E(XUBfC1^4mf&^h75~`ysC58|Nzl=-czz8qnoF-}Uq;e;`7QN_-bz zeC`hO^_o@V=5SjaZ%S2A2U^ViAOxA_AqE}o(7&bo0#1Qka<_a=DBa|9&mQ{q-HOe1 z&F41ns=_9+pzOj;$ePTc57*Kri0L0rK_(G>|6gp>v=tswQQ*IO-i{t!I zl-Fl`u}IlIQ7tnu;(2$)u0vTd0D)(v&PIf)l&DGek>LKfbikFH-3czFeK8F`Z3MzO zH0yw$zVth<58nI>lb%u?WepEBUY-y(NTl(3P(kz+HsSB1FygRX<~}>@U{!_9a7kw^ z%*j$WSTxO#(LixAhl7I3Ho3p0G8^4#()~t*o8y0yji$8{!bq3ny;mUZ+#(c3eAoHg zOqD*o#1-eP+4Vu@Lnv6o$Rj81bZQD_yyJj1?xfsOme~gWrOINP6<&Kp5fFKDs;Z=W zF%(~J-AHh_94xfu^X#Q4Dz=Nop=ttBEq{RUyiYOCZO=S3JT)}q``~se`PuKOF9{Jz z`wrHnwYA1KTorI@t_YFBW#A+WZ8J>CPrpXYN@v_}P~8^L)=>GN-4_>CK>NmJsLzl3+$L$V zB^;Cm%DEb$A@Ue3iuk7*%jncs19p`^FR8>ul5VRJxZHxw7+Ruv zJ^Pau;!WU&PlU9`>dkAaJc;ZRzV1VX%7J#eOg*T4??q{jAn23kI--CLo*6B-ewAke z1wer?^)^FQl{x-_c-peCQ&#FV)J|HbKTqnOL3c7`fr03WBsL=N_8EbDNkUd(buJht zBAv-WvB!KpPVS(pv6eM*^Yp0pbj=*IYb^c^^OLn8{OIHkSisV=o;e-0u4fvK96PZG zl$4aeR(20!YY)jkLyyo5kmR5!LPiw1uI)lP^yv0Jal#ce3@02*W>(sBccqMo9W4Zc?%~6SNuZlw zop*DE7<>?Tg;hOiRAdBc%|}P`vACMGmNQ}k$E$_WnMn8KiAyi{A2N@v$(0Q!ZB#Ji zau;ANZB0q@=-hLna#j^n<*#lf_uQ^baC?6&)BL@cwp9C}fam$1Y>fHo*4HQAXf%{?IPXk4%1B*Yh1Cf*gIaHvU>zZ7m{`GtK-w%#t+vp zLE}N^nDmJ)MRIoZi4`c)`$>0D@q!s>50yYEZiinNdh&E1(&zM)np;ZJn0C}ckCAa} zp_y4(@-JS{IcO~zQxiI}ei_h{H&zH`-MLj-p#R;Rg*RTyo~NXjjUcX7aD3tgtrXS2 z3%@n2Y`^i_aP8pagxA?}O2(%8n0f;=?0=k8*odHFB?(GjK+m*TmE7(Ab3YRybOtAX zvg6*fuT7S`0$Onvk1Ushb|_uJ5*!@E!4gS9IZE&aBWs{k7X}Hi;tEh-C@V?O9UpiN zpW+piQ%yCJ^H^+svA5V6Ew?m$8~k-(1(oiPh>8+-(T0q*lrnilwJBD$9)Y9x$~c^( zx^vsf2R*@G*dCWTUXtw>q}ZaUEb~>kaly`!qH4QNRt+IdbswkL6P_GYvx!wz0vpq& zkSwVxRMOGunrQysBoFts#_ssmsEA0|*bS0fB?F{8%(DR?KYoJB)MRD(8|k;Jz&T-# z7bHhXC?KAkU9^EDtA|#)NDy*G#(M2bV=NU9@KnG>6xrELqY6IEM{mC@yeO0rsVQe6 z5?S~490!z_Fyu&(6(vN~D1|>DYfLS+U5rW7UEm+f{P3TZ_W=jq!BHE4N{ryT&1zu4 zNdN&^l+Q``ixDe80>>)SSMC>?@U8Mmsz`qDd47@2k8JWlRp}Q$^;Az42x{8 zjL3%r2*&_b;)WKL0GQoh5$i^$R127cH^>C4xIAE>Kg*@%FWM6`LGXNwpT_p#SiD zCur3r<0A+W{-Gqz~nfF1-#AfR;`ZF~wj0cOV$635`1)wRci z;rVJgG7$9HFIkkFuOxA9Se&dkK_6K6Pk3k%soo#pd|YfB+hNJ4Bq#l>|?( zz2jRw>+x`Ke!XaxRsewLzQy^c=zd6iY(fEtK4yus%$EjidSB)Y2B}|PBfL!_q zuOW*6fs7--6I!yU-+i}siOro|o&YLEbISwo zgVG1oGmGR~UJ+pOAtFYnev2vZFeXY=eR_uz1V471IrPfZatmPu3@0Ulc4JyMbew&mz`wsm1M7 z=0H$59P?M*I%}jAC`XdhR9>y2g5edYT?y;HaSrLSg-cX#$_q+_piXy=8_##bZFPR>@X@f`zD2sOo6 zxR6bYmBgaXdEU_GkkI@hI(G8n&uqt9NK0aLZ&NZIT7af^q=bZH3qJ?M|R zs@>%IU2lvhe??rht^N1apk`w(Uk&S$a(8-MQE5mn9`zk1>X7-I7$(Y^;1as-xws zu<-<+uZ@4R%Cw=NkENxOQ~=ix3ufp@d!7|#-mp9uyYX6?H7IV7t}NrX#0}XKbf$?j zfqUP<7@)Lm=zUYb{#AAO?mLdnXbW8Wo8XqM&&(JK8~656Kvl>jz7ZlEEvLK|xy|=G zw_kSgK5Z(pjEw{s-1ZL|5o~Rgw%Lb5<})SA!Lq-p(96aCmLgs|O9-p|bKEFvju~Ib zrp5})022g&X4fP)~3(lTpNo352d2Kk>!&(Mwum9;Tr6$x_tM z+g8$IRH*Z7I2_cT$;O>GPfW*~3o<(X?@RDaveNRd$U)_rlc`0PjJ@YuYT+r9QVqrai+B&tGMNhIoGRz;uwl9Vs?Oiwe`KYLW5%a;EpOL* z^nCr$<@TQr`~MA1{c?Hm{0oZ?DoGv9{*y$=%kS_)3i=FP=(*T7(w7+j+TSc^kM|NN zSE{f|8F1Nml1$uP%jbDHtkn|NbFwO$J- zY-!KhD*hc|nU7GbqV4snA!#PjHU3+jDjP_alKbCbPXt*q5CjSBQ2mT2e#B_MIChed zBp&heOPxV~C=eWoD#_V(ZT_19pKpG597-D`Cj20@i1X0fscOL<5m9ylSwz8Y8;=qT zO=uTiiLEV_{*F!0^kbsarPlJ2tIO)0`ju5XCj?C?l#MW%kJX!$I(=p4sRQYMBbFeM z;Twi(9Ng3zczOR-&#kbd?4ro_Sqw~o&^%*PW+R_)1*2FJhW&NwR`SH4k1emBH-DFm|DZeT`r>|k z*5hEN6)GaEa;Q55Qvr&jnz{lI(w>;KDu;CsX?+g&1TGPxK)-UxQK0DvU)reSam8A% zW(8$=@JrRFjK8bbPzk)gkO)W!V;PVz5;)rL-?|weZgpnI1r`S1=IzjQ@%R4!cB&VV zM6Mq1eeh7_`@p~51H=h#u|X?50JK)wq}OJ=M#1i?l)NSV6p`D4$x}Ox+Be67<+q?AnzS|+3Frm&yT<;`g{7z8 ziyZ5%pRpByQm0t$S~t_5pKF^xW8~itQ!-uchTN&fNfe7D5~Uf2 zc;D6FhaS`i?hvEmoFhv4Jn|p$t;jV=gGCPa{Y2OC1LD?p8F3T2Iuw`axh*}d0GHrj zTOOJKo|vy?`ShpQ)EAcWqz`U0)A~`@_@N>{jHHqhB@3?hXCjy4-%b1cBy67n#!F5^h1TJ0OtZUb z_AwxF2Sy=ca_e-?K}K3KkughE#r+bF#*kl{Rb0Hg6_uOy#h58Uom>QUTLaDyynJ*$ z@)+SA__RQmh(~s-(UXT@vY46-WE9@b`_g?V?=Wb@u^}YwNCu59Bs1%W{SQG&vDdb(aj}z`%(OU?44li5?>$M z#N`S$W6H|XI~x0&lmn)utcSy-D?K4#bWZ3;;l;Jhtd28EX*qj7g)_m`;4n6lArPaV z-8q4OYrD40!fbT+jCVw++>p<}sJDPE(1)2J11h@as;GAP?9B1eNCL&`trJRIfY{dN zciK!%)XR!84XX{oZMlwgovLv|L=0Y-)>6UE^$S~0+gMMusPZyzEyI%%gOI?H9RJ4F|7ZcKAJ3M{u61%MKN!73X>8r@ z5bSvT6<}1uTkZ}Gblhf)i~Cy(Q$asKxzanc@3!X0o@>*O&kcSRMDnU0%*CmyJbbAB zos$)OP;mEEtawgEeD)C(uE%bQTWE2Gv5l z1)H`R>%iu+2}L&RhrTm6vg|$zAj|(;aXxtLYSj%CRRX47h1mQLSW6?Em-2G@z#`|v zt&moyv9VW;V=9F;_MD3bvJhQ?)AF# zJsk1QjyT>FG;0~mtCbn4iUQ~Sb-uqAw$5rhR8Bk|ZV^GgTNk#f0FV7^^^O)DDvC)B znyB5=_*KyN>7Z-;`g>qiZ@!D00$Ia_hWYB`bhH151-}J1@lRwBIUJmtbWiOY;$XN2 zI26Ce=XNtEHXy^$&p;=kdcg@6BsQoYB?o(1!Uu~Ag%|X)I{}gNdY?P+HRop?F0vk| zo3}xNXF1E5en0zgr=qgpo#_S@m6hj;aQ6B`jK{T5r5IjLM(f9L@xE@~G6tWiPbzEm zr^hd$S1Z?3{J;9?W;%_%zf59|Uts<&*ThsYv3DO=YKCRZ`P``^nWFY3MZi&{? zE!zS@hBebfMn%m4)A|&(xd)TW*V;Yi*-URKaZJ!J2{x4x=)U#Se)kSihqvXkEuoDG z{O9E{EI0py%ZWeC!s)9v&uSg%iu7+nt`?1yjTUL)34U5yvV^qLh;O!3bgd%tMpF&L zbWD3~Dw5N;hj;MM0BApB46nKdT|o-|5=4xGZp2p1n3&S^wdbKitLPY|g+;uBRc1W% zF0-Nv1k)<-M|Zw9$yeTM3n}G5h0@Pg|2I&!-^8D>||Ge6_yn z^{atz{OtbA<9n}3KpJ0+ISLU^Rz-z{rP(+4m~XLp$4BDP7dvzzfL<@ zQkHr2`t6(1sW$V!dlL0(j}LD|KTP>=qZ@M}Dsf;;aCxTq?DJUcz_sr3fa1>&FhWv0 z(RnL5d*ftjll3`41ONKcSuW!u{UbD&yNUcP>l9&zXWUq!ZzFJ@G*`>VAgP5nM<<>Bx<>V5w?O_k?VSy7=@qw6C90#b0| zM!)gNR>qEm zfOO+{AU?dD_OOpagUKOi41^;W3T_#=E%lnc?{~&VboG}$m{j1?(no!ua2LYu(NC;+ zC)vxFH#KrU_oKp48PsMB2F3;{9b$wH!O5s+di8jz1qp(d`U~;llW+HU`;ip6ObO;4Dal6Y={OgZ}hV+MQB2b#xLkYZ!ou^>vN;-Soec%gLi5ZW*lIK?u1 z{^KW7K6`yge7*@^sxrY(YO{tqki#J`bur98El0kW&m5_6z=?G~*Gu7xR$eRA7+ve; z(XM{4%_G2|C;Gb*?4Rs16_J2BbO*32!I$5XZ>>Z_Sv>@UcywH9XFZP6+RbIoOy06v zV4d>w^RL>Ej+O14wda2s+l&YgcSzBIRt-HDM$h-9mewu*=F5=W-#P(|@582fi#uWIg_5BgJ{THotd37!tvT`XH!=eZWl8!F7w zy+ltNb_HCf)-CGC0SwZgZkl1a%;Hqu2m93bsr7X(Tgl$zTG9ls&z041Gk|VuQ-NL* z7b-$H3Cq)=CMCAOrgXndpti?vMP;4J^%_>$OoQIWzQS-33J^ zV{&@}cIGdhp{PPg(p5uMORNQ?3qP~?1)`YJ6Ps6qveiqwj&Z!!Vit`uv{Ggi^1^Tt z;Y*46we5<3a9`GkFFwh)x#6l(p?5GIr1X=lr>}bdu=A-2n}7cg1#&d!-$X}rwJ1q1 z861kp3p+OhI$_~(RcN&Y02@-Wj1HY}aK!Sm$j=ompS1jF+B9e89k00q6Nu+WO_K>) z{!#@oI}O*0I+Z8F3c`BCyhh+p7|YLMfEQh!+xq#VYRPC0%2{bcp`Jh#ngE@zjcLD) z*oUSi>2B;@d|g4TPgh1AC`{#~_j;qhtKD_tyJ|*Oc$rWRpQcZ|z*=#TkSl~Pl4VBf zy&^@ZKfc6dgJODGW~eYP1_EKS!1A%(FH+6#L8wJ=153OH{ipn*_?%bDS@COHw-xFh z=#dNLEi@+te+(I)Sl>OqM@&-VI=-;KP^(6C9(HIz$)bCQA4a~HK< z_h0et+mK)K$TZ1P%8|;x^`5I@9cfxvnh_5AknW@F{Y|@@4mIYsaqkw4gkN@c?sR4> z@_&D*^|SEplH?ekbZ#jB+)g@FM9KZl0|T&!8NsE0@Hjg5L3 z;7I)0Gi&mFis9S%;WL}9 zs<%p4Px_A*$4Y9EyQ51#sM!@^WKhpk9pihl8mrUVu>qHg(u`729hg^bilO=z!SE3+ z>vhyJ_nKSv^m3UTOV@(?`CGpAjlg1=H69bglXUR~(NFg$tU%2%N*{DYe1q#MsLC+CT+_2u={6N!*C@HhHY^=E2aqg%oLGxft{pA1*LW|I0K-+!E z9+jfVB3hslppZc@XH`DE?^#k((x%TD+G#)++o^Q=YC@TDyf%;TtY}qee89z`_UPzH zcdWt|Rh-WpDOHH9<+P*84bb!%@ZJ+M>-^M~GlchrHNkKG#>u6VCjC1Ywfw~E=Vzl; ztxfRp04s}lI&{#FenY|cS=FE@8XDJ!+}vD0Jtle}jp=$wzreAuBk>v=`YxM5!2P?0}{Ltszgo-Fe?b~&i?+{>Y!g#T!JZZQ{p76L#R40Z?|@UB1q`G@B4A?HKcNeq8~_BnloOc zBUjD{hq{b3`>DQ6s8I*st=(P!+&{P0Ga7M7dlDaAMVKh7K^^S7GPBvklyd(*FO_l& z`%gzBeTL7^T3&_aH=)DXe$2zgMZj;5%r5J%Tzj%(CS!-Rr6Zwq;?P>u*0#*4tmMCb z{d(Blo0FFaF+3l+ojJpBCqcPH!PxY()9{{3WRHV!-$2SKdGOD}8X=cc^XcIaTVpnFQ7%EySsav!HSy_#;-ECwrB~gQ5^+Vb3gptQTuf=-xo}M&^J;v zWNjqUcZE@0OpG?FgF*dvoeOhRhvmt^Cd8U5nj&k)jy3xZJI?Ey4w*A6g~+~Y8M^YZ z&M~8>_V5)@V}5??60L9@Hkw5gB#fIkXIfcv?-sKo)y77kAR7{HF>jxuZ5IvJ?^UC= zm*QZgHfRApvDp?JN-`WL5fKq=TpP?1cPZ3E+A|Yi^z`+;v^34IwH#O;ry?Qofm@=F zc{w^o46|gt@6cRrdewb2pogKN^oNF5Cn8Wn|bE9r~H@357V`9jTn=?DkX$kjv`x&lGewt{I;>ShM6tis>EAD{7EBafr3D zHxk><_}7xDiHWL!)D5}5v8cGbscy5qHgS*73x{R zKL5_Z{^<`*h!a0R$x$n`0b$K8W;YMkK0Em#!k;-ihhKePT$#DgXGeok>&7}>>ujdAzqh+9`Zz&5giog+vSSXe zzxIiiBzJ5eG!QZWcnRkj92U8!aHU}Qj?&tb{uv(G&@P1R+Pg*+Oo9^8`(Y3Uzc|LjNJ= zqvPYO-1D+y34!gM_^Yg$d8jQ1r_)#d9sa%L((lxdS(m@%!fr#k6<2z-mSx+34WGX=*RLVK~M#d;NVmKG@dYdn4b%=F>hsigDvn(&xv|eLMA&Vf3-{ zfyL^0HGg?BnsKyr8EPK|)%RNqHTzoG?|OCT2DiqaVHet2W0qgiF{`N>yasmfJFw*2 zzw(x1UlgRfi8w2g$>e8xK8UiYtgKWo!{!Po|2UGIJj|BRMTumndk+T-6PH9<;_JVU|{!zG0daRi^AF_t%=Wx`XPjy+VL zPNnqNG9`5g$@!zg4w3&POp{HP< z)=j@7JIQZg#$61Ko!;7T@x%R-$))N|;r%T1mqqvHIlt3Kbu_oNNmz+qdg6!j^Yh;{ z*jr(MpP`H9Nu^0i6XsZ+*vj`keT>-j0oiI2L$RRV(eQSCU44CeK0ZFYOpL^e@_?1a zp%S6^3CI7+lZk$52qVWT?NRtWoD~C20cDEr;aGq19j>SnbS$Ov2`pd0%Y17$AeGW{ z?mu3}-BD#R#r@03z{!KLb864@|Fn1Q-%##r{4K>krP}Ng+G*#K4wI-`_1v`PtTI1t)N`l2vrQ&h>h}7w?96hkTNPg7OcH;+i!XJhR^9(i8l6 zjTO`?6v>oo;k1YR$B!dk&O4Ujw?X=G5-F-#VuKfZ3 zao$fJv9D*oJtHLPEcqHed}Q37FZ;RURqVLkn0^J3Gs82; zn73^{qLu7ip%y@Vh#hV!%CEdPR6{!eT8fco5{1UXSNJ^{KUD;w?7J>Z2NIr@=6~8xGRX zm_6K!%V0MAa4zS*a;E~^yaku1Nt)x@+t?&Dc<~$DL7SN``ENI=GBFvp6&jwYXqSg? zZ=6zil|NWeF8}sRO`pDeJ2$3l7$0Gq{PxLl$-?d9@;s=7;wA@@jtwa!|9RTLqMn*r*UJSo) zeGllczLo9>U~LBpSK_ub$3MZp@KER`+XoU9gi~=sIk3pg;@j^LBO4Tn*1{`T=5B6o z`05L~;i6~T_SHR!XBjSn3^uk%{?U&__q1t8gOHZ+2m`AfKSNvup zgGSE^n2Q?C4*YmrT3Wh}1>f1h(rAqy$~0a>5iOkHpqZq|Jk-e`^R%)?g`EU4X#=o- zCEgY_^Da-oAl19}8uj4V>;n-dCJUdRtzMdgsck4p!3?$v(=C>T>a>f0jOa^RpP8Pn zCN%f|musn#%8=zwszU+#aC)kITha` zj1iPR??eT5ZYXE&yX45%fTXA%D~QNE`CK@rP@|5N+oO1g+}aK!waieFUtM`m?W>@6 z$)+R$r*d$#72v`3`Qt4Bo&wyTS;+ks=IDxdD33mHuGDRnzYdtN#l-pa&DonKk|%od^zsm-U$`C4EHYbw<48%Xk$vPnV| z(GGlFu*wdf8VLDlab>T03SKkbyl=vpTuLX0Qd%+Na8e%MOTttIWeueK13JmKm}uwW zsCN7r(7Sv8oXCX_31YF-Q-LN(q82eRUT~p5tH>*1P3Y1@C5O-ASgBW0w@?dFVufAI z52o5_xcd1LqCu%*37Iv=a!JDIH9SV(yCJXCfvKGzM{yk*5$lHnLb-W$U?>!a5vRab zPLk&87gMhnEIql*293DYXI)Gtak2zs7Cu+ur9|!VpHPFIYB{midn_l|#SSdzWi(b` zXYTc>%Av0#Mx(oR?O8MDsbgB)>#!;cEafIU2p*7d{tt)eVL`di8kw4n|@xd2u=<$#9s2s{ahTFLhA6CiiM* z`s5*|Sh0P*Pt8a+lfxV${i^`zA3bp2;{Z4=BSUl9mIzUO`u1n~?&-LVw%mdvTH^zw zjsn+$aaF`$PsIvuxC6RJh0$Z1(`gmY4Zd?r>BgIm*>z(8> zSD;p3IcjKe`Aw$ELj}C+uCLzMn zE`j6Ie-;~TT^{bJp|*Z*TV_f_I;+9Yb#cGzT+6BYtS*)={5iBJwiGS(4TL--`gIE~ zEKNW)4L2&k9`=zNza_%;lQQh}*3q3g@RKUnbfs%DI6V7TC*FR#lt{I(j( zi!nY^pDB4qfD6$E21#pKKAmPFrUlwp#Ic?9d`LO95nGARy&vQ`DAv8+zJ$XM?pWN! z`EFIJ{JEu}r_f<$4r<&K%~gnE(sFReK~)vQ2Q6Zj$IVRmz5QML6{z?9da|M3e-(nV z7@`x0yCn4Q^9YF4i2?)e<`#5832CMn$?p8F%WY90P4Sr~gl*cS+^u@?I zmW~Pu-J?kP_2szV$-LZ&1~}-a%dNX|#dV zuM#vAP*2~w16PRFE?)s}A(V}DFkgF1*PINyYJqFscf$il8G`%Yt#|t<5Ez!DJqDz< z`j2*>>(7ToLca)S(&EUHXsl)7U;O@Flksh`j1rSOpxh!%*bhg%p^FSfqnWj}HL7H< z{P_fs*Yw$lKtR9n&I4N~_=V!m{!EAZgSL52?~OETa`s{~ZzYnRzq^}F8sNpctb*Iw z|GF$k-seUv%%(Xd3vKS^N6vuOzHy#)z7ii77pLm@J#zc17;O}BP;SE+#Qd(w-~-M% zO}3-oN`hv8L#SqJYfZ(P`U7g!pEd=3YLh9l%_*)d3huo0p__9cFGlGFz!h*;Jh8B) zm;%v`=L9x-%OZDC#f+E|N?fY;0n0ZV^NgzX(8ksKJ6z*9QsAfR4@+it%~_o?G7=IJ zE#2KYHph^pLt^hAFTi79wj;k}doWOZh}M$t0}RpbPI;)j5oM2LuhAYs4Q#mq1iHWt zo+ML@#`amne{CfZJsS7gjh&719fiW7pZP0=n4nszMdMk3Zd!R_g(*kOAC@_@SG$1g z3xWlg+CTf_|ap~1|WFrxOlrj#zn$GVpfg*re~WYHbGAc zk5{PLGdvH~M}NFtPn6HTs#{aYH_A61NwX?MCsly_4ejQGq;PmZ<_7b9qM;Qvjty#k zG)jY&Py_=)APG}jLL)m^P#0-Je+;tr#k?!xG$Kwmqm4~N0Z_quzf`dZy^*A@T9y|R5L>X^PPtgLBZ0?6v<$gG+XLbU#+zch6!lY}l?XTn?BP*y(xn3_ zw-i4Xg4}+cvAGJ;1%BAu#2ZGC-!BsR%so^9<=}K?CS5G{FP(oZ}0p+d*}6%)akMVR>5mzT~K^F MY-WpP96ELR--F+?p#T5? diff --git a/data/minimal_demo/graph/owns.mtx b/data/minimal_demo/graph/owns.mtx deleted file mode 100644 index bf66bb3..0000000 --- a/data/minimal_demo/graph/owns.mtx +++ /dev/null @@ -1,8 +0,0 @@ -%%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type double -9 9 5 -1 9 3 -2 7 12 -2 8 11 -3 6 9 -4 5 2 diff --git a/data/minimal_demo/graph/transaction.mtx b/data/minimal_demo/graph/transaction.mtx deleted file mode 100644 index 4067a47..0000000 --- a/data/minimal_demo/graph/transaction.mtx +++ /dev/null @@ -1,7 +0,0 @@ -%%MatrixMarket matrix coordinate pattern general -%%GraphBLAS type double -9 9 4 -5 6 5 -5 9 1 -6 7 10 -6 9 8 diff --git a/data/minimal_demo/graph/vertices_type.txt b/data/minimal_demo/graph/vertices_type.txt deleted file mode 100644 index 4bd29f8..0000000 --- a/data/minimal_demo/graph/vertices_type.txt +++ /dev/null @@ -1,9 +0,0 @@ -1 User -2 User -3 User -4 User -5 Card -6 Card -7 Card -8 Card -9 Card From f741400671d91d93f00754c5fc7f3a1d7d3dea4e Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Sat, 8 Nov 2025 20:08:27 +0300 Subject: [PATCH 07/31] refactor: change input type This patch brings following changes: 1) At this moment we didn't take any input, so all matrices are hardcoded 2) All vectors now have GrB_Vector type 3) For every edge and veretex type have been created corresponding GrB types 4) Add some go-style "err != nil"-driven-development Signed-off-by: Rodion Suvorov --- src/main.c | 393 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 337 insertions(+), 56 deletions(-) diff --git a/src/main.c b/src/main.c index fe2e51c..b80ebb5 100644 --- a/src/main.c +++ b/src/main.c @@ -2,7 +2,10 @@ #include #include "../vendor/GraphBLAS/Include/GraphBLAS.h" #include "../vendor/LAGraph/include/LAGraph.h" +#include "../vendor/LAGraph/include/LAGraphX.h" +#define VERTICES_NUMBER 9 +#define EDGES_NUBMER 12 char msg[LAGRAPH_MSG_LEN]; typedef enum @@ -18,51 +21,45 @@ typedef enum FEMALE, } Gender; -// typedef enum -// { -// EDGE_OWNS, -// EDGE_CALL, -// EDGE_TX -// } EdgeType; +// vertices -typedef struct +typedef struct User { Gender gender; uint8_t age; } User; -typedef struct +typedef struct Card { System system; double limit; } Card; -typedef struct -{ - // EdgeType type; - double weight; - double aux; -} EdgeOwn; +// edges -typedef struct +typedef struct EdgeOwns { - // EdgeType type; - double weight; - double aux; -} EdgeCall; + int days; +} EdgeOwns; -typedef struct +typedef struct EdgeTX { - // EdgeType type; - double weight; - double aux; + double sum; + uint32_t count; } EdgeTX; -void edge_mul(void *z, const void *x, const void *y) +// operations TODO + +void tx_add(EdgeTX *z, EdgeTX *x, EdgeTX *y) { } - -void edge_add(void *z, const void *x, const void *y) +void tx_mul(EdgeTX *z, EdgeTX *x, EdgeTX *y) +{ +} +void owns_add(EdgeOwns *z, EdgeOwns *x, EdgeOwns *y) +{ +} +void owns_mul(EdgeOwns *z, EdgeOwns *x, EdgeOwns *y) { } @@ -77,42 +74,326 @@ int main() } printf("GraphBLAS initialized.\n"); LAGraph_Init(msg); - printf("LAGraph initialized.\n"); - - // read all input - GrB_Matrix call_edges_mat, tx_edges_mat, owns_edges_mat; - char *call_edges_file = "data/minimal_demo/graph/call.mtx"; - char *owns_edges_file = "data/minimal_demo/graph/owns.mtx"; - char *tx_edges_file = "data/minimal_demo/graph/transaction.mtx"; - FILE *fcall = fopen(call_edges_file, "r"); - FILE *fowns = fopen(owns_edges_file, "r"); - FILE *ftx = fopen(tx_edges_file, "r"); - LAGraph_MMRead(&call_edges_mat, fcall, msg); - LAGraph_MMRead(&owns_edges_mat, fowns, msg); - LAGraph_MMRead(&tx_edges_mat, ftx, msg); - - // init vetrices + printf("LAGraph initialized.\n\n"); + + // init edge matrices + + // custom types for edges + GrB_Type tx_edge, owns_edge; + info = GrB_Type_new(&tx_edge, sizeof(EdgeTX)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_edge\" type\n"); + return 1; + } + info = GrB_Type_new(&owns_edge, sizeof(EdgeOwns)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_edge\" type\n"); + return 1; + } + + // monoid and semiring + GrB_BinaryOp tx_plus, tx_mult; + GrB_Monoid tx_monoid; + GrB_Semiring tx_semiring; + EdgeTX tx_edge_id; + info = GrB_BinaryOp_new(&tx_plus, (GxB_binary_function)&tx_add, tx_edge, tx_edge, tx_edge); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_plus\" binop\n"); + return 1; + } + info = GrB_BinaryOp_new(&tx_mult, (GxB_binary_function)&tx_mul, tx_edge, tx_edge, tx_edge); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_mult\" binop\n"); + return 1; + } + info = GrB_Monoid_new(&tx_monoid, tx_plus, (void *)&tx_edge_id); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx\" monoud\n"); + return 1; + } + info = GrB_Semiring_new(&tx_semiring, tx_monoid, tx_mult); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx\" semiring\n"); + return 1; + } + + GrB_BinaryOp owns_plus, owns_mult; + GrB_Monoid owns_monoid; + GrB_Semiring owns_semiring; + EdgeOwns owns_edge_id; + info = GrB_BinaryOp_new(&owns_plus, (GxB_binary_function)&owns_add, owns_edge, owns_edge, owns_edge); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"owns_plus\" binop\n"); + return 1; + } + info = GrB_BinaryOp_new(&owns_mult, (GxB_binary_function)&owns_mul, owns_edge, owns_edge, owns_edge); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_mult\" binop\n"); + return 1; + } + info = GrB_Monoid_new(&owns_monoid, owns_plus, (void *)&owns_edge_id); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"owns\" monoid\n"); + return 1; + } + info = GrB_Semiring_new(&owns_semiring, owns_monoid, owns_mult); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx\" semiring\n"); + return 1; + } + + // edge decomposition + + GrB_Matrix tx_edge_mat, owns_edge_mat; + info = GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx\" matrix\n"); + return 1; + } + info = GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"owns\" matrix\n"); + return 1; + } + + // fill tx_mat + EdgeTX edge56 = {56, 2223412.0}; + EdgeTX edge59 = {59, 6223412.0}; + EdgeTX edge67 = {67, 8913212.0}; + EdgeTX edge69 = {69, 92223412.0}; + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge56, 4, 5); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge56\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge59, 4, 8); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge59\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge67, 5, 6); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge67\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge69, 5, 8); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); + return 1; + } + + // fill owns_mat + EdgeOwns edge45 = {45}; + EdgeOwns edge36 = {36}; + EdgeOwns edge19 = {19}; + EdgeOwns edge27 = {27}; + EdgeOwns edge28 = {28}; + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge45, 3, 4); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge45\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge36, 2, 5); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge36\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge19, 0, 8); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge19\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge27, 1, 6); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge27\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge28, 1, 7); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge28\" in matrix\n"); + return 1; + } + + // init vetrices vectors + GrB_Type user, card; + info = GrB_Type_new(&user, sizeof(User)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"user\" type\n"); + return 1; + } + info = GrB_Type_new(&card, sizeof(Card)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"card\" type\n"); + return 1; + } // 1 - 4 --- users - User users[] = { - - }; - // 5 - 9 --- cards - Card cards[] = {}; + GrB_Vector users; + info = GrB_Vector_new(&users, user, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"users\" vector\n"); + return 1; + } + User user1 = {MALE, 25}; + User user2 = {MALE, 52}; + User user3 = {FEMALE, 19}; + User user4 = {MALE, 42}; + info = GrB_Vector_setElement_UDT(users, &user1, 0); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"user1\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(users, &user2, 1); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge2\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(users, &user3, 2); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"user3\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(users, &user4, 3); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"user4\" in vector\n"); + return 1; + } + // // 5 - 9 --- cards + GrB_Vector cards; + info = GrB_Vector_new(&cards, card, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"cards\" vector\n"); + return 1; + } + Card card5 = {MIR, 600000.0}; + Card card6 = {MIR, 700000.0}; + Card card7 = {VISA, 800000.0}; + Card card8 = {MASTERCARD, 900000.0}; + Card card9 = {MASTERCARD, 10000000.0}; + info = GrB_Vector_setElement_UDT(cards, &card5, 4); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card5\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(cards, &card6, 5); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card6\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(cards, &card7, 6); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card7\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(cards, &card8, 7); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card8\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(cards, &card9, 8); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card9\" in vector\n"); + return 1; + } + + // build filters + // GrB_Index width, height; + // GrB_Matrix_nrows(&height, call_edges_mat); + // GrB_Matrix_ncols(&width, call_edges_mat); + + // // all matrices are squared so let n be a dimension + // GrB_Index n = width; + + // // vertex filter: we will take only prersons over 30 and exclude cards with `mastercard` payment system + // GrB_Matrix ID; + // GrB_Vector v; + // GrB_Vector_new(&v, GrB_BOOL, n); + // GrB_Vector_assign_BOOL(v, NULL, NULL, true, GrB_ALL, n, NULL); + + // GrB_Index size = 0; + // GrB_Index *zeros = malloc(n * sizeof(GrB_Index)); + // // GrB_select !!! + // for (size_t i = 0; i < 4; i++) + // { + // if (users[i].age > 30) + // { + // GrB_Info e = GrB_Vector_setElement_BOOL(v, false, i); + // } + // } + + // free(zeros); + // GrB_Matrix_diag(&ID, v, 0); - // init edges - // 4,6,7 --- call - EdgeCall call_edges[] = {}; - // 2,3,9,11,12 --- owns - EdgeOwn owns_edges[] = {}; - // 1,5,8,10 --- tx - EdgeTX tx_edges[] = {}; + // // DEBUG + // printf("filter matrix content: \n"); + // for (GrB_Index i = 0; i < n; i++) + // { + // bool val; + // GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, ID, i, i); + // if (info == GrB_SUCCESS) + // { + // printf("[%lu,%lu] = %d\n", i, i, val); + // } + // else + // { + // printf("[%lu,%lu] error\n", i, i); + // } + // } - // apply filters + // // apply filters - // vertex filter: we will take only prersons over 30 and exclude cards with `mastercard` payment system + // // verices filter + // // фильтр только owns фильтруем с одной стороны (исходящие ребра) (поправить рисунок) + // GrB_Matrix owns_mat_filtered; + // // M x ID + // GrB_mxm(owns_mat_filtered,NULL,NULL,GxB_ANY_PAIR_BOOL,call_edges_mat,ID,NULL); + // // ID x M + // GrB_mxm(owns_mat_filtered,NULL,NULL,GxB_ANY_PAIR_BOOL,ID,call_edges_mat,NULL); // A* + // // в итоге получаем ребра исходящие из отобранных пользователем - // build matrix M + // /*--------------------------- PART 2 --------------------------*/ + // теперь нужно взять карты (редукция по строчкам или по столбцам) + // редуцируем карты (строим вектор карты, которые относятся к отфильтрованным пользователем ) + // строим ID матрицу + // ID с двух сторон на матрицу транзакций + // получили подграф на нужных транзакциях + // теперь строим матрицу для pagerank (пункт ниже). softmax. (посмотреть как можно сделать не по дебильному с помощью GB) + /// снова редуцируем по строчкам , получаем знаменатель softmax + /// 2 // build matrix M' // run pagerank From 05fae160168d96c4f89361cd7a4725109dc3e498 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Sat, 8 Nov 2025 22:41:30 +0300 Subject: [PATCH 08/31] feat: implement user filtration This patch brings user filtration logic: 1) Build filter via vector assign and kronecker product 2) Apply filter to matrix via assigning mask Signed-off-by: Rodion Suvorov --- src/main.c | 211 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 162 insertions(+), 49 deletions(-) diff --git a/src/main.c b/src/main.c index b80ebb5..69df497 100644 --- a/src/main.c +++ b/src/main.c @@ -48,7 +48,7 @@ typedef struct EdgeTX uint32_t count; } EdgeTX; -// operations TODO +// operations TODO TODO TODO !!! void tx_add(EdgeTX *z, EdgeTX *x, EdgeTX *y) { @@ -62,6 +62,12 @@ void owns_add(EdgeOwns *z, EdgeOwns *x, EdgeOwns *y) void owns_mul(EdgeOwns *z, EdgeOwns *x, EdgeOwns *y) { } +void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) // EdgeOwns +{ + { + *z = (x->age > *y); + } +} int main() { @@ -75,8 +81,11 @@ int main() printf("GraphBLAS initialized.\n"); LAGraph_Init(msg); printf("LAGraph initialized.\n\n"); + // GxB_Global_Option_set(GxB_BURBLE, true); + // ------------------------------------------------------------------------ // init edge matrices + // ------------------------------------------------------------------------ // custom types for edges GrB_Type tx_edge, owns_edge; @@ -98,25 +107,25 @@ int main() GrB_Monoid tx_monoid; GrB_Semiring tx_semiring; EdgeTX tx_edge_id; - info = GrB_BinaryOp_new(&tx_plus, (GxB_binary_function)&tx_add, tx_edge, tx_edge, tx_edge); + info = GrB_BinaryOp_new(&tx_plus, (GxB_binary_function)&tx_add, tx_edge, tx_edge, tx_edge); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"tx_plus\" binop\n"); return 1; } - info = GrB_BinaryOp_new(&tx_mult, (GxB_binary_function)&tx_mul, tx_edge, tx_edge, tx_edge); + info = GrB_BinaryOp_new(&tx_mult, (GxB_binary_function)&tx_mul, tx_edge, tx_edge, tx_edge); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"tx_mult\" binop\n"); return 1; } - info = GrB_Monoid_new(&tx_monoid, tx_plus, (void *)&tx_edge_id); + info = GrB_Monoid_new(&tx_monoid, tx_plus, (void *)&tx_edge_id); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"tx\" monoud\n"); return 1; } - info = GrB_Semiring_new(&tx_semiring, tx_monoid, tx_mult); + info = GrB_Semiring_new(&tx_semiring, tx_monoid, tx_mult); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"tx\" semiring\n"); @@ -127,25 +136,25 @@ int main() GrB_Monoid owns_monoid; GrB_Semiring owns_semiring; EdgeOwns owns_edge_id; - info = GrB_BinaryOp_new(&owns_plus, (GxB_binary_function)&owns_add, owns_edge, owns_edge, owns_edge); + info = GrB_BinaryOp_new(&owns_plus, (GxB_binary_function)&owns_add, owns_edge, owns_edge, owns_edge); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"owns_plus\" binop\n"); return 1; } - info = GrB_BinaryOp_new(&owns_mult, (GxB_binary_function)&owns_mul, owns_edge, owns_edge, owns_edge); + info = GrB_BinaryOp_new(&owns_mult, (GxB_binary_function)&owns_mul, owns_edge, owns_edge, owns_edge); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"tx_mult\" binop\n"); return 1; } - info = GrB_Monoid_new(&owns_monoid, owns_plus, (void *)&owns_edge_id); + info = GrB_Monoid_new(&owns_monoid, owns_plus, (void *)&owns_edge_id); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"owns\" monoid\n"); return 1; } - info = GrB_Semiring_new(&owns_semiring, owns_monoid, owns_mult); + info = GrB_Semiring_new(&owns_semiring, owns_monoid, owns_mult); // TODO if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"tx\" semiring\n"); @@ -235,9 +244,13 @@ int main() return 1; } + // ------------------------------------------------------------------------ // init vetrices vectors + // ------------------------------------------------------------------------ + GrB_Type user, card; info = GrB_Type_new(&user, sizeof(User)); + if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create \"user\" type\n"); @@ -249,6 +262,7 @@ int main() fprintf(stderr, "failed to create \"card\" type\n"); return 1; } + // 1 - 4 --- users GrB_Vector users; info = GrB_Vector_new(&users, user, VERTICES_NUMBER); @@ -285,7 +299,8 @@ int main() fprintf(stderr, "failed to insert \"user4\" in vector\n"); return 1; } - // // 5 - 9 --- cards + + // 5 - 9 --- cards GrB_Vector cards; info = GrB_Vector_new(&cards, card, VERTICES_NUMBER); if (info != GrB_SUCCESS) @@ -329,72 +344,170 @@ int main() return 1; } - // build filters - // GrB_Index width, height; - // GrB_Matrix_nrows(&height, call_edges_mat); - // GrB_Matrix_ncols(&width, call_edges_mat); + // ------------------------------------------------------------------------ + // build user filters + // ------------------------------------------------------------------------ - // // all matrices are squared so let n be a dimension - // GrB_Index n = width; + // vertex filter: we will take only prersons over 30 and exclude cards with `mastercard` payment system + GrB_Matrix ID; + GrB_Vector v; + info = GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"ID\" vector\n"); + return 1; + } + info = GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign values to \"v\" vector\n"); + return 1; + } - // // vertex filter: we will take only prersons over 30 and exclude cards with `mastercard` payment system - // GrB_Matrix ID; - // GrB_Vector v; - // GrB_Vector_new(&v, GrB_BOOL, n); - // GrB_Vector_assign_BOOL(v, NULL, NULL, true, GrB_ALL, n, NULL); + // create selector + GrB_IndexUnaryOp user_age; + info = GrB_IndexUnaryOp_new(&user_age, (GxB_index_unary_function)&check_user_age, GrB_BOOL, user, GrB_UINT8); // TODO + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"user_age\" unop\n"); + return 1; + } + uint8_t age = 30; + info = GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to select elements from users vector: %d\n", info); + return 1; + } + GxB_print(v, GxB_COMPLETE); + GrB_Matrix v_mat, id_mat; + GrB_Matrix_new(&v_mat, GrB_BOOL,VERTICES_NUMBER,1); + GrB_Col_assign(v_mat,NULL,NULL,v,GrB_ALL,VERTICES_NUMBER,0,NULL); - // GrB_Index size = 0; - // GrB_Index *zeros = malloc(n * sizeof(GrB_Index)); - // // GrB_select !!! - // for (size_t i = 0; i < 4; i++) - // { - // if (users[i].age > 30) - // { - // GrB_Info e = GrB_Vector_setElement_BOOL(v, false, i); - // } - // } + GrB_Vector id; + info = GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); + info = GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); + GrB_Matrix_new(&id_mat, GrB_BOOL,1,VERTICES_NUMBER); + GrB_Row_assign(id_mat,NULL,NULL,id,0,GrB_ALL,VERTICES_NUMBER,NULL); - // free(zeros); - // GrB_Matrix_diag(&ID, v, 0); + GrB_Matrix kron; + GrB_Matrix_new(&kron,GrB_BOOL,VERTICES_NUMBER,VERTICES_NUMBER); + GxB_print(v_mat, GxB_COMPLETE); + GxB_print(id_mat, GxB_COMPLETE); + info = GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); + // info = GrB_Matrix_diag(&ID, v, 0); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create filter matrix %d\n", info); + return 1; + } - // // DEBUG - // printf("filter matrix content: \n"); - // for (GrB_Index i = 0; i < n; i++) + // DEBUG + printf("filter matrix content: \n"); + for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) + for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) + { + bool val; + GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, kron, i, j); + if (info == GrB_SUCCESS) + { + printf("[%lu,%lu] = %d\n", i, j, val); + } + else if (info == GrB_NO_VALUE) + { + printf("[%lu,%lu] no value\n", i, j); + } + else + { + printf("[%lu,%lu] error code: %d\n", i, j, info); + } + } + // for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) // { // bool val; - // GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, ID, i, i); + // GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, kron, i, i); // if (info == GrB_SUCCESS) // { // printf("[%lu,%lu] = %d\n", i, i, val); // } + // else if (info == GrB_NO_VALUE) + // { + // printf("[%lu,%lu] no value\n", i, i); + // } // else // { - // printf("[%lu,%lu] error\n", i, i); + // printf("[%lu,%lu] error code: %d\n", i, i, info); // } // } - // // apply filters - - // // verices filter - // // фильтр только owns фильтруем с одной стороны (исходящие ребра) (поправить рисунок) - // GrB_Matrix owns_mat_filtered; - // // M x ID - // GrB_mxm(owns_mat_filtered,NULL,NULL,GxB_ANY_PAIR_BOOL,call_edges_mat,ID,NULL); - // // ID x M - // GrB_mxm(owns_mat_filtered,NULL,NULL,GxB_ANY_PAIR_BOOL,ID,call_edges_mat,NULL); // A* - // // в итоге получаем ребра исходящие из отобранных пользователем + // ------------------------------------------------------------------------ + // apply user filters + // ------------------------------------------------------------------------ + + // verices filter + // фильтр только owns фильтруем с одной стороны (исходящие ребра) (поправить рисунок) + GrB_Matrix owns_mat_filtered; + GrB_Matrix_new(&owns_mat_filtered,owns_edge,VERTICES_NUMBER,VERTICES_NUMBER); + printf("\nowns edge mat before filter\n"); + for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) + for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) + { + EdgeOwns val; + GrB_Info info = GrB_Matrix_extractElement_UDT(&val, owns_edge_mat, i, j); + if (info == GrB_SUCCESS) + { + printf("[%lu,%lu] = %d\n", i, j, val.days); + } + // else if (info == GrB_NO_VALUE) + // { + // printf("[%lu,%lu] no value\n", i, j); + // } + // else + // { + // printf("[%lu,%lu] error code: %d\n", i, j, info); + // } + } + // apply filter + info = GrB_Matrix_assign(owns_mat_filtered, kron, NULL, owns_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to apply filter to owns matrix %d\n", info); + return 1; + } + printf("\nowns edge mat after filter\n"); + for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) + for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) + { + EdgeOwns val; + GrB_Info info = GrB_Matrix_extractElement_UDT(&val, owns_mat_filtered, i, j); + if (info == GrB_SUCCESS) + { + printf("[%lu,%lu] = %d\n", i, j, val.days); + } + // else if (info == GrB_NO_VALUE) + // { + // printf("[%lu,%lu] no value\n", i, j); + // } + // else + // { + // printf("[%lu,%lu] error code: %d\n", i, j, info); + // } + } + // в итоге получаем ребра исходящие из отобранных пользователем // /*--------------------------- PART 2 --------------------------*/ // теперь нужно взять карты (редукция по строчкам или по столбцам) // редуцируем карты (строим вектор карты, которые относятся к отфильтрованным пользователем ) + // строим ID матрицу + // ID с двух сторон на матрицу транзакций // получили подграф на нужных транзакциях + // теперь строим матрицу для pagerank (пункт ниже). softmax. (посмотреть как можно сделать не по дебильному с помощью GB) /// снова редуцируем по строчкам , получаем знаменатель softmax /// 2 - // build matrix M' // run pagerank } \ No newline at end of file From cbba46435a0fe8b92ac69e207b65ed76c80eeff8 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Sun, 9 Nov 2025 03:29:48 +0300 Subject: [PATCH 09/31] feat: reduce cards for filtered users Signed-off-by: Rodion Suvorov --- src/main.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/src/main.c b/src/main.c index 69df497..3c032f1 100644 --- a/src/main.c +++ b/src/main.c @@ -49,6 +49,10 @@ typedef struct EdgeTX } EdgeTX; // operations TODO TODO TODO !!! +void owns_or_bool(EdgeOwns *z, const EdgeOwns *_x, const EdgeOwns *_y) +{ + *z = *_x; +} void tx_add(EdgeTX *z, EdgeTX *x, EdgeTX *y) { @@ -381,17 +385,17 @@ int main() } GxB_print(v, GxB_COMPLETE); GrB_Matrix v_mat, id_mat; - GrB_Matrix_new(&v_mat, GrB_BOOL,VERTICES_NUMBER,1); - GrB_Col_assign(v_mat,NULL,NULL,v,GrB_ALL,VERTICES_NUMBER,0,NULL); + GrB_Matrix_new(&v_mat, GrB_BOOL, VERTICES_NUMBER, 1); + GrB_Col_assign(v_mat, NULL, NULL, v, GrB_ALL, VERTICES_NUMBER, 0, NULL); GrB_Vector id; info = GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); info = GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); - GrB_Matrix_new(&id_mat, GrB_BOOL,1,VERTICES_NUMBER); - GrB_Row_assign(id_mat,NULL,NULL,id,0,GrB_ALL,VERTICES_NUMBER,NULL); + GrB_Matrix_new(&id_mat, GrB_BOOL, 1, VERTICES_NUMBER); + GrB_Row_assign(id_mat, NULL, NULL, id, 0, GrB_ALL, VERTICES_NUMBER, NULL); GrB_Matrix kron; - GrB_Matrix_new(&kron,GrB_BOOL,VERTICES_NUMBER,VERTICES_NUMBER); + GrB_Matrix_new(&kron, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); GxB_print(v_mat, GxB_COMPLETE); GxB_print(id_mat, GxB_COMPLETE); info = GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); @@ -404,7 +408,7 @@ int main() // DEBUG printf("filter matrix content: \n"); - for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) + for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) { bool val; @@ -447,7 +451,7 @@ int main() // verices filter // фильтр только owns фильтруем с одной стороны (исходящие ребра) (поправить рисунок) GrB_Matrix owns_mat_filtered; - GrB_Matrix_new(&owns_mat_filtered,owns_edge,VERTICES_NUMBER,VERTICES_NUMBER); + GrB_Matrix_new(&owns_mat_filtered, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); printf("\nowns edge mat before filter\n"); for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) @@ -496,9 +500,52 @@ int main() // в итоге получаем ребра исходящие из отобранных пользователем // /*--------------------------- PART 2 --------------------------*/ + GrB_Vector filtered_cards; + info = GrB_Vector_new(&filtered_cards, owns_edge, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create filtered cards vector %d\n", info); + return 1; + } + + GrB_BinaryOp ownsedge_bool; + info = GrB_BinaryOp_new(&ownsedge_bool, (GxB_binary_function)&owns_or_bool, owns_edge, owns_edge, owns_edge); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create binop ownsedge_bool %d\n", info); + return 1; + } + bool identity = false; + GrB_Monoid ownsedge_any_bool; + info = GrB_Monoid_new(&ownsedge_any_bool, ownsedge_bool, (void *)&identity); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create monoid ownsedge_any_bool %d\n", info); + return 1; + } + GxB_print(owns_mat_filtered, GxB_COMPLETE); + info = GrB_Matrix_reduce_Monoid(filtered_cards, NULL, NULL, ownsedge_any_bool, owns_mat_filtered, GrB_DESC_T0); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to filter cards %d\n", info); + return 1; + } + GxB_print(filtered_cards, GxB_COMPLETE); - // теперь нужно взять карты (редукция по строчкам или по столбцам) - // редуцируем карты (строим вектор карты, которые относятся к отфильтрованным пользователем ) + GrB_Vector bool_vec; + info = GrB_Vector_new(&bool_vec, GrB_BOOL, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create id vector for filtered cards %d\n", info); + return 1; + } + info = GrB_assign(bool_vec, filtered_cards, NULL, true, GrB_ALL, VERTICES_NUMBER, GrB_DESC_S); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to fill id vector for filtered cards %d\n", info); + return 1; + } + GxB_print(bool_vec, GxB_COMPLETE); // строим ID матрицу From 0fcc85c77a311da1863e41c7fba923e91d4d70a3 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Sun, 9 Nov 2025 04:02:22 +0300 Subject: [PATCH 10/31] feat: add transactions filter Signed-off-by: Rodion Suvorov --- src/main.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index 3c032f1..49d9605 100644 --- a/src/main.c +++ b/src/main.c @@ -447,9 +447,6 @@ int main() // ------------------------------------------------------------------------ // apply user filters // ------------------------------------------------------------------------ - - // verices filter - // фильтр только owns фильтруем с одной стороны (исходящие ребра) (поправить рисунок) GrB_Matrix owns_mat_filtered; GrB_Matrix_new(&owns_mat_filtered, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); printf("\nowns edge mat before filter\n"); @@ -497,9 +494,13 @@ int main() // printf("[%lu,%lu] error code: %d\n", i, j, info); // } } - // в итоге получаем ребра исходящие из отобранных пользователем // /*--------------------------- PART 2 --------------------------*/ + + // ------------------------------------------------------------------------ + // get cards of filtered users + // ------------------------------------------------------------------------ + GrB_Vector filtered_cards; info = GrB_Vector_new(&filtered_cards, owns_edge, VERTICES_NUMBER); if (info != GrB_SUCCESS) @@ -532,6 +533,10 @@ int main() } GxB_print(filtered_cards, GxB_COMPLETE); + // ------------------------------------------------------------------------ + // build filter for tx matrix + // ------------------------------------------------------------------------ + GrB_Vector bool_vec; info = GrB_Vector_new(&bool_vec, GrB_BOOL, VERTICES_NUMBER); if (info != GrB_SUCCESS) @@ -545,13 +550,130 @@ int main() fprintf(stderr, "failed to fill id vector for filtered cards %d\n", info); return 1; } - GxB_print(bool_vec, GxB_COMPLETE); + // GxB_print(bool_vec, GxB_COMPLETE); + + GrB_Matrix v_mat2, id_mat2; + info = GrB_Matrix_new(&v_mat2, GrB_BOOL, VERTICES_NUMBER, 1); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create v_mat2 matrix %d\n", info); + return 1; + } + info = GrB_Col_assign(v_mat2, NULL, NULL, bool_vec, GrB_ALL, VERTICES_NUMBER, 0, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign col to v_mat2 %d\n", info); + return 1; + } + + GrB_Vector id2; + info = GrB_Vector_new(&id2, GrB_BOOL, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create id2 vector %d\n", info); + return 1; + } + info = GrB_Vector_assign_BOOL(id2, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign bools to id2 mat %d\n", info); + return 1; + } + info = GrB_Matrix_new(&id_mat2, GrB_BOOL, 1, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create id_mat2 %d\n", info); + return 1; + } + info = GrB_Row_assign(id_mat2, NULL, NULL, id2, 0, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign row to id_mat2 %d\n", info); + return 1; + } + + GrB_Matrix kron2, kronT; + info = GrB_Matrix_new(&kron2, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create kron2 %d\n", info); + return 1; + } + info = GrB_Matrix_new(&kronT, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create kronT %d\n", info); + return 1; + } + // GxB_print(v_mat2, GxB_COMPLETE); + // GxB_print(id_mat2, GxB_COMPLETE); + + info = GrB_kronecker(kron2, NULL, NULL, GrB_LAND, v_mat2, id_mat2, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to do kronecker product for kron2 %d\n", info); + return 1; + } + + GrB_Matrix id_matT; + info = GrB_Matrix_new(&id_matT, GrB_BOOL, VERTICES_NUMBER, 1); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create id_matT %d\n", info); + return 1; + } + info = GrB_Col_assign(id_matT, NULL, NULL, id2, GrB_ALL, VERTICES_NUMBER, 0, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign col in id_matT %d\n", info); + return 1; + } + + GrB_Matrix v_matT; + info = GrB_Matrix_new(&v_matT, GrB_BOOL, 1, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create v_matT %d\n", info); + return 1; + } + info = GrB_Row_assign(v_matT, NULL, NULL, bool_vec, 0, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign row to v_matT %d\n", info); + return 1; + } + + info = GrB_kronecker(kronT, NULL, NULL, GrB_LAND, id_matT, v_matT, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to do kronecker product for kronT %d\n", info); + return 1; + } - // строим ID матрицу + // GxB_print(kron2, GxB_COMPLETE); + // GxB_print(kronT, GxB_COMPLETE); - // ID с двух сторон на матрицу транзакций - // получили подграф на нужных транзакциях + // ------------------------------------------------------------------------ + // apply cards filter to tx matrix + // ------------------------------------------------------------------------ + GrB_Matrix tx_mat_filtered; + GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_Matrix_assign(tx_mat_filtered, kron2, NULL, tx_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign kron2 to tx_edge_mat %d\n", info); + return 1; + } + + info = GrB_Matrix_assign(tx_mat_filtered, kronT, NULL, tx_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign kronT to tx_edge_mat %d\n", info); + return 1; + } + GxB_print(tx_mat_filtered, GxB_COMPLETE); + // теперь строим матрицу для pagerank (пункт ниже). softmax. (посмотреть как можно сделать не по дебильному с помощью GB) /// снова редуцируем по строчкам , получаем знаменатель softmax /// 2 From 3903d98db2f3b89fd36cda6cb65ca167d6293bf5 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Sun, 9 Nov 2025 17:40:42 +0300 Subject: [PATCH 11/31] feat: update example image --- data/image.png | Bin 78104 -> 130211 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/image.png b/data/image.png index 0489463d6ac8afb49b142f47f5419d49ba3792ed..175aa0ee1f3022a49f6ad4882f64bbe6e1cb1395 100644 GIT binary patch literal 130211 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 literal 78104 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 From 7099c6a04b33c94de2bcde38f1638017e66abf03 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Mon, 10 Nov 2025 02:55:30 +0300 Subject: [PATCH 12/31] feat: [wip] pagerank matrix preparation Signed-off-by: Rodion Suvorov --- Makefile | 2 +- src/main.c | 535 +++++++++++++++++++++++++++++++++-------------------- 2 files changed, 338 insertions(+), 199 deletions(-) diff --git a/Makefile b/Makefile index 27e7020..cd2c20d 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ clean: rm -rf $(BUILD)/* $(LAGRAPH_BUILD)/* ./build src: mkdir -p build - gcc src/main.c -I./vendor/GraphBLAS/Include -I./vendor/LAGraph/include -L./vendor/LAGraph/build/src -L./vendor/GraphBLAS/build -llagraph -lgraphblas -o build/main + gcc src/main.c -I./vendor/GraphBLAS/Include -I./vendor/LAGraph/include -L./vendor/LAGraph/build/src -L./vendor/GraphBLAS/build -llagraph -lgraphblas -lm -o build/main .PHONY: all build lagraph clean src diff --git a/src/main.c b/src/main.c index 49d9605..1299bb1 100644 --- a/src/main.c +++ b/src/main.c @@ -4,8 +4,7 @@ #include "../vendor/LAGraph/include/LAGraph.h" #include "../vendor/LAGraph/include/LAGraphX.h" -#define VERTICES_NUMBER 9 -#define EDGES_NUBMER 12 +#define VERTICES_NUMBER 12 char msg[LAGRAPH_MSG_LEN]; typedef enum @@ -48,29 +47,60 @@ typedef struct EdgeTX uint32_t count; } EdgeTX; -// operations TODO TODO TODO !!! -void owns_or_bool(EdgeOwns *z, const EdgeOwns *_x, const EdgeOwns *_y) +void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) // EdgeOwns { - *z = *_x; + { + *z = (x->age > *y); + } } -void tx_add(EdgeTX *z, EdgeTX *x, EdgeTX *y) +void owns_bool_mult(bool *z, const bool *x, const EdgeOwns *y) { + *z = *x; } -void tx_mul(EdgeTX *z, EdgeTX *x, EdgeTX *y) + +void owns_bool_add(bool *z, const bool *x, const bool *y) { + *z = (*x || *y); } -void owns_add(EdgeOwns *z, EdgeOwns *x, EdgeOwns *y) + +void tx_bool_mult(EdgeTX *z, const bool *x, const EdgeTX *y) { + if (*x) + *z = *y; + else + z->sum = 0, z->count = 0; } -void owns_mul(EdgeOwns *z, EdgeOwns *x, EdgeOwns *y) + +void tx_bool_mult_right(EdgeTX *z, const EdgeTX *x, const bool *y) { + if (*y) + *z = *x; + else + z->sum = 0, z->count = 0; } -void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) // EdgeOwns + +void tx_bool_add(EdgeTX *z, const EdgeTX *x, const EdgeTX *y) { - { - *z = (x->age > *y); - } + if (x->count > 0 || y->count > 0) + *z = (x->count > 0) ? *x : *y; + else + z->sum = 0, z->count = 0; +} + +void tx_is_nonempty(bool *z, const EdgeTX *x) +{ + *z = (x->count != 0); +} + +void exp_binop(double *z, const double *x) +{ + *z = exp(*x); +} + +void F_op(double *z, const EdgeTX *x) +{ + *z = log(x->sum); } int main() @@ -85,7 +115,6 @@ int main() printf("GraphBLAS initialized.\n"); LAGraph_Init(msg); printf("LAGraph initialized.\n\n"); - // GxB_Global_Option_set(GxB_BURBLE, true); // ------------------------------------------------------------------------ // init edge matrices @@ -106,117 +135,130 @@ int main() return 1; } - // monoid and semiring - GrB_BinaryOp tx_plus, tx_mult; - GrB_Monoid tx_monoid; - GrB_Semiring tx_semiring; - EdgeTX tx_edge_id; - info = GrB_BinaryOp_new(&tx_plus, (GxB_binary_function)&tx_add, tx_edge, tx_edge, tx_edge); // TODO + // edge decomposition + + GrB_Matrix tx_edge_mat, owns_edge_mat; + info = GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx_plus\" binop\n"); + fprintf(stderr, "failed to create \"tx\" matrix\n"); return 1; } - info = GrB_BinaryOp_new(&tx_mult, (GxB_binary_function)&tx_mul, tx_edge, tx_edge, tx_edge); // TODO + info = GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx_mult\" binop\n"); + fprintf(stderr, "failed to create \"owns\" matrix\n"); return 1; } - info = GrB_Monoid_new(&tx_monoid, tx_plus, (void *)&tx_edge_id); // TODO + + // fill tx_mat + EdgeTX edge56 = {2223412.0, 56}; + EdgeTX edge59 = {6223412.0, 59}; + EdgeTX edge67 = {8913212.0, 67}; + EdgeTX edge69 = {92223412.0, 69}; + EdgeTX edge65 = {133214.1, 65}; + EdgeTX edge95 = {1267325.99, 95}; + EdgeTX edge611 = {1999999.1, 611}; + EdgeTX edge116 = {6999999.1, 116}; + EdgeTX edge511 = {9999999.1, 511}; + EdgeTX edge115 = {8999999.1, 115}; + EdgeTX edge127 = {8999999.1, 127}; + EdgeTX edge712 = {8999999.1, 712}; + EdgeTX edge912 = {899999999.1, 912}; + EdgeTX edge129 = {99999999.1, 129}; + + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge56, 4, 5); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx\" monoud\n"); + fprintf(stderr, "failed to insert \"edge56\" in matrix\n"); return 1; } - info = GrB_Semiring_new(&tx_semiring, tx_monoid, tx_mult); // TODO + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge59, 4, 8); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx\" semiring\n"); + fprintf(stderr, "failed to insert \"edge59\" in matrix\n"); return 1; } - - GrB_BinaryOp owns_plus, owns_mult; - GrB_Monoid owns_monoid; - GrB_Semiring owns_semiring; - EdgeOwns owns_edge_id; - info = GrB_BinaryOp_new(&owns_plus, (GxB_binary_function)&owns_add, owns_edge, owns_edge, owns_edge); // TODO + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge67, 5, 6); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"owns_plus\" binop\n"); + fprintf(stderr, "failed to insert \"edge67\" in matrix\n"); return 1; } - info = GrB_BinaryOp_new(&owns_mult, (GxB_binary_function)&owns_mul, owns_edge, owns_edge, owns_edge); // TODO + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge69, 5, 8); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx_mult\" binop\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Monoid_new(&owns_monoid, owns_plus, (void *)&owns_edge_id); // TODO + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge65, 5, 4); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"owns\" monoid\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Semiring_new(&owns_semiring, owns_monoid, owns_mult); // TODO + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge95, 8, 4); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx\" semiring\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - - // edge decomposition - - GrB_Matrix tx_edge_mat, owns_edge_mat; - info = GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge611, 5, 10); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"tx\" matrix\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge116, 10, 5); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create \"owns\" matrix\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - - // fill tx_mat - EdgeTX edge56 = {56, 2223412.0}; - EdgeTX edge59 = {59, 6223412.0}; - EdgeTX edge67 = {67, 8913212.0}; - EdgeTX edge69 = {69, 92223412.0}; - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge56, 4, 5); + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge511, 4, 10); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to insert \"edge56\" in matrix\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge59, 4, 8); + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge115, 10, 4); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to insert \"edge59\" in matrix\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge67, 5, 6); + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge127, 11, 6); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to insert \"edge67\" in matrix\n"); + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge69, 5, 8); + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge712, 6, 11); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge912, 8, 11); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge129, 11, 8); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - // fill owns_mat EdgeOwns edge45 = {45}; EdgeOwns edge36 = {36}; EdgeOwns edge19 = {19}; EdgeOwns edge27 = {27}; EdgeOwns edge28 = {28}; + EdgeOwns edge1011 = {21}; + EdgeOwns edge1012 = {22}; info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge45, 3, 4); if (info != GrB_SUCCESS) { @@ -247,9 +289,21 @@ int main() fprintf(stderr, "failed to insert \"edge28\" in matrix\n"); return 1; } + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge1011, 9, 10); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge1011\" in matrix\n"); + return 1; + } + info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge1012, 9, 11); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"edge1011\" in matrix\n"); + return 1; + } // ------------------------------------------------------------------------ - // init vetrices vectors + // init vertices vectors // ------------------------------------------------------------------------ GrB_Type user, card; @@ -267,7 +321,7 @@ int main() return 1; } - // 1 - 4 --- users + // 1 - 4 & 10 --- users GrB_Vector users; info = GrB_Vector_new(&users, user, VERTICES_NUMBER); if (info != GrB_SUCCESS) @@ -275,10 +329,11 @@ int main() fprintf(stderr, "failed to create \"users\" vector\n"); return 1; } - User user1 = {MALE, 25}; - User user2 = {MALE, 52}; - User user3 = {FEMALE, 19}; + User user1 = {MALE, 52}; + User user2 = {MALE, 25}; + User user3 = {FEMALE, 40}; User user4 = {MALE, 42}; + User user10 = {MALE, 35}; info = GrB_Vector_setElement_UDT(users, &user1, 0); if (info != GrB_SUCCESS) { @@ -303,8 +358,14 @@ int main() fprintf(stderr, "failed to insert \"user4\" in vector\n"); return 1; } + info = GrB_Vector_setElement_UDT(users, &user10, 9); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"user4\" in vector\n"); + return 1; + } - // 5 - 9 --- cards + // 5 - 9 & 11 - 12 --- cards GrB_Vector cards; info = GrB_Vector_new(&cards, card, VERTICES_NUMBER); if (info != GrB_SUCCESS) @@ -317,6 +378,8 @@ int main() Card card7 = {VISA, 800000.0}; Card card8 = {MASTERCARD, 900000.0}; Card card9 = {MASTERCARD, 10000000.0}; + Card card11 = {MASTERCARD, 99000000.0}; + Card card12 = {MASTERCARD, 99000000.0}; info = GrB_Vector_setElement_UDT(cards, &card5, 4); if (info != GrB_SUCCESS) { @@ -347,6 +410,18 @@ int main() fprintf(stderr, "failed to insert \"card9\" in vector\n"); return 1; } + info = GrB_Vector_setElement_UDT(cards, &card11, 10); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card9\" in vector\n"); + return 1; + } + info = GrB_Vector_setElement_UDT(cards, &card12, 11); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to insert \"card9\" in vector\n"); + return 1; + } // ------------------------------------------------------------------------ // build user filters @@ -384,27 +459,27 @@ int main() return 1; } GxB_print(v, GxB_COMPLETE); - GrB_Matrix v_mat, id_mat; - GrB_Matrix_new(&v_mat, GrB_BOOL, VERTICES_NUMBER, 1); - GrB_Col_assign(v_mat, NULL, NULL, v, GrB_ALL, VERTICES_NUMBER, 0, NULL); - - GrB_Vector id; - info = GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); - info = GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); - GrB_Matrix_new(&id_mat, GrB_BOOL, 1, VERTICES_NUMBER); - GrB_Row_assign(id_mat, NULL, NULL, id, 0, GrB_ALL, VERTICES_NUMBER, NULL); - - GrB_Matrix kron; - GrB_Matrix_new(&kron, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); - GxB_print(v_mat, GxB_COMPLETE); - GxB_print(id_mat, GxB_COMPLETE); - info = GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); - // info = GrB_Matrix_diag(&ID, v, 0); + info = GrB_Matrix_diag(&ID, v, 0); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create filter matrix %d\n", info); return 1; } + // GrB_Matrix v_mat, id_mat; + // GrB_Matrix_new(&v_mat, GrB_BOOL, VERTICES_NUMBER, 1); + // GrB_Col_assign(v_mat, NULL, NULL, v, GrB_ALL, VERTICES_NUMBER, 0, NULL); + + // GrB_Vector id; + // info = GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); + // info = GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); + // GrB_Matrix_new(&id_mat, GrB_BOOL, 1, VERTICES_NUMBER); + // GrB_Row_assign(id_mat, NULL, NULL, id, 0, GrB_ALL, VERTICES_NUMBER, NULL); + + // GrB_Matrix kron; + // GrB_Matrix_new(&kron, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); + // // GxB_print(v_mat, GxB_COMPLETE); + // // GxB_print(id_mat, GxB_COMPLETE); + // info = GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); // DEBUG printf("filter matrix content: \n"); @@ -412,19 +487,19 @@ int main() for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) { bool val; - GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, kron, i, j); + GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, ID, i, j); if (info == GrB_SUCCESS) { printf("[%lu,%lu] = %d\n", i, j, val); } - else if (info == GrB_NO_VALUE) - { - printf("[%lu,%lu] no value\n", i, j); - } - else - { - printf("[%lu,%lu] error code: %d\n", i, j, info); - } + // else if (info == GrB_NO_VALUE) + // { + // printf("[%lu,%lu] no value\n", i, j); + // } + // else + // { + // printf("[%lu,%lu] error code: %d\n", i, j, info); + // } } // for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) // { @@ -447,8 +522,39 @@ int main() // ------------------------------------------------------------------------ // apply user filters // ------------------------------------------------------------------------ + GrB_BinaryOp bool_add_op; + info = GrB_BinaryOp_new(&bool_add_op, (GxB_binary_function)&owns_bool_add, GrB_BOOL, GrB_BOOL, GrB_BOOL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create owns bool add binop %d\n", info); + return 1; + } + GrB_BinaryOp owns_bool_mul_op; + info = GrB_BinaryOp_new(&owns_bool_mul_op, (GxB_binary_function)&owns_bool_mult, GrB_BOOL, GrB_BOOL, owns_edge); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create owns bool mul binop %d\n", info); + return 1; + } + + GrB_Monoid owns_bool_monoid; + bool owns_bool_identity = false; + info = GrB_Monoid_new_BOOL(&owns_bool_monoid, bool_add_op, (void *)&owns_bool_identity); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create owns bool monoid %d\n", info); + return 1; + } + + // GrB_Monoid any_monoid; + // EdgeOwns ownsID = {1}; + // GrB_Monoid_new_UDT(&any_monoid, any_op, (void *)&ownsID); + + GrB_Semiring owns_semiring_bool; + GrB_Semiring_new(&owns_semiring_bool, owns_bool_monoid, owns_bool_mul_op); + GrB_Matrix owns_mat_filtered; - GrB_Matrix_new(&owns_mat_filtered, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); + GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); printf("\nowns edge mat before filter\n"); for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) @@ -469,7 +575,8 @@ int main() // } } // apply filter - info = GrB_Matrix_assign(owns_mat_filtered, kron, NULL, owns_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + // info = GrB_Matrix_assign(owns_mat_filtered, kron, NULL, owns_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + info = GrB_mxm(owns_mat_filtered, NULL, NULL, owns_semiring_bool, ID, owns_edge_mat, NULL); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to apply filter to owns matrix %d\n", info); @@ -495,188 +602,220 @@ int main() // } } - // /*--------------------------- PART 2 --------------------------*/ - // ------------------------------------------------------------------------ // get cards of filtered users // ------------------------------------------------------------------------ - + GrB_Vector filtered_cards; - info = GrB_Vector_new(&filtered_cards, owns_edge, VERTICES_NUMBER); + info = GrB_Vector_new(&filtered_cards, GrB_BOOL, VERTICES_NUMBER); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to create filtered cards vector %d\n", info); return 1; } - - GrB_BinaryOp ownsedge_bool; - info = GrB_BinaryOp_new(&ownsedge_bool, (GxB_binary_function)&owns_or_bool, owns_edge, owns_edge, owns_edge); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create binop ownsedge_bool %d\n", info); - return 1; - } - bool identity = false; - GrB_Monoid ownsedge_any_bool; - info = GrB_Monoid_new(&ownsedge_any_bool, ownsedge_bool, (void *)&identity); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create monoid ownsedge_any_bool %d\n", info); - return 1; - } GxB_print(owns_mat_filtered, GxB_COMPLETE); - info = GrB_Matrix_reduce_Monoid(filtered_cards, NULL, NULL, ownsedge_any_bool, owns_mat_filtered, GrB_DESC_T0); + info = GrB_Matrix_reduce_Monoid(filtered_cards, NULL, NULL, GrB_LOR_MONOID_BOOL, owns_mat_filtered, GrB_DESC_T0); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to filter cards %d\n", info); return 1; } - GxB_print(filtered_cards, GxB_COMPLETE); // ------------------------------------------------------------------------ // build filter for tx matrix // ------------------------------------------------------------------------ - - GrB_Vector bool_vec; - info = GrB_Vector_new(&bool_vec, GrB_BOOL, VERTICES_NUMBER); + GrB_Matrix_free(&ID); + info = GrB_Matrix_diag(&ID, filtered_cards, 0); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create id vector for filtered cards %d\n", info); - return 1; - } - info = GrB_assign(bool_vec, filtered_cards, NULL, true, GrB_ALL, VERTICES_NUMBER, GrB_DESC_S); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to fill id vector for filtered cards %d\n", info); + fprintf(stderr, "failed to create filter matrix %d\n", info); return 1; } - // GxB_print(bool_vec, GxB_COMPLETE); + GxB_print(ID, GxB_COMPLETE); - GrB_Matrix v_mat2, id_mat2; - info = GrB_Matrix_new(&v_mat2, GrB_BOOL, VERTICES_NUMBER, 1); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create v_mat2 matrix %d\n", info); - return 1; - } - info = GrB_Col_assign(v_mat2, NULL, NULL, bool_vec, GrB_ALL, VERTICES_NUMBER, 0, NULL); + // ------------------------------------------------------------------------ + // apply cards filter to tx matrix + // ------------------------------------------------------------------------ + + GrB_BinaryOp tx_bool_add_op; + info = GrB_BinaryOp_new(&tx_bool_add_op, + (GxB_binary_function)&tx_bool_add, + tx_edge, + tx_edge, + tx_edge); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to assign col to v_mat2 %d\n", info); + fprintf(stderr, "failed to create tx bool add binop %d\n", info); return 1; } - GrB_Vector id2; - info = GrB_Vector_new(&id2, GrB_BOOL, VERTICES_NUMBER); + GrB_BinaryOp tx_bool_mul_op; + info = GrB_BinaryOp_new(&tx_bool_mul_op, + (GxB_binary_function)&tx_bool_mult, + tx_edge, + GrB_BOOL, + tx_edge); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create id2 vector %d\n", info); + fprintf(stderr, "failed to create tx bool mul binop %d\n", info); return 1; } - info = GrB_Vector_assign_BOOL(id2, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); + + EdgeTX tx_identity = {0.0, 0}; + GrB_Monoid tx_bool_monoid; + info = GrB_Monoid_new_UDT(&tx_bool_monoid, tx_bool_add_op, &tx_identity); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to assign bools to id2 mat %d\n", info); + fprintf(stderr, "failed to create tx bool monoid %d\n", info); return 1; } - info = GrB_Matrix_new(&id_mat2, GrB_BOOL, 1, VERTICES_NUMBER); + + GrB_Semiring tx_bool_semiring; + info = GrB_Semiring_new(&tx_bool_semiring, tx_bool_monoid, tx_bool_mul_op); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create id_mat2 %d\n", info); + fprintf(stderr, "failed to create tx bool semiring %d\n", info); return 1; } - info = GrB_Row_assign(id_mat2, NULL, NULL, id2, 0, GrB_ALL, VERTICES_NUMBER, NULL); + + GrB_BinaryOp tx_bool_mul_right_op; + info = GrB_BinaryOp_new(&tx_bool_mul_right_op, + (GxB_binary_function)&tx_bool_mult_right, + tx_edge, + tx_edge, + GrB_BOOL); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to assign row to id_mat2 %d\n", info); + fprintf(stderr, "failed to create tx right binop %d\n", info); return 1; } - GrB_Matrix kron2, kronT; - info = GrB_Matrix_new(&kron2, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); + GrB_Semiring tx_bool_semiring_right; + info = GrB_Semiring_new(&tx_bool_semiring_right, tx_bool_monoid, tx_bool_mul_right_op); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create kron2 %d\n", info); + fprintf(stderr, "failed to create tx right semiring %d\n", info); return 1; } - info = GrB_Matrix_new(&kronT, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); + GrB_Matrix tx_mat_filtered; + GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_mxm(tx_mat_filtered, NULL, NULL, tx_bool_semiring, ID, tx_edge_mat, NULL); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to create kronT %d\n", info); + fprintf(stderr, "failed to apply1 filter to tx matrix %d\n", info); return 1; } - // GxB_print(v_mat2, GxB_COMPLETE); - // GxB_print(id_mat2, GxB_COMPLETE); - - info = GrB_kronecker(kron2, NULL, NULL, GrB_LAND, v_mat2, id_mat2, NULL); + GrB_Matrix tx_mat_filtered2; + GrB_Matrix_new(&tx_mat_filtered2, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_mxm(tx_mat_filtered2, NULL, NULL, tx_bool_semiring_right, tx_mat_filtered, ID, NULL); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to do kronecker product for kron2 %d\n", info); + fprintf(stderr, "failed to apply2 filter to tx matrix %d\n", info); return 1; } - GrB_Matrix id_matT; - info = GrB_Matrix_new(&id_matT, GrB_BOOL, VERTICES_NUMBER, 1); + GxB_print(tx_mat_filtered2, GxB_COMPLETE); + printf("Non-zero edges in tx_mat_filtered2:\n"); + for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) + for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) + { + EdgeTX val; + if (GrB_Matrix_extractElement_UDT(&val, tx_mat_filtered2, i, j) == GrB_SUCCESS) + { + if (val.count > 0) + printf("(%lu,%lu): sum=%.1f count=%u\n", i, j, val.sum, val.count); + } + } + GrB_UnaryOp tx_is_nonempty_op; + info = GxB_UnaryOp_new(&tx_is_nonempty_op, + (GxB_unary_function)&tx_is_nonempty, + GrB_BOOL, + tx_edge, NULL, NULL); if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create id_matT %d\n", info); - return 1; + { /* handle */ } - info = GrB_Col_assign(id_matT, NULL, NULL, id2, GrB_ALL, VERTICES_NUMBER, 0, NULL); + + GrB_Matrix keep; + info = GrB_Matrix_new(&keep, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign col in id_matT %d\n", info); - return 1; + { /* handle */ } - GrB_Matrix v_matT; - info = GrB_Matrix_new(&v_matT, GrB_BOOL, 1, VERTICES_NUMBER); + info = GrB_apply(keep, NULL, NULL, tx_is_nonempty_op, tx_mat_filtered2, NULL); if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create v_matT %d\n", info); - return 1; + { /* handle */ } - info = GrB_Row_assign(v_matT, NULL, NULL, bool_vec, 0, GrB_ALL, VERTICES_NUMBER, NULL); + GxB_print(keep, GxB_COMPLETE); + GrB_Matrix tx_clean; + info = GrB_Matrix_new(&tx_clean, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign row to v_matT %d\n", info); - return 1; + { /* handle */ } - info = GrB_kronecker(kronT, NULL, NULL, GrB_LAND, id_matT, v_matT, NULL); + info = GrB_assign(tx_clean, keep, NULL, + tx_mat_filtered2, + GrB_ALL, VERTICES_NUMBER, + GrB_ALL, VERTICES_NUMBER, + NULL); if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to do kronecker product for kronT %d\n", info); - return 1; + { /* handle */ } - // GxB_print(kron2, GxB_COMPLETE); - // GxB_print(kronT, GxB_COMPLETE); + GxB_print(tx_clean, GxB_COMPLETE); // ------------------------------------------------------------------------ - // apply cards filter to tx matrix + // build matrix for pagerank // ------------------------------------------------------------------------ - GrB_Matrix tx_mat_filtered; - GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); - info = GrB_Matrix_assign(tx_mat_filtered, kron2, NULL, tx_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign kron2 to tx_edge_mat %d\n", info); - return 1; - } + + // apply some F function to every element of result EdgeTX matrix (Fmat) + GrB_UnaryOp mean_op; + info = GrB_UnaryOp_new(&mean_op, (GxB_unary_function)&F_op, GrB_FP64, tx_edge); + GrB_Matrix Fmat; + info = GrB_Matrix_new(&Fmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_Matrix_apply(Fmat, NULL, NULL, mean_op, tx_clean, NULL); + GxB_print(Fmat, GxB_COMPLETE); + + // apply exp function to every element of every element of matrix (lEXPmat) + GrB_Matrix EXPmat; + GrB_UnaryOp exp_op; + info = GrB_UnaryOp_new(&exp_op, (GxB_unary_function)&exp_binop, GrB_FP64, GrB_FP64); + info = GrB_Matrix_new(&EXPmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); + info = GrB_Matrix_apply(EXPmat, NULL, NULL, exp_op, Fmat, NULL); + GxB_print(EXPmat, GxB_COMPLETE); + + // reduce EXPmat and receive vector of rows sum (EXPSUMvec) + GrB_Vector EXPSUMvec; + info = GrB_Vector_new(&EXPSUMvec,GrB_FP64,VERTICES_NUMBER); + info = GrB_Matrix_reduce_Monoid(EXPSUMvec,NULL,NULL,GrB_PLUS_MONOID_FP64,EXPmat,NULL); + GxB_print(EXPSUMvec, GxB_COMPLETE); + + // do masked kroneker (mask: EXPmat, A: EXPSUMvec, B: ID vector) (KRONEXPSUMmat) + GrB_Matrix KRONEXPSUMmat; + GrB_Vector id_final; + info = GrB_Vector_new(&id_final,GrB_FP64,VERTICES_NUMBER); + info = GrB_Vector_assign_BOOL(v, NULL, NULL, 1.0, GrB_ALL, VERTICES_NUMBER, NULL); + - info = GrB_Matrix_assign(tx_mat_filtered, kronT, NULL, tx_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + + // define add operation (A + B = A / B) (divv) + + // apply divv to (EXPmat and KRONEXPSUMmat) (M) + GrB_Matrix M; + // ------------------------------------------------------------------------ + // run pagerank + // ------------------------------------------------------------------------ + int iteraions = 0; + GrB_Vector pagerank_ans; + GrB_Vector_new(&pagerank_ans, GrB_FP64, VERTICES_NUMBER); + + LAGraph_Graph G = NULL; + + info = LAGraph_New(&G, &M, LAGraph_ADJACENCY_DIRECTED, msg); if (info != GrB_SUCCESS) { - fprintf(stderr, "failed to assign kronT to tx_edge_mat %d\n", info); + fprintf(stderr, "failed to create LAGraph_Graph: %d\n", info); return 1; } - GxB_print(tx_mat_filtered, GxB_COMPLETE); - - // теперь строим матрицу для pagerank (пункт ниже). softmax. (посмотреть как можно сделать не по дебильному с помощью GB) - /// снова редуцируем по строчкам , получаем знаменатель softmax - /// 2 - - // run pagerank + LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg); } \ No newline at end of file From d09ada0556639dc2ae628e0fefc455b7c97ccf89 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Mon, 10 Nov 2025 04:40:00 +0300 Subject: [PATCH 13/31] feat: implement fully working pagerank algoithm --- src/main.c | 342 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 218 insertions(+), 124 deletions(-) diff --git a/src/main.c b/src/main.c index 1299bb1..ec985a8 100644 --- a/src/main.c +++ b/src/main.c @@ -102,56 +102,14 @@ void F_op(double *z, const EdgeTX *x) { *z = log(x->sum); } - -int main() +void divide(double *z, const double *x, const double *y) { - // init graphblas - GrB_Info info = GrB_init(GrB_NONBLOCKING); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "GraphBLAS init failed\n"); - return 1; - } - printf("GraphBLAS initialized.\n"); - LAGraph_Init(msg); - printf("LAGraph initialized.\n\n"); - - // ------------------------------------------------------------------------ - // init edge matrices - // ------------------------------------------------------------------------ - - // custom types for edges - GrB_Type tx_edge, owns_edge; - info = GrB_Type_new(&tx_edge, sizeof(EdgeTX)); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"tx_edge\" type\n"); - return 1; - } - info = GrB_Type_new(&owns_edge, sizeof(EdgeOwns)); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"tx_edge\" type\n"); - return 1; - } - - // edge decomposition - - GrB_Matrix tx_edge_mat, owns_edge_mat; - info = GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"tx\" matrix\n"); - return 1; - } - info = GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"owns\" matrix\n"); - return 1; - } + *z = (*y != 0.0) ? (*x / *y) : 0.0; +} - // fill tx_mat +GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) +{ + GrB_Info info; EdgeTX edge56 = {2223412.0, 56}; EdgeTX edge59 = {6223412.0, 59}; EdgeTX edge67 = {8913212.0, 67}; @@ -167,85 +125,85 @@ int main() EdgeTX edge912 = {899999999.1, 912}; EdgeTX edge129 = {99999999.1, 129}; - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge56, 4, 5); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge56, 4, 5); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge56\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge59, 4, 8); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge59, 4, 8); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge59\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge67, 5, 6); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge67, 5, 6); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge67\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge69, 5, 8); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge69, 5, 8); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge65, 5, 4); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge65, 5, 4); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge95, 8, 4); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge95, 8, 4); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge611, 5, 10); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge611, 5, 10); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge116, 10, 5); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge116, 10, 5); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge511, 4, 10); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge511, 4, 10); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge115, 10, 4); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge115, 10, 4); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge127, 11, 6); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge127, 11, 6); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge712, 6, 11); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge712, 6, 11); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge912, 8, 11); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge912, 8, 11); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(tx_edge_mat, &edge129, 11, 8); + info = GrB_Matrix_setElement_UDT(*tx_mat, &edge129, 11, 8); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); @@ -259,120 +217,91 @@ int main() EdgeOwns edge28 = {28}; EdgeOwns edge1011 = {21}; EdgeOwns edge1012 = {22}; - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge45, 3, 4); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge45, 3, 4); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge45\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge36, 2, 5); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge36, 2, 5); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge36\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge19, 0, 8); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge19, 0, 8); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge19\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge27, 1, 6); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge27, 1, 6); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge27\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge28, 1, 7); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge28, 1, 7); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge28\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge1011, 9, 10); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge1011, 9, 10); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge1011\" in matrix\n"); return 1; } - info = GrB_Matrix_setElement_UDT(owns_edge_mat, &edge1012, 9, 11); + info = GrB_Matrix_setElement_UDT(*owns_mat, &edge1012, 9, 11); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge1011\" in matrix\n"); return 1; } + return info; +} - // ------------------------------------------------------------------------ - // init vertices vectors - // ------------------------------------------------------------------------ - - GrB_Type user, card; - info = GrB_Type_new(&user, sizeof(User)); - - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"user\" type\n"); - return 1; - } - info = GrB_Type_new(&card, sizeof(Card)); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"card\" type\n"); - return 1; - } - +GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) +{ + GrB_Info info; // 1 - 4 & 10 --- users - GrB_Vector users; - info = GrB_Vector_new(&users, user, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"users\" vector\n"); - return 1; - } User user1 = {MALE, 52}; User user2 = {MALE, 25}; User user3 = {FEMALE, 40}; User user4 = {MALE, 42}; User user10 = {MALE, 35}; - info = GrB_Vector_setElement_UDT(users, &user1, 0); + info = GrB_Vector_setElement_UDT(*users, &user1, 0); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"user1\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(users, &user2, 1); + info = GrB_Vector_setElement_UDT(*users, &user2, 1); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"edge2\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(users, &user3, 2); + info = GrB_Vector_setElement_UDT(*users, &user3, 2); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"user3\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(users, &user4, 3); + info = GrB_Vector_setElement_UDT(*users, &user4, 3); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"user4\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(users, &user10, 9); + info = GrB_Vector_setElement_UDT(*users, &user10, 9); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"user4\" in vector\n"); return 1; } - // 5 - 9 & 11 - 12 --- cards - GrB_Vector cards; - info = GrB_Vector_new(&cards, card, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"cards\" vector\n"); - return 1; - } Card card5 = {MIR, 600000.0}; Card card6 = {MIR, 700000.0}; Card card7 = {VISA, 800000.0}; @@ -380,54 +309,145 @@ int main() Card card9 = {MASTERCARD, 10000000.0}; Card card11 = {MASTERCARD, 99000000.0}; Card card12 = {MASTERCARD, 99000000.0}; - info = GrB_Vector_setElement_UDT(cards, &card5, 4); + info = GrB_Vector_setElement_UDT(*cards, &card5, 4); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card5\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(cards, &card6, 5); + info = GrB_Vector_setElement_UDT(*cards, &card6, 5); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card6\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(cards, &card7, 6); + info = GrB_Vector_setElement_UDT(*cards, &card7, 6); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card7\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(cards, &card8, 7); + info = GrB_Vector_setElement_UDT(*cards, &card8, 7); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card8\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(cards, &card9, 8); + info = GrB_Vector_setElement_UDT(*cards, &card9, 8); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card9\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(cards, &card11, 10); + info = GrB_Vector_setElement_UDT(*cards, &card11, 10); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card9\" in vector\n"); return 1; } - info = GrB_Vector_setElement_UDT(cards, &card12, 11); + info = GrB_Vector_setElement_UDT(*cards, &card12, 11); if (info != GrB_SUCCESS) { fprintf(stderr, "failed to insert \"card9\" in vector\n"); return 1; } + return info; +} + +int main() +{ + // init graphblas + GrB_Info info = GrB_init(GrB_NONBLOCKING); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "GraphBLAS init failed\n"); + return 1; + } + printf("GraphBLAS initialized.\n"); + LAGraph_Init(msg); + printf("LAGraph initialized.\n\n"); + // ------------------------------------------------------------------------ + // init edge matrices + // ------------------------------------------------------------------------ + + // custom types for edges + GrB_Type tx_edge, owns_edge; + info = GrB_Type_new(&tx_edge, sizeof(EdgeTX)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_edge\" type\n"); + return 1; + } + info = GrB_Type_new(&owns_edge, sizeof(EdgeOwns)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx_edge\" type\n"); + return 1; + } + + // edge decomposition + + GrB_Matrix tx_edge_mat, owns_edge_mat; + info = GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"tx\" matrix\n"); + return 1; + } + info = GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"owns\" matrix\n"); + return 1; + } + info = init_edges(&tx_edge_mat, &owns_edge_mat); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed TODODODOO to create \"owns\" matrix\n"); + return 1; + } + + // ------------------------------------------------------------------------ + // init vertices vectors + // ------------------------------------------------------------------------ + + GrB_Type user, card; + info = GrB_Type_new(&user, sizeof(User)); + + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"user\" type\n"); + return 1; + } + info = GrB_Type_new(&card, sizeof(Card)); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"card\" type\n"); + return 1; + } + + GrB_Vector users; + info = GrB_Vector_new(&users, user, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"users\" vector\n"); + return 1; + } + + GrB_Vector cards; + info = GrB_Vector_new(&cards, card, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create \"cards\" vector\n"); + return 1; + } + info = init_vertices(&users, &cards); // ------------------------------------------------------------------------ // build user filters // ------------------------------------------------------------------------ - // vertex filter: we will take only prersons over 30 and exclude cards with `mastercard` payment system + // vertex filter: we will take only prersons over 30 GrB_Matrix ID; GrB_Vector v; info = GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER); @@ -785,22 +805,77 @@ int main() // reduce EXPmat and receive vector of rows sum (EXPSUMvec) GrB_Vector EXPSUMvec; - info = GrB_Vector_new(&EXPSUMvec,GrB_FP64,VERTICES_NUMBER); - info = GrB_Matrix_reduce_Monoid(EXPSUMvec,NULL,NULL,GrB_PLUS_MONOID_FP64,EXPmat,NULL); + info = GrB_Vector_new(&EXPSUMvec, GrB_FP64, VERTICES_NUMBER); + info = GrB_Matrix_reduce_Monoid(EXPSUMvec, NULL, NULL, GrB_PLUS_MONOID_FP64, EXPmat, NULL); GxB_print(EXPSUMvec, GxB_COMPLETE); // do masked kroneker (mask: EXPmat, A: EXPSUMvec, B: ID vector) (KRONEXPSUMmat) - GrB_Matrix KRONEXPSUMmat; + GrB_Vector id_final; - info = GrB_Vector_new(&id_final,GrB_FP64,VERTICES_NUMBER); - info = GrB_Vector_assign_BOOL(v, NULL, NULL, 1.0, GrB_ALL, VERTICES_NUMBER, NULL); - - + info = GrB_Vector_new(&id_final, GrB_FP64, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create id_final %d\n", info); + return 1; + } + info = GrB_Vector_assign_BOOL(id_final, NULL, NULL, 1.0, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign 1.0 into id-final %d\n", info); + return 1; + } + GrB_Matrix v_mat, id_mat; + info = GrB_Matrix_new(&v_mat, GrB_FP64, VERTICES_NUMBER, 1); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create v_mat matrix %d\n", info); + return 1; + } + info = GrB_Col_assign(v_mat, NULL, NULL, EXPSUMvec, GrB_ALL, VERTICES_NUMBER, 0, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign col into v_mat %d\n", info); + return 1; + } + + info = GrB_Matrix_new(&id_mat, GrB_FP64, 1, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create id_mat matrix %d\n", info); + return 1; + } + info = GrB_Row_assign(id_mat, NULL, NULL, id_final, 0, GrB_ALL, VERTICES_NUMBER, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to assign row into id_mat %d\n", info); + return 1; + } + + GrB_Matrix KRONEXPSUMmat; + info = GrB_Matrix_new(&KRONEXPSUMmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to create kron matrix %d\n", info); + return 1; + } + + info = GrB_mxm(KRONEXPSUMmat, NULL, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to do kron matrix %d\n", info); + return 1; + } + GxB_print(KRONEXPSUMmat, GxB_COMPLETE); // define add operation (A + B = A / B) (divv) // apply divv to (EXPmat and KRONEXPSUMmat) (M) GrB_Matrix M; + GrB_Matrix_new(&M, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); + GrB_BinaryOp divide_op; + GrB_BinaryOp_new(÷_op, (GxB_binary_function)÷, GrB_FP64, GrB_FP64, GrB_FP64); + GrB_Matrix_eWiseAdd_BinaryOp(M, EXPmat, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL); + GxB_print(M, GxB_COMPLETE); // ------------------------------------------------------------------------ // run pagerank // ------------------------------------------------------------------------ @@ -816,6 +891,25 @@ int main() fprintf(stderr, "failed to create LAGraph_Graph: %d\n", info); return 1; } + info = LAGraph_Cached_AT(G, msg); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to cache AT: %d %s\n", info, msg); + return 1; + } - LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg); + info = LAGraph_Cached_OutDegree(G, msg); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to cache out degree: %d %s\n", info, msg); + return 1; + } + + info = LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg); + if (info != GrB_SUCCESS) + { + fprintf(stderr, "failed to do pagerank: %d %s\n", info, msg); + return 1; + } + GxB_print(pagerank_ans, GxB_COMPLETE); } \ No newline at end of file From abf7b38d1f359892b3d43628312249be32bbc707 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Mon, 10 Nov 2025 05:10:10 +0300 Subject: [PATCH 14/31] refactor: get rid of if-err-!=-nil-driven-development --- src/main.c | 636 ++++++++++------------------------------------------- 1 file changed, 121 insertions(+), 515 deletions(-) diff --git a/src/main.c b/src/main.c index ec985a8..342f49e 100644 --- a/src/main.c +++ b/src/main.c @@ -4,6 +4,18 @@ #include "../vendor/LAGraph/include/LAGraph.h" #include "../vendor/LAGraph/include/LAGraphX.h" +#define TRY(method) \ + { \ + GrB_Info _info = (method); \ + if (_info != GrB_SUCCESS) \ + { \ + fprintf(stderr, \ + #method " : GraphBLAS error %d \n", \ + _info); \ + return _info; \ + } \ + } + #define VERTICES_NUMBER 12 char msg[LAGRAPH_MSG_LEN]; @@ -125,90 +137,21 @@ GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) EdgeTX edge912 = {899999999.1, 912}; EdgeTX edge129 = {99999999.1, 129}; - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge56, 4, 5); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge56\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge59, 4, 8); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge59\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge67, 5, 6); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge67\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge69, 5, 8); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge65, 5, 4); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge95, 8, 4); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge611, 5, 10); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge116, 10, 5); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge511, 4, 10); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge115, 10, 4); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge127, 11, 6); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge712, 6, 11); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge912, 8, 11); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*tx_mat, &edge129, 11, 8); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge69\" in matrix\n"); - return 1; - } + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge56, 4, 5)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge59, 4, 8)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge67, 5, 6)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge69, 5, 8)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge95, 8, 4)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge611, 5, 10)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge116, 10, 5)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge511, 4, 10)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge115, 10, 4)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge127, 11, 6)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge712, 6, 11)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge65, 5, 4)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge912, 8, 11)); + TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge129, 11, 8)); + // fill owns_mat EdgeOwns edge45 = {45}; EdgeOwns edge36 = {36}; @@ -217,48 +160,14 @@ GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) EdgeOwns edge28 = {28}; EdgeOwns edge1011 = {21}; EdgeOwns edge1012 = {22}; - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge45, 3, 4); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge45\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge36, 2, 5); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge36\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge19, 0, 8); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge19\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge27, 1, 6); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge27\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge28, 1, 7); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge28\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge1011, 9, 10); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge1011\" in matrix\n"); - return 1; - } - info = GrB_Matrix_setElement_UDT(*owns_mat, &edge1012, 9, 11); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge1011\" in matrix\n"); - return 1; - } + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge45, 3, 4)); + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge36, 2, 5)); + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge19, 0, 8)); + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge27, 1, 6)); + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge28, 1, 7)); + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge1011, 9, 10)); + TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge1012, 9, 11)); + return info; } @@ -271,36 +180,12 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) User user3 = {FEMALE, 40}; User user4 = {MALE, 42}; User user10 = {MALE, 35}; - info = GrB_Vector_setElement_UDT(*users, &user1, 0); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"user1\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*users, &user2, 1); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"edge2\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*users, &user3, 2); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"user3\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*users, &user4, 3); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"user4\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*users, &user10, 9); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"user4\" in vector\n"); - return 1; - } + TRY(GrB_Vector_setElement_UDT(*users, &user1, 0)); + TRY(GrB_Vector_setElement_UDT(*users, &user2, 1)); + TRY(GrB_Vector_setElement_UDT(*users, &user3, 2)); + TRY(GrB_Vector_setElement_UDT(*users, &user4, 3)); + TRY(GrB_Vector_setElement_UDT(*users, &user10, 9)); + // 5 - 9 & 11 - 12 --- cards Card card5 = {MIR, 600000.0}; Card card6 = {MIR, 700000.0}; @@ -309,48 +194,14 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) Card card9 = {MASTERCARD, 10000000.0}; Card card11 = {MASTERCARD, 99000000.0}; Card card12 = {MASTERCARD, 99000000.0}; - info = GrB_Vector_setElement_UDT(*cards, &card5, 4); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card5\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*cards, &card6, 5); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card6\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*cards, &card7, 6); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card7\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*cards, &card8, 7); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card8\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*cards, &card9, 8); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card9\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*cards, &card11, 10); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card9\" in vector\n"); - return 1; - } - info = GrB_Vector_setElement_UDT(*cards, &card12, 11); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to insert \"card9\" in vector\n"); - return 1; - } + TRY(GrB_Vector_setElement_UDT(*cards, &card5, 4)); + TRY(GrB_Vector_setElement_UDT(*cards, &card6, 5)); + TRY(GrB_Vector_setElement_UDT(*cards, &card7, 6)); + TRY(GrB_Vector_setElement_UDT(*cards, &card8, 7)); + TRY(GrB_Vector_setElement_UDT(*cards, &card9, 8)); + TRY(GrB_Vector_setElement_UDT(*cards, &card11, 10)); + TRY(GrB_Vector_setElement_UDT(*cards, &card12, 11)); + return info; } @@ -373,76 +224,30 @@ int main() // custom types for edges GrB_Type tx_edge, owns_edge; - info = GrB_Type_new(&tx_edge, sizeof(EdgeTX)); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"tx_edge\" type\n"); - return 1; - } - info = GrB_Type_new(&owns_edge, sizeof(EdgeOwns)); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"tx_edge\" type\n"); - return 1; - } + TRY(GrB_Type_new(&tx_edge, sizeof(EdgeTX))); + TRY(GrB_Type_new(&owns_edge, sizeof(EdgeOwns))); // edge decomposition GrB_Matrix tx_edge_mat, owns_edge_mat; - info = GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"tx\" matrix\n"); - return 1; - } - info = GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"owns\" matrix\n"); - return 1; - } - info = init_edges(&tx_edge_mat, &owns_edge_mat); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed TODODODOO to create \"owns\" matrix\n"); - return 1; - } - + TRY(GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + init_edges(&tx_edge_mat, &owns_edge_mat); // ------------------------------------------------------------------------ // init vertices vectors // ------------------------------------------------------------------------ GrB_Type user, card; - info = GrB_Type_new(&user, sizeof(User)); + TRY(GrB_Type_new(&user, sizeof(User))); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"user\" type\n"); - return 1; - } - info = GrB_Type_new(&card, sizeof(Card)); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"card\" type\n"); - return 1; - } + TRY(GrB_Type_new(&card, sizeof(Card))); GrB_Vector users; - info = GrB_Vector_new(&users, user, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"users\" vector\n"); - return 1; - } + TRY(GrB_Vector_new(&users, user, VERTICES_NUMBER)); GrB_Vector cards; - info = GrB_Vector_new(&cards, card, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"cards\" vector\n"); - return 1; - } - info = init_vertices(&users, &cards); + TRY(GrB_Vector_new(&cards, card, VERTICES_NUMBER)); + TRY(init_vertices(&users, &cards)); // ------------------------------------------------------------------------ // build user filters // ------------------------------------------------------------------------ @@ -450,48 +255,23 @@ int main() // vertex filter: we will take only prersons over 30 GrB_Matrix ID; GrB_Vector v; - info = GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"ID\" vector\n"); - return 1; - } - info = GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign values to \"v\" vector\n"); - return 1; - } + TRY(GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER)); + TRY(GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL)); // create selector GrB_IndexUnaryOp user_age; - info = GrB_IndexUnaryOp_new(&user_age, (GxB_index_unary_function)&check_user_age, GrB_BOOL, user, GrB_UINT8); // TODO - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create \"user_age\" unop\n"); - return 1; - } + TRY(GrB_IndexUnaryOp_new(&user_age, (GxB_index_unary_function)&check_user_age, GrB_BOOL, user, GrB_UINT8)); uint8_t age = 30; - info = GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to select elements from users vector: %d\n", info); - return 1; - } + TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL)); GxB_print(v, GxB_COMPLETE); - info = GrB_Matrix_diag(&ID, v, 0); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create filter matrix %d\n", info); - return 1; - } + TRY(GrB_Matrix_diag(&ID, v, 0)); // GrB_Matrix v_mat, id_mat; // GrB_Matrix_new(&v_mat, GrB_BOOL, VERTICES_NUMBER, 1); // GrB_Col_assign(v_mat, NULL, NULL, v, GrB_ALL, VERTICES_NUMBER, 0, NULL); // GrB_Vector id; - // info = GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); - // info = GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); + // TRY(GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); + // TRY(GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); // GrB_Matrix_new(&id_mat, GrB_BOOL, 1, VERTICES_NUMBER); // GrB_Row_assign(id_mat, NULL, NULL, id, 0, GrB_ALL, VERTICES_NUMBER, NULL); @@ -499,7 +279,7 @@ int main() // GrB_Matrix_new(&kron, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); // // GxB_print(v_mat, GxB_COMPLETE); // // GxB_print(id_mat, GxB_COMPLETE); - // info = GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); + // TRY(GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); // DEBUG printf("filter matrix content: \n"); @@ -507,7 +287,7 @@ int main() for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) { bool val; - GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, ID, i, j); + GrB_Matrix_extractElement_BOOL(&val, ID, i, j); if (info == GrB_SUCCESS) { printf("[%lu,%lu] = %d\n", i, j, val); @@ -524,7 +304,7 @@ int main() // for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) // { // bool val; - // GrB_Info info = GrB_Matrix_extractElement_BOOL(&val, kron, i, i); + // GrB_Info TRY(GrB_Matrix_extractElement_BOOL(&val, kron, i, i); // if (info == GrB_SUCCESS) // { // printf("[%lu,%lu] = %d\n", i, i, val); @@ -543,44 +323,25 @@ int main() // apply user filters // ------------------------------------------------------------------------ GrB_BinaryOp bool_add_op; - info = GrB_BinaryOp_new(&bool_add_op, (GxB_binary_function)&owns_bool_add, GrB_BOOL, GrB_BOOL, GrB_BOOL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create owns bool add binop %d\n", info); - return 1; - } + TRY(GrB_BinaryOp_new(&bool_add_op, (GxB_binary_function)&owns_bool_add, GrB_BOOL, GrB_BOOL, GrB_BOOL)); GrB_BinaryOp owns_bool_mul_op; - info = GrB_BinaryOp_new(&owns_bool_mul_op, (GxB_binary_function)&owns_bool_mult, GrB_BOOL, GrB_BOOL, owns_edge); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create owns bool mul binop %d\n", info); - return 1; - } + TRY(GrB_BinaryOp_new(&owns_bool_mul_op, (GxB_binary_function)&owns_bool_mult, GrB_BOOL, GrB_BOOL, owns_edge)); GrB_Monoid owns_bool_monoid; bool owns_bool_identity = false; - info = GrB_Monoid_new_BOOL(&owns_bool_monoid, bool_add_op, (void *)&owns_bool_identity); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create owns bool monoid %d\n", info); - return 1; - } - - // GrB_Monoid any_monoid; - // EdgeOwns ownsID = {1}; - // GrB_Monoid_new_UDT(&any_monoid, any_op, (void *)&ownsID); + TRY(GrB_Monoid_new_BOOL(&owns_bool_monoid, bool_add_op, (void *)&owns_bool_identity)); GrB_Semiring owns_semiring_bool; - GrB_Semiring_new(&owns_semiring_bool, owns_bool_monoid, owns_bool_mul_op); + TRY(GrB_Semiring_new(&owns_semiring_bool, owns_bool_monoid, owns_bool_mul_op)); GrB_Matrix owns_mat_filtered; - GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); + TRY(GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); printf("\nowns edge mat before filter\n"); for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) { EdgeOwns val; - GrB_Info info = GrB_Matrix_extractElement_UDT(&val, owns_edge_mat, i, j); + GrB_Matrix_extractElement_UDT(&val, owns_edge_mat, i, j); if (info == GrB_SUCCESS) { printf("[%lu,%lu] = %d\n", i, j, val.days); @@ -595,19 +356,14 @@ int main() // } } // apply filter - // info = GrB_Matrix_assign(owns_mat_filtered, kron, NULL, owns_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); - info = GrB_mxm(owns_mat_filtered, NULL, NULL, owns_semiring_bool, ID, owns_edge_mat, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to apply filter to owns matrix %d\n", info); - return 1; - } + // TRY(GrB_Matrix_assign(owns_mat_filtered, kron, NULL, owns_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); + TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, owns_semiring_bool, ID, owns_edge_mat, NULL)); printf("\nowns edge mat after filter\n"); for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) { EdgeOwns val; - GrB_Info info = GrB_Matrix_extractElement_UDT(&val, owns_mat_filtered, i, j); + GrB_Matrix_extractElement_UDT(&val, owns_mat_filtered, i, j); if (info == GrB_SUCCESS) { printf("[%lu,%lu] = %d\n", i, j, val.days); @@ -627,30 +383,15 @@ int main() // ------------------------------------------------------------------------ GrB_Vector filtered_cards; - info = GrB_Vector_new(&filtered_cards, GrB_BOOL, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create filtered cards vector %d\n", info); - return 1; - } + TRY(GrB_Vector_new(&filtered_cards, GrB_BOOL, VERTICES_NUMBER)); GxB_print(owns_mat_filtered, GxB_COMPLETE); - info = GrB_Matrix_reduce_Monoid(filtered_cards, NULL, NULL, GrB_LOR_MONOID_BOOL, owns_mat_filtered, GrB_DESC_T0); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to filter cards %d\n", info); - return 1; - } + TRY(GrB_Matrix_reduce_Monoid(filtered_cards, NULL, NULL, GrB_LOR_MONOID_BOOL, owns_mat_filtered, GrB_DESC_T0)); // ------------------------------------------------------------------------ // build filter for tx matrix // ------------------------------------------------------------------------ - GrB_Matrix_free(&ID); - info = GrB_Matrix_diag(&ID, filtered_cards, 0); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create filter matrix %d\n", info); - return 1; - } + TRY(GrB_Matrix_free(&ID)); + TRY(GrB_Matrix_diag(&ID, filtered_cards, 0)); GxB_print(ID, GxB_COMPLETE); // ------------------------------------------------------------------------ @@ -658,81 +399,29 @@ int main() // ------------------------------------------------------------------------ GrB_BinaryOp tx_bool_add_op; - info = GrB_BinaryOp_new(&tx_bool_add_op, - (GxB_binary_function)&tx_bool_add, - tx_edge, - tx_edge, - tx_edge); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create tx bool add binop %d\n", info); - return 1; - } + TRY(GrB_BinaryOp_new(&tx_bool_add_op, (GxB_binary_function)&tx_bool_add, tx_edge, tx_edge, tx_edge)); GrB_BinaryOp tx_bool_mul_op; - info = GrB_BinaryOp_new(&tx_bool_mul_op, - (GxB_binary_function)&tx_bool_mult, - tx_edge, - GrB_BOOL, - tx_edge); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create tx bool mul binop %d\n", info); - return 1; - } + TRY(GrB_BinaryOp_new(&tx_bool_mul_op, (GxB_binary_function)&tx_bool_mult, tx_edge, GrB_BOOL, tx_edge)); EdgeTX tx_identity = {0.0, 0}; GrB_Monoid tx_bool_monoid; - info = GrB_Monoid_new_UDT(&tx_bool_monoid, tx_bool_add_op, &tx_identity); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create tx bool monoid %d\n", info); - return 1; - } + TRY(GrB_Monoid_new_UDT(&tx_bool_monoid, tx_bool_add_op, &tx_identity)); GrB_Semiring tx_bool_semiring; - info = GrB_Semiring_new(&tx_bool_semiring, tx_bool_monoid, tx_bool_mul_op); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create tx bool semiring %d\n", info); - return 1; - } + TRY(GrB_Semiring_new(&tx_bool_semiring, tx_bool_monoid, tx_bool_mul_op)); GrB_BinaryOp tx_bool_mul_right_op; - info = GrB_BinaryOp_new(&tx_bool_mul_right_op, - (GxB_binary_function)&tx_bool_mult_right, - tx_edge, - tx_edge, - GrB_BOOL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create tx right binop %d\n", info); - return 1; - } + TRY(GrB_BinaryOp_new(&tx_bool_mul_right_op, (GxB_binary_function)&tx_bool_mult_right, tx_edge, tx_edge, GrB_BOOL)); GrB_Semiring tx_bool_semiring_right; - info = GrB_Semiring_new(&tx_bool_semiring_right, tx_bool_monoid, tx_bool_mul_right_op); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create tx right semiring %d\n", info); - return 1; - } + TRY(GrB_Semiring_new(&tx_bool_semiring_right, tx_bool_monoid, tx_bool_mul_right_op)); GrB_Matrix tx_mat_filtered; - GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); - info = GrB_mxm(tx_mat_filtered, NULL, NULL, tx_bool_semiring, ID, tx_edge_mat, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to apply1 filter to tx matrix %d\n", info); - return 1; - } + TRY(GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_mxm(tx_mat_filtered, NULL, NULL, tx_bool_semiring, ID, tx_edge_mat, NULL)); GrB_Matrix tx_mat_filtered2; - GrB_Matrix_new(&tx_mat_filtered2, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); - info = GrB_mxm(tx_mat_filtered2, NULL, NULL, tx_bool_semiring_right, tx_mat_filtered, ID, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to apply2 filter to tx matrix %d\n", info); - return 1; - } + TRY(GrB_Matrix_new(&tx_mat_filtered2, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_mxm(tx_mat_filtered2, NULL, NULL, tx_bool_semiring_right, tx_mat_filtered, ID, NULL)); GxB_print(tx_mat_filtered2, GxB_COMPLETE); printf("Non-zero edges in tx_mat_filtered2:\n"); @@ -747,39 +436,16 @@ int main() } } GrB_UnaryOp tx_is_nonempty_op; - info = GxB_UnaryOp_new(&tx_is_nonempty_op, - (GxB_unary_function)&tx_is_nonempty, - GrB_BOOL, - tx_edge, NULL, NULL); - if (info != GrB_SUCCESS) - { /* handle */ - } + TRY(GxB_UnaryOp_new(&tx_is_nonempty_op, (GxB_unary_function)&tx_is_nonempty, GrB_BOOL, tx_edge, NULL, NULL)); GrB_Matrix keep; - info = GrB_Matrix_new(&keep, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { /* handle */ - } - - info = GrB_apply(keep, NULL, NULL, tx_is_nonempty_op, tx_mat_filtered2, NULL); - if (info != GrB_SUCCESS) - { /* handle */ - } + TRY(GrB_Matrix_new(&keep, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_apply(keep, NULL, NULL, tx_is_nonempty_op, tx_mat_filtered2, NULL)); GxB_print(keep, GxB_COMPLETE); GrB_Matrix tx_clean; - info = GrB_Matrix_new(&tx_clean, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { /* handle */ - } + TRY(GrB_Matrix_new(&tx_clean, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); - info = GrB_assign(tx_clean, keep, NULL, - tx_mat_filtered2, - GrB_ALL, VERTICES_NUMBER, - GrB_ALL, VERTICES_NUMBER, - NULL); - if (info != GrB_SUCCESS) - { /* handle */ - } + TRY(GrB_assign(tx_clean, keep, NULL, tx_mat_filtered2, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL)); GxB_print(tx_clean, GxB_COMPLETE); @@ -789,127 +455,67 @@ int main() // apply some F function to every element of result EdgeTX matrix (Fmat) GrB_UnaryOp mean_op; - info = GrB_UnaryOp_new(&mean_op, (GxB_unary_function)&F_op, GrB_FP64, tx_edge); + TRY(GrB_UnaryOp_new(&mean_op, (GxB_unary_function)&F_op, GrB_FP64, tx_edge)); GrB_Matrix Fmat; - info = GrB_Matrix_new(&Fmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); - info = GrB_Matrix_apply(Fmat, NULL, NULL, mean_op, tx_clean, NULL); + TRY(GrB_Matrix_new(&Fmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_Matrix_apply(Fmat, NULL, NULL, mean_op, tx_clean, NULL)); GxB_print(Fmat, GxB_COMPLETE); // apply exp function to every element of every element of matrix (lEXPmat) GrB_Matrix EXPmat; GrB_UnaryOp exp_op; - info = GrB_UnaryOp_new(&exp_op, (GxB_unary_function)&exp_binop, GrB_FP64, GrB_FP64); - info = GrB_Matrix_new(&EXPmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); - info = GrB_Matrix_apply(EXPmat, NULL, NULL, exp_op, Fmat, NULL); + TRY(GrB_UnaryOp_new(&exp_op, (GxB_unary_function)&exp_binop, GrB_FP64, GrB_FP64)); + TRY(GrB_Matrix_new(&EXPmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_Matrix_apply(EXPmat, NULL, NULL, exp_op, Fmat, NULL)); GxB_print(EXPmat, GxB_COMPLETE); // reduce EXPmat and receive vector of rows sum (EXPSUMvec) GrB_Vector EXPSUMvec; - info = GrB_Vector_new(&EXPSUMvec, GrB_FP64, VERTICES_NUMBER); - info = GrB_Matrix_reduce_Monoid(EXPSUMvec, NULL, NULL, GrB_PLUS_MONOID_FP64, EXPmat, NULL); + TRY(GrB_Vector_new(&EXPSUMvec, GrB_FP64, VERTICES_NUMBER)); + TRY(GrB_Matrix_reduce_Monoid(EXPSUMvec, NULL, NULL, GrB_PLUS_MONOID_FP64, EXPmat, NULL)); GxB_print(EXPSUMvec, GxB_COMPLETE); // do masked kroneker (mask: EXPmat, A: EXPSUMvec, B: ID vector) (KRONEXPSUMmat) GrB_Vector id_final; - info = GrB_Vector_new(&id_final, GrB_FP64, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create id_final %d\n", info); - return 1; - } - info = GrB_Vector_assign_BOOL(id_final, NULL, NULL, 1.0, GrB_ALL, VERTICES_NUMBER, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign 1.0 into id-final %d\n", info); - return 1; - } + TRY(GrB_Vector_new(&id_final, GrB_FP64, VERTICES_NUMBER)); + TRY(GrB_Vector_assign_BOOL(id_final, NULL, NULL, 1.0, GrB_ALL, VERTICES_NUMBER, NULL)); GrB_Matrix v_mat, id_mat; - info = GrB_Matrix_new(&v_mat, GrB_FP64, VERTICES_NUMBER, 1); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create v_mat matrix %d\n", info); - return 1; - } - info = GrB_Col_assign(v_mat, NULL, NULL, EXPSUMvec, GrB_ALL, VERTICES_NUMBER, 0, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign col into v_mat %d\n", info); - return 1; - } + TRY(GrB_Matrix_new(&v_mat, GrB_FP64, VERTICES_NUMBER, 1)); + TRY(GrB_Col_assign(v_mat, NULL, NULL, EXPSUMvec, GrB_ALL, VERTICES_NUMBER, 0, NULL)); - info = GrB_Matrix_new(&id_mat, GrB_FP64, 1, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create id_mat matrix %d\n", info); - return 1; - } - info = GrB_Row_assign(id_mat, NULL, NULL, id_final, 0, GrB_ALL, VERTICES_NUMBER, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to assign row into id_mat %d\n", info); - return 1; - } + TRY(GrB_Matrix_new(&id_mat, GrB_FP64, 1, VERTICES_NUMBER)); + TRY(GrB_Row_assign(id_mat, NULL, NULL, id_final, 0, GrB_ALL, VERTICES_NUMBER, NULL)); GrB_Matrix KRONEXPSUMmat; - info = GrB_Matrix_new(&KRONEXPSUMmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create kron matrix %d\n", info); - return 1; - } + TRY(GrB_Matrix_new(&KRONEXPSUMmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); - info = GrB_mxm(KRONEXPSUMmat, NULL, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to do kron matrix %d\n", info); - return 1; - } + TRY(GrB_mxm(KRONEXPSUMmat, NULL, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL)); GxB_print(KRONEXPSUMmat, GxB_COMPLETE); // define add operation (A + B = A / B) (divv) // apply divv to (EXPmat and KRONEXPSUMmat) (M) GrB_Matrix M; - GrB_Matrix_new(&M, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER); + TRY(GrB_Matrix_new(&M, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); GrB_BinaryOp divide_op; - GrB_BinaryOp_new(÷_op, (GxB_binary_function)÷, GrB_FP64, GrB_FP64, GrB_FP64); - GrB_Matrix_eWiseAdd_BinaryOp(M, EXPmat, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL); + TRY(GrB_BinaryOp_new(÷_op, (GxB_binary_function)÷, GrB_FP64, GrB_FP64, GrB_FP64)); + TRY(GrB_Matrix_eWiseAdd_BinaryOp(M, EXPmat, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL)); GxB_print(M, GxB_COMPLETE); // ------------------------------------------------------------------------ // run pagerank // ------------------------------------------------------------------------ int iteraions = 0; GrB_Vector pagerank_ans; - GrB_Vector_new(&pagerank_ans, GrB_FP64, VERTICES_NUMBER); + TRY(GrB_Vector_new(&pagerank_ans, GrB_FP64, VERTICES_NUMBER)); LAGraph_Graph G = NULL; - info = LAGraph_New(&G, &M, LAGraph_ADJACENCY_DIRECTED, msg); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to create LAGraph_Graph: %d\n", info); - return 1; - } - info = LAGraph_Cached_AT(G, msg); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to cache AT: %d %s\n", info, msg); - return 1; - } + TRY(LAGraph_New(&G, &M, LAGraph_ADJACENCY_DIRECTED, msg)); + TRY(LAGraph_Cached_AT(G, msg)); - info = LAGraph_Cached_OutDegree(G, msg); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to cache out degree: %d %s\n", info, msg); - return 1; - } + TRY(LAGraph_Cached_OutDegree(G, msg)); - info = LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "failed to do pagerank: %d %s\n", info, msg); - return 1; - } + TRY(LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg)); GxB_print(pagerank_ans, GxB_COMPLETE); } \ No newline at end of file From 9c2bf0ec0f3a539ef5c10859cb0a8804e070ed92 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Mon, 10 Nov 2025 05:12:30 +0300 Subject: [PATCH 15/31] refactor: remove dead code and debug prints --- src/main.c | 112 +++-------------------------------------------------- 1 file changed, 5 insertions(+), 107 deletions(-) diff --git a/src/main.c b/src/main.c index 342f49e..1faa687 100644 --- a/src/main.c +++ b/src/main.c @@ -265,60 +265,7 @@ int main() TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL)); GxB_print(v, GxB_COMPLETE); TRY(GrB_Matrix_diag(&ID, v, 0)); - // GrB_Matrix v_mat, id_mat; - // GrB_Matrix_new(&v_mat, GrB_BOOL, VERTICES_NUMBER, 1); - // GrB_Col_assign(v_mat, NULL, NULL, v, GrB_ALL, VERTICES_NUMBER, 0, NULL); - - // GrB_Vector id; - // TRY(GrB_Vector_new(&id, GrB_BOOL, VERTICES_NUMBER); - // TRY(GrB_Vector_assign_BOOL(id, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL); - // GrB_Matrix_new(&id_mat, GrB_BOOL, 1, VERTICES_NUMBER); - // GrB_Row_assign(id_mat, NULL, NULL, id, 0, GrB_ALL, VERTICES_NUMBER, NULL); - - // GrB_Matrix kron; - // GrB_Matrix_new(&kron, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER); - // // GxB_print(v_mat, GxB_COMPLETE); - // // GxB_print(id_mat, GxB_COMPLETE); - // TRY(GrB_kronecker(kron, NULL, NULL, GrB_LAND, v_mat, id_mat, NULL); - - // DEBUG - printf("filter matrix content: \n"); - for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) - for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) - { - bool val; - GrB_Matrix_extractElement_BOOL(&val, ID, i, j); - if (info == GrB_SUCCESS) - { - printf("[%lu,%lu] = %d\n", i, j, val); - } - // else if (info == GrB_NO_VALUE) - // { - // printf("[%lu,%lu] no value\n", i, j); - // } - // else - // { - // printf("[%lu,%lu] error code: %d\n", i, j, info); - // } - } - // for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) - // { - // bool val; - // GrB_Info TRY(GrB_Matrix_extractElement_BOOL(&val, kron, i, i); - // if (info == GrB_SUCCESS) - // { - // printf("[%lu,%lu] = %d\n", i, i, val); - // } - // else if (info == GrB_NO_VALUE) - // { - // printf("[%lu,%lu] no value\n", i, i); - // } - // else - // { - // printf("[%lu,%lu] error code: %d\n", i, i, info); - // } - // } - + // ------------------------------------------------------------------------ // apply user filters // ------------------------------------------------------------------------ @@ -336,47 +283,8 @@ int main() GrB_Matrix owns_mat_filtered; TRY(GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); - printf("\nowns edge mat before filter\n"); - for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) - for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) - { - EdgeOwns val; - GrB_Matrix_extractElement_UDT(&val, owns_edge_mat, i, j); - if (info == GrB_SUCCESS) - { - printf("[%lu,%lu] = %d\n", i, j, val.days); - } - // else if (info == GrB_NO_VALUE) - // { - // printf("[%lu,%lu] no value\n", i, j); - // } - // else - // { - // printf("[%lu,%lu] error code: %d\n", i, j, info); - // } - } // apply filter - // TRY(GrB_Matrix_assign(owns_mat_filtered, kron, NULL, owns_edge_mat, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL); TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, owns_semiring_bool, ID, owns_edge_mat, NULL)); - printf("\nowns edge mat after filter\n"); - for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) - for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) - { - EdgeOwns val; - GrB_Matrix_extractElement_UDT(&val, owns_mat_filtered, i, j); - if (info == GrB_SUCCESS) - { - printf("[%lu,%lu] = %d\n", i, j, val.days); - } - // else if (info == GrB_NO_VALUE) - // { - // printf("[%lu,%lu] no value\n", i, j); - // } - // else - // { - // printf("[%lu,%lu] error code: %d\n", i, j, info); - // } - } // ------------------------------------------------------------------------ // get cards of filtered users @@ -424,17 +332,7 @@ int main() TRY(GrB_mxm(tx_mat_filtered2, NULL, NULL, tx_bool_semiring_right, tx_mat_filtered, ID, NULL)); GxB_print(tx_mat_filtered2, GxB_COMPLETE); - printf("Non-zero edges in tx_mat_filtered2:\n"); - for (GrB_Index i = 0; i < VERTICES_NUMBER; i++) - for (GrB_Index j = 0; j < VERTICES_NUMBER; j++) - { - EdgeTX val; - if (GrB_Matrix_extractElement_UDT(&val, tx_mat_filtered2, i, j) == GrB_SUCCESS) - { - if (val.count > 0) - printf("(%lu,%lu): sum=%.1f count=%u\n", i, j, val.sum, val.count); - } - } + GrB_UnaryOp tx_is_nonempty_op; TRY(GxB_UnaryOp_new(&tx_is_nonempty_op, (GxB_unary_function)&tx_is_nonempty, GrB_BOOL, tx_edge, NULL, NULL)); @@ -493,15 +391,15 @@ int main() TRY(GrB_mxm(KRONEXPSUMmat, NULL, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL)); GxB_print(KRONEXPSUMmat, GxB_COMPLETE); - // define add operation (A + B = A / B) (divv) - - // apply divv to (EXPmat and KRONEXPSUMmat) (M) + // apply div to (EXPmat and KRONEXPSUMmat) (M) GrB_Matrix M; TRY(GrB_Matrix_new(&M, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); + // define add operation (A + B = A / B) (div) GrB_BinaryOp divide_op; TRY(GrB_BinaryOp_new(÷_op, (GxB_binary_function)÷, GrB_FP64, GrB_FP64, GrB_FP64)); TRY(GrB_Matrix_eWiseAdd_BinaryOp(M, EXPmat, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL)); GxB_print(M, GxB_COMPLETE); + // ------------------------------------------------------------------------ // run pagerank // ------------------------------------------------------------------------ From d168c5671b6020e2281a0f36f3768a696e158f85 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Mon, 10 Nov 2025 14:31:18 +0300 Subject: [PATCH 16/31] feat: add payment system filter --- src/main.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/main.c b/src/main.c index 1faa687..05f6d2a 100644 --- a/src/main.c +++ b/src/main.c @@ -65,7 +65,12 @@ void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const ui *z = (x->age > *y); } } - +void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) +{ + { + *z = ((x->system) == MIR); + } +} void owns_bool_mult(bool *z, const bool *x, const EdgeOwns *y) { *z = *x; @@ -175,8 +180,8 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) { GrB_Info info; // 1 - 4 & 10 --- users - User user1 = {MALE, 52}; - User user2 = {MALE, 25}; + User user1 = {FEMALE, 52}; + User user2 = {FEMALE, 25}; User user3 = {FEMALE, 40}; User user4 = {MALE, 42}; User user10 = {MALE, 35}; @@ -191,9 +196,9 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) Card card6 = {MIR, 700000.0}; Card card7 = {VISA, 800000.0}; Card card8 = {MASTERCARD, 900000.0}; - Card card9 = {MASTERCARD, 10000000.0}; - Card card11 = {MASTERCARD, 99000000.0}; - Card card12 = {MASTERCARD, 99000000.0}; + Card card9 = {VISA, 10000000.0}; + Card card11 = {MIR, 99000000.0}; + Card card12 = {MIR, 99000000.0}; TRY(GrB_Vector_setElement_UDT(*cards, &card5, 4)); TRY(GrB_Vector_setElement_UDT(*cards, &card6, 5)); TRY(GrB_Vector_setElement_UDT(*cards, &card7, 6)); @@ -265,7 +270,7 @@ int main() TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL)); GxB_print(v, GxB_COMPLETE); TRY(GrB_Matrix_diag(&ID, v, 0)); - + // ------------------------------------------------------------------------ // apply user filters // ------------------------------------------------------------------------ @@ -298,7 +303,18 @@ int main() // ------------------------------------------------------------------------ // build filter for tx matrix // ------------------------------------------------------------------------ + + // get cards with MIR payment system only TRY(GrB_Matrix_free(&ID)); + TRY(GrB_Vector_free(&v)); + TRY(GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER)); + TRY(GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL)); + GrB_IndexUnaryOp payment_system; + TRY(GrB_IndexUnaryOp_new(&payment_system, (GxB_index_unary_function)&check_payment_system, GrB_BOOL, card, GrB_UINT8)); + uint8_t pay_sys = MIR; + TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, payment_system, cards, &pay_sys, NULL)); + TRY(GrB_Vector_eWiseMult_BinaryOp(filtered_cards, NULL, NULL, GrB_LAND, filtered_cards, v, NULL)); + TRY(GrB_Matrix_diag(&ID, filtered_cards, 0)); GxB_print(ID, GxB_COMPLETE); From e31704c12bad931fb608a90dbc5f23e019c0fdaf Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 02:13:49 +0300 Subject: [PATCH 17/31] feat: provide more detailed information about errors --- src/main.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main.c b/src/main.c index 05f6d2a..afa286a 100644 --- a/src/main.c +++ b/src/main.c @@ -4,16 +4,16 @@ #include "../vendor/LAGraph/include/LAGraph.h" #include "../vendor/LAGraph/include/LAGraphX.h" -#define TRY(method) \ - { \ - GrB_Info _info = (method); \ - if (_info != GrB_SUCCESS) \ - { \ - fprintf(stderr, \ - #method " : GraphBLAS error %d \n", \ - _info); \ - return _info; \ - } \ +#define TRY(method) \ + { \ + GrB_Info _info = (method); \ + if (_info != GrB_SUCCESS) \ + { \ + fprintf(stderr, \ + #method " : GraphBLAS error %d in file %s at line %d\n", \ + _info,__FILE__, __LINE__); \ + return _info; \ + } \ } #define VERTICES_NUMBER 12 @@ -83,7 +83,7 @@ void owns_bool_add(bool *z, const bool *x, const bool *y) void tx_bool_mult(EdgeTX *z, const bool *x, const EdgeTX *y) { - if (*x) + if (*x) // вот этот иф не нужен в идеале, потому что мы проходимся только по значащим значениям *z = *y; else z->sum = 0, z->count = 0; @@ -303,7 +303,7 @@ int main() // ------------------------------------------------------------------------ // build filter for tx matrix // ------------------------------------------------------------------------ - + // get cards with MIR payment system only TRY(GrB_Matrix_free(&ID)); TRY(GrB_Vector_free(&v)); From 5e09f05aaf68af46ba66e8e91b9461f6113bff90 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 02:15:04 +0300 Subject: [PATCH 18/31] refactor: consistent enum\struct naming style --- src/main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main.c b/src/main.c index afa286a..d45001c 100644 --- a/src/main.c +++ b/src/main.c @@ -11,7 +11,7 @@ { \ fprintf(stderr, \ #method " : GraphBLAS error %d in file %s at line %d\n", \ - _info,__FILE__, __LINE__); \ + _info, __FILE__, __LINE__); \ return _info; \ } \ } @@ -34,13 +34,13 @@ typedef enum // vertices -typedef struct User +typedef struct { Gender gender; uint8_t age; } User; -typedef struct Card +typedef struct { System system; double limit; @@ -48,12 +48,12 @@ typedef struct Card // edges -typedef struct EdgeOwns +typedef struct { int days; } EdgeOwns; -typedef struct EdgeTX +typedef struct { double sum; uint32_t count; From 29860741a2b432e9a8b0809d396dca8b1100f1df Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 02:55:30 +0300 Subject: [PATCH 19/31] refactor: make owns mat grb_bool type --- src/main.c | 82 ++++++++++++++++++++++-------------------------------- 1 file changed, 33 insertions(+), 49 deletions(-) diff --git a/src/main.c b/src/main.c index d45001c..0bed190 100644 --- a/src/main.c +++ b/src/main.c @@ -47,12 +47,6 @@ typedef struct } Card; // edges - -typedef struct -{ - int days; -} EdgeOwns; - typedef struct { double sum; @@ -68,25 +62,19 @@ void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const ui void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) { { - *z = ((x->system) == MIR); + *z = ((x->system) == *y); } } -void owns_bool_mult(bool *z, const bool *x, const EdgeOwns *y) -{ - *z = *x; -} - -void owns_bool_add(bool *z, const bool *x, const bool *y) -{ - *z = (*x || *y); -} void tx_bool_mult(EdgeTX *z, const bool *x, const EdgeTX *y) { if (*x) // вот этот иф не нужен в идеале, потому что мы проходимся только по значащим значениям *z = *y; else - z->sum = 0, z->count = 0; + { + z->sum = 0; + z->count = 0; + } } void tx_bool_mult_right(EdgeTX *z, const EdgeTX *x, const bool *y) @@ -94,7 +82,10 @@ void tx_bool_mult_right(EdgeTX *z, const EdgeTX *x, const bool *y) if (*y) *z = *x; else - z->sum = 0, z->count = 0; + { + z->sum = 0; + z->count = 0; + } } void tx_bool_add(EdgeTX *z, const EdgeTX *x, const EdgeTX *y) @@ -102,7 +93,10 @@ void tx_bool_add(EdgeTX *z, const EdgeTX *x, const EdgeTX *y) if (x->count > 0 || y->count > 0) *z = (x->count > 0) ? *x : *y; else - z->sum = 0, z->count = 0; + { + z->sum = 0; + z->count = 0; + } } void tx_is_nonempty(bool *z, const EdgeTX *x) @@ -158,20 +152,20 @@ GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge129, 11, 8)); // fill owns_mat - EdgeOwns edge45 = {45}; - EdgeOwns edge36 = {36}; - EdgeOwns edge19 = {19}; - EdgeOwns edge27 = {27}; - EdgeOwns edge28 = {28}; - EdgeOwns edge1011 = {21}; - EdgeOwns edge1012 = {22}; - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge45, 3, 4)); - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge36, 2, 5)); - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge19, 0, 8)); - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge27, 1, 6)); - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge28, 1, 7)); - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge1011, 9, 10)); - TRY(GrB_Matrix_setElement_UDT(*owns_mat, &edge1012, 9, 11)); + bool edge45 = true; + bool edge36 = true; + bool edge19 = true; + bool edge27 = true; + bool edge28 = true; + bool edge1011 = true; + bool edge1012 = true; + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge45, 3, 4)); + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge36, 2, 5)); + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge19, 0, 8)); + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge27, 1, 6)); + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge28, 1, 7)); + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge1011, 9, 10)); + TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge1012, 9, 11)); return info; } @@ -227,17 +221,17 @@ int main() // init edge matrices // ------------------------------------------------------------------------ - // custom types for edges - GrB_Type tx_edge, owns_edge; + // custom type for transaction edges + GrB_Type tx_edge; TRY(GrB_Type_new(&tx_edge, sizeof(EdgeTX))); - TRY(GrB_Type_new(&owns_edge, sizeof(EdgeOwns))); // edge decomposition GrB_Matrix tx_edge_mat, owns_edge_mat; TRY(GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); - TRY(GrB_Matrix_new(&owns_edge_mat, owns_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_Matrix_new(&owns_edge_mat, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); init_edges(&tx_edge_mat, &owns_edge_mat); + // ------------------------------------------------------------------------ // init vertices vectors // ------------------------------------------------------------------------ @@ -253,6 +247,7 @@ int main() GrB_Vector cards; TRY(GrB_Vector_new(&cards, card, VERTICES_NUMBER)); TRY(init_vertices(&users, &cards)); + // ------------------------------------------------------------------------ // build user filters // ------------------------------------------------------------------------ @@ -274,22 +269,11 @@ int main() // ------------------------------------------------------------------------ // apply user filters // ------------------------------------------------------------------------ - GrB_BinaryOp bool_add_op; - TRY(GrB_BinaryOp_new(&bool_add_op, (GxB_binary_function)&owns_bool_add, GrB_BOOL, GrB_BOOL, GrB_BOOL)); - GrB_BinaryOp owns_bool_mul_op; - TRY(GrB_BinaryOp_new(&owns_bool_mul_op, (GxB_binary_function)&owns_bool_mult, GrB_BOOL, GrB_BOOL, owns_edge)); - - GrB_Monoid owns_bool_monoid; - bool owns_bool_identity = false; - TRY(GrB_Monoid_new_BOOL(&owns_bool_monoid, bool_add_op, (void *)&owns_bool_identity)); - - GrB_Semiring owns_semiring_bool; - TRY(GrB_Semiring_new(&owns_semiring_bool, owns_bool_monoid, owns_bool_mul_op)); GrB_Matrix owns_mat_filtered; TRY(GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); // apply filter - TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, owns_semiring_bool, ID, owns_edge_mat, NULL)); + TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, GrB_LOR_LAND_SEMIRING_BOOL, ID, owns_edge_mat, NULL)); // ------------------------------------------------------------------------ // get cards of filtered users From 6e068cdae259c2e6ecdf5a02c91cae5f06ff69b3 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 03:32:10 +0300 Subject: [PATCH 20/31] refactor: move out main algorithm logic from main functiom --- src/main.c | 94 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/src/main.c b/src/main.c index 0bed190..3a07639 100644 --- a/src/main.c +++ b/src/main.c @@ -118,6 +118,9 @@ void divide(double *z, const double *x, const double *y) *z = (*y != 0.0) ? (*x / *y) : 0.0; } +GrB_Type user, card; +GrB_Type tx_edge; + GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) { GrB_Info info; @@ -167,7 +170,7 @@ GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge1011, 9, 10)); TRY(GrB_Matrix_setElement_BOOL(*owns_mat, &edge1012, 9, 11)); - return info; + return GrB_SUCCESS; } GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) @@ -201,53 +204,10 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) TRY(GrB_Vector_setElement_UDT(*cards, &card11, 10)); TRY(GrB_Vector_setElement_UDT(*cards, &card12, 11)); - return info; + return GrB_SUCCESS; } -int main() -{ - // init graphblas - GrB_Info info = GrB_init(GrB_NONBLOCKING); - if (info != GrB_SUCCESS) - { - fprintf(stderr, "GraphBLAS init failed\n"); - return 1; - } - printf("GraphBLAS initialized.\n"); - LAGraph_Init(msg); - printf("LAGraph initialized.\n\n"); - - // ------------------------------------------------------------------------ - // init edge matrices - // ------------------------------------------------------------------------ - - // custom type for transaction edges - GrB_Type tx_edge; - TRY(GrB_Type_new(&tx_edge, sizeof(EdgeTX))); - - // edge decomposition - - GrB_Matrix tx_edge_mat, owns_edge_mat; - TRY(GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); - TRY(GrB_Matrix_new(&owns_edge_mat, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); - init_edges(&tx_edge_mat, &owns_edge_mat); - - // ------------------------------------------------------------------------ - // init vertices vectors - // ------------------------------------------------------------------------ - - GrB_Type user, card; - TRY(GrB_Type_new(&user, sizeof(User))); - - TRY(GrB_Type_new(&card, sizeof(Card))); - - GrB_Vector users; - TRY(GrB_Vector_new(&users, user, VERTICES_NUMBER)); - - GrB_Vector cards; - TRY(GrB_Vector_new(&cards, card, VERTICES_NUMBER)); - TRY(init_vertices(&users, &cards)); - +GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vector users, GrB_Vector cards){ // ------------------------------------------------------------------------ // build user filters // ------------------------------------------------------------------------ @@ -416,4 +376,46 @@ int main() TRY(LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg)); GxB_print(pagerank_ans, GxB_COMPLETE); +} + +int main() +{ + LAGraph_Init(msg); + printf("LAGraph initialized.\n\n"); + + // ------------------------------------------------------------------------ + // init edge matrices + // ------------------------------------------------------------------------ + + // custom type for transaction edges + TRY(GrB_Type_new(&tx_edge, sizeof(EdgeTX))); + + // edge decomposition + + GrB_Matrix tx_edge_mat, owns_edge_mat; + TRY(GrB_Matrix_new(&tx_edge_mat, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + TRY(GrB_Matrix_new(&owns_edge_mat, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); + init_edges(&tx_edge_mat, &owns_edge_mat); + + // ------------------------------------------------------------------------ + // init vertices vectors + // ------------------------------------------------------------------------ + + TRY(GrB_Type_new(&user, sizeof(User))); + + TRY(GrB_Type_new(&card, sizeof(Card))); + + GrB_Vector users; + TRY(GrB_Vector_new(&users, user, VERTICES_NUMBER)); + + GrB_Vector cards; + TRY(GrB_Vector_new(&cards, card, VERTICES_NUMBER)); + TRY(init_vertices(&users, &cards)); + + // ------------------------------------------------------------------------ + // run solver + // ------------------------------------------------------------------------ + + TRY(banking_page_rank(tx_edge_mat,owns_edge_mat,users,cards)); + } \ No newline at end of file From 6361d78acdd0b085284899bf71d515815dac0160 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 04:29:42 +0300 Subject: [PATCH 21/31] feat: implement simple pagerank without teleportations --- data/image.png | Bin 130211 -> 132647 bytes src/main.c | 112 ++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 92 insertions(+), 20 deletions(-) diff --git a/data/image.png b/data/image.png index 175aa0ee1f3022a49f6ad4882f64bbe6e1cb1395..acfbeea563f0ee9f2e567154a49f63ad9fd2630a 100644 GIT binary patch literal 132647 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 diff --git a/src/main.c b/src/main.c index 3a07639..00768fa 100644 --- a/src/main.c +++ b/src/main.c @@ -111,7 +111,7 @@ void exp_binop(double *z, const double *x) void F_op(double *z, const EdgeTX *x) { - *z = log(x->sum); + *z = (x->sum/1000)/(x->count); } void divide(double *z, const double *x, const double *y) { @@ -124,20 +124,20 @@ GrB_Type tx_edge; GrB_Info init_edges(GrB_Matrix *tx_mat, GrB_Matrix *owns_mat) { GrB_Info info; - EdgeTX edge56 = {2223412.0, 56}; - EdgeTX edge59 = {6223412.0, 59}; - EdgeTX edge67 = {8913212.0, 67}; - EdgeTX edge69 = {92223412.0, 69}; - EdgeTX edge65 = {133214.1, 65}; - EdgeTX edge95 = {1267325.99, 95}; - EdgeTX edge611 = {1999999.1, 611}; - EdgeTX edge116 = {6999999.1, 116}; - EdgeTX edge511 = {9999999.1, 511}; - EdgeTX edge115 = {8999999.1, 115}; - EdgeTX edge127 = {8999999.1, 127}; - EdgeTX edge712 = {8999999.1, 712}; - EdgeTX edge912 = {899999999.1, 912}; - EdgeTX edge129 = {99999999.1, 129}; + EdgeTX edge56 = {23412.0, 6}; + EdgeTX edge59 = {62412.0, 9}; + EdgeTX edge67 = {81312.0, 7}; + EdgeTX edge69 = {92223.0, 9}; + EdgeTX edge65 = {13214.1, 5}; + EdgeTX edge95 = {16325.99, 9}; + EdgeTX edge611 = {19999.1, 6}; + EdgeTX edge116 = {69999.1, 16}; + EdgeTX edge511 = {99999.1, 5}; + EdgeTX edge115 = {79999.1, 15}; + EdgeTX edge127 = {59999.1, 12}; + EdgeTX edge712 = {8999.1, 7}; + EdgeTX edge912 = {49999.1, 12}; + EdgeTX edge129 = {999999.1, 9}; TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge56, 4, 5)); TRY(GrB_Matrix_setElement_UDT(*tx_mat, &edge59, 4, 8)); @@ -207,7 +207,80 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) return GrB_SUCCESS; } -GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vector users, GrB_Vector cards){ +int LAGr_PageRank_NoTeleport( + GrB_Vector *centrality, + int *iters, + const LAGraph_Graph G, + float tol, + int itermax) +{ + GrB_Vector r = NULL, t = NULL; + GrB_Matrix AT = NULL; + + // ------------------------------------------------------------------------ + // select adjacency matrix (use transpose if directed) + // ------------------------------------------------------------------------ + if (G->kind == LAGraph_ADJACENCY_UNDIRECTED || + G->is_symmetric_structure == LAGraph_TRUE) + { + AT = G->A; + } + else + { + AT = G->AT; + } + + // ------------------------------------------------------------------------ + // initialization + // ------------------------------------------------------------------------ + GrB_Index n; + GrB_Matrix_nrows(&n, AT); + + GrB_Vector_new(&t, GrB_FP64, n); + GrB_Vector_new(&r, GrB_FP64, n); + + double init = 1.0 / (double)n; + GrB_assign(r, NULL, NULL, init, GrB_ALL, n, NULL); + + double rdiff = 1.0; + + // ------------------------------------------------------------------------ + // iterations + // ------------------------------------------------------------------------ + for ((*iters) = 0; rdiff > tol && (*iters) < itermax; (*iters)++) + { + // swap + GrB_Vector temp = t; + t = r; + r = temp; + + // r = A' * t + GrB_mxv(r, NULL, NULL, GxB_PLUS_TIMES_FP64, AT, t, NULL); + + // normalize r so that sum(r) = 1 + double sum_r = 0.0; + GrB_reduce(&sum_r, NULL, GrB_PLUS_MONOID_FP64, r, NULL); + if (sum_r > 0.0) + { + GrB_apply(r, NULL, NULL, GrB_DIV_FP64, r, sum_r, NULL); + } + + // compute difference + GrB_assign(t, NULL, GrB_MINUS_FP64, r, GrB_ALL, n, NULL); + GrB_apply(t, NULL, NULL, GrB_ABS_FP64, t, NULL); + GrB_reduce(&rdiff, NULL, GrB_PLUS_MONOID_FP64, t, NULL); + } + + // ------------------------------------------------------------------------ + // finalize + // ------------------------------------------------------------------------ + *centrality = r; + GrB_free(&t); + return GrB_SUCCESS; +} + +GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vector users, GrB_Vector cards) +{ // ------------------------------------------------------------------------ // build user filters // ------------------------------------------------------------------------ @@ -337,7 +410,7 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB GrB_Vector id_final; TRY(GrB_Vector_new(&id_final, GrB_FP64, VERTICES_NUMBER)); - TRY(GrB_Vector_assign_BOOL(id_final, NULL, NULL, 1.0, GrB_ALL, VERTICES_NUMBER, NULL)); + TRY(GrB_Vector_assign_BOOL(id_final, NULL, NULL, true, GrB_ALL, VERTICES_NUMBER, NULL)); GrB_Matrix v_mat, id_mat; TRY(GrB_Matrix_new(&v_mat, GrB_FP64, VERTICES_NUMBER, 1)); TRY(GrB_Col_assign(v_mat, NULL, NULL, EXPSUMvec, GrB_ALL, VERTICES_NUMBER, 0, NULL)); @@ -374,7 +447,7 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB TRY(LAGraph_Cached_OutDegree(G, msg)); - TRY(LAGr_PageRank(&pagerank_ans, &iteraions, G, 0.85, 1e-4, 100, msg)); + TRY(LAGr_PageRank_NoTeleport(&pagerank_ans, &iteraions, G, 1e-4, 100)); GxB_print(pagerank_ans, GxB_COMPLETE); } @@ -416,6 +489,5 @@ int main() // run solver // ------------------------------------------------------------------------ - TRY(banking_page_rank(tx_edge_mat,owns_edge_mat,users,cards)); - + TRY(banking_page_rank(tx_edge_mat, owns_edge_mat, users, cards)); } \ No newline at end of file From 73220c309aaccb2638b50f0187fb561f39ee22e2 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 04:31:15 +0300 Subject: [PATCH 22/31] fix: move mask from add to mxm in final pagerank matrix building --- src/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 00768fa..921e276 100644 --- a/src/main.c +++ b/src/main.c @@ -421,7 +421,7 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB GrB_Matrix KRONEXPSUMmat; TRY(GrB_Matrix_new(&KRONEXPSUMmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); - TRY(GrB_mxm(KRONEXPSUMmat, NULL, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL)); + TRY(GrB_mxm(KRONEXPSUMmat, EXPmat, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL)); GxB_print(KRONEXPSUMmat, GxB_COMPLETE); // apply div to (EXPmat and KRONEXPSUMmat) (M) @@ -430,7 +430,7 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB // define add operation (A + B = A / B) (div) GrB_BinaryOp divide_op; TRY(GrB_BinaryOp_new(÷_op, (GxB_binary_function)÷, GrB_FP64, GrB_FP64, GrB_FP64)); - TRY(GrB_Matrix_eWiseAdd_BinaryOp(M, EXPmat, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL)); + TRY(GrB_Matrix_eWiseAdd_BinaryOp(M, NULL, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL)); GxB_print(M, GxB_COMPLETE); // ------------------------------------------------------------------------ From efddbba6a1f3edd4db79b6e6a04fafc755189d8d Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 04:41:12 +0300 Subject: [PATCH 23/31] fix: memory leaks --- src/main.c | 71 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/src/main.c b/src/main.c index 921e276..adb5d60 100644 --- a/src/main.c +++ b/src/main.c @@ -55,20 +55,18 @@ typedef struct void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) // EdgeOwns { - { - *z = (x->age > *y); - } + + *z = (x->age > *y); } void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) { - { - *z = ((x->system) == *y); - } + + *z = ((x->system) == *y); } void tx_bool_mult(EdgeTX *z, const bool *x, const EdgeTX *y) { - if (*x) // вот этот иф не нужен в идеале, потому что мы проходимся только по значащим значениям + if (*x) *z = *y; else { @@ -111,7 +109,7 @@ void exp_binop(double *z, const double *x) void F_op(double *z, const EdgeTX *x) { - *z = (x->sum/1000)/(x->count); + *z = (x->sum / 1000) / (x->count); } void divide(double *z, const double *x, const double *y) { @@ -257,7 +255,7 @@ int LAGr_PageRank_NoTeleport( // r = A' * t GrB_mxv(r, NULL, NULL, GxB_PLUS_TIMES_FP64, AT, t, NULL); - // normalize r so that sum(r) = 1 + // normalize r so that sum(r) = 1. otherwise we lost this invariant double sum_r = 0.0; GrB_reduce(&sum_r, NULL, GrB_PLUS_MONOID_FP64, r, NULL); if (sum_r > 0.0) @@ -406,7 +404,7 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB TRY(GrB_Matrix_reduce_Monoid(EXPSUMvec, NULL, NULL, GrB_PLUS_MONOID_FP64, EXPmat, NULL)); GxB_print(EXPSUMvec, GxB_COMPLETE); - // do masked kroneker (mask: EXPmat, A: EXPSUMvec, B: ID vector) (KRONEXPSUMmat) + // do masked mxm (mask: EXPmat, A: EXPSUMvec, B: ID vector) (EXPSUMmat) GrB_Vector id_final; TRY(GrB_Vector_new(&id_final, GrB_FP64, VERTICES_NUMBER)); @@ -418,19 +416,19 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB TRY(GrB_Matrix_new(&id_mat, GrB_FP64, 1, VERTICES_NUMBER)); TRY(GrB_Row_assign(id_mat, NULL, NULL, id_final, 0, GrB_ALL, VERTICES_NUMBER, NULL)); - GrB_Matrix KRONEXPSUMmat; - TRY(GrB_Matrix_new(&KRONEXPSUMmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); + GrB_Matrix EXPSUMmat; + TRY(GrB_Matrix_new(&EXPSUMmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); - TRY(GrB_mxm(KRONEXPSUMmat, EXPmat, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL)); - GxB_print(KRONEXPSUMmat, GxB_COMPLETE); + TRY(GrB_mxm(EXPSUMmat, EXPmat, NULL, GxB_PLUS_TIMES_FP64, v_mat, id_mat, NULL)); + GxB_print(EXPSUMmat, GxB_COMPLETE); - // apply div to (EXPmat and KRONEXPSUMmat) (M) + // apply div to (EXPmat and EXPSUMmat) (M) GrB_Matrix M; TRY(GrB_Matrix_new(&M, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); // define add operation (A + B = A / B) (div) GrB_BinaryOp divide_op; TRY(GrB_BinaryOp_new(÷_op, (GxB_binary_function)÷, GrB_FP64, GrB_FP64, GrB_FP64)); - TRY(GrB_Matrix_eWiseAdd_BinaryOp(M, NULL, NULL, divide_op, EXPmat, KRONEXPSUMmat, NULL)); + TRY(GrB_Matrix_eWiseAdd_BinaryOp(M, NULL, NULL, divide_op, EXPmat, EXPSUMmat, NULL)); GxB_print(M, GxB_COMPLETE); // ------------------------------------------------------------------------ @@ -449,6 +447,37 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB TRY(LAGr_PageRank_NoTeleport(&pagerank_ans, &iteraions, G, 1e-4, 100)); GxB_print(pagerank_ans, GxB_COMPLETE); + GrB_free(&ID); + GrB_free(&v); + GrB_free(&owns_mat_filtered); + GrB_free(&filtered_cards); + GrB_free(&tx_bool_add_op); + GrB_free(&tx_bool_mul_op); + GrB_free(&tx_bool_mul_right_op); + GrB_free(&tx_bool_monoid); + GrB_free(&tx_bool_semiring); + GrB_free(&tx_bool_semiring_right); + GrB_free(&tx_mat_filtered); + GrB_free(&tx_mat_filtered2); + GrB_free(&tx_is_nonempty_op); + GrB_free(&keep); + GrB_free(&tx_clean); + GrB_free(&mean_op); + GrB_free(&exp_op); + GrB_free(&Fmat); + GrB_free(&EXPmat); + GrB_free(&EXPSUMvec); + GrB_free(&id_final); + GrB_free(&v_mat); + GrB_free(&id_mat); + GrB_free(&EXPSUMmat); + GrB_free(÷_op); + GrB_free(&M); + GrB_free(&pagerank_ans); + + LAGraph_Delete(&G, msg); + + return GrB_SUCCESS; } int main() @@ -490,4 +519,12 @@ int main() // ------------------------------------------------------------------------ TRY(banking_page_rank(tx_edge_mat, owns_edge_mat, users, cards)); -} \ No newline at end of file + GrB_free(&tx_edge_mat); + GrB_free(&owns_edge_mat); + GrB_free(&users); + GrB_free(&cards); + GrB_free(&user); + GrB_free(&card); + GrB_free(&tx_edge); + LAGraph_Finalize(msg); +} From 363979fa112eed40d07874fdfc64e166a93016b1 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 13:23:51 +0300 Subject: [PATCH 24/31] refactor: rename functions --- src/main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index adb5d60..0c90673 100644 --- a/src/main.c +++ b/src/main.c @@ -205,7 +205,7 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) return GrB_SUCCESS; } -int LAGr_PageRank_NoTeleport( +int banking_pagerank( GrB_Vector *centrality, int *iters, const LAGraph_Graph G, @@ -277,7 +277,7 @@ int LAGr_PageRank_NoTeleport( return GrB_SUCCESS; } -GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vector users, GrB_Vector cards) +GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vector users, GrB_Vector cards) { // ------------------------------------------------------------------------ // build user filters @@ -445,7 +445,7 @@ GrB_Info banking_page_rank(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB TRY(LAGraph_Cached_OutDegree(G, msg)); - TRY(LAGr_PageRank_NoTeleport(&pagerank_ans, &iteraions, G, 1e-4, 100)); + TRY(banking_pagerank(&pagerank_ans, &iteraions, G, 1e-4, 100)); GxB_print(pagerank_ans, GxB_COMPLETE); GrB_free(&ID); GrB_free(&v); @@ -518,7 +518,7 @@ int main() // run solver // ------------------------------------------------------------------------ - TRY(banking_page_rank(tx_edge_mat, owns_edge_mat, users, cards)); + TRY(analyze_graph(tx_edge_mat, owns_edge_mat, users, cards)); GrB_free(&tx_edge_mat); GrB_free(&owns_edge_mat); GrB_free(&users); From bf4eb8b26637f03113dcff17b8af8efe743d4939 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 13:35:27 +0300 Subject: [PATCH 25/31] fix: pagerank fixes 1) Remove redundant check of type of the graph (always directed) 2) Add mask of subgraph Signed-off-by: Rodion Suvorov --- src/main.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/main.c b/src/main.c index 0c90673..7fe4f55 100644 --- a/src/main.c +++ b/src/main.c @@ -206,27 +206,18 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards) } int banking_pagerank( + // output GrB_Vector *centrality, int *iters, + // input + GrB_Vector subgraph, const LAGraph_Graph G, float tol, int itermax) { GrB_Vector r = NULL, t = NULL; GrB_Matrix AT = NULL; - - // ------------------------------------------------------------------------ - // select adjacency matrix (use transpose if directed) - // ------------------------------------------------------------------------ - if (G->kind == LAGraph_ADJACENCY_UNDIRECTED || - G->is_symmetric_structure == LAGraph_TRUE) - { - AT = G->A; - } - else - { - AT = G->AT; - } + AT = G->AT; // ------------------------------------------------------------------------ // initialization @@ -238,7 +229,7 @@ int banking_pagerank( GrB_Vector_new(&r, GrB_FP64, n); double init = 1.0 / (double)n; - GrB_assign(r, NULL, NULL, init, GrB_ALL, n, NULL); + GrB_assign(r, subgraph, NULL, init, GrB_ALL, n, NULL); double rdiff = 1.0; @@ -445,7 +436,7 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec TRY(LAGraph_Cached_OutDegree(G, msg)); - TRY(banking_pagerank(&pagerank_ans, &iteraions, G, 1e-4, 100)); + TRY(banking_pagerank(&pagerank_ans, &iteraions, EXPSUMvec, G, 1e-4, 100)); GxB_print(pagerank_ans, GxB_COMPLETE); GrB_free(&ID); GrB_free(&v); From e36c3fe980ab2c12812b11bdae66a9cabfe458c6 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 15:23:08 +0300 Subject: [PATCH 26/31] fix: use selecet instead of apply in user filtering --- src/main.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main.c b/src/main.c index 7fe4f55..a1abed1 100644 --- a/src/main.c +++ b/src/main.c @@ -53,11 +53,17 @@ typedef struct uint32_t count; } EdgeTX; -void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) // EdgeOwns +void check_user_age(bool *z, const User *x, GrB_Index i, GrB_Index j, const uint8_t *y) { *z = (x->age > *y); } + +bool user_filter_mul(bool *z, const User *x, const bool *y) +{ + *z = (x->age > 30) && (*y); +} + void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) { @@ -276,15 +282,15 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // vertex filter: we will take only prersons over 30 GrB_Matrix ID; - GrB_Vector v; - TRY(GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER)); - TRY(GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL)); - - // create selector GrB_IndexUnaryOp user_age; TRY(GrB_IndexUnaryOp_new(&user_age, (GxB_index_unary_function)&check_user_age, GrB_BOOL, user, GrB_UINT8)); + uint8_t age = 30; - TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL)); + GrB_Vector v; + TRY(GrB_Vector_new(&v, user, VERTICES_NUMBER)); + + TRY(GrB_Vector_select_UDT(v, NULL, NULL, user_age, users, &age, NULL)); + GxB_print(v, GxB_COMPLETE); TRY(GrB_Matrix_diag(&ID, v, 0)); @@ -292,10 +298,16 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // apply user filters // ------------------------------------------------------------------------ + GrB_BinaryOp user_filter_mul_op; + TRY(GrB_BinaryOp_new(&user_filter_mul_op, (GxB_binary_function)user_filter_mul, + GrB_BOOL, user, GrB_BOOL)); + + GrB_Semiring user_filter_semiring; + TRY(GrB_Semiring_new(&user_filter_semiring, GrB_LOR_MONOID_BOOL, user_filter_mul_op)); GrB_Matrix owns_mat_filtered; TRY(GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); // apply filter - TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, GrB_LOR_LAND_SEMIRING_BOOL, ID, owns_edge_mat, NULL)); + TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, user_filter_semiring, ID, owns_edge_mat, NULL)); // ------------------------------------------------------------------------ // get cards of filtered users @@ -475,6 +487,7 @@ int main() { LAGraph_Init(msg); printf("LAGraph initialized.\n\n"); + // GxB_Global_Option_set(GxB_BURBLE); // ------------------------------------------------------------------------ // init edge matrices From 9b5962fed746648c4b1b9d315b0a88c364088e3d Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 16:22:29 +0300 Subject: [PATCH 27/31] feat: now use select instead of apply in card filtering --- src/main.c | 57 ++++++++++++++++++++++-------------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/src/main.c b/src/main.c index a1abed1..542769f 100644 --- a/src/main.c +++ b/src/main.c @@ -70,37 +70,21 @@ void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, co *z = ((x->system) == *y); } -void tx_bool_mult(EdgeTX *z, const bool *x, const EdgeTX *y) +void tx_bool_mult(EdgeTX *z, const Card *x, const EdgeTX *y) { - if (*x) - *z = *y; - else - { - z->sum = 0; - z->count = 0; - } + *z = *y; } -void tx_bool_mult_right(EdgeTX *z, const EdgeTX *x, const bool *y) +void tx_bool_mult_right(EdgeTX *z, const EdgeTX *x, const Card *y) { - if (*y) - *z = *x; - else - { - z->sum = 0; - z->count = 0; - } + + *z = *x; } void tx_bool_add(EdgeTX *z, const EdgeTX *x, const EdgeTX *y) { - if (x->count > 0 || y->count > 0) - *z = (x->count > 0) ? *x : *y; - else - { - z->sum = 0; - z->count = 0; - } + + *z = *x; } void tx_is_nonempty(bool *z, const EdgeTX *x) @@ -325,15 +309,19 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // get cards with MIR payment system only TRY(GrB_Matrix_free(&ID)); TRY(GrB_Vector_free(&v)); - TRY(GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER)); - TRY(GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL)); + TRY(GrB_Vector_new(&v, card, VERTICES_NUMBER)); GrB_IndexUnaryOp payment_system; TRY(GrB_IndexUnaryOp_new(&payment_system, (GxB_index_unary_function)&check_payment_system, GrB_BOOL, card, GrB_UINT8)); uint8_t pay_sys = MIR; - TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, payment_system, cards, &pay_sys, NULL)); - TRY(GrB_Vector_eWiseMult_BinaryOp(filtered_cards, NULL, NULL, GrB_LAND, filtered_cards, v, NULL)); + TRY(GrB_Vector_select_UDT(v, NULL, NULL, payment_system, cards, &pay_sys, NULL)); + GxB_print(filtered_cards, GxB_COMPLETE); + GxB_print(v, GxB_COMPLETE); + GrB_Vector result_cards; + GrB_Vector_new(&result_cards, card, VERTICES_NUMBER); + TRY(GrB_Vector_assign(result_cards, filtered_cards, NULL, v, GrB_ALL, VERTICES_NUMBER, NULL)); + GxB_print(result_cards, GxB_COMPLETE); - TRY(GrB_Matrix_diag(&ID, filtered_cards, 0)); + TRY(GrB_Matrix_diag(&ID, result_cards, 0)); GxB_print(ID, GxB_COMPLETE); // ------------------------------------------------------------------------ @@ -344,7 +332,7 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec TRY(GrB_BinaryOp_new(&tx_bool_add_op, (GxB_binary_function)&tx_bool_add, tx_edge, tx_edge, tx_edge)); GrB_BinaryOp tx_bool_mul_op; - TRY(GrB_BinaryOp_new(&tx_bool_mul_op, (GxB_binary_function)&tx_bool_mult, tx_edge, GrB_BOOL, tx_edge)); + TRY(GrB_BinaryOp_new(&tx_bool_mul_op, (GxB_binary_function)&tx_bool_mult, tx_edge, card, tx_edge)); EdgeTX tx_identity = {0.0, 0}; GrB_Monoid tx_bool_monoid; @@ -353,15 +341,16 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GrB_Semiring tx_bool_semiring; TRY(GrB_Semiring_new(&tx_bool_semiring, tx_bool_monoid, tx_bool_mul_op)); - GrB_BinaryOp tx_bool_mul_right_op; - TRY(GrB_BinaryOp_new(&tx_bool_mul_right_op, (GxB_binary_function)&tx_bool_mult_right, tx_edge, tx_edge, GrB_BOOL)); - - GrB_Semiring tx_bool_semiring_right; - TRY(GrB_Semiring_new(&tx_bool_semiring_right, tx_bool_monoid, tx_bool_mul_right_op)); GrB_Matrix tx_mat_filtered; TRY(GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); TRY(GrB_mxm(tx_mat_filtered, NULL, NULL, tx_bool_semiring, ID, tx_edge_mat, NULL)); + GrB_Matrix tx_mat_filtered2; + GrB_BinaryOp tx_bool_mul_right_op; + TRY(GrB_BinaryOp_new(&tx_bool_mul_right_op, (GxB_binary_function)&tx_bool_mult_right, tx_edge, tx_edge, card)); + + GrB_Semiring tx_bool_semiring_right; + TRY(GrB_Semiring_new(&tx_bool_semiring_right, tx_bool_monoid, tx_bool_mul_right_op)); TRY(GrB_Matrix_new(&tx_mat_filtered2, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); TRY(GrB_mxm(tx_mat_filtered2, NULL, NULL, tx_bool_semiring_right, tx_mat_filtered, ID, NULL)); From fd51cd4ab85f3a955a91373c82e8fc657f3aa8c8 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 17:02:12 +0300 Subject: [PATCH 28/31] refactor: better filtering 1) remove redundant clean section after transaction filtering 2) rewrite user filtering via vxm Signed-off-by: Rodion Suvorov --- src/main.c | 50 ++++++++++++++++---------------------------------- 1 file changed, 16 insertions(+), 34 deletions(-) diff --git a/src/main.c b/src/main.c index 542769f..0280c67 100644 --- a/src/main.c +++ b/src/main.c @@ -265,7 +265,6 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // ------------------------------------------------------------------------ // vertex filter: we will take only prersons over 30 - GrB_Matrix ID; GrB_IndexUnaryOp user_age; TRY(GrB_IndexUnaryOp_new(&user_age, (GxB_index_unary_function)&check_user_age, GrB_BOOL, user, GrB_UINT8)); @@ -276,7 +275,6 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec TRY(GrB_Vector_select_UDT(v, NULL, NULL, user_age, users, &age, NULL)); GxB_print(v, GxB_COMPLETE); - TRY(GrB_Matrix_diag(&ID, v, 0)); // ------------------------------------------------------------------------ // apply user filters @@ -288,26 +286,18 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GrB_Semiring user_filter_semiring; TRY(GrB_Semiring_new(&user_filter_semiring, GrB_LOR_MONOID_BOOL, user_filter_mul_op)); - GrB_Matrix owns_mat_filtered; - TRY(GrB_Matrix_new(&owns_mat_filtered, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); - // apply filter - TRY(GrB_mxm(owns_mat_filtered, NULL, NULL, user_filter_semiring, ID, owns_edge_mat, NULL)); - - // ------------------------------------------------------------------------ - // get cards of filtered users - // ------------------------------------------------------------------------ - GrB_Vector filtered_cards; TRY(GrB_Vector_new(&filtered_cards, GrB_BOOL, VERTICES_NUMBER)); - GxB_print(owns_mat_filtered, GxB_COMPLETE); - TRY(GrB_Matrix_reduce_Monoid(filtered_cards, NULL, NULL, GrB_LOR_MONOID_BOOL, owns_mat_filtered, GrB_DESC_T0)); + // apply filter + TRY(GrB_vxm(filtered_cards, NULL, NULL, user_filter_semiring, v, owns_edge_mat, NULL)); + GxB_print(filtered_cards, GxB_COMPLETE); // ------------------------------------------------------------------------ // build filter for tx matrix // ------------------------------------------------------------------------ // get cards with MIR payment system only - TRY(GrB_Matrix_free(&ID)); + GrB_Matrix ID; TRY(GrB_Vector_free(&v)); TRY(GrB_Vector_new(&v, card, VERTICES_NUMBER)); GrB_IndexUnaryOp payment_system; @@ -356,20 +346,6 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GxB_print(tx_mat_filtered2, GxB_COMPLETE); - GrB_UnaryOp tx_is_nonempty_op; - TRY(GxB_UnaryOp_new(&tx_is_nonempty_op, (GxB_unary_function)&tx_is_nonempty, GrB_BOOL, tx_edge, NULL, NULL)); - - GrB_Matrix keep; - TRY(GrB_Matrix_new(&keep, GrB_BOOL, VERTICES_NUMBER, VERTICES_NUMBER)); - TRY(GrB_apply(keep, NULL, NULL, tx_is_nonempty_op, tx_mat_filtered2, NULL)); - GxB_print(keep, GxB_COMPLETE); - GrB_Matrix tx_clean; - TRY(GrB_Matrix_new(&tx_clean, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); - - TRY(GrB_assign(tx_clean, keep, NULL, tx_mat_filtered2, GrB_ALL, VERTICES_NUMBER, GrB_ALL, VERTICES_NUMBER, NULL)); - - GxB_print(tx_clean, GxB_COMPLETE); - // ------------------------------------------------------------------------ // build matrix for pagerank // ------------------------------------------------------------------------ @@ -379,7 +355,7 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec TRY(GrB_UnaryOp_new(&mean_op, (GxB_unary_function)&F_op, GrB_FP64, tx_edge)); GrB_Matrix Fmat; TRY(GrB_Matrix_new(&Fmat, GrB_FP64, VERTICES_NUMBER, VERTICES_NUMBER)); - TRY(GrB_Matrix_apply(Fmat, NULL, NULL, mean_op, tx_clean, NULL)); + TRY(GrB_Matrix_apply(Fmat, NULL, NULL, mean_op, tx_mat_filtered2, NULL)); GxB_print(Fmat, GxB_COMPLETE); // apply exp function to every element of every element of matrix (lEXPmat) @@ -426,6 +402,7 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // ------------------------------------------------------------------------ // run pagerank // ------------------------------------------------------------------------ + int iteraions = 0; GrB_Vector pagerank_ans; TRY(GrB_Vector_new(&pagerank_ans, GrB_FP64, VERTICES_NUMBER)); @@ -439,9 +416,13 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec TRY(banking_pagerank(&pagerank_ans, &iteraions, EXPSUMvec, G, 1e-4, 100)); GxB_print(pagerank_ans, GxB_COMPLETE); + + // ------------------------------------------------------------------------ + // clean up + // ------------------------------------------------------------------------ + GrB_free(&ID); GrB_free(&v); - GrB_free(&owns_mat_filtered); GrB_free(&filtered_cards); GrB_free(&tx_bool_add_op); GrB_free(&tx_bool_mul_op); @@ -451,9 +432,6 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GrB_free(&tx_bool_semiring_right); GrB_free(&tx_mat_filtered); GrB_free(&tx_mat_filtered2); - GrB_free(&tx_is_nonempty_op); - GrB_free(&keep); - GrB_free(&tx_clean); GrB_free(&mean_op); GrB_free(&exp_op); GrB_free(&Fmat); @@ -476,7 +454,6 @@ int main() { LAGraph_Init(msg); printf("LAGraph initialized.\n\n"); - // GxB_Global_Option_set(GxB_BURBLE); // ------------------------------------------------------------------------ // init edge matrices @@ -512,6 +489,11 @@ int main() // ------------------------------------------------------------------------ TRY(analyze_graph(tx_edge_mat, owns_edge_mat, users, cards)); + + // ------------------------------------------------------------------------ + // clean up + // ------------------------------------------------------------------------ + GrB_free(&tx_edge_mat); GrB_free(&owns_edge_mat); GrB_free(&users); From 6edbed09dc35360d05d809b715387cfc83fa85e2 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 18:01:37 +0300 Subject: [PATCH 29/31] fix: remove lagraph. fix binops Signed-off-by: Rodion Suvorov --- src/main.c | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/src/main.c b/src/main.c index 0280c67..ecc2559 100644 --- a/src/main.c +++ b/src/main.c @@ -61,7 +61,7 @@ void check_user_age(bool *z, const User *x, GrB_Index i, GrB_Index j, const uint bool user_filter_mul(bool *z, const User *x, const bool *y) { - *z = (x->age > 30) && (*y); + *z = *y; } void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, const uint8_t *y) @@ -87,11 +87,6 @@ void tx_bool_add(EdgeTX *z, const EdgeTX *x, const EdgeTX *y) *z = *x; } -void tx_is_nonempty(bool *z, const EdgeTX *x) -{ - *z = (x->count != 0); -} - void exp_binop(double *z, const double *x) { *z = exp(*x); @@ -201,19 +196,20 @@ int banking_pagerank( int *iters, // input GrB_Vector subgraph, - const LAGraph_Graph G, + const GrB_Matrix A, float tol, int itermax) { GrB_Vector r = NULL, t = NULL; - GrB_Matrix AT = NULL; - AT = G->AT; + GrB_Matrix AT; + GrB_Index n; + GrB_Matrix_nrows(&n, A); + GrB_Matrix_new(&AT, GrB_FP64, n, n); + GrB_transpose(AT, NULL, NULL, A, NULL); // ------------------------------------------------------------------------ // initialization // ------------------------------------------------------------------------ - GrB_Index n; - GrB_Matrix_nrows(&n, AT); GrB_Vector_new(&t, GrB_FP64, n); GrB_Vector_new(&r, GrB_FP64, n); @@ -407,14 +403,7 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GrB_Vector pagerank_ans; TRY(GrB_Vector_new(&pagerank_ans, GrB_FP64, VERTICES_NUMBER)); - LAGraph_Graph G = NULL; - - TRY(LAGraph_New(&G, &M, LAGraph_ADJACENCY_DIRECTED, msg)); - TRY(LAGraph_Cached_AT(G, msg)); - - TRY(LAGraph_Cached_OutDegree(G, msg)); - - TRY(banking_pagerank(&pagerank_ans, &iteraions, EXPSUMvec, G, 1e-4, 100)); + TRY(banking_pagerank(&pagerank_ans, &iteraions, EXPSUMvec, M, 1e-4, 100)); GxB_print(pagerank_ans, GxB_COMPLETE); // ------------------------------------------------------------------------ @@ -445,15 +434,13 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GrB_free(&M); GrB_free(&pagerank_ans); - LAGraph_Delete(&G, msg); - return GrB_SUCCESS; } int main() { - LAGraph_Init(msg); - printf("LAGraph initialized.\n\n"); + GrB_init(GrB_NONBLOCKING); + printf("GraphBLAS initialized.\n\n"); // ------------------------------------------------------------------------ // init edge matrices From 3090f651d997098ea50345e900444bde88a628c4 Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 18:08:51 +0300 Subject: [PATCH 30/31] refactor: provide more comments --- src/main.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index ecc2559..174af62 100644 --- a/src/main.c +++ b/src/main.c @@ -260,7 +260,7 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // build user filters // ------------------------------------------------------------------------ - // vertex filter: we will take only prersons over 30 + // take persons over 30 GrB_IndexUnaryOp user_age; TRY(GrB_IndexUnaryOp_new(&user_age, (GxB_index_unary_function)&check_user_age, GrB_BOOL, user, GrB_UINT8)); @@ -314,6 +314,9 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec // apply cards filter to tx matrix // ------------------------------------------------------------------------ + // receive transactions between cards of the "MIR" payment system for users over 30 years old + + // create semiring to process A x B where A has type Card and B has type EdgeTX GrB_BinaryOp tx_bool_add_op; TRY(GrB_BinaryOp_new(&tx_bool_add_op, (GxB_binary_function)&tx_bool_add, tx_edge, tx_edge, tx_edge)); @@ -329,15 +332,20 @@ GrB_Info analyze_graph(GrB_Matrix tx_edge_mat, GrB_Matrix owns_edge_mat, GrB_Vec GrB_Matrix tx_mat_filtered; TRY(GrB_Matrix_new(&tx_mat_filtered, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + + // filter rows of source transactions matrix TRY(GrB_mxm(tx_mat_filtered, NULL, NULL, tx_bool_semiring, ID, tx_edge_mat, NULL)); + // create semiring to process A x B where A has type EdgeTX and B has type Card GrB_Matrix tx_mat_filtered2; GrB_BinaryOp tx_bool_mul_right_op; TRY(GrB_BinaryOp_new(&tx_bool_mul_right_op, (GxB_binary_function)&tx_bool_mult_right, tx_edge, tx_edge, card)); GrB_Semiring tx_bool_semiring_right; TRY(GrB_Semiring_new(&tx_bool_semiring_right, tx_bool_monoid, tx_bool_mul_right_op)); + TRY(GrB_Matrix_new(&tx_mat_filtered2, tx_edge, VERTICES_NUMBER, VERTICES_NUMBER)); + // filter columns of source transactions matrix TRY(GrB_mxm(tx_mat_filtered2, NULL, NULL, tx_bool_semiring_right, tx_mat_filtered, ID, NULL)); GxB_print(tx_mat_filtered2, GxB_COMPLETE); From 9d38f66f3b607c4864525343506a3f964738750d Mon Sep 17 00:00:00 2001 From: Rodion Suvorov Date: Tue, 11 Nov 2025 18:14:23 +0300 Subject: [PATCH 31/31] refactor: remove lagraph from build system --- .gitmodules | 5 +---- Makefile | 17 +++-------------- src/main.c | 5 +---- 3 files changed, 5 insertions(+), 22 deletions(-) diff --git a/.gitmodules b/.gitmodules index adabfa3..0d69ce3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ [submodule "vendor/GraphBLAS"] path = vendor/GraphBLAS - url = https://github.com/DrTimothyAldenDavis/GraphBLAS.git -[submodule "vendor/LAGraph"] - path = vendor/LAGraph - url = https://github.com/GraphBLAS/LAGraph.git + url = https://github.com/DrTimothyAldenDavis/GraphBLAS.git \ No newline at end of file diff --git a/Makefile b/Makefile index cd2c20d..8393f0d 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,9 @@ LIBPATH := $(shell dirname "$(realpath "$(lastword $(MAKEFILE_LIST))")") GRAPH_BLAS_PATH := $(LIBPATH)/vendor/GraphBLAS -LAGRAPH_PATH := $(LIBPATH)/vendor/LAGraph BUILD := $(GRAPH_BLAS_PATH)/build -LAGRAPH_BUILD := $(LAGRAPH_PATH)/build JOBS := $(shell nproc) -build: graphblas lagraph src +build: graphblas src graphblas: mkdir -p $(BUILD) && \ cd $(GRAPH_BLAS_PATH) &&\ @@ -14,20 +12,11 @@ graphblas: -G Ninja -B build cmake --build $(BUILD) --parallel $(JOBS) -lagraph: - mkdir -p $(LAGRAPH_BUILD) && \ - cd $(LAGRAPH_PATH) && \ - cmake -DGraphBLAS_DIR=$(BUILD) \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DCMAKE_BUILD_TYPE=Release \ - -G Ninja -B build - cmake --build $(LAGRAPH_BUILD) --parallel $(JOBS) - clean: - rm -rf $(BUILD)/* $(LAGRAPH_BUILD)/* ./build + rm -rf $(BUILD)/* ./build src: mkdir -p build - gcc src/main.c -I./vendor/GraphBLAS/Include -I./vendor/LAGraph/include -L./vendor/LAGraph/build/src -L./vendor/GraphBLAS/build -llagraph -lgraphblas -lm -o build/main + gcc src/main.c -I./vendor/GraphBLAS/Include -L./vendor/GraphBLAS/build -lgraphblas -lm -o build/main .PHONY: all build lagraph clean src diff --git a/src/main.c b/src/main.c index 174af62..907e21a 100644 --- a/src/main.c +++ b/src/main.c @@ -1,8 +1,6 @@ #include #include #include "../vendor/GraphBLAS/Include/GraphBLAS.h" -#include "../vendor/LAGraph/include/LAGraph.h" -#include "../vendor/LAGraph/include/LAGraphX.h" #define TRY(method) \ { \ @@ -17,7 +15,6 @@ } #define VERTICES_NUMBER 12 -char msg[LAGRAPH_MSG_LEN]; typedef enum { @@ -496,5 +493,5 @@ int main() GrB_free(&user); GrB_free(&card); GrB_free(&tx_edge); - LAGraph_Finalize(msg); + GrB_finalize(); }