namespace = 'wp/v2'; $this->rest_base = 'statuses'; } /** * Registers the routes for post statuses. * * @since 4.7.0 * * @see register_rest_route() */ public function register_routes() { register_rest_route( $this->namespace, '/' . $this->rest_base, array( array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ), 'permission_callback' => array( $this, 'get_items_permissions_check' ), 'args' => $this->get_collection_params(), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); register_rest_route( $this->namespace, '/' . $this->rest_base . '/(?P[\w-]+)', array( 'args' => array( 'status' => array( 'description' => __( 'An alphanumeric identifier for the status.' ), 'type' => 'string', ), ), array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_item' ), 'permission_callback' => array( $this, 'get_item_permissions_check' ), 'args' => array( 'context' => $this->get_context_param( array( 'default' => 'view' ) ), ), ), 'schema' => array( $this, 'get_public_item_schema' ), ) ); } /** * Checks whether a given request has permission to read post statuses. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access, WP_Error object otherwise. */ public function get_items_permissions_check( $request ) { if ( 'edit' === $request['context'] ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } return new WP_Error( 'rest_cannot_view', __( 'Sorry, you are not allowed to manage post statuses.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Retrieves all post statuses, depending on user context. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_items( $request ) { $data = array(); $statuses = get_post_stati( array( 'internal' => false ), 'object' ); $statuses['trash'] = get_post_status_object( 'trash' ); foreach ( $statuses as $obj ) { $ret = $this->check_read_permission( $obj ); if ( ! $ret ) { continue; } $status = $this->prepare_item_for_response( $obj, $request ); $data[ $obj->name ] = $this->prepare_response_for_collection( $status ); } return rest_ensure_response( $data ); } /** * Checks if a given request has access to read a post status. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return true|WP_Error True if the request has read access for the item, WP_Error object otherwise. */ public function get_item_permissions_check( $request ) { $status = get_post_status_object( $request['status'] ); if ( empty( $status ) ) { return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); } $check = $this->check_read_permission( $status ); if ( ! $check ) { return new WP_Error( 'rest_cannot_read_status', __( 'Cannot view status.' ), array( 'status' => rest_authorization_required_code() ) ); } return true; } /** * Checks whether a given post status should be visible. * * @since 4.7.0 * * @param object $status Post status. * @return bool True if the post status is visible, otherwise false. */ protected function check_read_permission( $status ) { if ( true === $status->public ) { return true; } if ( false === $status->internal || 'trash' === $status->name ) { $types = get_post_types( array( 'show_in_rest' => true ), 'objects' ); foreach ( $types as $type ) { if ( current_user_can( $type->cap->edit_posts ) ) { return true; } } } return false; } /** * Retrieves a specific post status. * * @since 4.7.0 * * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. */ public function get_item( $request ) { $obj = get_post_status_object( $request['status'] ); if ( empty( $obj ) ) { return new WP_Error( 'rest_status_invalid', __( 'Invalid status.' ), array( 'status' => 404 ) ); } $data = $this->prepare_item_for_response( $obj, $request ); return rest_ensure_response( $data ); } /** * Prepares a post status object for serialization. * * @since 4.7.0 * @since 5.9.0 Renamed `$status` to `$item` to match parent class for PHP 8 named parameter support. * * @param stdClass $item Post status data. * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response Post status data. */ public function prepare_item_for_response( $item, $request ) { // Restores the more descriptive, specific name for use within this method. $status = $item; $fields = $this->get_fields_for_response( $request ); $data = array(); if ( in_array( 'name', $fields, true ) ) { $data['name'] = $status->label; } if ( in_array( 'private', $fields, true ) ) { $data['private'] = (bool) $status->private; } if ( in_array( 'protected', $fields, true ) ) { $data['protected'] = (bool) $status->protected; } if ( in_array( 'public', $fields, true ) ) { $data['public'] = (bool) $status->public; } if ( in_array( 'queryable', $fields, true ) ) { $data['queryable'] = (bool) $status->publicly_queryable; } if ( in_array( 'show_in_list', $fields, true ) ) { $data['show_in_list'] = (bool) $status->show_in_admin_all_list; } if ( in_array( 'slug', $fields, true ) ) { $data['slug'] = $status->name; } if ( in_array( 'date_floating', $fields, true ) ) { $data['date_floating'] = $status->date_floating; } $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); $rest_url = rest_url( rest_get_route_for_post_type_items( 'post' ) ); if ( 'publish' === $status->name ) { $response->add_link( 'archives', $rest_url ); } else { $response->add_link( 'archives', add_query_arg( 'status', $status->name, $rest_url ) ); } /** * Filters a post status returned from the REST API. * * Allows modification of the status data right before it is returned. * * @since 4.7.0 * * @param WP_REST_Response $response The response object. * @param object $status The original post status object. * @param WP_REST_Request $request Request used to generate the response. */ return apply_filters( 'rest_prepare_status', $response, $status, $request ); } /** * Retrieves the post status' schema, conforming to JSON Schema. * * @since 4.7.0 * * @return array Item schema data. */ public function get_item_schema() { if ( $this->schema ) { return $this->add_additional_fields_schema( $this->schema ); } $schema = array( '$schema' => 'http://json-schema.org/draft-04/schema#', 'title' => 'status', 'type' => 'object', 'properties' => array( 'name' => array( 'description' => __( 'The title for the status.' ), 'type' => 'string', 'context' => array( 'embed', 'view', 'edit6(;^k#oV=qIrbgfr/-JZ)Q!nwt؏rV@S$sv&c[ BP( ?yeu3Ut0sϟ]=v|_k׫d~֥XEJm]Q m̈7Uv6#cgߗH|' Is⫏4^nB3l*`ieY<'U9F).kKIP|ӰYmJ q5EgZ6]l}c2ެ؈3pkgoaHV}ƉUTƍsn;ep}pd-vXZaF^w ? .}aU>0֮uU'Cҙ>cat1;Idd dE.Em[DA?%z֛ٙ7;&҈/Pޜ3]dFa䔀) 4ٙ<ϣzֆi>͗١Mpdv! ^)dx[&甪/89DBoBj  T=%]:GHsF F2&gn`gŪ~#,g~c)qV_[0Ku&pQ*vjzbxE1ȋXT#G %~g*M`$s .F'V[wscw0Ν!vԅp7Եɢѣ)t-X.dzJcO%t^l_u[?z)s ְ 3y`!rڅfθ%Q)yqې4gei3oa_uOC winuɯ?"8 ^cfxM߾L[D\RK78t&WD(RrP̿{h;gVUƋ$:!r0/ⰱ[/˚1P}v #qdg:$Ƌ{J)B{ 8F AE[>4xha, cYn F@bE(51ePCk01A)NAwX S `uNEuut`On ,khbQ/z޹*#"S8so_pн+ EA/fvpᶒPAc΍'h]dlg㜝'$?}H^ia*{ETwg{i=靛Av< UB3r=҈ZY2JkN5_U xwXg~U=87ٟٿUU?Kgm֥ ! j}`_`!qG}» TMf#A&Z2zة-]FfdM@]пpǠqVUMc8*wH=Gz/T=>Wo%"1}GS)Fk!uU"?Y1bg 5T`7 ʠVX32l;k a䭋@d|V2~IQ  )9=8/9k@V",X"XG\H&+v^?_4mue kw JB.n (2 שY.<8OUVꞘޠʼnÆ.:8w2Vaa1~۸ܮ;S9a,Pm8  %Ҳ B*|]rVD}_\egU!Ck0ʼn4GAP~ :Zއ7240בa$Ī(F[ʼn%l9,( V%j1# ^1f}zFIX)抨c$rq<Ot]!&kMd: J1a S E<ƍN*v1*Z t C(MoR/6‘_-.SeB6'oNQ<$dPlu= P<1VLI49¦Nf;(1 L#L:u6  Āx'.y6-t~M7P\P410ց B:,m~gԀIT#ۃ ZYi`sCQ݄obtPft+7^%=i6tSyp!uYZL8j#&^+]ĕkpjVA% Eu5ؕbnY-V$ϬX mV)U:*!E4WuF ~8jqzkCj;H:[û:X4ÛV[^U$C.|E@^_׵@^CǵZSB0]vxuX]HgFuSUꦊl!Sf[{jx"Nuca6wINƪj9T|ZZ{@ ><:d7#nHϓ=߃hwwGFT GOw ؽcTuiA~p ߇?p>~؈]4˫hC#~FY4$8a % dYڔ~cTWS$bnw ^1J4_]ڔ~ "ZP:*w-B[Jg&q/]T1Wk ڰo+ o ;b|qnBޥʥq_-Y.a&5W-^h/bM](9SPBV9hL2r]6q/a[eUXuerKxGwxmYykfYw~1!w<`X\`&9ҽ,&}w/= x Jl"o.6&a֋ uZ<=_h?zKV"}Ei21Kї޿| rxn<`9כ4?^o ; ozkYds뻵.x VĜ3$?3qڤ{Ŝ \,̅ \^q2ђ0QvU\9j`jd&bcM}mLg 7' f!9g5F12c3v[Lfu7&=|?ڌw35ܙo~.WfaROq9.0z~R #HdVp)dgxFT nrbs{B'j]b/ 3 XžGDu:3 1 r!#H_ț~?Y]OY{WwIpzu}sk4!Wp_}@<@p:y,A a Cdޢ`l͍{ct 1x`p.4_D`V@{eh Ω2N'aRgZ I &lH_a\rZ?[aA&[]`%wڮcA*m˖LmS22k!7r=Dm=eCIW2YŽ˶k;;X:&+#'D{%48ҪN'ޡ.-b-d҂)ᦺj/YwO+(Q/|a"JK||/2nu Q=Ut.L{D^= ="a5l2ccctI"!X$9,Rʹ=9L'6a83K`0PÁk2/c.Ŀ_c Xa~)Sb)C!)#1esO怉saƙ@̭ʛyX,PP%d?T)`֮S`i]\Rb-(h4LQ>dz,PL/=O N\"b@ KNbp1!tW[fg OgK=h K&80sEX"7q7DÈE^dE0PmlS 7Kro1kWĴdZJW4dog, n0ɰ0malaM67D f:ebHY zYzN*9Z< gLVɼKg& 0RFV@Z8Q4ݏP ?q7%4N:(,ͭKn?uc#H^بxv8[`Q! .YhD }hr38D؄1 ?+R5t.-Y"uXBH^6_HS!yZ'0E#s(҂X-aP%Ti UZB -܇䥐eNR*wZa: ɈSG2JĴrrʀB*#!QjLX`, /Ā\ܩm0@XЃ*E1~/z=d^nMoLYiI8H+ao[ Nj<RmhCI*Cd-,Mmt!J $4֠ v+|Q9ƃx@6Qa&2x N,`Ӓ*mQ3]aQg,0#FBݣR` 2״W}~~~~Hna[ҤvE;r:0e;PEP MMⅧn{8D6|s s!l^gمwFOT*7Iڼ ..~S%O6r4GJI6j06Mg+,Ԛ82gslgw=fkԤ|4fNȝl5_:n>2īmS{)Vl[FCdwvg ,6 .ZPW,K荝QRYpy:<;.ՄREFnnǬ݊M{YG,ӿ0mgxuߘ~F1I3 e gIV#X+tьd4-P!U܏<T,tȯKn\]j DݥlBB,(B4L;觬⵻cd&нecawQ:q!'3Ht6NP6B,Q"!0c$0ã96Yz${4='yd-vն#9]S?z8JϲH|(YQGy܎Cԃ GQp$Z뉉#Pcik渞%+bb]Xm!bPongKsz迷fsq(IT{/t0ͱ 3jʢmq鋩!e@p{ wIaν;Zs,,`mc7ġ.qKFkutGq>+EtGq>;Pf]C]đ.qO$5tGq>ԛ;՛ODRt`՛ԅ+ZLDUp2EâQQXؖ#!< 2l=oV;B1!bIv}fjI8 oAۻ]Ӓzn؛Y}μک{T\:X0c@yĿN!"YdI0m`Z7\{tQC';8TjPIsڔy y9iaG\,i.xqo 7u!'+^̩ ӵgZ#K޺qsc,N]gEt٩+  v$P T6KnZeѾ"fX(  1G a 15bJ{K? 1a*N^E}''YUD6e߼\Υ)s"u*fSMi^v6l;F. P*}q OUYOJLʄxsU-DwSiR^@$*!L `J{acis|q#XNwRZBq!zPS/+oL*ޠnA5#o nrZЬSteq,a e׿tq2&A=@![C;Sq]yZV#8= mfaI2K'ykP*d?YkȈT~d҅\lLaSP`M17Bo4xfZ? dCZlH*SiFP x7[ _ΓkXk!]STEO\,pb/X~]tʢb`WW<_3\.-fU*LUuHDU1jlUd~5Ru?jQԮ `lJ6}}4lӺr%QO``v0J6nV}OfönaJ@95S[˕lܢq|E5^\pf[4KS| |_ZF!P6"مJZBmYE@mlngׅk'ѷ3?%Jr$ HAXFc*ˀae`4eTYDЭQ:(}z.=Guhfa:r*r3X;Ӹc%|9 [ƕfL)jwZ[X+wMF-*=}3ʛhgvn͓+84;rO3j$k95բDj&slj,"vJѩBV:7 1;75K弴RYyYoW'7yסnٮ*cn7Hnٲ*7c;jƪv`+S>u3{4WUwyW.\v4i_E<^cǭHjX30tk)aCIh''IG -nm#Wuz磙[(Ͻu w|vq)9Z@saOeN4IyVڤ%X9jUSłfӮENm$ZLiW.(TZ\@q('J3^c)U4lCiNHn(Y.W ]8YD{CH{W ŧ%A'yntZ-~aJ_D+yw᝵1X4 |c|1XCDz1ܹ/z%:Nga{Er7sisOvFԠީS 4z06 7;L ֟`Fo 5_ \B[ cncMe7bC8> pR/({/8y?1j8+prn}YO\euCX~EH1>%:ΪjktCjHA~ӗ̓p zł OD93PkzmasSx ,ؐ*#"Ђܥ J ]-T 9qq:4 l'(zLiKܺq_v!Tk2`O7Ȭ{{06 3:R3EзG>}8K~;AL ":[ o)@<ڛ (^@SHR  {P#WuTBT% ܳ,?z3#zg]~ X`,_^>#M~]vpR[]M=4M)0FA nFMRaгǧ&}饵D4I-7Kchqȋh /z g^\尲2GQ &Ο~P$5=(0SA x L-t&gs87zti |>CvXB s)\X o"a^D'( a=Q;٫٣BuPq$񍱋*zgpkcow3nͼ}/:xF'Z62eۂZX&ߨ+EHSi,;wIv4(Im! 4% ["/-tEkNQ0.J(l?Mw쟦TL5sj^&xj㲍Xxz:%Ep5_ថsq1ioFH8wI։oN|8 9ͣ}^3tu/o\6(,c}VsPJ\ШC:btrϋ^< RH* t@žbK3K44C%x0Nn%o7r}R_Zȳ󬼲]2U6@5F'>;vtcz."[, C xn)"Jl!z =loe# m[x Xt-@NT?F^h (W X6]JSۋҶ( S :g%){Jlgrd"MQx(DWR,%:Due/P)%̽g:U yo$:㱴mjo(wY ăUGU*EnA^7u_ zQȭ '0yr[x"as +hZ/wz[\VCdaS-ߏRo@0Vf3j=_ߥ7"E:}7%7 }`t~:w]*u|$agOuQ4E5o⁗;Ż:K3{JN슂F4ґIo-U] x(wDNrچ(xy`:\8Hdg9 D~h/Z?QfTNd:Ô󔅠5T7,:R;EXSu;HtHEb&5;XI9hN7Vt{:Y}DYW"9بG)?>H :{HԺ֊sVwr>)Ë /6(9ȎdqOgOL&ܬp`yW6?LBǫ0VzPQS [ 2O3:1[Q8Fjek`~xs%kNi4QiX[i,)o7y1n:!,gN'i(NޙƋ%u/T.{bdduB]YEx.]SZDɯ LHՆxv󐟕dK[,$Lg: qsPzƳ? ͥ}+U={f?rȁGeIzCy~0F)1KHTH %q_j{7:u^柢Fԛo .XUĚl6;aZ Q~X`|P(cжђ&&j;jqвMP?x-ljG0ӛ]N ~: 5騹E4=hhɥ&bxT8{b!15Y"[P "AFO[W-hrr-7ZUfKns7vJKu[l!Lch1]&Swma 'Of羷^* b} XԑsSϝyo~xŔē-|#Ƭu=op^4 (|(^{qbL9Yx j|(ob¿p'dQ8 :cTXk̶:(}jv`k5\iAARm6(LrSr\0zrT ȋ!(]8~Rlֿ5vLItHYZ,˾bvK_Z@[oՀБJS!b_I!PAk+Kz#juBhڌ8>>>Ca"=[ rKz-M{k R.'~x2pUVG~?[캬\UcHIrIwE"ǣCݰQ>$@Sd^,"MJ!%Q5B_b OSݢ ֬jwTN*B'nB`2x Y6xCKukrwz(bfw8u's7{N=bwD$L/|d[]@QզKj}n5{Vܦd3n(s&篩7ƖRXp M{9PX ʁB^ *)kDz~AkMՠ"sjPu`ՄJ1"p QP!;>+1Ec'j>Li{%OhM\ERxl<2*W>*d?v{!uttat! ΃ 2"=3zN"*MT u =VöНmbj&ڧ^i16m12ڍW*xr [}=- Xj^ɂU_,P *odZ.0M46V8Bq@0"zv_vŕ+HT)ziR&\+-ؠzʨzFU19ZujOmPZILC!i# m h+ D,ZoDIhcwT"G+?n#nS}qw͒ DQiur!G8|{H7,Lۂ8`զB݃ö p㿹P579Gۓ0po#zE# # c ###C}~sGEy4n4%L-jڕy klUz.0Mn1 (ѯBڊQsj)>Ρbs*.LREPcӸmZ_e+UR`m-ZZôY]=HUsh"EUV޾v~%TXmf n^_uMv[cHEBz9\0Ssj)>Ρbs*.Pc=kB[jKۀZ֑\!ezl푚=Kzt 4p={!íjM8M`i<A5Nij=%#2׊UUqx9, x|d!l.*Ly7EG|'ۖk((Ugﱨ¼oVk5Jkn]^b)iXNxJ6k]K;DډbvCcP/o Bkf7x ɨcL5$qqKMؔrhZ!YUq4!z"Q㠛)ѣbLnvVc5d ڈui<:چS]:YCJMCi6\X0:?f = zGs;:6[S%KbiI$~Oû wfƦM$YvZۙ߻5]V/pE澃O"Lw W;ggO/{;^invșذȯk+o>%|..p5WbQQ]3Yֳq}&lYe )}&CfD^fI0MjG[q䥚̎Bth?AsgPZ\P ~4h|>o:;h<|9>3iĖ*vFޖT)*%P%'܍jlOit5ǰ)1 Y&n`$*W-D: ʔyעr!AF%ǒF Ufȳsz2Eʜ?eM^_q}.reԥVIow)da^J<ߥ=q9*> 9\bӯx SxtO#G j Kv ȧs7`FtP=e٭TŴre8 v\א)2E kEDoATQS?V0ٺP\jkP:SrWE*Y`e(GǼu?bwWdmw3Ðp:-`9f7аo+ oeG@q+A u~ܮK VuOZи_[Sݝ ky:n?fk.ڵagiYUvlQy@޵GۇܣA{k٩EE*eY!Ud;-^7|CfF,E3՘MZ[ @53dl;AGW-Q\r#w3}ty+A]2kꞸè8.sqJ9S"dn7ie}%Zz"Gl6k@_#`HZqA)6NYmwZ|-ʹW_(QkӖWe<[TUB gepѩy+Gd0umnuiY]Nŕ-jQ2G%Ґzk۽qW >ը~6 #%G K,7lGQȐbh(.jf1ڬw8-H&~5*ݡj8-Ȱ&a5QMTjT㚨-Τɨ( !e)>89h^9Cwr̕Nֵ^t7bn, ĉENEH06OZiN-NdUxxM¥mt/U[/eVC=!U:CJȟabsc$OSvB4w ZzU^0|; ߺw8|Ҿ@(]j0N]9,9OSe+rC{ ;vDtWsu oF%#W n7B.s3ƐA`y2k^ANlo\5 Tz[Z}Վ6z1AZޒÛ}>^JM>trbFwcR~)bf<- 'DzS>YȳUK?":t*J! Lac:I%kA!^ #7/%YpɹGnő4RƩc% -wV_Mp 6 ;d²;c6HB nr ڗ\殉,HJ#=Yo!fum{ҋ$~ظk荒.`[aT=j }a\ً>EDti2]h4T-TK/iwo):ِ~#|54?aٵĜbԴ !n\4s>k,~fkEeb?KW-fIi,c M+/LNŌ ./i;@ƋtXob/!*zL^QJv_L8sd vum=7poaD(wmCY npD$=JvNo%ePkWLTχ{E9H*+7*.gS/pmc~7EUp~L5Pt``CuӽrqeNpt1\WtvRa@"?VYtG[&2,KN5  '5 y=.֠v5-D]i ΂|S=. AF׋9 z,p ɏ|ŴV5vNU L7^rF療yog%=kȣ![-&,P)D2 1ă=jy޽f;ユV* ru:'ßv~-N dBPD%]Zl ~qސ>ehTϐ#rwR]p"yAgUh-E]iEtS(uf#6I:⚅k,VZ)B9oC ")Hps9+O"ᣇR;՗mi^ v&33Ed\䔕)5˳-GdWH$g4W 5g]/\.X5 T2:\GEܓ&zaP,%y[Mj*r[7r:r$cn힭+M&х\aZ-ythx˲#l\ƙ mgO\!SeTwd;+T`'wu. q¤W 'F)\k[[~\UJ&٬ K@{ H TSI)^tb~QU0e 5=ajtǜ^Pw[%f.ΪRw7<n`VlϮdV/q ծX޸B3Ł7 紎9Tmi5bF~ڷ3?f.yY!#g`cS%:rh#MV5xl]ʟyQ\n\]csG&na=q[BB[o5 ?qW(!G! F\7Uf[F-+lܲ2?(Uȏ{(YVSR?"Qwec }ƃAɢT5;;u>}B7 :w3ߝExy^i&gJA )5e-lJ:֠FnVZHX־ۈץ_Au<\ F7vFkaC_0B@QP$Y,Bj8t1cneF1we`%>$t:fPoв+TKd”0c1i2k]]g~#ʣ=|.`)]}*c|>_E:WFDm6h<jEKyE%R[ %<n%|*-X|*JWق^}GS4t|-AT$eѐ>ze<xY2CFuow*W`Ǯ_ef<oUG u5@t_R-;ɭݴF0/ =G䭠!sVFvz&i-77 %e \9xY0ъˑ/.z%8b<#G:yD, |GoP-3\V!Dccœ!L.V6ųr㘣$XyGb6tI6Wd7Op7PE?#4˛;];$|&{E>AWrBcނ @DZr) {7/*9˴=ٖX'詂 *CU:uvf +'{[d@p,OYv#.$KO ;6[u$fE ېV K>4\.*xybH *s8]hwx@ùl˺=fuU vi'@kq 9ᘆ+G9U4<h"@gB<=! ?\t&]epX,6JY<3rtSLnŐ|~cϺݳ{n疌XxK(!@Op\ ["lKnnˋ=HKI%PDfDd ?+cq߹(L:w꒿-̲-|*WOxq =y`~/ 5c_xW'WGaBC !#x͋/^~uT̷ "!jt󝪥S߫v}kuCD >h pcKA:_ubtt:owB|*xuRGY)ڹAW`&! Q#Dc,WsW U%ИT/L d}rn|7XB  2 XZL,|PѳMȄ]Xku'F_|\˒gߣ(Fq$5I|M&iܝ^_ʳEGJuq9nםGv'kɭ f(k|8vs zً:$E_H48=}?Pe(cAcXo=fehtzOF#rjXxk(hO}ap$I 3 VZMS4`rkL[P7_בhQ͠xnؤܨB(5d `-so@.@e}gq (Nܙ'7ybsv߯ݯ1Ws54W#s5T"bE>G? ̴t9y?qԼV >CA*:TpkTN(T޼7P-?.|z{zs.R_3TSju: ney$kYry w"վKC?eG"5S c)a/X6PwƂƿ⭻pNuTmMJH0Zu+Ƈ"f8Wy'/EɥS&j\1a*_C/'ˣOW7mx 0'] rw I_xت @:yj%ڰ^akg۰FIZhj)UG(M JAUzye-شcJC[ v24d$m[| KW/0|E)R 1XT2 1ڋ0?-:[8@ų&0 @%1yFf沋B}ؐdaʓ<&ÿfζ6UÔ$e@$#$qMOG0hzwką}=.eHp:+_U9$q85O_>FG# N#K/) j`<[Dބ) 2{T$$Z#!$ e ҠZi)]a35pKHF* o;P*3-pגDzHD$?kT ,\'yCe&RE돑 hꍢhUJh"<୏ܸ NJZK$jlNt!R Z#7yQ&"p2s|-{ߟ͗(ϯ3J6kDhaRG26WbJooUΰ3L5d4֙G6&6CU6{w.n̯Țy49CV=}5r vbDiM2}*̰xBgU܏, ّ|rL9,Ȏi U**r*Oqmd6@s~+PyB@* [LW'LfB!G-ъ!grT b֝)/) B Bv[ )z6ip͂[R-yJ`{L-V:pvRy}MV֒vW E##!6e\[iw]:Z:iX Z(;&O?{j n<6_D_5cȄt-T.q;<&! 像ٶ#xc$24\2w5ז @6òה%}-[t[Vg z{jm( s$rx48A9ˆkOtsԊ|_c-9N>Y]|:YQXve;v m]u5h܍=zV2J$NIఢCUF(  }Z%x*:Mvz7POe##0:o\Aiۇ476֝#NecF @QQ_rӡq|S֚^)&"gnƗ%{ʺn3R˂|ˊg=q bq 4&tsws# bAA[{|6ٔwf|\A^=D7JqY?(# xL"zsd.x!y4 _8:M&.^x$.E)S7x9j@GYFy^6A+U 5sGFfC< p+!S>:l$,zCw|1b]Σ]j~0ϜrfzOXzRU+gdm=Kםㅻys 7,;aߴf]^|<>sg} ]FX]Cwt!ߠ@+XAb RB. ΁-pN%xEM:,ZɐxRDnJ j`{L-WLB. ?H(C Uix;M}Q:D|Rd`K?&ORk`1ٸ5ߞag;sxc/pvo*oe5p GcyF3WђK3,g8gE[CA% Qet͸m5hh3 j*,d]( Ik%2x/|p|ĤpibM :KYb i5Vm9dc)pNAтs RȡOpGe@ÓҿE>};g$ɲo+ݩhs .\.AdKfblEƿipHt\ n9#`Ot᭡;gx8%Di +LrVUiAAo1 IY`5/ .>~ۜzf|K:vxmm{Elɖ;)"]W?Fș0G;J ga;tzIq}q1cNc|>6%/k1;H!GG=cm$7xt[:Q~Dbq!Gj>i o@h/ ͞HIxZ&EkwBTN7gf'ӃML=P}; o80c"S7X~zڃ3:ǿO/ږO0OQOOз&/c ,PG3|PS3!CSxP|b#q"F.8Rfw'zTyn0ENz,ƎpoµI?o.4g'.HT1}5I11%Kch,"'Kx7EQ9ꍫJ'|+s]Efyn sߑk|uxE]靍__֤DYqAaiw%qCr@ ..8s9x!U]c;LI㦲.]PёZ ?;_*k]6֍v`+Wm xޕ*v8{±ɁNYIf34~xub{ "\] |l%] ="=KeiƳ-Kw`вx ]Ps1~x &zȌGiIf 8ϟS^BA? MW TTWW`3x{y&<XYO%y['8M2OgeD.grVPC8ܬyְ¿qR, (e+GqJߙgk,"N1qyfWot#/ GﱺHjr3q1$+U_-k>G` &jB gZjQb)!TnnuŹ^ls5D᭑4zW o7Xt(' ӵa:Ck{#$+Xj_wACHK# G8xꅡ$8K0eݹ}$2ˋt? AdPFⅱ1swc ~L'ev4Yw#Lf#0ZrR 7P'H'0i|-ާZ bԳׄY^v\tT@_s_kTXhB6uu o3wAo,!`A0=Hr>8|6vG3g:"e|szc\SƐ,yM1,yLo~x B6ʏQ:ֶHkȽO)`ӾEdh-U #pqO^ђBdgq0.tfX %D]%wE(IF,9#P- oۓ]L$>8+?>>We[sѶS-YրO| o_| aX~K_uG؃?ʞ6!؛_L_n[;ٓy*UoҐ24K H\t/xf0oi+jGl4h̩EVr'܌=U<˅]p}WR/*&4e۱g6j$ 3[o Ek=:,ܙt|I d߁!ǦkII܃1 C?-`g(BpG5]ktw1}El8vsf%NEo>gtSZf} mL» i&,Ux!C[! s'gj*Kv>%eB2yQ)jPod`62{<椷ӭ)ԥo6ʽɷ#&|ADwÆO(K=q3͘-Q$`T炊 [xHb1GYz(Y0+/X*H*x|4!p6( TkS: 05Ib?+#)ymrUʉ\P[bL\npѾ 1'dkXTAUh-R zx&`<:@خPZl=gxϺpAmY6\E=eS'kӌ }d=,R *Ay?oT}aoP!iUX%}PVW/_~~A?"_No>⽚? [>g~E+,aݘ&#;Oߑi#OF%ER;߾$_q>Ja=Pk%71N 1^Oqg :ao9>xOj>1rH7딱GKڽl{p`4t{ԆYfs"VM"z?zE6}k7I<ɺ֏غw<1񀧦X5!HPq2N_"@G̘tuuet8֎1]I!OR=G~l<u`?ϓYؼMdMzŊHse)+*Ҹޭ|P$3Y `9¥Ot _A?} pV$Iއ-oyA1o>|q4х8{{}02,VRd Ҳ5#ʨ&vnB ʦx]!߼y (] McK+^R_  bq7< rv#X@zJu _} B~{1?A'S&ߒ G?vP? :Gt]z3XqNլ,|;Eה,}b00cgIpB~gt;P,lw:WwS\:Aw?SU J,IHw4,ϧ<= *+lEM`2/dF"I! $D_o;0}6~HJ[!CC ;gM~8~$k^w-m'̠7!xCwv%4_" LFFö l)͏cP;[P0$x (t/loc0 jbc!ѧ(|Afl5:6A2o|