From 207ff35ef90ceeddcc77e4af7fe57947441a1a11 Mon Sep 17 00:00:00 2001 From: Rishu Kumar Date: Fri, 20 Sep 2024 02:04:29 +0530 Subject: [PATCH] add feature post APIs --- api/feature_posts.go | 96 +++++++++++++++++++++ api/router.go | 7 +- api/saved_posts.go | 2 +- db/migration/000030_feature_posts.down.sql | 1 + db/migration/000030_feature_posts.up.sql | 9 ++ db/query/feature_posts.sql | 24 ++++++ db/sqlc/feature_posts.sql.go | 95 ++++++++++++++++++++ db/sqlc/models.go | 7 ++ db/sqlc/querier.go | 3 + files.zip | Bin 38532 -> 0 bytes 10 files changed, 242 insertions(+), 2 deletions(-) create mode 100644 api/feature_posts.go create mode 100644 db/migration/000030_feature_posts.down.sql create mode 100644 db/migration/000030_feature_posts.up.sql create mode 100644 db/query/feature_posts.sql create mode 100644 db/sqlc/feature_posts.sql.go delete mode 100644 files.zip diff --git a/api/feature_posts.go b/api/feature_posts.go new file mode 100644 index 0000000..881b03f --- /dev/null +++ b/api/feature_posts.go @@ -0,0 +1,96 @@ +package api + +import ( + "firebase.google.com/go/v4/auth" + "github.com/gin-gonic/gin" + db "github.com/imrishuroy/legal-referral/db/sqlc" + "net/http" + "strconv" +) + +type saveFeaturePostReq struct { + PostID int32 `json:"post_id"` + UserID string `json:"user_id"` +} + +func (server *Server) saveFeaturePost(ctx *gin.Context) { + var req saveFeaturePostReq + if err := ctx.ShouldBindJSON(&req); err != nil { + ctx.JSON(400, errorResponse(err)) + return + } + + authPayload := ctx.MustGet(authorizationPayloadKey).(*auth.Token) + if authPayload.UID != req.UserID { + ctx.JSON(http.StatusUnauthorized, gin.H{"message": "Unauthorized"}) + return + } + + arg := db.SaveFeaturePostParams{ + PostID: req.PostID, + UserID: req.UserID, + } + + err := server.store.SaveFeaturePost(ctx, arg) + if err != nil { + + errorCode := db.ErrorCode(err) + if errorCode == db.UniqueViolation { + ctx.JSON(400, gin.H{"message": "Post already saved"}) + return + } + ctx.JSON(500, errorResponse(err)) + return + } + + ctx.JSON(200, gin.H{"message": "success"}) +} + +func (server *Server) unSaveFeaturePost(ctx *gin.Context) { + postIdStr := ctx.Param("post_id") + + postID, err := strconv.Atoi(postIdStr) + if err != nil { + ctx.JSON(400, errorResponse(err)) + return + } + + authPayload := ctx.MustGet(authorizationPayloadKey).(*auth.Token) + if authPayload.UID == "" { + ctx.JSON(http.StatusUnauthorized, gin.H{"message": "Unauthorized"}) + return + } + + arg := db.UnSaveFeaturePostParams{ + PostID: int32(postID), + UserID: authPayload.UID, + } + + err = server.store.UnSaveFeaturePost(ctx, arg) + + if err != nil { + ctx.JSON(500, errorResponse(err)) + return + } + + ctx.JSON(200, gin.H{"message": "success"}) +} + +func (server *Server) listFeaturePosts(ctx *gin.Context) { + + userID := ctx.Param("user_id") + + authPayload := ctx.MustGet(authorizationPayloadKey).(*auth.Token) + if authPayload.UID != userID { + ctx.JSON(http.StatusUnauthorized, gin.H{"message": "Unauthorized"}) + return + } + + posts, err := server.store.ListFeaturePosts(ctx) + if err != nil { + ctx.JSON(500, errorResponse(err)) + return + } + + ctx.JSON(200, posts) +} diff --git a/api/router.go b/api/router.go index f5680c5..f464ba2 100644 --- a/api/router.go +++ b/api/router.go @@ -182,9 +182,14 @@ func (server *Server) setupRouter() { // save post auth.POST("/saved-posts", server.savePost) - auth.DELETE("/saved-posts/:saved_post_id", server.unsavePost) + auth.DELETE("/saved-posts/:saved_post_id", server.unSavePost) auth.GET("/saved-posts/:user_id", server.listSavedPosts) + // feature posts + auth.POST("/feature-posts", server.saveFeaturePost) + auth.DELETE("/feature-posts/:post_id", server.unSaveFeaturePost) + auth.GET("/feature-posts/:user_id", server.listFeaturePosts) + } func CORSMiddleware() gin.HandlerFunc { diff --git a/api/saved_posts.go b/api/saved_posts.go index ef739e2..1788ce7 100644 --- a/api/saved_posts.go +++ b/api/saved_posts.go @@ -47,7 +47,7 @@ func (server *Server) savePost(ctx *gin.Context) { } -func (server *Server) unsavePost(ctx *gin.Context) { +func (server *Server) unSavePost(ctx *gin.Context) { savedPostParam := ctx.Param("saved_post_id") // convert this to int32 diff --git a/db/migration/000030_feature_posts.down.sql b/db/migration/000030_feature_posts.down.sql new file mode 100644 index 0000000..c609f80 --- /dev/null +++ b/db/migration/000030_feature_posts.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS feature_posts; \ No newline at end of file diff --git a/db/migration/000030_feature_posts.up.sql b/db/migration/000030_feature_posts.up.sql new file mode 100644 index 0000000..5dd8413 --- /dev/null +++ b/db/migration/000030_feature_posts.up.sql @@ -0,0 +1,9 @@ +CREATE TABLE feature_posts ( + feature_post_id SERIAL PRIMARY KEY, + post_id INT NOT NULL, + user_id VARCHAR NOT NULL, + created_at TIMESTAMPTZ NOT NULL DEFAULT current_timestamp, + FOREIGN KEY (post_id) REFERENCES posts(post_id), + FOREIGN KEY (user_id) REFERENCES users(user_id), + UNIQUE (post_id, user_id) +); \ No newline at end of file diff --git a/db/query/feature_posts.sql b/db/query/feature_posts.sql new file mode 100644 index 0000000..4db3c24 --- /dev/null +++ b/db/query/feature_posts.sql @@ -0,0 +1,24 @@ +-- name: SaveFeaturePost :exec +INSERT INTO feature_posts ( + user_id, + post_id +) VALUES ( + $1, $2 +) RETURNING *; + +-- name: UnSaveFeaturePost :exec +DELETE FROM feature_posts +WHERE + user_id = $1 AND post_id = $2; + +-- name: ListFeaturePosts :many +SELECT + feature_posts.feature_post_id, + sqlc.embed(posts), + feature_posts.created_at +FROM + feature_posts +JOIN + posts ON feature_posts.post_id = posts.post_id +ORDER BY + feature_posts.created_at DESC; \ No newline at end of file diff --git a/db/sqlc/feature_posts.sql.go b/db/sqlc/feature_posts.sql.go new file mode 100644 index 0000000..36abb92 --- /dev/null +++ b/db/sqlc/feature_posts.sql.go @@ -0,0 +1,95 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.26.0 +// source: feature_posts.sql + +package db + +import ( + "context" + "time" +) + +const listFeaturePosts = `-- name: ListFeaturePosts :many +SELECT + feature_posts.feature_post_id, + posts.post_id, posts.owner_id, posts.content, posts.media, posts.post_type, posts.poll_id, posts.created_at, + feature_posts.created_at +FROM + feature_posts +JOIN + posts ON feature_posts.post_id = posts.post_id +ORDER BY + feature_posts.created_at DESC +` + +type ListFeaturePostsRow struct { + FeaturePostID int32 `json:"feature_post_id"` + Post Post `json:"post"` + CreatedAt time.Time `json:"created_at"` +} + +func (q *Queries) ListFeaturePosts(ctx context.Context) ([]ListFeaturePostsRow, error) { + rows, err := q.db.Query(ctx, listFeaturePosts) + if err != nil { + return nil, err + } + defer rows.Close() + items := []ListFeaturePostsRow{} + for rows.Next() { + var i ListFeaturePostsRow + if err := rows.Scan( + &i.FeaturePostID, + &i.Post.PostID, + &i.Post.OwnerID, + &i.Post.Content, + &i.Post.Media, + &i.Post.PostType, + &i.Post.PollID, + &i.Post.CreatedAt, + &i.CreatedAt, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} + +const saveFeaturePost = `-- name: SaveFeaturePost :exec +INSERT INTO feature_posts ( + user_id, + post_id +) VALUES ( + $1, $2 +) RETURNING feature_post_id, post_id, user_id, created_at +` + +type SaveFeaturePostParams struct { + UserID string `json:"user_id"` + PostID int32 `json:"post_id"` +} + +func (q *Queries) SaveFeaturePost(ctx context.Context, arg SaveFeaturePostParams) error { + _, err := q.db.Exec(ctx, saveFeaturePost, arg.UserID, arg.PostID) + return err +} + +const unSaveFeaturePost = `-- name: UnSaveFeaturePost :exec +DELETE FROM feature_posts +WHERE + user_id = $1 AND post_id = $2 +` + +type UnSaveFeaturePostParams struct { + UserID string `json:"user_id"` + PostID int32 `json:"post_id"` +} + +func (q *Queries) UnSaveFeaturePost(ctx context.Context, arg UnSaveFeaturePostParams) error { + _, err := q.db.Exec(ctx, unSaveFeaturePost, arg.UserID, arg.PostID) + return err +} diff --git a/db/sqlc/models.go b/db/sqlc/models.go index 173a7ad..8747411 100644 --- a/db/sqlc/models.go +++ b/db/sqlc/models.go @@ -446,6 +446,13 @@ type Faq struct { CreatedAt time.Time `json:"created_at"` } +type FeaturePost struct { + FeaturePostID int32 `json:"feature_post_id"` + PostID int32 `json:"post_id"` + UserID string `json:"user_id"` + CreatedAt time.Time `json:"created_at"` +} + type Firm struct { FirmID int64 `json:"firm_id"` OwnerUserID string `json:"owner_user_id"` diff --git a/db/sqlc/querier.go b/db/sqlc/querier.go index c9139b7..95da198 100644 --- a/db/sqlc/querier.go +++ b/db/sqlc/querier.go @@ -85,6 +85,7 @@ type Querier interface { ListExperiences(ctx context.Context, userID string) ([]ListExperiencesRow, error) ListExpiredAds(ctx context.Context) ([]Ad, error) ListFAQs(ctx context.Context) ([]Faq, error) + ListFeaturePosts(ctx context.Context) ([]ListFeaturePostsRow, error) ListFirms(ctx context.Context, arg ListFirmsParams) ([]Firm, error) ListFirmsByOwner(ctx context.Context, ownerUserID string) ([]Firm, error) // lawyers @@ -120,6 +121,7 @@ type Querier interface { // RejectProject(ctx context.Context, arg RejectProjectParams) (Project, error) SaveAboutYou(ctx context.Context, arg SaveAboutYouParams) (User, error) + SaveFeaturePost(ctx context.Context, arg SaveFeaturePostParams) error SaveLicense(ctx context.Context, arg SaveLicenseParams) (License, error) SavePost(ctx context.Context, arg SavePostParams) error Search1stDegreeConnections(ctx context.Context, arg Search1stDegreeConnectionsParams) ([]Search1stDegreeConnectionsRow, error) @@ -131,6 +133,7 @@ type Querier interface { SendMessageToDiscussion(ctx context.Context, arg SendMessageToDiscussionParams) (DiscussionMessage, error) StartProject(ctx context.Context, arg StartProjectParams) (Project, error) ToggleOpenToRefferal(ctx context.Context, arg ToggleOpenToRefferalParams) error + UnSaveFeaturePost(ctx context.Context, arg UnSaveFeaturePostParams) error UnlikeComment(ctx context.Context, arg UnlikeCommentParams) error UnlikePost(ctx context.Context, arg UnlikePostParams) error UnsavePost(ctx context.Context, savedPostID int32) error diff --git a/files.zip b/files.zip deleted file mode 100644 index e55f6989101b50b8032abff37298120b2696f8af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38532 zcmagFQ?Mx8vMoAn+qP}nwlRk}hi%)oF^6s2wryK?uC?DgC+?1T@jkMuK6>`3%9h!( z^O^6cw!ZVcIFd9*J(40wURjP_o9FwJDqiW*62NxK! zN7R}azQf1RoP5nO|Mup0^RWf2aZj~c!#?G)<&`onj()4$pa)s^^MtH&DToQI1eU-U zFPrutX;I7#QppNq{5-!~iO}Qv@o}| znMz}1%gvkxR$4ayi5Sd9&=+E@vRQq8-hpqiq$5t#J$Db>zb~xMU=~y^i=3(>pVCc9 zY_Ydx&OK574=8jA6BNptq5|G|QiHLQsy-JS>pg$jW66`MuC&)dq{e7KzZ`wFUb`(I9z3{lt(y&bG;LT>j+FxBDjVR)6Y}rD|jjk>$#A zXiaXAU75HVcq}Oo%oBQ>GK>YyUikn+2cHMD_C5_8y!LBL+8!GHjl%x`iCy!kaW8|Q z6#EySW8iR?sL& z0rF0yd8>{k#deFff5f$!7IYCf{BB;Zl)2|^=AhP<8#gwmy_`w2Y_4^xM2*Vv1G$F( zY>S&*?t@FsKgXKkj(J#NP&wMJj1_afhlwnQI$ReMb8lpHwMT#&i#v|WO&r!E z9^fQAjrj1*D|@CGo(EKV`mPr-1o-C2(CI{WWP7X3>gm!gls$(XGswI9GO$@`#>D`A`# z#!|cfGPKepp#AlgQE|9P?TimJqIC!2m>7;?r<*{eLR1JNQ#_v)jq;1i#!~$kbDU3u zy+}j}u_&3BA%dm&$WZvARWHBdM?_X+Ba!6!fjkYg0Zrdgqtx0yDsa(L4O5;P1lpOM zTOhu@leM_^j^fd$CYsJHhGJr*LjL%TDP2JkBGoX~z)0UirMB*t>B^DZ{a7l{@Y(vg z=5@+duiV8Y^#1~S4|J}9>*h$x`xj8;zm*C37f>Y=!(TQgbT+^KElm2*Xj6v2_FstF z#LHR@Fu;V|e4_>kt-;B)!!;{W80$y%!+mgEYT$^=%3N|ZT$--c7(T$XW86jCc}k_CCD2_yN8LQ%DNq2juM0+rn)Sia>cbYv^Vi?Ak-{C zq!Byw7M@_CO`;c0k+4$oSV=f(#ZFK`1TA{Bc40K5aoE(<%nxir1dWNjuS)A~XWN z0jrWPZe|rS3ydVjf?lZ8D)?i4TNuZwIC1~;yK^HD_lWl!kmH%tS4B7}I(i4K7axw7 z;-nKj#^w#p4U(J~@-TubPi(NflwWSP*#-&Hd(^&Fn7Wgu#-(y&>fxl_o#->KTt8cX znlhss;D6&E-CC$|I1F+^`8WPnf8!7RH~z|^!m3J=Dw_W<0)zytrbR${|BXQKUux`U zKnS|=iHL8VFH2sBJ{MN`+KY&4FhDofeg+F099Y2y3a(InLE+q)j2S`hj6bVCz@wkz zUZ7@8->s6SG%Z1M93L7|NP4FLX|B$T+w%a4F}TMIH@XMuio!Lv%dT6ErW!Eq6DE z12R@)W}=NEZP2uK-kucO{f5CYePsmV@d57P=7GL%2}JpjLejIXV!ZLn`;$7ovhlrB z6Ya@49w?lAQ+?D_0M%lHI?`axPaT_uaIO z{bRwp6!;6JBl&epsBEu^F-Zik!E($Ey(~N6@1TFP9qMl%0sz;3M3cgP3aHKl3qnW)54A*gW&W6h8e#G7t0_I-a1I4U`yYU= zD@zN!-tUiR%~O*xo#5p2@VB6cQ%b-MIyv>h`|%3g{jJx|tNjfNZR&Wgw>m}Zszj$q2YW6m-BhDx8{k?&%+ zRw87JUZ$bcWNQ2)XmxKLfHnL0M>Yn49Vhx;>RBd)p4KQd-U6+5dG_h>mH7}mleiiC z)KPvF?#Wtz&$jUc>hTh~4193E^5t45>CP^V+y^uMA+x zL`*KcnJp6^a}O(W?2{wS>Ei9cd`e{#GMOVK1XO|)1R%Y|LniwCVd#KAUs5g<s}VD|KQSJE_qpm_=1uc%O=$G!q?Z_(@D z#lwRBEjy7{Z?` z4THzoT z>vkUa-6#O82@uP2 zqK4%@7W0fvmXBKfv>H}kvd`+s=ry8+;gA0DZYslE<-f<>UejvWnY6j6(RRPA z;l*PY#jza{U*-Gs<3Q6Px*D$_%{0tQc^xt!=QGeiHie zaCNWe(Wwo$``lNIlU{Z~3F=p`oCi&fx~*Pj(g)qkI{G{MgSm^%I{E<(k1h(8wM5s2 z1$M#BBNarhIC_{7RXN428@WXCc;x-@fQo6d=O3o|4^Nr4{Q19l3iL127@He9{fDT` zKLt$xvH#+k|8IBTzwW<`{(qhSqt*ZENU(4W))0T?T|eZ1w7RKXP3rafq|C{}uB{ z$G_sXlCnZ#iU&VG&&SjKx7gAHCBt;Yxu=nd}AC#+_rbcfBr2Dp&&s#Mhu^z@%JgCoFyYKK=9``;BB;ZuU zg!LTq(`4veYMD$N%G?E}HfM{k9~x(L>pc_8AsAuFFdi-Z`x(jhY^}qx6D#&X64&Rpb_A@jNl|o(l#PVU;5k3Nq*mxlhV18&8g4iAf^&grYY;iN8=6) zWy=_b*jWTF|CnD>e}IWV&tkXN)k&D2f{%$^bno6@GehdMIT?Rgu?&!xY3p+FX|1Ko z_muQGP&^o@BS5CO^~JSeFDUJt1=kPl z)0ByUEJfz-7pwFbCg#&cE}@YF_o>Z> zOV;b^vc-3}cHZZvTdm)SZ~`9bMv*+$cS>y!-YcB?P%uOPbh|UEst)?D{!zF*7;&ZDyXU}zdD0|=MTsK<~^v~uLC;&h?5&!_$-$FFAqqDL5kF>@PGBL&dYyVY8#p+uLg%l{= zIX)3O*E$pd8M&dW72cpAEHVf>0^HLJH-J}o$l?pi+T~7{_uM;u43?#%qN7Kv^YO1Vm=>;0`*oPR|i=8xDAT$&C$o z|Ij6~Jj~!&@QD7BT0n_jTm_qx!waDqDuv1N@|B=dE;)%!k5+*B%}wAGmjRscwnIed zYO~^r=#_X652HZMbF{dy8(H*bHJ}hQjg9TS$26svDX}hQ@8J=xD#qTtqIFJ&Q!W!* zW7GfJ92q_-Hy6Hfba5wP?t*`D8>c$QVD;)6M*qgoGHxSjSXc3FV{+jdRLE)IFwU>tQ(Nnyl1g zMduSo<_0ZD(}m1EBvRQ&itdSWf?*^m<%!IYHmQ>xNVn@Ii>(A2aCF{i13*D<`QSv9 zf#V7!FF!e1h!ofvDMXMuA8&-Nq+VjI8B>M;Lw$Q3ij&-^@Y0&2vr(Z!#b^Vr^SJu(*wLj}VCVu^ETw?kC=%`^0JR?CUrS&pUI;yWaOZ)w2 z)b(g=y`3a_g4|Y}-8kF# z3b<-$mAi-ReKv(V*|W-7^l!A87l$4zpF^c&KQxHo?B+gKIK9L#?;bWSXG$~*m#6f@+#ynw-MwSa184rv}$1^_R2Nr=>RY zm=H0xaE<0n3mJ#wJ70Jcxh3e>M4Tvls3|!My0jF{q%=HYYpjV%-n_i!765yFIW zR6#1D=SRbb4r!-kqJC;;xY{e;4b3{FMz=nnOeSEWbRsloyYfgKPa~_JUI@Auf{ep) z0U>x-Kv4>HvDl+~nm2D;zKg!X2q;zEBUuE{8-NFvj-VnB=fx%C`*5)#us&_iB{e`>{2j&_DNz(rR0zN z`~7RPyEbUxXx=WZDus&`)iTi8b))mMht#`=QN7qVXL3kf)D0qP(G=uSDW72iq=|sL zbDh*IzQ{q@isH!({Z?Pb17|2M;5g@&HW*#Q6)JpK>EJ38C^ ztCap>c>gY&|7Q5EuN8-b(Rr|l?VHlq8$>KOSE6Z92@E6xh=3qM`v%}`&)8Cag5n&} z@~Ov3El1M=QYqXo6E#(}_VMxid&}FOunMa2K>p4OfWq@1u~Yb*{M)gFh8S#9* zib6pqa=YB|5uP6^hWvvdEp|_{;6LpBz67t_xz9~}VgA17OZ~eBaOXGJDg>OPpW78S9Y}>*6jpvg%{nX$A!eMx>2rwsG^!a^6 zr?@+3*(Vua{(QBO5Yi7(G|w_plP?*|qBJtGjrsU@F81JtX8SP`=SOnQ-)PU!A7IA2 zM^(np4Ky+F12C@p34~G1M=p{k;Y2VW@nMbDSZVl)5Q%K3?-kzDuu(sNyb66$6&HOf z?+?9r9z{3RU?DW(Ab2?WNg8srHD0xqx;dpj$WOs0eJZBk*U?D^7hS5Ep^#Z&2L{=p zn43?c2Ida&&7jSLYq5RErEdM-f_%GblN=OxB-w5VvsK*0^`9hT?~{)=x<1hT0Jndg|RLB2}(S%4%WZ=S|*lqcy-OC=R2YK(^opF3SB5B zilXo;Lw*E#49v*#07e}qE$N$_;DKW>0i^Q8%oq?!ISz?FTDnH6h2lq1@e<&kv?~ zi`n1I3AmRtOFEME9i3&lC}tY8qI{qqg17iqFkQe=qoi+$sBca?0Vy;``&HZEOPhH% zAKn$BIyG!I23*&R-Ul4tZI~P3r+|L|z3nM3XJDtIbtC$Nk+SKxE!sQ*TsWCKazgAY zF)|`embjTeFejmv2i(;-{rYjbw5eZ~8=UZ!;e_<#6ig3nPsG)&8k03C*cwCAI^@v3 zFz>^@cEY{@3vWJA0ej|;Mstkg%u-Xd>mxMn_PVKfmT0A(Qq)4(T6HpaU$MjJ|A1xU zIaY(Hw_C2FYK@IDb@tTUduZmPDYfbW)_$dk= z65*=n4s#W9vFZLXs{ZCL{9v-KD5$$2^%uOa4nJ@zuW5NI0q@>=cAtOeZY;I|aX=>d zWV+Zwxy46k*uYLU>m<;=JsM1EEdyo zobD{J*)5$GgUA3$&>kdk+bgaAYc^1K(|uh=mv?kd60lKo?;dk!4;(vEw5d|$mg&6E zDS8OFavSwr=xgOsFH{p%OC&ELy3xzH^1>z*liFe72ClObKBI1){IdWxm3P>ir~`Yw zz6Vw}%gSk9$= zgd$;nCxx71I1g0(@ki`279Ri9ql6rYU`Yy2L|CK0|ET~j--Y%lT9ngmv#T+0xjhr{ zaif*qn%x*K!OFV81XGg^PC>yn(cKR{PS>)DP<2+>HI&Xw^qWT2VW0DE$f5ymGJq6E z>L$PP)HOL_Bq4T&)|Vq2wZVi}Mq5WA7!#5EN*%QjL|7;4AYRn}{6#6GM%SOc;7q0g24*Xx}}ZJ z#goc@B10#CWk@LoYeB&)yA3`lOGHoUi|iD7ptO>HsT1WrIWsj$4<`IbGPR;q^A}0` zT@)~`BS0<9(owF#h+fN>?%nm&_ub-e5LPKvqb$mlLd>72Clk|@V0`v&?TbzsN}h2N z8^I9jC(k^37+2A8!|zp{>&EPlV&F#(`aBy=Tq85_isjBVpuS4Xly4r)=|$e}PG_Iz zXWRDMsci3^%PO%j&vz+(riu23=V?DIwRte|RPA0^QWAS=+KrNpDbFiiP{O%Nrm0vvqKAz@-QzJw>TLh6Lin>I}y2v$U8{y!-WA7E*aTz}~F8m6gwe8t52ks^i7C#ld4YEe-5PD`Db+krrtn zE0G7Um1|qI>^B`SiKmhQ@4!AxF-^Y~ufQWFN^s;w{DFfDDltXm`%T-fUe@Yq(D@j+ zAMFBqV0LrHMQmGP%f&a#OJ>fzSK1jWwG3F3+t#A3C(GAL97Jwv%p3jjlf3s2w-OQF z8KDU0D>g3ePq-m!UJC7x2L?xL-E7gN2cz*4jn93I9mY_Byk)-z)cRumPNm-P{#fJ=Q>i+hE8i*9$y34J@cN!%J(T#uKx zZ8jvp!MTa?Jnqe9IN}twuIb7cB)h-m$2wsuU}y#)i_qX%99rbwEf5eUc!w%2h$Zw& z6MFPFsmC_8pXkd-k4y!n$bS$*se^5au}mH@G)1KGylMr zr}l|X*1|7;JY%P>ZvA>$b#2jcfm}d?Q4;c-RT+-TaBb;+*Nw8<%$e#5BzAZJj5c^9HrYw%X!tOA>%j=URw}}qsVFoR45Pz4^u~)+snlmFHMsFj zV7ffIwjLNZa>#KzKNwzX#sFjYeX3{FX~b#nb%(Z)LGznB*EzX}9#~Py16s)qIaxq! z=B)nWy%US&J=$wVePR`8>k+L7j0xo{b@)%B+KxBIaA})mtXFvCX}?+@!4+rwf$fXf zFnz@E;5g_r_#$qf7&qXT9sQRtL?;YLp-lX=qHnuE|CIq0-u7KU+)aajKEj&tu>%l` zP%+N4=fO7W#>_-0d{cVg3Dw{n)Ry2g+?!CLW>argMu&!Ou~mdR736_Jz(Y5hj#}`$ zRWG_&6NJK`XVe(?Arzb$(6-J}To|k8x_>h%h4;P^5!Myl#Yxo-SYO&NgV~loPowL^ zgB_(wk??3l5giCwiP4m(0fqxz?l07l7w-TVBH03Hj)9(wZW)2Z%L&@EDq`k zj|JNo&NZ_bf0Q)m~bw4?<&Pjv7gMe2{OF^${I@xNS7$ zF4C!pLRUIX3prZk4IlqJon7J))C#qBH2OdlmQT=o_!sxM=pd~OQXi_XjFs~L$st)I(J^}e|72d=cB^g@y8+Gdn%}IaL zu9ve}OYEeh(3ALd>uE}KgB8NQ1Xv%LC2k&Yp4YPIHG<8atx8uZIG)ub3p|@mv`{_? zBd9*XHmk?Ly@j*cgOPI5LkW(vBNsiHBiN_XZxd}sS0S1@}TfG zi=|<8bk|pW#k|*lZ56|Nm3mpfRLJCHTsRVC7~i>t*9M;|#-)J0O1*N0Nk)b#{)sM5 z2S0o;%&Gl6z#ZX7U7f5N<3?Z zh;loZC>S?ZTC4HLl9lbxYtrhb`mOEhc0&EdM*eC5bg6s=(x3CZ&)3TKs`r<|I(ZOb zp>`BW?c#>PUI}fw=>FY~El6c^DAj&}R+h8AP79M;=a}~OHLq{?m~6UlX4jWZm-q01 zJIzu%*^!g*4micel9$#9i5C$SSC5mNtNWnS&($xqSxrRTsOk|b*CCH|Cm6B=uk_{Uh#so-s2SzT$nx<5km-(u3)+tp+@mHx<|{S zRba7O3Z=~?75eKcFN)%^XH3icR)R)}EpwLy(xRpstsZ$-;?8ttpuXB@TR*O{11>%& z{^CDvkZ8UH{wiUbIau}xH=kN7iY(jcx!MnRF(<5_d9~uT&Vg&E;cf-y2kn1B} zQF%f{UilQtOn{Fr2N15>G6UQ(whw{>x7L+lbXv;!pf8b-f4g`Ct2+*Xn(l2g?BK^k zD8KA-pwGpZKMy>z2*mLP52rr@QFOMWCS0v2cN>!zasH6X6BRFpx+^C7CBA~&6g}3~ zD188;JjTqXTGz}}!ybc_HL9G8nOh{^F`K&)SjxLl8O+08yfsDF&*yClr{VEuD8aMg zk}fGWg%HZaHI<%7cwqbeW)%o@C2h+7FzV)F>PpV#^1GRc-W0^8<9UGaGo>|`QsIN4 zUj8$So!T0jO^nzzv2vsov|d9^qX#)<;IgmRWd)C0i}y_7!RKm1OI9C!L)R!6RNEiO zv4Bj9)Q>~NQwQ8<^sqL#Ym0Z@S@e)G|MN$*XZh=5gnAS$dUIqFl4T}9dI8* zoI%vK<6SJR`?eFOzJhu~JCjRiROt6Vy;$^_<$51|ua)WB%Ptb{M|FU8u50*npo4!< zoh*-L7iJ3XMIRk&4ruHlkSfj zE3Ol08t!YU`>d*+&+I;&yKh4GNVhbjdoq>(8no);>s0C=LKVVdsh-R>ipO=4T=DLr zgoNSx{wwh$+x3LQTt@eM@oM@kCDxsHs9+_dIV7Q8z?|*i#)qyfRrm+4Qn^-vUhVkq zI&%FhR!xl4sH!Xki-cHXk%4;a*yOOlk&vg@^>&!oMFD%xQ*sZwEm4}qM0}jcv4i20 zYT7sFh`8Cr<;;WeE>U7SGBfCvOMFl}*vfK3%h-{P8>Xfq#7RGYsQO9TAu{dq7SDV9&d{DAWXYgSmp+ zCzMgfk$DsSNf3NqH*h@deJ31@J&p6JN{qL*g?NS8kq*7X$gOGpV+I+t{gMS&7Sy+$ zIFAQ{D9ZnE!EL-NdgqvOVerm(i6R+U&x6cK{u>=t3>1wxgIO8QCEZ~-VS%vAS-f`u zp5kex_qGQ#s?+A03`7|rm=A_6O3987HGyR>h~nH`UO(QJu7%ivGouCDT4qUi$sCLo zT`Q%<&(+$N*$&Kv_&xAbf8j$PhS{Am(%Duh6PyKOKI$b|RPE zl?;twM>o;C^lS&JMN#dLZ91o8Jl^v7q}lMPA3_f2<_QdEg9v;^lXEZ5CcGQzb|UpfSo%s!sK(D1@A zIRlD1^TCSC*X~+~eeKa+qui zYS>bFDe%QRyAl_}70VI_M=d=a-bn)M!@@ z@56o}Lq8>sO)9sf*>BiOR{i8r;q9B+_(hXKy@4l}#bOne{Dq8E(-13y#q^3hk!2wy z&q(=rXk{$8tEBI5S?5$KfqM=>)B7kaHDiY_{rSbA!K2gbh3qzuYXjbH#Rhl2Pby!D z7U*v9h_2ZCAjlicuM?u5*MnyIdmfHUnAWE|P@Lmn*iV~q^9ihi|4MLNQ?vs+F~7u? zKj+U$OUqAIRripfp6{ZhchZq2)lLWZ(oj@$HJ#%mJatP)84Eb_RK(8tz!@0K*5Ty^ z{`jeWyc=c|-L0!#nTk#({TSTHc%V@sgs~p>(#f+b%sArUVb+n+Y%GPh3hF0dPoMl1 zATk0}K14v=t?9hNC?pTpBjlrn&_mN$5b{-l)fr$j9w|v~?l_sM@eQAu8K!l}TiP{D z`qzzl7mVFZZG22!OGi+p$F!?^3EZd=QAXp?^L7{DLob|(1ph8SO4w9_jh-c@8~oU{ z-ekBB^-)Na8B>PWfbA}_*hp!|z)O1#qqPURrGdnrZpZJ3jn@pjADC{4X52Gxjh#~IaS?8W_UI1I@R`|crRr7MtIf}x zw)@jVs-t32`f`a%EdHeO8wUNVW`L0cKunLfZFa>44IJGQviODvSkT{QoPUHFKwF3{ zKkb$6W`)xqYaXO$ue^4mAceMvGY=-Ud?N&@X1ai-qn8DVr!sw;`kbumb_Bd+iN#Vi z7Q8_X1Q`p%s6EFoy5+9Vv2aClqR?_pbWbP@FHfehQNmM?`a&HSp7!E=QG)vLA2vKN zjP_F05@iIh?LeUFiZljS8v7oz7Qp48w3qJ~UP``U57C#yk-Bc4gDcu0x>Ms9a@L@! zS$~Z@uhRh>4;N}@l4>mR@q9 z1;KNV;^{(dL({}<-9*(T?o-2);sk#265V!8NDm+g5g^D3zGCAkRR=2YHM{21)9 zj)^xu^}c$31kL{nT~;%3FE#gzH1=7dEa`m{>=bBiNwqjP6Uhm;yrG2}Z?OR;?Op)i z0pA*{O6wxEX_WgDJBrH9eVGnY&unDxLFwPrG7*_)td;ZGX>J%t?ug>|duK&gQ}t;= za58-b<`=Zr7P6X~(@NUp_jN^Q-G*pbI8Ra@diqizi<`!VZ#S%vs`+cTwD3AY{rLd6n{)Yu6XAmZ#H0|-UP71 z)i}Wvy@!;l$JI>noFSp}3S|S&FY(EuzgyQ&IxW}P3|aB%Kr&OE=?vEi0SOvT8?p{kMdaaoUmGlqh2FmlyzEVO%m(5Dj!bm)IT*Z#DRYmDTD^;`6Z~7jn^2oRTqEEy<`QC9;7sUoA+0dtpN2!6(A7@Ro?0Jk5NWB35&b6_XC3l zhXje_L5?2hx4GmF5jt$LLEhU?yN(@SqmG$grM#!>e~l8$xea6nQCz953t24oV~4N#R2e)K0j_V|DHzmG3&0n(5FW)d)&7Z(!iy&l3@=nCJsv2qng8|(?W z$MDe`CnepS)BWzNhSpOGM{7MKFvv!gsxlyWeaPY*Mh zytRec)jvV^ofGz@h13tD#II&{iGz)Z0BufxzpEBge;wJPsfl#UbCc_x0@%_-=|JZUC|CY+Llh!Mt@XwliW~9Pf$JXtdN>%GbJRu7 zshp$BO2-(~@Hn+>^<&kl9E&BZ@Yr7u*e7;=|7#pBT{^7Oqiw=18s7q=gd$M!2kJUl zQY(;9Mk7^Cn&^8~NjVn1WBCH!K}o<2oii(_S%Faks|vrsrR&G$bSAws{UP77aa6=s zg4k_V(m3YzfDFJ^a+!5mAwAW4O*Z?qW>;@2TF2kGN7;VIA@FrvwNGf%*#a4|L^9)Oxoqu0R)IUI}3q+sK}6hg`YfAyZ$I$xsC)uk)M)yGB%9e>d2Fm z{>2U07w$H6rt=on<`KrR513I{hze4AHiQyvy^J$k?^pA;ffKN2+M{XaUc{Dv6aKfpm)f+|@&ZNx` zL7GnG&rXm}s~K`wc5d}&KdQdzsGrshC6EjUY37iS3_m!^3iQ`{h7FP1u{oNO*DYwq zlEQalOWt_iNf5koq>a(EaIG)}JX2QJDMy+jAOA9uXp-MV^Hu**6t+g+5k zNC=&mJa``SCaq!gyH?_Z)6~Q2JKsLiq4FUo8D!(i zDy-gJ_6M~tHm}IC4>5$T_&KYslp%VqECbMEr^eg~#;q9uzSzY{SqMD>0>lF-8C_6Z zisvht;S1wu353-3?N2;zYOyOi7m#3i+Y}sZ(LI?$Vb=4|vZLpifQ_r~=})j-D+UViHi5zbA64KN zA46=G$c9r}vuVpmGY?;0p!#0&SrP9$Q!3vFpx%>I#Gf9-A0*kSI!vL@wN?=hcTyV( z*Wy6x5X=@CoA?M53AtELy(SbN)UVpBUi-wiOJ3s_6hVUe`9PF{(QsI#m;>Xb^7lwj ztVd7FJr`!_Id4MgESHiV0Z-npkS0ZG60N(%Va(}wLf4_+V-`#POYz{uqGqIE!}D*q z&QgU?UOhwYl!Mnp+5T0SiK#i8Qx|0|Zr9N4uJuUT1RfqpE^Gq+d$_D4-EWpOzCo}3 zR0%7g$6?etZ8xxVx$HL$;9M0*;%$1iZS|vrlh+%pzk4jpU|%u+bO^udS^gxEnFMvs z4Nzu_>we~3OL>y`S3I-GA6@k}DLKk2SU*BvR@Q&x-TeKQ9NsSAE#VFFqy>HwWTSLNrp?aUqkc2az zg+hCl@4MZH-|t)EBtAzq?Upx{mWeDeXwlevZKUNiM817A8I*T5gp4Jk&4;y(fA|x9 z)!TL_c3jegK}XLpv^SXI9c2Kbm{CuOB>ybS=r>b;r!_GqS*h@|c3MsKuZ8DN)OKUl zRFH|jj1Qr?sTjr$20v9D_84jBUV>jwz96t-_{q5VO(q~9#2^9t6e3-OW%xlF0&Wb) z-3XmmaEC}!kgA~`*A(eA@KNjfFJiGd&IGP!YwUzdpBx9t*x z|Nh^F2txe(6E;v6y=0Ri&-)~uk$?Z8`|KH2&VVyH%h@m6#Z6&G^n`^wFFF`mW!J*a zJKE_7un1>;Bo%`;nc@H#@*B?_XVh_#6ixoRp zApE6kq-h-vLZ~I9da@~C?qMw#ol!Q9;Qk~rZ&-Z<*qBg-5Ks#k-^WTIjoxsC>%PfM%Hq6I_e{yAuK*ga<)z#U ztx_MdUpW>x4y)lUj%PU#_m$L7#OpQX`Qt0%7EHPmdt4)C%vrfWo5W+v4k<9feD%h} z1oOSyzQ3Zo0eZ&$<$|9mTJ-96o3?UDId1CQcOZ?s(x}Wai1X{W(6CircH#n87E&U% zSaK&Rl9;YV6YuJwkU;h@bi=6?-Nh%aY>~tFubkiG$?qUv8w`)RkF0glvAaY8#CM$* zp_QR|sktfA99c?PpR=%)!=>Cl^NT-VKB+idg`X4;c*guzYt2asJp4#l(WvTkWLR`BM870^e zuY(!BWNm09qEd=Raa2_r;>pG{8e9bltrDEjb$M7P9tDly-qlp!&ivM2B~#SgcO>G) z3&=v8nU>pK!RylX(B^k;v}*#|QI>MJgwyv9aeY0XqCS72#>tgyy0M~AZxRWY$Qp(blbUu1&3}4aeDVZPZ#R&Q8n5* z=&FTG?9MUc9vTyYFlcyo;V%8SOq*u!KRR0y4eW%N?q{s(w##&GUiiSf{S!0QZ}Blm$#03tXLN1scq}i&7$NoRuxaKBX~~2) zD3c_SBs)N}Qvq9M41T00CPrC@9>f zFXme{oIjs?(EY>Q{dJB3YCYRFa+wMYYiFU9gN&eTN^e5Z>M1t`mh*4i^$bRDk;(&^^kDI&j9A>K95@)&mGt z=Z(uLLOytiEY9zx&WEmfTOvake42OXfDoJccy>vA=>a3;5^AZ+avV(x97|fGR-<@{ z=A$wXvNm-vEFA3h0$;A|?w_>QC}Pqm7q-y6P$#e=@k`r`5=fjgBvIUwTqw%u4sdx8 z%-1N|WgfNxqYZp&9LFwJvR%qyZ0(em9nmt|t~)NCn@tzQ`v=&ix)E?s>8sK)_Fx6n znA6iRDM{cnhFH;Q5z=>&d&VVYR~pJAfVE%P{4u<%Wv~nXbZ+Pjl=I)<9p8G7tsi}9 zsA{4otmDDprCp!0$6a0s5?fV)H8W0@W5~(UvZob%8j125@`?tVlMxef|9wvw7+1SE zq=id{cK5>mISCc!%^?U3{*?0o+FsSw(p$N0x5s0B^}sH=|KZNSc_S;rPj?8!5^Us` z^k--k`N~uRUEHbi z$w2uW^qS(#w2uq@`mXcE8yxDDAQ_OkXtisF6T97@ZO!i=z4TFLQ08@S!CZY5V)lbo z_vE|t%N-lXgqs!azUVYYEu0)!VqZ8t825Z@$0e5hNWSogz|*EW_(&feGb^*0`%pSN z@|NDIQ#5%oFd&CCVw{QAs=mN)!B4*mBy~VCCEH)4fIQof2*{yC_wb7PYST6&Wy83M z;;7$FK=8y1TK}l(e&gn069e`ffO5O(5 ze0O-N7HR?U%OQ7&jxy)UvZtxSdpLK7D#b!c)D^m#R&Y6W;cDIiwsXZGAbjGLrh)^; zAm4X(!aL@Rb=PXy%5~nnV|VsbDIK@v+W5Wk?NN&f)2uh8wNb-AO?0&Q=9l%7(#Ql)ZH#55$o|rn;y3Ony6MX%3@Q62vZAQ!Fl{gXtgKcP4@ggu_h zqlqEx2+@*S|4oluz)#e^6-7ySGv#m7be&-U(UHwY+vLBm^25c*pV~_ZGe_9tn~U+~ z_dkF4hxV*Ea1PPg*c6Vo7y8PX^?}5WDe9SN*1r+-ba*&(b^t6DpU0-YfnEoX859@7 zC}5O^{vQBfK%c)cC>&|7&1}}<&EkFv4FCWnXke6NiVFCLvokzApg#+K-dp0v^IhzD z0YZ=gOWbyUlW)m@J4yp5BzZ-ZgLD>Cl2n-NHxOUtyiF4Bei%89z%j>??)Ov~Z5gE- z5o!Qu&1}96ImJT{pY>K+Jo>5h&pWc;K7S<6o~1WjbSiPLPD@HZ!v!;8=X7G*8;UD_ z;4WOxZ{eDCsZ>4sUD(&qjVeUDbUU};fr3~Sg38?2RsX1`{_xDZ_@v&h*V}%7Nzo9A>S+}wldtyV;%On=da8X;@=heq)IX;4db)xt z!a$ih0)}R|KN2ei&HO;0G`k34`^%xbrmD?emZHY? zA?(QJy}UDeOyx!xOxN8Eua0)Jq*ju7BtmZ*cD1qJM12h~qHCiI)749*y#kM}t#keD z)HYIexpjIikzpCE%JB$g-WTvL-t3-JeoV`YnjG^Rw&GZI^V0%yqx70YM?ioNH4pSh zfNnYbbXt{&I(#`Q_zC2z?qI9HFrbb|MaOgZTtdM4w)Ke>M%th_yxJE z%C|@3?PuZCNB_5v1{)WHs)HluKucG8Ya0QleqJ(`I)#!&%O_$$(sFjVvMuG`!hF>t zD0I3tQ&rhc0P0iDxmSe35y7Y8R2{|YP-vL8c^AU&vy^A9vxSAN|B${e4)VMis{TdI z!qlU)4TM4vM845Dgdz@wJhDO$qBdP3Jb%{jT^EOwDDR>(16_3jOi0skm>?R_OFtYB z7rFc25PdactH7Bl=~+?dA1I$mcLLYq)aF2vH*YxkKsfO>h5_LGdAnt~Gjw&;_0K!G zZP0ZeO^BZdMO=y}b9ZbLa@QWyU3RrkT173}HY~+15Ho>pb>v_u23Zl385?I)MZ}T4PB$LB1 zbMKXumD%_5OT(6*g1#_(HH@l>U_Zn+)fJ(&o}NH7=WsnN^H#i5{lZ5PRyOgM!sx7h z^cwB^<)s-%m|t1!e4Z>uud_NfJow=C@fDM}BfoiFB_&UI<6lek#QhTMg}u1qy4W%f z&MbGRw^XRLxq}04cU}?>Y?ZguMY5ezKHi#p{E)|NepoCb}cQiYBUS;3-iiF|gDC4#K9_XD~5hrvR}r z^qKa2{2AcK=>mS9A-2CQ$XS0bh?n?e<6&+AY}K4mqeh*F{oIxUmB{ zaxx5N&cXid7+w|upLhGSR=FR_GRVQ_{f9q)e9>X#rnU%Vb5mjbjdC`PhEY_AkWWwY zXfIx&)s^0>5_(|?NVj%V>g@G{ejz>igwdE&(V#*B>i>@LYi_J3be+T`!X_$Nu|!u~ zt=byA#`o0eCSP`(e;b9w(dEycY(9jE13qqC(p~TLuf0DWt?LkYBa0GmDD6WbOp>1G zzhCy{fX(O$3clK0X;W~0Y@y{e_PUuNNk~&j!=OB>vcwm^@gIu%J5==}gZ|!Wn|ePtItJ?9W)jt_ zPjnG^OaPw;!n@O_(?oDHcaYLEWT^glVXfcBePNr8eVW4WmyS&HAz6yav}{PgYywVQ zbo6g1La%X(#8w4;flu;w00XC6zEwegwCkr9?P!#Cw678w);6OMXgP2SbzF=Ha6X}G zEU0BtoUD@h4a8T6ZVlUD$Was*8MDDFdtC}eaofyaalO>BObA8sWYOo``vTnesJcF6`>~lQU-!HZy$)|~>D!trmS_M)5pp(-acs@6NW%p;OuUq~` zgTV-8d9-7%n9$#~`<-&o@hFJ3T#ea|8dXnso%^C0uB zOXAQr-|eUvWGUmDaI23G-y8heD2ax)JXZEe&!zioSHF`#I_h z%c39DDUw%95?@!j-Zlb$&%o8Us3T(?x){dMMz4er`SNzdpWshVbBj#;Z+(fMKDmsn zLP2sSp{wG^2I^d48V(22WoX@icLU1o16SaXxy^nT_BC~Auj6!Qxf>Tm5Xwn~3|tGg zJS!JT!17bCc6zSatf^Ap&vU6?-nENcZBY`cLWB41q zE;yiK%?yWTOhb_-P01Nk_d;dSnz<~>e?jPFU=Xaei)TO?zXWrEqBc3k_Vr%X?vWBv zjlBj&o@tS+f2mt3k|2w~I`cXheo6c5(LmS!LX3=+4LHlyhH3B@t6UAhop(TT_1%HL z4Wu^ee+Bo#?nYUF7IHnckK1)c5tog(ax4vd>)Ad15DH;`XgZ%#Sj zaR^fwBe1UmW@0Z(0FJ;JIY|4I=3SdJc=0+b^v_r?oca^~M}|5LfS;I!1Zb%s%9!{ ze5vZ)wfYHu8-#h_^^=olFE`}{9Sq9CGqNM@`lvxd5EAQrI|g@0 z{cYSAwu_sVw^4bq`)PnY%yjlhCMYgf4`X6&Oh2i{n-RR zRPN0cgV$gTA}r(;Hkko?Z#&nfY;aN zkN`@Y!3se;d?ICrkX*9gM175h*-N!3HEWSd+sf?8u__CVLmY|D`zvTEx;1ApQ;Wy> z2P}7+2HbX5;1n-Gr7Oy*8@O zO}w@U-^E#cPmc946QPROqlcwr&&0BJ>lp$0fgJn@^o8N0=n|qDC|U0LvQG2(tWq{} zVu8Kh;zlmiQ-22x4r=S;kFmR;8Q!~qy`0!7m+^?=r?sRd2)pdu{mFzP?Bwx`7#+It z-d&eqitzm2|704zLw#YnKOml>bhtsw`6an~>U!M+0k=3Vfo*zB60Vlx7`Scc)la~a zsC)4LKm>|Vu)+}2Q6*0{qgl}Aj9E@GXE-6ZiDD5XJ*DXb!l-Y~u_8HtNGH^<3sN{=KIqv%0 zKwFK?O=aS*amocuZ114b{@K)if_x252HW5fzY$XbJa_xN8FCumHKufK73H?+>CGe!DW;Kfp??qi?MccHIh}h-g}0Tfd~hUp zjVmB*$V)M}|q7nxgNk%c-P}5i0Js^{jTZ`u8ZK(DNc7hP}Ct=hGe;gs}g9x^+D{ zHtn(CL|u%SM$7JUcVMGci8P;1cy*?77*lia9DZHme?;Q&UG4 z;7ROKYh@h>Y^i+sY9ZSs8_EQ90`KMMsl3qpT{yL)Rqn2lMKmF+W=mwTg*7Qj9$ffr zT1U*+Ddw->ULz}4IwoszD?D75FU{3*X9cr$=mr6o&0hj~z2s-|axc0s%H@#-Y}XCR z8TzUWUN4c-Fa$#og<>%A=8(QexdiM{$oq|ZbfPcK@d&}7(!d^E>P$gVvU2d${T9a; z$NVNUwJo;?=D()*GEAT(HL8%P!=P#&KXJiY79e|^WhJ@N%h5mX&tZS!V0Qd0JY^CT z!4kaY?f<;8`sfphU=)VDIWQEEo)d&V^?GG>W#QtgoS3ui&G5yz?r%_&X=FW}G9jGA z3R_d}3~EbPel}arw@beDGJiH4_mk+OSJ{U!IQ8R_FAkgdC69+iSXP?f2f^;B=qv*g zrAa9XxF~Uq>wgFOH8K^~T+UKRyRNDoikUI4?gcvRuIN!(xwagU-C4j)OlIU?QAi3W zdVlTVr9_6h2_!g9%&Ek&+}MH8VuP|g#e93Q`kFhaE^@5RZodxE-@<-PIAI;u@tW-H z0tw!!r@Jd)j4vbI>X#ILu}J)Sq|kG#wV&C4yxbB(fA~avm zu3j#`}1?;O^ChCZd+Sz?7X9r_13Psayw;ZcwN>*PV7bmcXw!B=}FHC0<_$({zJ~}x* zS><-88D4J)j8#*eE@ac~f@F5}Yc|9xGqn<~PbWc}dhFL=uR-+WOmleH@n-`#A+cV= zn_6Lq&_IuJU$R#}gj@W4JahSHV_z4+`f*(BCt;W;?)Up6kq#u8ReWsCngrM0walcf z3AHNf+=z_qvteP~m9^|Ij}-h2`=gyD1tSOnLtDs+yx~5EQdkgRq5IUGqEn0!UU%1{ z=XE46oVEOTl{1Z+qQ1t1{oUW?O>7A#LjPZo{9g>Vnu7Mt55}tQ9#6D|k7Jcj7vf=v zKwxyU{%^SBgdT#xfkQo;`<7k<7MDroF)@wUyfwHI-NUd^2?zU37F3hOQzUc!`lWRH zpVE98u2Qf&=61yhk}mwSTCPZ~#~vb3dj%0&oiTX!x??Y3EPl?))ooP-eH;wk$E!g9 z@3#U(_|GElB?IFv>}K6oI8>wSCD_ga>Z=^yhGE-_2odnz!6o}bqy8553;T9A;siP3;RkaUicxkM^f&9XHC9B23gh8=lr{>g0I4KL!1>{|LFLD-- zB!y|lW-n)!{!;=~QM{jAVIR@kHV5IIvnouiP5E%Zy$Fyt+Z_zzts3E@Pd%=w1i=xu z}@0GYsrd%%Tla~&P2Zl`oeHIoeRWK_KY=AgLVaJ*Suc2 z%;slC_ssQjFvSMA?{*;nc{19-PoCb&`-hSKzmfh{2X}z)7>h24i(|Ff3BN;x858r_ zkiq&6@jZ4mpivga(=Mid3-dJ%{uB$8Txf%bYz zMNBDXa4~Qr?7lSeQrpSqvGT(xrB14%^3_qR=3MN*WXjqqs)M?IURC{8{P$EPAIt`` zal($QR}!T|uW-w_IAP2!u#XlAElX4Zf?CJVzVszu_AA`ib1L9!4VvIclAl*hC_~7+ zx)5)o7ssLLCGc0v0I~)f!p{a}^ZMrZ`*L40L~Yy9H>n7s`_iFKz({vl*L<U=8-2xFgSL7$!GZrkKL(!#r=@P%{Fpj?=N6)}^LJn~E<7c1{oXuGm3yl3 z94x-P5cECTYc&>GoG}*fq)9y4D&m4`S*Lpx6jaj!XNSG(GL%W?_0WAzwscOEWX@*5 z3#ZMV6&c}1<3%qXnA(D`^eR*syNg=VZ#wM&isF3Iv`*>Cf!M|)^h9=6e;@dT@k;=k zgq~k4Jp+Ns0||+bUFEtDn>DhyI#N*u4==;%YZdNi{BE0-w=PbKmwb_*u)9(}OY|8; zaqJScv%F0Al9{*`R&7sdiKwrDAxbUoZy>*>zFY6sHk2dv%g}H~co;Qyb6}iSF*he_ zRj(r;7)O}NzPzH*1>VpGAMZSMZ@J?>PhOwD{rKh6i~4g7Tm&_QR*f}=^3KTK-AyFO z5BZr6wZ5@*|Aqs~y!HUAbN`&sYx$k9v!e#-@8)se&8BL?MRyJ{nujhSqSW}Ica|AN zan=1IOhKDC`TV?r(kA7nC>p{L1VT6SPQFntLO&Wo(OZ=J+z<|}UIsNn2J9pxbz%!$ zltpMO?kg-g>idPndEb{I;rewR|2DbT9kT=iBrovXf&*}{TV92GMcw{u6=w<;SwFz2 zli+Uq1$QW({qG;e&EEpVk1K(yzQ}gWSCH)EJ8Ctk8R>(rid`4aLbuiuy4{sh zjQiQ~H&I`YN{2q|@|uFl967?CJw{#_$f_vdYN;c6jQ57)$om{kxv$`DHEck2H}uK3 ze*FmgQ8cj9(7D&M8g=EqIPPt!-eZ92WTg%V_s#bodsl^FHmW)7cVSaZbpzols~Su>qmh1S>7&Jy z!a1UEIyWK47g0>wq3(k6+1+^P-b3(b{f|Ecx+=nZq@gPg<;iI*ZUW;Ny;kVSdJP65 zOwZKNtnTk1zIr>(;WV5oHo0Kw;at&IsN3)4-V}o4<{`NxRv6t;!y4<$J+7`AS}%xN zr;eZ5(vJ=$&&Wj8T(>7KByvI^y*8MkWq*b319wO+88tTkxdZf3|sD9l|L1VLCQD|LrJ1RHeAD{Q@14 zWbUU4OnWg_AmKq(i?n^-9AgJfGXV+Sms)BBHuS=pABUuGf1VMhGu81Ek_AgLf~g$;%1rqHSA}H!5R-oC|!`alG7cao6|_bhN#j> zck?6-)EaR$ZnvJIzhqOsgZ=W>WeoHcMsc0Mh1TF4*!6z#ICPG+Y$j1IF7|?6b4rwd zc}nb0*q8f8pY@T9o5zJ_V+1~O$FLOk(_Qdz*AAt#*oTJ#)(t(fOMvE%e~JA0h?d|R zs=9ht9BtcWb2(PI5!356ncL}(N_Uz-z!)^AZ2_a-K!*P%t{F8Z8ntOxU2hcyGlvJJ^_ zy>>ZI#LXzkVJCO`UQe0bF{FM2@wF5@!_*7zAtsu*tCI@ey*{@N8#c(XjZ^tJ$~W^O zNfpF@ma@m#U(RJd|M=0g2>HnKuT(bsd|r(Vve4w!oM~zVH5KTu!0m1qM2+GyFz;w& z&HfRMSC^)gN=bD_O825(YSJ2HSjy#Kxv>iX)mRtYQC`cT_wx9+NIgz}hdk)My|VZ^ zJd8~0iwtx?-tSrEg5DfBrEw-ZyTA&VLUK5SS(S1};5$xh~OoZ@fL3`xv>c?YKVe1sZ<0>UsR=v|MFZD9&;zU=Qobp?p zYWNvxR3--NGr$^66l5dDt}c@>33vMPJl$Vmzp(Go>~;2v_)r)p)>$wR33baq-pWJc z@~m*Z<@bvMF|lQSwoqGK(?8PvpWYn8{-BGEKqvv{+wNOq^)sJ4UbDhb(1E4VMd%Ri&|nzy|^DxjAdPmF$+8hhU| zM2To8{<;e(w&)@R`Rp5>7N(f-cRMarF%R$|8bM-yECqiFQsg?)8QDi}-4vKKfwtbL_XInGI>Yds#F(SYJxSnL|A z6y1Y${4sht6k9~sy;u7^H%l4OooC%hXN7hdrr4*kJ>SnaMnNuf3*YZo=CY*maR&J8 zcOYM*#Cw=_5r?c5B^VQVQ8L**aOcBnM5wS9l}(4-jq@4D`?41{3%lv@Buci$eT2-f z4FDht!4ViC&~0HMnt~vTq|o;SiLFtI8#!G!w726;gfA&VoI4pEEhL?JyCl%F4{G(H zxK95yy_aFqnQS!jqJp;>@k9L7mx2J4Zd)Ywy1$VI5v3+t35RYx{*3IO&l>(&i9^Eh zCd3#5y%97H1vu$YWbo{XeY?lni6d&42y!1BL2qCB62!=L4^N4~yP#zi%?<@s0s3#r zy#_3o?O%h0clB8NrjJGutnDmbvP7XsE#|GR(i3?y&#ajJjOy6K5cFwkiR}-DJRXh? zX$K3*ASAXO`*dkR8PAufI$xy8IG^OpJu<@Xs$tOn#!L78Jm}P^IxM#@Z&~~Ua<2sd zdAUWDC-h7Yr`B-F5-NZ_n~Rd!9hnP?$rn!%dBV7kUli<=%Kg|O{UTU1Ke({EwE=G*-;RBCvQKFbZ$Dn1#4F_E~oRHBG`mt z_OeevzF=)FyJ2$N$g$67_*Yf)m*}sdI-DCW$o7|UzoWt~zuGZVMtcNsELb)78M+Vr z6cqd(`s_swQPrl8G~i~6{r4Oo@(29>ri<*DHN10)@Gx<`Tj#<~5HXsXSl}e(=Ua~8 za_ZX_=Ig%$`NFJzuIhCkaq{h+?mU7~vm*?#6;wuEyf%q^)QSZ z(wA4A{>;MC5DwEAi4kuQLer>+L8Kc#@4~Et$uoT-drQ0Mhe}U%@eYA`4<8U9K_mw$ z0TyMC#qC`EPiVdj_l&G_ep?dh7U01h?rkHv9&nX`nj~#Fwzcf!!ZAsMPWmrMe|iV% zPkjR;B!q1?8hvwpJP66{EB1b!j9W!BI#lE4cai7LOKWDncPvBQsGV$$0cGI;=?zzo zyh8sYs;{Z7sZIGp^!SNjdQj+y6c(eM-ru_HkTjwxqs z0aPAW65gr#Fn5+nQb+$w>FY8ikGpKS|2V*TkNscgqL|8E796AiF+rQ_Re*$zMB3CY zj1&|c=BQ#$d)UrBD*H7o_W3d*FoT$g$xpYvP%_3GIP5QgUKktC5+%?z=`hKdxkc56 z*a(n^Xa?*KS}Xtxl|I^qsrt*{PE$L)cOe5u}e)xJlKr1;!F zuhstVd3a4!r9GU$$8(c7m95Ca6}}#I@eCyBK9(x}+N|wWjq}XypufjT8T8MWb)R4Q z*71TT8-M=v&Y#LI+W z1$r%aI~O4R9ql9Vg2Payz_q`F4NN4u;vB-5dG~g_`VV>e#=)yZqz$c^)PQys=$--b zqQL|)rOJ^2NAK&u%9a6W6we-M)A{gp$0c?6?UsX2m#pYSZ~Mjbi!LR>T6mWa54PJ z9(x6R^`%LdR@MkBGam2FBffU`%#kEE^^LSht>f z<^3u5*TN^e4@>q0^m^ODJak#Z$&C;nr-gQ)&-(-FMz_OGCQj_rhW}$yujM)d#;4#y zX;-k%Irhp`RBv{DPKOE|d3;u4b2~%Fikkls#g~tNs)CQPo{Q4jCs(LB4`G)3sWC2U zXlsX?zXpfO#^5!ICqp=;NQ~CRCR{!gEwvPy(#<@=7zgjMu27mEL~vvH%~O;;5m_YVmE=hM4T{b!)458Mz6*0ody7?(%k`%SS*xVe|;E;{;V zP94r%JwufE6J7cb=)PV(0Hi@av2P0hKjx9(;z}@0387{v}x@asy+*1#CkXWD($>qS;@|S#vsVY#1md+9wvI8NG{yx z$2|xrD14=k777Afa^(-fSR9;ihX}v$5ne%G>+=UP9~MKfst2nT+Xl&T9awj*+J<#9T*0WJjwb6i9faIH!0b7Qdyob zUuRkn%JT!wOM^$ylmKDJwl)n&RvFNOE$;LyDftBZnh(Et=)DC!g{iyU5yr8j4k<_I zAO`aaI1@fxe78gOeR}@Mc71j}d1{51i(ML|-J!m?>y(4;-Sd6rwrE|)i=(0VAyh5d z1sIV0Xz1Wic>WIcHKbgKI*Bi*&^lx-dd_s0i-iLpAJ6*j2#ypKr_!;*#e4nkrVMV- zK4T!KuZs7T`z93of}?gNX!4phaVF^25{t@|(O1f#?r%UjD>r0V5V6fdXDKl z-p%Z%O%sz|Y0 z_g3i;f^qy)-A5AfIz2Xr)k-)@FGeZwoQxAwzcf=cO);9zOWw=E{qZlTArM3$+t5$~ zLElK+MJQ?`=6J7Nx=!oyBCFvdpW|4##Cm2a9WK=;OsCqD6cl%O5l%51>3#KA)E)u_ zZ-ap$@(rSBH*|1<#6R@}6UH&!U9ZB`pDq%<_`A*eu_iOiC$JU{_GSm9=4#`c2kQNl z+Bf4G!6P&W*EsctXz>+x9bL5GWcsE;2cf1ru#C~YqJn!A`X$zDnyV#l13-FOu3&hR zO%rOcV!pB^QRNMu{*HyonFzzsr*a$f6M_9En% zHyOf71VT?CaXbMbt-*;#3%iA#LtA20ZGS~GmH8DZ1bt-IA2*Y6{B4_lgdzwO4xMLj zH=#Nt`f>!d8YzwJbVQ2%Y-CE>xwkt@5QzufO(^Z4D;@nK8n0#ssn}K(glW0em3lFn z>n%RB6lv_;x$p@01Y15*S#3dl-Qaohxhnt+Ap}gL5QM*Zn>K3>BFh0$%>lL+=*_LPtlckysm-*Qe*aYb36c^cI;Jab&%SnFthLJ;8KIJ zywoxp=2&PqSI!hC-(tBYz9zPqFd@chsc7cFC3|w88++9 zg>SEsxb6HecxCXpV+Dy|2#Qe<`i2rD8eov?Ajqdh+jM zCp7GfY3dqirx(n%`#J|-Nl^&#e0u!+l>aY~q92W$Ap(Xm=ndV5L*S4{ zY{L1kkU}@>N1-T=zWEeIk=yPgHjDIn%1j@GKBNxHdBy_`Y5S6Fh(K$Od#llnQtHq? z7AsV(^RGJVD=7@x)(YA7+*{z{uIJ)#h&brKLW+2A4zbxi)P*nt4g!zDU)AG^@2`fY zX$2z^B&n^Zlb{2Tn_d*?lnu%$!9ZN-MY99DUy(u{&cowrV)*gkGVPF?K_^`oc|Aw% zYN~(^2cV*w12j$d$+BBYyP--#R8UI@UI5>2bIvxySB>?V)TW0wMZ8%jjD8DXD)3wv z!r@OZ^%am@pP6Y5bzEmxFQ-R{rPhdwOzqm(4t?DnyZUs(3;&lB_;?0>gWh%(Ousp} zL(`keCxh@+x70W`K|Y3)#2&gIQkrmYJ&}7QeCb)sJP~)r?GO9w{;Ynr%%4eZYxMB; zAQDF2Hc8xwJukz*uGRe-EAHMLGvc^NrFj}6fZHcEEbYd?(hp$`PywCgvPl0@TRey$ zkD@RHCEpwvr+kF+H}}Z>Uy}M3_QDs>nKPckF@8XSeB2#pe2XpU>6-7>)hiG7Epd3B zaiOms>I={dV~9$2qJ^&pkFA2Cl>6E=d)}K&Kq$wiM`s$`(Ch@%r?FIdXX>s@LnGEbF9|`l#tBINr2=_ zWgcaD7x6jg+;rBFx~zu$ec0yWRlK{q>_*D41|VoYx`1!Bo^Zd15K6n?{y&4nT< z68E8hh1TO@I{`tU1#=%)NTr0n6)5%W6M{G*ASZ)cqRP zzW}|)7i$kp(f~*Mh2vShFQHVxRb#A0qFs%q#hv@o(|)UlUmfyp`CP0=ZOe&oo-6c* z(I|xnL;&NT8ZF(l3&oD?;(`7VcPR~zySUHN8^B?RRxaInuV4JsON7|^C8>uag2Na> zZx+XgTo`tJ$MGoVUm=CTkH8q-JUN;qQG`UdAcubSd1CmSnqENPuO~s}I+L7g>AX(` zn(fc|J~syb#MwT3cDb)6`xB{6Shrwivos_^yoG+?dnDvy1Qq@pq@Jk-2%%u|Eu=7) zr0LKL2L1D75)J9)|rZr0_>0ehA(ok8Q0&cbmy=R$u$sSC=fV zVOeZrvebimzwwIU|(~1FF-GhfrcIjb>fJ!s@E7$IUs4bFpHptLm1lW zXr+px@%BaczGe=-b<6yZLfT@8hs%e&k$ymXG!)SOr~Txn{tKo1j zz`|0!A!PQ$S&xkPDwh)2U*_52GitzVH|9q#?0`KC=uhnqU-t28>0=gJY$Agp{u$uL(n zR{EX%NKmsiPb95EuQWBYUQl&|ko+9)RbvkT0)WIC0SO7WsyySIm4x0($a`tMw%%6@F{v1oel&z>oskW%IXf#&VNrztZ z6BIt+NzY%?9S$~v&BO z?E(bw%-_Cq>0W?d7(;jUD(x1qi_ft!cory|$}+=H&!aa!rd9tm%&xI?m+xZgzN+%i zP9hCI6hFO1)ie}31ci8rL%dp;l05GR-`jyDx6X!8oLttl@H#ZLQ?v8-h-4G#VvRCZ zd^fFMh;0%3<|J-W#^c;7gdVOO={uDBFA+l?-p1ztB5#`)Pr5-Ekoc$0akQ0_bLv2L z*`Ns@qlfC)R{ou?&hmZqz2Lm&`juK!dHm{=eoyR?*?~6)c#98V8pmN0b^T8raZmfz z5ESQ1%y%WtRJ1Awm=`&|g>L5N>yw_8!2?fa!u6|D^*u2h!C-77iM$~maxI$cD&yPY)FVOP#~XRu*mgt^0kS!pRX5|yOp-5vVNX?%F5$QB`PkrYBx;ilYR zih^GS#03xz_Zcg`Pj`FjOPkP{W_Ls=AV9o=uKEn}P5*vixbFgejO zsH(lBc{)?!r0=1OJi)cb5rMOJQz1AMO7`7$c>#P4bmFrh9`v%!Na9>KQOM#$}sd{~)5@>W&ty$vV#-M#vbCJ;gy~V5j}XQ2CojkqqZd@6e5tTM4O>{FAR=dl_iYI4sFd78p|3})nX*K_=&LAC7k@QHzfb4Y31Lm}(h>6I8l*(n?T@akRdId6piTrY;CS4;RgDv-JN+Ei z*D8Fce!i>&lOJ_5tL(G`8(d_HT4#GF0B3;$+JHGJNE@Ew02FU=(w`O$qy7r+)!Ch! zoR$%{=P7)4JkVeY?9!cN?PLhLQa9L+qpwuDoR^=V)ct7EYn8|;M{Nik) zrja1G!|&YlZKPi#6MsBK;}~;iydh|Rk(|iBSn|z3rZ?o!)UAmk7=Kl5(G!{r)BQEG z#3$DbPDM1`F)bhCwHKLGwC}HC8Pq1luPkg}7%zt5DOo|b`z7+9Z<4;hsdZ}>b3wY8 zJxv1X#qP8d@j+fD;&yJtH5LzNcCvO5^RC^01NDXFOBP*qbHyt7u8eNen_9N(_esx* zxK?9_%HVuiw$v*~aX$i&g7R6C^*N2UX;gfRg~&ILAT|Z>L5LT=&Xbs&$@5$>C!t8} za3J^00c-DZ)L*reHivys=aIa5)eG(| z4mi#_h-88$^D3cT>NYol70q&9_`B`qJR0cTd8~eu=;p>CI0B&*jK5(x=J_ra;=c2| z!5mzgxfalqF#}=1=*mo4#TD1c)`MDql_++ZWy(|OwfUhI`Ww_<)32o+l&$7pMVCxH zAXN(Jnk`cU&{GVldrYVLCAqrXH;Ye|UhY&3(fW_>IOK81acM z+(no4f;^e>FLa#i0T!Z+H2{@NlL+EGv8k}Srv>;eA z&x*Mm@mZxa_gHkeAc)3v1Fc_5_1`D{dTP|S%bth_D2``}#k}ZWaYIvz@Rl_2ZF!pdz1r zM+;w6M(LCA1TV8&;nNmp?q++WMn)IZ>Aq8#)8crXJ4e4n{e0WnLlZz(%_1gG30Kcp z$J=G5qePQ(mJKCEY=w7YQN4uunOoH%`DDFC2jCj)!c}bd7F^%X zq;%iiD96=)sQAC3qUa}$FUkkmJgBCld0wNcd6A*AXx{+AyemEvbY;L6Tsb14`^$MH zkoVi{JFEoCP+FDaUcbxH(w=>oj=>{c9iT1zNY*feeQe|X*GxX(Ufo1f6CfiOPx~0Y zWqX|B$+D(1hc0H&JZEW+T?Eld8bJNwp8EFe;wNPdZ=pK{J^D=q9s~uCXVCrdHR5D> zFTtaeweu2=H2PqSyEep#{Z(s*nH|hd9a>cluxkCGfAmA5kGvcW6X>QsH$NXGe8_i+ z*Rz9cvP9XHMF=*lgkT9ka$%|MZaQ z2X&Zy3m`lsDcXZ*;#E^HK#_2~tw~L|*JVN?=bNmaXhk}KE)lCE5Ww_B0z~`#7t6ZQ z{qle}d3GDDG#vi0lw^|2PQHc;+U$+wTr@V4tx0w{dacI%(9nKD{?g1@s2SEFwv{HV!my-!*p&Er_P zjhZiUv8$i7bo4RiD$!BP?`nu%Ou%$4P+L@Y`W^UJ#v4d2v?CT=Fa1imm7*3WYwCe! zA2m?gSrem{1qVgR_?L{MA9;`Ayaj6=b38YonDh0`w>ar&LxaSESK6!n5z>IA5+fYY|d0K^_=bkac z#H|(jAuagJi$XYpV{g>vpc6DghAtNVE3{x3-TZLu@#Y5%c`i*M1nCjahc^yE0%8ms z`eq|$ur1H}xo*n-QS|B!QM*f-I~HvEoYy=vo8@js(u`mhQ(TTcnC{lzsX0Ypm6@>Jdy`%WuMpyqXqsAI~ zr0d`45Fv=bp#ze96+Q_YmW*7<-JZKN1Hl1%0<*#q_Ea)k$@XZEiC&xmF5={$k$Qi% zbv6o6SecbGo6}(!z5YnU(v6Peb5WQ|We(6?v&7pL#s3uNpRyHKWf_Ejc#rtxN2eo? z3BXVUee;lzMje`PA^Nqzu?^8&z;@T8dv-$6jG2(}T`;)Vb9V)|NaB1@D{r1My2bvI z82)HkhC=w}J~}k+ZmuIvhu%LWmQj!XBj19}%^E$Uxl@QG+>R4nT;b1!GxfXhW*eY> zPUtqdiBJzWe!SSt5rcjN@xqLe(XQ* z$5*7n@#05Q#^seOoQBfdZgOsiJ;U#tymz=NvcPq5`8*c7^3(^Xdf<^MiGGRo8roRv zDQi_ak6Zg1L+M$n5HB1<@Ct*Os+`MPvh2vSF6y5K+6C?S-fig{Z|6I>?rginuE4$_ zx_DYj>QYiy&W9FJgbCm6N7~FdgVTQw^ty=9#9qzAku*-Al&dE#6UCh&*r*ho!x1oo zK3}eVyZPtcpLp-@?tJUg`N3Gc=(Hmp^2tz^EL!GOu(FoDo%SBKIl+Z(EV`Ip7QKYI zp98&~@nlxIKxw}X(ht_2IkDqDMzB7@s#;NR@cle?V$NOJhlBfpm*rLTk@cfLc5{Kb zmLfTMj>v_QT%9W{0%kyvY(Da4#l;Voq0HveHX_kjI~6{z7}O)CM0Xt?Af=7!7!7t&I~4^K|nJz5`&sp;FOx;7pi%2pEQd{RLrSCg(DBNT5 zlZJR3EppNX+eJz*HKMo}1KDO@h6o6Z;F)k#pf`t7dgVCSnX8w*D-10vNd<+^n$3tt zy@}g({*nmg&25*zl9G3(M!@T;c63SD<;a0ejB{}37P>i4MeLMTXyqe>%o4VK=xBq2 zl^`EXLN2~~kQaMi(JjCCMF7wCUTqDnu2axFlB?H!X>QCHt?^=axoI`4YG^hrzpb8= z)qj;jh2{m0a~K!k7$H;R)E26e+F3?cP}m^;93G;4C3T9~cHO3uofE>|dzQ?8KLp?D z<{2l|8u}y!tGpr;F`DVDw6*4 zbGDP)Fsovhv$uD~#f7$zjeZN{BQ;uNeuy{dixL zX4ZiWQ;_2_by8!2g>9OmzZes<_V~=42sbiWZ&|M0>4Z$aH8Yw)*Lbb@_co55eHR)cRNzFYO{&H8*y;HT>h3%wvG6-!KHlJP%J-UjLB*#lu z?JInn#+P(s&Fods*4`o!2!#K0Lc22*;Uetl`gI(i=DQRJs7mVJ$MHQd(s5!Dqmf(M zqcpyC($I&2vYydHJtdel#ilHX{dQ6O@YRZb6OJwTd;g_76_sPHLg&#E7{E}^QeA(P_ zerE$?p@1^1H}qpky|)DYk8X z^-~@uC*VqBj3Ln(dq1Tp<3|;bt+G*S0vAqPja_in4bf-zIIe0H+r&qw zKB8G+e(~CSxp6VZ=tl5SOX9%DZn1}vMkMF(q?ufYI+8k4^j4^qIbTRi;(QfwjP^Gs zh}+d^<0L{0%oQ)L+qY3053k_Dl?u8uZl;#^RUjd3D5F`&@NnJsj_8jm>Cs5mBvyB< zxjg)l1$1|G;Wl%=ZSvS!%ISpsgv_VGv243n|9Ft-W~%o`<8--nXEWJ6H~mO)X(eeD za#miWo-YL%Zw&_%du(`iq&y8drFU(mZR?dQ2J-w{-oPvT5f)=RA_EV@qsnFU!&?OnO2B zQ!+YkSRFkGhq^|u^oc2#M%cOg#stO6w(magYx&f8`JzXQMy*wp@#rEJ#F;OUTJ}mN ziW{Pe)!xwG*IZ0jmN)1$pCxnPeBx^&bd2c5v|T#iW5y}LOEyof{G7_1%sG=|tujcT zBfXa2FH|_Q$*S*1Z}+S)5VGahQ^v`F>BMdrTO`8ne;gJ52bHJUF|u5$Kp@p@fKlO$ z000H^@I=_bgrIhIt{4}zkP{61ZE$#S^cR@HgI(C)1|G+oTrSCKXYx(Ac1LH+ow{vfa2y--n6ey+q zp-k#gH}2aWgNT*unneU1CuXF+AUn+!Q7%Tp`fgxw_n74Y_}j3AnquLM;)K5OeFMLcGtI6YQcH8J3Vnd8a7#sa?Ib?S>E7Th6q`w>-l zp19#a+>SvGG2hD?KMZ8n$m%9hRV)Wm&r4k4-T3{6RyG>vj((KIF`rahVdz}e9r>&y z)+$hjkJmLf7-~fW!xt{j9oJ46$vx*i8(}y~F=JGk>`^09)>7IL5utom&xp9_!&%!L zl1s|PuOREaouusXVgiZ0GTh_RBlIzFad}iluwh{sOhudCGS+Lzi8Uf)7~?LLby9F= znbUfQ<(&q7zE-t#hG!Ui3&!hFRJoGp+;$=sc})u*QOxx*@sU=VY^Z{CP*N%_#v%k( zsme7L8o=pV=J@=?L_Z$y^;u2Yt;i@Ld?L>@4L@#>WuD2j`2xisf>Lct*Po~69_sU! zdRX3yhcSH0omt7SeJ0o#UnM6IbA#*R{D4@43CY8?tTGE1gQ+$r*Fu^eb5@jo9WJdb z;>-2K0wKPxxZ#D$4iipM8@GE6Uae_S)N<2RT%U_1gU1+e^#q?Nted@7twV3K#nK)& zYVm@I!BxP2nV;u_^Yz5oNS#ZE17`9kPT6)GVSDh>IXP&$pYBoqO-(Pg+6Sjso3AL& z>qjG!YD{yObr=OpSq5SU+o6yWuR?-k_?gN7|no z$0`KyxJB&LSHl&#WGOl3_!rQ#w6x3#z-)QyyzPmz10#i za#-2gotlWYyIar@zVtA8nmNb3E={<;iO^&vPIHB6kWF+ijcSF-J&Z|kU<6TNfQus{bz3<<$vszkKd8>_ z?k5eB`GIGgc`J?LE!wWPxSy6NJqQbUlHT3E3SY;gcT>Ia{X-q9Gf#JeYbC>1kXrPU zpLb2bTeeVbKXuY|E|>$}XA0J-0m+~4k$$~t7W=v{lBVrO@l(4GaZyn734W0QBGZ%Z z^%wJIA`iV{&zHrC8Wc}#)w<=|w09-#+3J$@hC~ z9HDvf(s1)fO{wvO6ZS91>eRYI=xDlmjZ6ZYt)ho6C+b)VIpwUM3sAMm8|?7aNlXwq8G{472 z>lth26tM}Xh;@f&hYVvNyB`@MK1*Kc2`VzBV{gl`Z~GM4VB~^8VuS70MFZ0YUjG~+ z#nEW6p%Rg2NqXL+zR9 z=rPdjM(>1f+XkFo@-OpO^51BhjcmD_`*6p*S86}H(Z%~iT*Giu&ilxd)}(4gKD67` zGh3$UTIu3jiP~VYsDMK@B9iO=SNG3R?#~Z4WcdbJ9aZSxerd4^SuG6RaNXZq=lJJS zk%Dljx!O6w&%V7YjU?tR$Q)z^*-yPH#vF{%KLRm+>Q= zoqmC9KD2x4sQ7Wqn2utTyOO2MnR|%fs(7%Yp6~Q)u%=ETl>Z@5_(gSwe49uT2KVDH znZb24j1E5ZiBUl!LzJv<6%dS^JOgxlH*!wzxR?wK!ddO(R$q$v$7ny0)%tMh+NPo! zUycIADR8)dkiS~(R)&yxY^{8{!UT4$EPYrj=m^&Bxtf?Ur;N|i%F%BXe0X)1nbJK_ zwIU#09&iz)!vHk}N*L{p{wm!`P6>y%L_bLd9(60DkH)R_zKF# z5k9F90?NYyfrJ?wfkDKXbSb~%v6QTut!UF2L;`>rV!{)?=XC(T>Oh@ff6;WNlYd8B zA^Kp(=8fW!1MZ{y8lB(M?g4xQ7}VYwChTng)i{w`;lINXJoXMxGRp_xoB$lv55_Tr zK_Ej_Wn%*kBlG_Pxd0FTQoVz+bUbA32l+|<1cE>`phd+Hpw@)CAplN_y?3LfU>v!7tleV5wt%-Es7)uoYo8!;6Dah5dd;PcsQf}EWiQ52+8wH z=?{2>$amTt4ao$&mVb;e&Hj7AHmN}%M^|BI*MqnqB*MS27H{2}({%-bGFSi38U-E* zuuvH1uiF0$>*v1yd%NI4Akbf3KCnnam;Xz{e(gxIAJk8{1^U(m0kD5`<$+>9w?N-p zHVnZ2xgi4Rgofz9SFB?9i-DFxsNr_?X4J6QYAd-eA? y{wUD*J2!y)$KX5g%g@{H0q!90iwU@cO&CD^GG4$yLW4lZfHw|^-$mdC5a>V3;s1mH