summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meta/recipes-connectivity/connman/connman/0001-firewall-nftables-fix-build-with-libnftnl-1.0.7.patch72
-rw-r--r--meta/recipes-connectivity/connman/connman/CVE-2017-12865.patch87
-rw-r--r--meta/recipes-connectivity/connman/connman_1.35.bb (renamed from meta/recipes-connectivity/connman/connman_1.34.bb)6
3 files changed, 2 insertions, 163 deletions
diff --git a/meta/recipes-connectivity/connman/connman/0001-firewall-nftables-fix-build-with-libnftnl-1.0.7.patch b/meta/recipes-connectivity/connman/connman/0001-firewall-nftables-fix-build-with-libnftnl-1.0.7.patch
deleted file mode 100644
index cfafbd1271..0000000000
--- a/meta/recipes-connectivity/connman/connman/0001-firewall-nftables-fix-build-with-libnftnl-1.0.7.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 4058ce3186a99fd5f03350fc11a7fc8d38b6a381 Mon Sep 17 00:00:00 2001
-From: "Maxin B. John" <maxin.john@intel.com>
-Date: Mon, 8 May 2017 10:53:18 +0300
-Subject: [PATCH] firewall-nftables: fix build with libnftnl-1.0.7
-
-We need these updates to accommodate the changes caused by the following
-commit in libnftnl-1.0.7
-
-commit 907a9f8e5a93f5bcd449643eb3916a656d634758
-Author: Pablo Neira Ayuso <pablo@netfilter.org>
-Date: Tue Dec 20 13:47:11 2016 +0100
-
-src: get rid of aliases and compat
-
-This machinery was introduced to avoid sudden compilation breakage of
-old nftables releases. With the upcoming release of 0.7 (and 0.6 which
-is now 6 months old) this is not required anymore.
-
-Moreover, users gain nothing from older releases since they are
-half-boiled and buggy.
-
-So let's get rid of aliases now. Bump LIBVERSION and update map file.
-
-Upstream-Status: Submitted
-
-Signed-off-by: Maxin B. John <maxin.john@intel.com>
----
- src/firewall-nftables.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/firewall-nftables.c b/src/firewall-nftables.c
-index 583d1c4..83b137b 100644
---- a/src/firewall-nftables.c
-+++ b/src/firewall-nftables.c
-@@ -387,9 +387,9 @@ static int add_cmp(struct nftnl_rule *rule, uint32_t sreg, uint32_t op,
- if (!expr)
- return -ENOMEM;
-
-- nftnl_expr_set_u32(expr, NFT_EXPR_CMP_SREG, sreg);
-- nftnl_expr_set_u32(expr, NFT_EXPR_CMP_OP, op);
-- nftnl_expr_set(expr, NFT_EXPR_CMP_DATA, data, data_len);
-+ nftnl_expr_set_u32(expr, NFTNL_EXPR_CMP_SREG, sreg);
-+ nftnl_expr_set_u32(expr, NFTNL_EXPR_CMP_OP, op);
-+ nftnl_expr_set(expr, NFTNL_EXPR_CMP_DATA, data, data_len);
-
- nftnl_rule_add_expr(rule, expr);
-
-@@ -575,8 +575,8 @@ static int build_rule_nat(const char *address, unsigned char prefixlen,
- expr = nftnl_expr_alloc("meta");
- if (!expr)
- goto err;
-- nftnl_expr_set_u32(expr, NFT_EXPR_META_KEY, NFT_META_OIFNAME);
-- nftnl_expr_set_u32(expr, NFT_EXPR_META_DREG, NFT_REG_1);
-+ nftnl_expr_set_u32(expr, NFTNL_EXPR_META_KEY, NFT_META_OIFNAME);
-+ nftnl_expr_set_u32(expr, NFTNL_EXPR_META_DREG, NFT_REG_1);
- nftnl_rule_add_expr(rule, expr);
- err = add_cmp(rule, NFT_REG_1, NFT_CMP_EQ, interface,
- strlen(interface) + 1);
-@@ -677,8 +677,8 @@ static int build_rule_snat(int index, const char *address,
- expr = nftnl_expr_alloc("meta");
- if (!expr)
- goto err;
-- nftnl_expr_set_u32(expr, NFT_EXPR_META_KEY, NFT_META_OIF);
-- nftnl_expr_set_u32(expr, NFT_EXPR_META_DREG, NFT_REG_1);
-+ nftnl_expr_set_u32(expr, NFTNL_EXPR_META_KEY, NFT_META_OIF);
-+ nftnl_expr_set_u32(expr, NFTNL_EXPR_META_DREG, NFT_REG_1);
- nftnl_rule_add_expr(rule, expr);
- err = add_cmp(rule, NFT_REG_1, NFT_CMP_EQ, &index, sizeof(index));
- if (err < 0)
---
-2.4.0
-
diff --git a/meta/recipes-connectivity/connman/connman/CVE-2017-12865.patch b/meta/recipes-connectivity/connman/connman/CVE-2017-12865.patch
deleted file mode 100644
index 45f78f10ea..0000000000
--- a/meta/recipes-connectivity/connman/connman/CVE-2017-12865.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 5c281d182ecdd0a424b64f7698f32467f8f67b71 Mon Sep 17 00:00:00 2001
-From: Jukka Rissanen <jukka.rissanen@linux.intel.com>
-Date: Wed, 9 Aug 2017 10:16:46 +0300
-Subject: dnsproxy: Fix crash on malformed DNS response
-
-If the response query string is malformed, we might access memory
-pass the end of "name" variable in parse_response().
-
-CVE: CVE-2017-12865
-Upstream-Status: Backport [https://git.kernel.org/pub/scm/network/connman/connman.git/patch/?id=5c281d182ecdd0a424b64f7698f32467f8f67b71]
-
-Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
----
- src/dnsproxy.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/src/dnsproxy.c b/src/dnsproxy.c
-index 38ac5bf..40b4f15 100644
---- a/src/dnsproxy.c
-+++ b/src/dnsproxy.c
-@@ -838,7 +838,7 @@ static struct cache_entry *cache_check(gpointer request, int *qtype, int proto)
- static int get_name(int counter,
- unsigned char *pkt, unsigned char *start, unsigned char *max,
- unsigned char *output, int output_max, int *output_len,
-- unsigned char **end, char *name, int *name_len)
-+ unsigned char **end, char *name, size_t max_name, int *name_len)
- {
- unsigned char *p;
-
-@@ -859,7 +859,7 @@ static int get_name(int counter,
-
- return get_name(counter + 1, pkt, pkt + offset, max,
- output, output_max, output_len, end,
-- name, name_len);
-+ name, max_name, name_len);
- } else {
- unsigned label_len = *p;
-
-@@ -869,6 +869,9 @@ static int get_name(int counter,
- if (*output_len > output_max)
- return -ENOBUFS;
-
-+ if ((*name_len + 1 + label_len + 1) > max_name)
-+ return -ENOBUFS;
-+
- /*
- * We need the original name in order to check
- * if this answer is the correct one.
-@@ -900,14 +903,14 @@ static int parse_rr(unsigned char *buf, unsigned char *start,
- unsigned char *response, unsigned int *response_size,
- uint16_t *type, uint16_t *class, int *ttl, int *rdlen,
- unsigned char **end,
-- char *name)
-+ char *name, size_t max_name)
- {
- struct domain_rr *rr;
- int err, offset;
- int name_len = 0, output_len = 0, max_rsp = *response_size;
-
- err = get_name(0, buf, start, max, response, max_rsp,
-- &output_len, end, name, &name_len);
-+ &output_len, end, name, max_name, &name_len);
- if (err < 0)
- return err;
-
-@@ -1033,7 +1036,8 @@ static int parse_response(unsigned char *buf, int buflen,
- memset(rsp, 0, sizeof(rsp));
-
- ret = parse_rr(buf, ptr, buf + buflen, rsp, &rsp_len,
-- type, class, ttl, &rdlen, &next, name);
-+ type, class, ttl, &rdlen, &next, name,
-+ sizeof(name) - 1);
- if (ret != 0) {
- err = ret;
- goto out;
-@@ -1099,7 +1103,7 @@ static int parse_response(unsigned char *buf, int buflen,
- */
- ret = get_name(0, buf, next - rdlen, buf + buflen,
- rsp, rsp_len, &output_len, &end,
-- name, &name_len);
-+ name, sizeof(name) - 1, &name_len);
- if (ret != 0) {
- /* just ignore the error at this point */
- ptr = next;
---
-cgit v1.1
-
diff --git a/meta/recipes-connectivity/connman/connman_1.34.bb b/meta/recipes-connectivity/connman/connman_1.35.bb
index dc2c688f49..950946fe76 100644
--- a/meta/recipes-connectivity/connman/connman_1.34.bb
+++ b/meta/recipes-connectivity/connman/connman_1.35.bb
@@ -2,17 +2,15 @@ require connman.inc
SRC_URI = "${KERNELORG_MIRROR}/linux/network/${BPN}/${BP}.tar.xz \
file://0001-plugin.h-Change-visibility-to-default-for-debug-symb.patch \
- file://0001-firewall-nftables-fix-build-with-libnftnl-1.0.7.patch \
file://0001-connman.service-stop-systemd-resolved-when-we-use-co.patch \
file://connman \
file://no-version-scripts.patch \
file://includes.patch \
- file://CVE-2017-12865.patch \
"
SRC_URI_append_libc-musl = " file://0002-resolve-musl-does-not-implement-res_ninit.patch \
"
-SRC_URI[md5sum] = "e200028702c831d5f535d20d61e608ef"
-SRC_URI[sha256sum] = "a9a0808c729c1f348fc36d8cecb52d19b72bc34cb411c502608cb0e0190fc71e"
+SRC_URI[md5sum] = "bae37b45ee9b3db5ec8115188f8a7652"
+SRC_URI[sha256sum] = "66d7deb98371545c6e417239a9b3b3e3201c1529d08eedf40afbc859842cf2aa"
RRECOMMENDS_${PN} = "connman-conf"
A+Ä#*.BncHO]5S/aR D b7ZYH'fX?gzWJ'5+3l Nh+\W)ޭahucz`Y5N8P ߷:_f'OnOoP#XT][( LLίij@eVuaY+` kPe=Mlك<*R4Q&UrIt?vN[%Is:d?I|&t<{uŽ^d^p?֫~G 8ZSm8DŽjc3iOcPPwXtE{~>0#a{5BQ2Sq\RYq,`XX{AGtp%o9OAGkR95h.d+ZR0 byY8Z}{W稏 /2Uܮ3xF]zcaVN. ( /B{Ov F l. FT pOTkiAZY.tYS5O r< }"ZR h$ `7حqnyNzSuC UƑ(1Z!ty,ȩIS,J)YeΆԕx(ܪAo.gu)vZ=Nr+ʹ1cQ> 3a =| 5;I7N'g=XSStݬm=zȍֿ[b,)[Oa]O L>*+:F0?5߾lp@@XQU\pqp#(pU7:F2IzŬZg' U1_\$W/L@߀DUHc7N M_zcX#yKfL6cylTcZd SA^ Β"HLN,E{)ȑef&蠙oAj h>(Q;65́Of[mKCLUǵtwNⵄr7YnNzOJzȓ&a77'fS2D/YŽfMfK@o:7J_%kgS gy,.?A5׮-rj}iV뚸n9 6z~m}ΑzBkfgېMz. G 8j$uGlb;$ "aw dhnt(k-p/iv9Es?tIyjfͽ Y7O$mW8Lko-iy^8 NA;@F.GԥZRl& Λ ICԅ/۲g=><:Oؘ[,Oyu<_Hl &-"T ]+>CzQSkUPuCB?piMM"eTk>24>18[^4{Gi H;?wsXsB`z"rYB%9%dڰ 6icDap$#9髬|nQ=*h>yxxwQp2JonCZtm㞲`JSR$JjجFU$皃qgA甙8$D[;-Q6|HTMoJݸYgvmOl76]ҥrYpQqF}G\_]e8p8;R֏Nf~Lk[̀.wn>hhpTVm1eZ ƹDFAM 5xt.[lD"dksDoiQTir'i:ʁ R} 0s9G}taH ;wΖ/« 췉Fx}̘G[,&OgZsrkzU/YPNbĩQ .i^xiĵk; {oZ#٦+ah [`g"kݴAh 6+˔87yz%bt_@яR{kˊ}9\a6¡ƕü ꏌ& Tl)݋5PޅK6)MߋKS:`'мl.G2|~.entqGy9w8_3$wp7q|Oa+59xU ~+#X2_JSNznu^_2ىN6^%rMWTµ< \uo860_rg`]@<*N7տbaz;;44ԏR2iw1ao?WѭNW&)s jc6bHzwm=d؛aoVpV [﫚 #դkI0ftq0%oԳA{8rдu᪪jh']hu [%4kyed_HD9bȦ+F[nU5gq M}/",v*YL_W]> 5 .'qWيD4H7Lּ2JKV7\i׫L/OhqP5mNJ5(:֢+[뉩v E84vYLԨ,N9#tE`%a{킄wuk/! E6 `͝;|>A_0r?{GK]C^r!aN4+_-g᪼-ш}V< ٫Bu"" ,4$9Gp"D $hx~u\g}GMcD.qu#M/^Ѭh [t3HH~J ԥt:w8]s.Mv1]Ln~]x8[s1uP|XLG < 36n\8 ^pDCW~{^ {ndxhVϓG<&*2:R_sC v̉E(dT~O{X'DOW76~ƍGӕgsn{m908BH,Y<=zAѠ*[[$TazU?-#zЏP3lmߚs ?=˥d>QϟV\pZK"j֨}GQ՟,vkr92{߭)~J=9b)ZofD riDa*WQ!I]uF qJos>gz9 泵>2q5OrŁC;sB(+qӀTPIؗtY6s&uPo-o:2ung6fn^ 87ʂA%%DH~J5Cw@nfClYf~M e!S$ 6izsWGDwd~=E1wwڏv}בgi!z },s 3F>VJmkϲzlqo y?%T*5Uuΰت߃TE=Կyz?}Ѽ?FybH>KY 5yl_zMI2⌞2??'ҞPGYpRtq;)t1Q @45-mS6#\ 704=}'5M8֛o}*8"2Fj-h"#}%7JZBXM _ ֍ԊId}@.Q78{yEH-3wnc2BOlM=M?,m+7 ݤ) k7qtfyllO 8R" 葥BwF=T~7yIA2IhZT"FU"BNd<K"ۓ lFy*p jB5nσqͅZ`ɨ> :ר͢NB Uݷ rvT1O_=L~2K;OIP^G1 ǽA|lכѲQ"; +'vLߕ//^s};$aS=2 F.Ed eUʴb gTm ڼ(wop3S_aIUӛoЙOt)iZe_ݜ{}E\9VVP"}W ĭ8W:o|mY4U_]P{1ùtզ'[J2rf ]+ bh%k 3cblK~pqeo;Ӏv'l0ͪ}Cp[/o? bD2ʎTEO?Vw/M?eQ+x ɛ[[t2RHqfߤB3uSe? E [@q+WObIK^LJ6郱ݼs\t4>iV~6?ٶ&n ƖB&pNsѕBTmzvK$bJacMf^QprN0q(oh<ͯ*nXq@L8hjOrsHH+ILN\l򄥑72)0_~\&Ǥ2IT$%)"6 IZ⇗q=eߓ@]&x(%!`ϋz;%L(D+q8_Wϒ{3*8%zOrMI5IX+p2=Sapǵ",.q񷙚nKtlY[7|BsPpHCIJQh] 0]m@e>!b\:W\AH40+t.eӬϒǹ /B]xIr ļp$TKlj$h@9وfpx+uz.d46rnͮǙP-.~\ o"^?V=!h$^q8v+]p4Hi4)Mx&RͿv{yɭ{ϲ2+rvgroGbv]u. n}o(< (pUcƗ{dgerOoNjy}'hd4䘙C}r%X ,k vlEΝFJkSo{]+D¤\ ua4W0Ǎ,C/Xo42ûjeA:Ol~1`07W2QU(Z ,ˮRU([С .K%JNCq} "&n׻_F*~Ζ (!/"SĖ,nT8X>k&s>DdJ9MbB!@#]R{ݔJ}SF*zr: Ѝk3|Iy@bsݸߺܘKp<$.1-BJ`/;񝒼vz 2ٮkgyTS;EC8ػn UvLLٴ烈k1o 9O5?3r˸'xgޫNǒ_?PuZXr{uw9bUI^qxU?z貝]̍qx2_?sfY p6zh@,ר!/͐@ۚ ֆF|@(6F`bAbLBrV:Is&f>҂~^&iI%n)F]Ɗr&jڵjh}1JZ?|5RUXrUO%8_$%f ]4x;pr.3_7Ҥ}}z5F|9};YDC}/Fu5|_׾Љ!#;/ٿ׾0^Cz(~[h?S`MYF/>e[3//%Z-2dl~XM~R?du;)3ĬmQs_n?#2=~>A/Y@O'ooƎOo\glx]F QE~{g &WNœ`$]?}~>v| ;6S`?Sc Ku"s)Jyg@+g6Xr׀nk{[yHYZNyQ$voNԻzhhC+Ӣ|,Yv$ d*lyLc^sC";$>׼mYrfTczfH2ň+= B)yXYP-M( {"8h[qV;KEE(]U~sD*UfȂIӓwe+ $"q]?M7@`m?݈nvˑ3oVCVa _i YiajEk:2||g}kYᅭ|=JQ`}]Y4:N|",~/BkPncN?A;H} O?i1i<|w PKs}`;47N+$ 6vV+ 6(˯R :Qz 0<"\a^^) acj\a?[\}kr]O`EP8FYވCϸ$iI,8 0gGT̄d ɘ.=.Jhi Lxr-r CB}`eC]yuJ6rL%vG`pq=ʼn8?G\d% (iQ`4ẸE_ь "vRB )g0>qyA!Ƃ!*; fP kd. ypF$\^qQiqטWׂ#-dm٢esoi)j\rxGGNNz.tf*亊fe@=F]yĖA{"js½ؗY `W2_M(: Ѳ̻sS82a eR"uK^<:Z '!&V f#j(: U?J9w,K)2+BZlaF ~P@UZEewٌЀeXΑUW,^uNJ1un+Wk)oKL\kYT Q?ۄvjSA.1n\ oqZ3[3UaF_g46Fw_/@вָ$9W4.&q(:c^>n;\({Wg=B6VJfQj i4WcGf>rS 2BM'F'{?]C?bxTC1Fov3)ԋՔZd>tuh2W9^1-A!KC}ٺb2 C2FDG\}zR諦 2$ )A|)J2+Ww4x6h+S$)PTVBň$_t{qJJA|f\91!A,;BEDӦl7/]C1m%\7!>\%g]^|E5V"]|Y۰`S=Z%-khҊN%8m}ā۳ɫ`p/=:u$*@Bx _}] W0J kZp1\OB@WhmJGu Z[ Q*kcĪ@~,Z5fYVր3#R UMoqZQKޠKS/i[(ڔ#\hHml&_s)'V)-= ŵWFKޱH$Ht`H n0 ʞ דٙ^%׃. ҈du:D/?H"cEBa)圬49 Z:́^iatA ]:% Iy˜9_\)"$ /1^Mn:+fl~&Hm k.ZL6ðFqհjJ1^׌dtB@zF|>ck4ϒY6щ0)'ܥ'Z`A'鷪Gz G]M>̅#|Jm,BO\e6u`N:" h85.7뒺hk*K"0jיT4l5Ik%T611fy܏F.7<3c}9qa TVF-f|-e IqKRSd^$J,6jam^r;BHDVE5)YP¦LS ZQlF brv2Kl̓qzBĬ,l5)]Eg\uXWƚu'b*N%*g\Q|t`{-/7 nAo. RDhfX8HxItFO' (Է8@=ɋ:dQ7)MZ\Il$šl@8$3.lKE/bѧvYS a.5>Lڼ]t`F#se$IEȽ8|?.Rlh4)`$W( &(YȔ/!qtec E(QTu&tI*#v mahhgV¹ ym5S0ˆd܎w U;K0"~eP:eHy^נ׭akS3,D>4:Qp[ZTcga˳~[zi*._iO8f"ܥ0g5{.]b}R~L4CP`*OIJ #MeybSô覆nP2ݪ#T:Y-p #apf\$^$Ei!n}:"K f'TqBJ%`9^^By .5&WhTv? \M|s0"b)бO}Vb/!"R(=8A *rLR''L=Na #(WMq9y}-iL?3j!"ĝ#Sa2d+ ybE¥;So(LL 揘 \WjHhٚ|/J ]KX`I>o/+=/. '2{3o\%+Ԃ%EaY8LQh<$mNa𽝟j|xy? -A*' Ng=s;ʹcCGTD!&salޜhSi\i5'=2zG!5fn^p>N1B vYƂIeI?60:!r.iͳo FLPn5sarɘ~|4 }4W[2qa| pk:<35 P{&Xa$ÿ20&f!+Č?G#aM2񦮰_ 5iX[\?%*3UءjʵzBY\]9n,w`Q5#:H*q1b8TC4ck5_`׉4cϰ̌rgWCZb+ T& dz j/xJ2QuRy`c&5(kHc>R`%jD>P7S&K9jԘŹbf0Y8A>aTdCQ8-]U`VC_plU4V cca4O#hom!N덝%H7 f$Y~$e#>o#:#&0rD,JXsׂi]~!j(mv\U_1Y!~7xC#l{H9 ^H?t$0L*v-=PR7TP}52~*̿F }q1UOfl_+$᨟XQx)ӿaŹP:@<5V3Vd}#n"rDϺoEIQ[vj'O\}0|]b[VZZ|z=-"eyB$(s&I9@e&q")diI1'噢bu1=rR^T#*WmvYH׋4t+[fMBt &bm~|vtǠ(;ئWb JDb#mCXI1r"#&UhR~FY4-&q/JoMF\ŶsrPJϛN/:h7RC8WȩO3A3$5.;=C*Ldց%1lil1oimxGfONȯpK<`qĢPSypNV^铹 _ny}8!j|Xcf5DwÝUtn.p?On>{A; ĕw:~d{ !3S2NȎql@YF'BOF.(qd'v~} ^v㓣O_%v/xqG/ݗ'wZhwA /8zP#Yp9yvFlS;`Gf/ǗqszO{˳^]uht08>9hooҴg/^cqۇ??>wI__ь;rp{PGg'ZAcښi2UwxOCm! 2۴'GoB~C}ZSmAx}UH,75n ZLu^tvRKtpvvi'?7CsOI)mt^`'}M=a{};TB/DhtIRiZ"VR89 vh><--~}UHC'y+8=zOG{} PS@; i;4n p]> 7v G@6l;ӿ;>8m>fs!oJ Ӽg9xdh#!d\bb_P/u©)xI[ӡf{oAyd}ɑp>tJ}>A"ͲW?\֋qr>^hz]yΡY^# Dd^?"ة H_@G| Z*++@(M0Qy&YG^8"DP!ۯǦ1 oCM ѵwϔKs쿃(S?u ] P*7{BgbrF\$u|x] j0OI==x*Q?s=)pZM0H%ji25I4 #9g]2^1εxDT\ENxKa ?U:8A4}'aBGwN8g2V(B9pjF"ۇhq4ʪDO-~+Sylrf~<b -DȅgGC6-čdžcN| ,nl&1 ^S4ILzQmP}k,@luel]׆k.=M")5}0AYGi30Ac"05#\ME$&$Xzp`*F2aJ$ғƽ޵W+A>!Qѿ{x+ѼYn*ɚVF fDB3#A7a5dl#AE^#M| .V͢v#ʍk X#[ꓢ&4Ħ'VGS3 /e&H9#zz:ԴsCpe|DMDX:=3Vb^NaϯHcy'OzG Ur/-q=kg@Mй  wYoGG/xsPiyZA= B!J,ˆ9~諧S< hHb:.)% gDD(xJ"v!kWF ?vU_e@6L00=;_Y[&x1UјnR48:kJ+=*G˂Wv:ã'4JUoCmٟġ>vL=ժURj~6+=YG~txvBB}rX}v'GZjXEu**ŽP/~P>NߘDM*sq~~^"Rf`&!~qJl?IЂ+Bb}A!f4E >_l~~Zc$~܃z`\VƓfhtNvv萠P?$& zֹcsLc9.oii= 5e$p!׀&7jO. Law+iЮ}qmDĈ(1ˡ3z>fu3|͸-ӭ12ayZCuø4^jRQZFiMg^kn*s`uU-} JKFI0n S'#+J؂q9 zic+Ox̂A&0mo/o:'ǜH & ]#USϢx޽H$?jFKhn(}_D4xډ8?L.:Kpqlx]{Fe)&D*U1`(A4 g#pfMb#X7ǜ`a1 ]y@*A"7z1ΦX`3Ktжͦ\抦ӁN`Onچj@ELUR[Π Iی GbF*訅f"~ݒf EA60C=ƿ4iгcػU_߭Sh NX;Z[Ue~+Cm{\k!xK-PS'?G8RQ0.4Ld_(s*1qR%3Cvx>DƐJt:+g] }xKQ.wR@d ɄVNɨegny =DkMIFXG J3X`x# e$v!ƮǃV)ڝn|G+8 q0?lPy6/|/ ;X<,?ĉAZ;4{w-4W' ])Yٺ$H=GIh5x z)|7y=,x+0Ex/;b&³[X  &ʞz355 KPKhT EBǮ>6)> Ӽ6F/Ilf`SOo&-EhGS?pud\ZWisaݴ`=̠e3e^;~l_nj)n V5p=^{2lK&JsֿyRGp挰Y~Mx\oosL1 sU_Yj}m..mۏ?W/G7}͟SVW9HGwczvTftXjM:vVXt_ j|7޲eTc9߃?ghFLC,G00gi8Ĕ^Q#.6u 7 NP0>N4nb{v=NtQG x«2jȚ0Mf(&.4B- r]骐K${vG4g=y4⌳06dTP>4( #8|cOW՜w&fiGHzY |WkªvQ1͍yh[VJ Ev‘۩-"Z`/%7D;{6wf;GQ{AѦx E*I ? |O.`2x/H>h\;L;J2Ɯ- kalےĠ39<L.)m"O̍KDV>'0OY@XnѦ@NCOnc0u~-@sL}9h.6]pֿ]X_77oKLqt>N_դYTpf딏.95{ACtYO!Dk$_xtlOHt__#} Nz+IBRBWkmv8%"f}ҷu O4>t |%ϱm)"و%&Ji9yXg;QVswY#l_= ʤ,$;Aǽ4?3CpGEM(juo|Ϋs]ZFqaya*f:z_-Z>k $nt¦[¦OeS&6ȰF؋`Lqbÿβ>'=n&r=PaNaLR{댍d\l5tz˦V|Vaa4˼ 8^{[Eof;#|UT%w[`A|iF4g*Dxܟ~ mooLr<~L,y l~dbO}D~fn;A 9^\SXi.r$BbAr@x37\n:'L8ŝ'̚9+͚i!~bلv"JzYx%5[0 oG8rpݖf9O&bߜF.DTND ZȦG ֕o`u7޷OR@jYc,~NZDžj},>fߪ[<>go!0!_c8NEf̞IC[s Lugפρ , F$ Q'KfJzm,L<`xҪ6K3.k9fa Kဤᅥ3\Z{m7I/6jqh55h}9CzXİO^|cVŪ N8 Fϖ U|"hۃ~|v ‡Ȝ.J_$?R KKAJ>]lz,m7[@|^ :~Qz+^F *{\yE13R<{C !gz:5gg6CsN?2?gkR?ʖܜHNzsgKvV[J.aBdMcps#f;_ؔ,f,іAvߗCL ;4~ƃ<I =68 9iK.VpJ- sIV~aOd{@?gkE}ֿyacQWf_b/m!`mէs.ޤڧ.mg#?ǵầ#Hq0QLjxLOWk B8l@BpJc6L!|z1Ds 4!N<v t4 OD(l`bPLӐ2u {@fx͘k2"͑ow;3ٙ0aZsv| 6QcAY:a{ĻNjF#SlQboy3(΄Ze5VEAʩp6w1jb@o8XHgGl>S D4:WhxB Dg{f\&̩.s?HHjs36UP2KZ5*٦Iy=tCQ-*j @NOVPl&(c6AT3 P%kr`Ho>lT(V#k(s>Tg?щQ|Qʟk>KزD%5Ңϣs瓄i;.f0ޏO(;Чg2AY$"ګʽJٿ>^zZPUk"m>!WՓԑ2uv%ZWDy230`|&lƢWh:-3O~n'ٵK*Y\H:49(ː4}z&<Ȥ6yxD4zQ~EJ3]͝"ɪ&sI,d7퍥$8BB8CHljI8ͧcOϟU_9s,Ib{\2HRqhB9Q3f}{1g;M?"<Đ0iSܳ~)(87LR <5 u)ảDL&m 7Z$|Bn8HqW뿰m4= $6)"fyS!w~ P M6#Ύ| i4`LM\F+$`rb3҇ā(Eۂ%iⅈ{sSDX~c vbO]V3y7'ٚylugQΠ^%rMDaK.=SO< Uüu+1p>NCú2ʞfMj'k@X([zM$.^$ `tn5v/ CoJn`vXy3,n"f}崪ys7BS9(?o5zT|Hك۞a5Dfn26-Sq.S#X+1bex5\nQ Ղ?3 _7 b);.:uA8 242c}fRʜ?6t+*vUNZʠ6Ýhdrt7}7|B()wG+. O+0sz4gI?CE瀆,7ٷ&`뭦gm}}gj]bk`㗣A"EEXGP"~mwθ/^^ݴX_mDlLnisQ$! 5BnDOna5sj̗nBHћ\g|ٚZ'HXJBCX^2iQE1j[]:0({.fޭhlslW4˼$s4e #XU} K]:ǝý^?Q/Pin+.ok}we]mV)9ݸJ_J}UXo{F*NW3yWJBb K1hE~ u 9&bUCcxg7لj>TPaۘJث/ܵcɪ8>_Vi4ҴG.Ed¶7X$8ZE;;g/_uoO嶻\ynm[(4c;țoA϶Zc`yrpԻB'.q[ z-gJ@{g\BYKc嫟5Xi1?l6Y.9Q3 ׋&Qy ^z5{H( +y"b {謳{3g)،`T:nA_K :s.K3v:^.[#C(l:%UnZݨF4tv.2pyCL÷\TɹJ]8rs- mP;S;E/KQx%PCmB.7mx9h{m hJ]Ym{^6Zj&L+G:G{LC>hg,j:4"bmYuYk_XgH~]2`m1 (r\PeWVSp]֣ݳPr묄7ĩFG S{~&}kSOn m hT"3sB#<X’$D7-拃ݻi+zc^Yx[;2$EaQ(EMT62YX7å|kɍ)G켸H| b#_{nqw0"@ Gwk'BN:R z-\ dMιR4;3&b9ZN\xh/5O"Ò{gkhm l'~@,ji)AʸB3k52J%3ˣlz[~;E׃Dвp|h8GÐRFR\k8\SJy ] *ʈ421= N`xVSkp|ED0u(8G9ane}-l*B:{m)]S54zf#k ~as 0&cTv.a/s=ҥb0QNOAeR1#~B#GU@b#,bD_qEN1evqi/ F Ӆ/F|*\@S>s Y3s@vdn)W}ez̀< `|[eÚwTsaGHd71(S͝FEm2Ku*_ț_UVWo =XdRL-4RsZ} ࠯%ŷ6.d2RQQ$]٠-"d~$GS=f d*Qp4R,wwdxUXά-ލUӾ¨.46Ƣ} R$I?L'z2{Tla6݃_HpE= G KFsZϬ stà+47 R({"혡( B;'z2A )s3 Ϧ'6 YΔkhtc e-B_Vl(mÛ)/{/ (.D26BAK}VӬrQKv6>lqOsS.z| Y-Ejq^v_w=,tF;z΍~&~[:xWgB>P) QŶ6g,e'IW@6ؿ7[,Jp6jv5%;ry !?p h]C-k)ea;o*nNVG ةuװ='epx"5]~H BsVe>C}9k@J7rHÐIXJB*akR L56"' U9V <,Jraze~!ʕdsK xe[L_jm{A4/`!fa+ ) ̦wzVl0hJ ÑH`2x"Mѷu&1GouƬ"|Lg(Eo$%1%Nd9",fKVTԐZ*)NafPB`p6-c40*<8"f!C'ogjB4U^FbF12ꪠJ{m)IW*OLM&<7?4sw 8, !!`ڋ'g!+oa订q߲t#˞;ﺡ 8BI4y+a7U7Sps/GL%9@ޙ\VXKc o8pG1[Fly8rg8Rp$_"8D~9XZ7 a"_X'gQ t$  :'Q F6L 'k[W5zajnwΛIFp IR]f>ퟸMxرB?8AJf4u6b0v<u5.FEpË%F.I8C65p]ݗf = ;93RJp!62FN!:ڞ2*|;yQ圉t,7!a;= N ;I-yǰ|!&ʭ&"QH=:CN$h<Q}}n{dcjҽafiZ7[^dD&(8ݎ9vh$Lؖ)ib{STw2I29 A i\$tr4%6ygR,ÐyһvQOm8L mC$BPBLNcX+3ZFH:ۤf}Sdf MH͐S䦯]"6ߙI>{:<^Z`c6ٻO϶ l[0io˒S߆r>f21U83']<2M9q"ES1)tD3i|kh9LfC nҲgkD ѵlY2̯<ԝC7i/=A]n1{srիý._1l^<PtFa8R%:4X6BO 즦<1>%Fa䲟>7[D>Ir8RG33fSdn=,4@mс/mn-׺U5yfJ0 (L<夸te9E81bګ| QʗivŒ!4`KvH' 밌@>Z Vn|`\9JxflHQߪo Y&:@8ψə-!O85 ̗Jߟ;N^2[{rv%^8N.AAD}N?E*yS2듣[k)a?T6d쒼clJo@dovq<;;^{qv|3~dˢ)Ю*+B?99:9|=D [㻮$rQg7cֻTh#XB6f;!/V|wf{;s(Rfi!wE)?r:r#2&bkTU 6TS=*~x۹o肇x(}M(+rcپ2bp~#cRC~9zZ%P\Da'$]> ofݫh4*w|~w^ }_anBIE6;7?܂fYҶ+±ã3gT'HFWE(tԼ@y |!}72zR)qM&L{Do"Z}^)f&yR-[DTf7p{-io&B1dy&!'/'9JG wO@gT?~r[<ƑNβ"39g@H[OF+'VXq|,sXѧymDr%zҷ- CG$#@Ս-4g"Q/'طK-7LYL >3fitǧi.[B+{8fajέG[ WkFAԛ{۟ ;31_xp'dlzue I0܄KWq A9-Eۖ$_ݞʥhs1g2?z)u[9tZE /P^xx蠬 i1^EmŪ5,ʹ izNV}V_ߗ>Úw] /a4oA۽GvIYh?Or|8;dibj\'Zv j[3kWg|N]=[z6#!-1quu64gky;!sGB<85xIRڌ6OP,J%cWWo l}@P:rMZgߘ rh%M, t d4#VU$"@>d2O}ޖ[ޒܿMIfb:3-ri4Nj4_IKW?~egQ$K#ɵn;Zyo0jPJ")B:[8'o^^|ZIIgǘ[;Id&PC9맬e3بN^ ڟ nW^d[ڍC"^ɚr6!bP_e-N4db2&-U$0CEG`m/ϐ4ܐm\'bGI8xȭgkyZL;Yr~T PX3bߤD>;OZ/K!.­Rac'sUcZ<>_7"l*/a0<ϛ2,q.S~ft]E2UIv0)-~yY=?yP"fU\ze2.-erL%&E3W `oF)K %1?$ 'clL=)J֌fgoA?v(ӧR*Mv.{ Һ=PĊ Hjƶ GIR)zhYN#RdNP^6"@l1=9sf+"Yφõx 岠U[dkUw࠳{fifmu}v99ߪf0@pAs7+OͿn/9 qgk$/ڇHԿ7OvoQ GуGOoiktuyK?x=p zh4Ienz_^ϴe()ѣ?w|{c{z]5ݥ.^C(IHIv~cc}uFttƘy猗4Cx\coA' GI345i&?cߵ 8%Z3c0ꔺz&1 ta{ Dj+ ѭE8n" W0'hJ$ w4ne^E{t6mfJ?p| ]gx1Jhn>Mvh:kee:E7~rU¬TѨFy! tַ01=!( k!kfKxscOHlp :4-zWETdq%,@=BKdz+Pܴh%asWKv5 &kKF.t|lxVG8:+~.G% @pܲ[3ʉp6!̄.ۥUBR%`Ĉ׋$oWG8D u~g\ Z A2TsT;҇bH% M|Z YA*G޾/١©tz}r:Ѐl08 :mkЃ>[M N\ɒ5s:/fe/̮֑o}9wbR}ҋV(>@`L!vFΎj.4 2'BIgq@ZB]-02F? k!o!@1oW+P*KL>p;TB*1.6 JQs!9ڡmOj8B%#~z߀mI']_5Bп|& gidU#*4>I|A+g1@,8z@lωsB&U]iWԬ˺\DA6V.d%`DQZU}( i(q\F!SFٟ*0IЭzQ^KᅇxEzN3 QHU5]JRIPY}TwhBg!} XO6wy|~ 0x靻u▰Q+{ VPPT5(?X%/Ϙ N^,pCyQiJ'Q BI8u8s!גRH|fވmocZF[&+J"/c6{d;5Ɣhm,C/ qh|A)OL{u0x6 !+DW/laݟ?\yi w9oA-쫌 θdY[sQ/n[h&_-qZ:ܟSqZmX+h6gXSIc?!uNhbRx&hC鴴C @˙ԸԖdpAlV2V UN7;- UovyE"NlBՉ&$4zԟd6I dj9C@kjiz __m@lXuuOvMD*ۥ|kUhr)1o t<9JGrVLƒ_վo[ *%3'FT+d٨ GXi4xAULi?h7t9ˉ+.qzG)F,δݾ3OYoGKK|>_ʅVE,?y"`RQkJFp5R׽M#/*CUdQԊG.WU9g-ZI& _5y+؉KJ &8,rF`U4ZHW$-ńS3[R@Fw89{*gag"i,n׌f8MǬgAۮc]+=O2~0 @^xa61Q'I5~spס)oOWܹZ:!sOC*N' t&fyU,,k1~X7h4$4<ڐdw@vFuaiB V, 瞪74p?Q4MP6߅#i"Lף2튯9U-'(/CrW{^MTFS5!yDǐ JƬ^V%(|-5+hyE8X@c~"t8 x\F&bޮJ+X+M?H^ h(2cH,'1f: O(h^L-mb梮v>{eާGPEԦaT팘7V'RQOj:TROjNY7Kh? c%kel!/4O˷+\4L WvV̅`3UyDz_ O}ˎ( ΎOd^̈́NPѡsm^vSm#~rX-bmI1^PqU::X*[_em;9Lcݧ ]M)+}ۈw\>#krB1ڀn+6v";S6d1XYDkhZSIQSY Kv>آgHGD0l Np ۪~U89%w_\Tak۰`2rImȘxꙇ0 v6>K lpa, LPSvdlPZ yKٞ^?M?%y[8@RYI4! Nf)r~#ZWm oD@mCbB%ȻMd4o"tMSh|=4%0z547M&Z(㯷w }C\v=;lҰA]\L/IjM42K(|6u+{}P L?i԰jF%g^W>Omb^[?NUxLOOVUV#%$%}@%ID afc==U g@NqE >47zv`TaLœR tb׊JmC2dJؚ<#bZJRk "bc{Ex5w.}MՐk!wXC4\.ej/F\f@ n)5. ևqm谦 ^x=a%~'([Spk-7|oЋ/q&Ǿ~OkxFԭq#@Տkqލ&h ,y27MeX'Ldu,m9K3-캕aaUqx݋ -@cƩ^o_l99::3- sX]0`}pK8ìŋqfɗ;i'kx~ʎ,CYayu {z3X6 WH0-5/_kM0qm0 O*hA׾Y)7z~7o qz,{ism0-)I sנLVN/0_"W0XP8 \I1?]#Х h ߻n*(d. 6;-|o{ 6g?f+ZzY7U% O\vo[БY}X",i^ZJ8Y6×x4QV$sz#JF^g>mz SD]TX^ϧ%jHD+q|B#\Ɠ?O s5\Yƞ{{3z<"Ԫ~ @~xdټ+e"K;{r-#|JO-d$mWK]fyw 'm5/TP>"H[O;Jڿfrz_i5Mv~lOJ#6I"޸EiϷ }tU!? !m/i}zs^-t(Lس 5}G ŐW #7z|I+Be(?*&^1_b;g;?xs!s'| SsbAR[-")I#g[EgJ6;7Pz^&jj=֌ ԭpO˗`m%.rk3O`CM/|=gD\yJKQ#(L bXb>buxt (۾J8E0)60BYUzSaAH~notZt WPk] v : .2+.^%؊h8ƦʫۺJ.j`3K>*p:)j 1@<J]]GO@3r+p!)¢ &xڅDvCpL}%CDq:Ua^8}͇vgdrtY2̙*XٍS䨗[ v-}%Zʾ|@tsĜ!?<;LF$wԌd_izjrx6ˍmb~? cT-*|>mZ B ;Slf8 Sș쁋M,o 0Pbxh+gyѪȃig &]D0DUO%-1A*#4нkl 9Lmx拉-z{?4Y@t?w7-sSSOWi$FTT >sgmUx7[ffN~=r\ \[Cz)nmc0niDa(A)'Wf psPuϊ8~ JGF5&< *]M^YnT-v5 U {_A<+YNvŸN` *T$ȿT,I/Q(G368+)dX0f󘾃PTEʬV+:Cʮ^3r*&rR-%Uk)z.eʼ~Jͺ~ƦnT&܍y,c2@~`~t2:YYaV{a*JEukoϴfsT1>wsͳa|WJsVmoȍo׉Y BLC.EXz/7pchssGm% bNeXau뺥tU]LY=O0+9Va6-c ,f/T"$ܝ=;a膸 (7-?u$rufieN(lC.9e4H_o'oҝ!yz8^ DqJtkg<( ^\Z8圩qi̖[@-~yɫo'$8E}q\l(Q z/Y*o E(YmfsplVvn2\lQn务^J[2[y]s$YyTxૢPYBz9R{yJBC0]k;;ݽó./deQ־n*^Fza/AXES`6G|etn.i-^2RN˃poځ.J#>^M luxU4[?mfig"+**k X]ǾIozy)/ uO_x|RN_u*bdMtz7ˆW'Wc* -BMB7& wlq % _u^l>8t^tN:K`Gt "G, RwN z:4:.Nx{9͂NҞκkjpN)17§ؓ㓣7ȺxŬǯG4 QWn}4E@ǿ9*#5] M?w%6tRjaܴfkBE0}nvt/Nx8)`:Yhz9MSs/~6(p0,@; (q{cgLf u}cQ.@^ UTC(y2pE`u!zo>y8;xҭ^We7qD.ڰ o7%Y^T4zNM+Nei~PX,6]By"X_5هNMԴH0.V6OsAL*% k uSȒ'z/ѫW#~(;aR+6rhr .7M«+vܩЍŗv0z`6Ѳ+Ks.$`XXZI![0mz"V~J ⓓ Kg%3霢~2~*Q$-s4Ӊ9iYx=׹PR+/dv]\'`ςs'[c1Rk0l 7 [j]g7YKLt 2u!m'd4Byq!hhvbU6F+|mimwN~Tl B_v^u/N^u<:9ثt!?3򌗓Sr*? #vywZG\ Xb{qỊq RR)(hz*rzzbh6&D.K[{^S$8zSl,5=yI'G<̳Nd tʔS٧Di)-%NQW$&@1}3O8XoFDGq_*qsn( vW#nGm$3M' mm̯#)-3dHc lz=-g^- d6VUZj]qIGD)%ՋM ;QRycJǭSd+, +\cJse``CrU Rufڔ2#``|0$u2E%,Пw _cg:0 PF E"vYl;54-d=RE`.{Qʈ%mVD;i1yI [=C.S"W7/)Ne_7%m7 L_n$}#/ޮ~e)C"^c5Id^E/{ #,}k"#p+D7y݈͢TT`P+dgqT7B4gg1qL\CZL2D\QlE*20)G?s?z "t~Ǐ?{|.a:x q7ە}#ft*` ~1RUQW$ys&y.@oWQdmSCݎ0h cnJanlDAiFq1DR.Tŝ1 ٚvv\UJRyجCM$W^rVJ#ͼt{x?+ &665p-;#5u1kRݗ`!T. rh8W;xlz/y(=` ,SQk)YLkw:"_`I\@}C"[XaCnQUA4@( 94[nD}6Xzh`]9MG&IQWe?^=[xZFIt' r *,">pNRfۦ`x2pF洴%^XƵY 3>%(ˠDe.~\'A0qiN LqE&KeHY6Džb xCNί՗3L$?P'6ӟ}!SBL Yz[*2+r]Lw\cv]p `r&޷~AtMaD㉕{cluAqw!&Cq9gaß5'TezCtD -Q㟳(?%Fy_ {:6[fŅI c:9g1SZdE~}*rm^cP~PMJP }-~s s ! +M\m"1,?UJC=; J?2n$7(Q3ŃX@VP>XYVZr4' YDzzb¹!M~ۏےU2̲~+)=y̹Yy9| ha+v[v1s[qc;hL&HFnvyZ <M/^t;(*"9h3|Q6ǖnpS*mi%(NN%=wcL~^MgA*+p-2/D8޾۟J20vQg#s Ŗqih gbt:j{~,0117Q]2P/Ӯ{v\L$e#a}%xډjQڢ2ӱӆӿ`XOnQmn!S"d+/dž/o Ԕ54bA۞ ӡnJ~8pbf :Kh|_ui*%\;[۝7?nYH =Y!fo+oQ_p%:N1{I1sՒ:';D#-&An9Ck_xO$Xp|T溜$ pcУt3Ng_'=|wV^7 RI{#PH;Q%{7pl|0pNQe~RtֺeI`vj7