summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c9
-rw-r--r--drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c9
2 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c
index 43c1c18fa81f..8c057192aae6 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_regs.c
@@ -510,9 +510,9 @@ out:
static int hclge_fetch_pf_reg(struct hclge_dev *hdev, void *data,
struct hnae3_knic_private_info *kinfo)
{
-#define HCLGE_RING_REG_OFFSET 0x200
#define HCLGE_RING_INT_REG_OFFSET 0x4
+ struct hnae3_queue *tqp;
int i, j, reg_num;
int data_num_sum;
u32 *reg = data;
@@ -533,10 +533,11 @@ static int hclge_fetch_pf_reg(struct hclge_dev *hdev, void *data,
reg_num = ARRAY_SIZE(ring_reg_addr_list);
for (j = 0; j < kinfo->num_tqps; j++) {
reg += hclge_reg_get_tlv(HCLGE_REG_TAG_RING, reg_num, reg);
+ tqp = kinfo->tqp[j];
for (i = 0; i < reg_num; i++)
- *reg++ = hclge_read_dev(&hdev->hw,
- ring_reg_addr_list[i] +
- HCLGE_RING_REG_OFFSET * j);
+ *reg++ = readl_relaxed(tqp->io_base -
+ HCLGE_TQP_REG_OFFSET +
+ ring_reg_addr_list[i]);
}
data_num_sum += (reg_num + HCLGE_REG_TLV_SPACE) * kinfo->num_tqps;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c
index 6db415d8b917..7d9d9dbc7560 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_regs.c
@@ -123,10 +123,10 @@ int hclgevf_get_regs_len(struct hnae3_handle *handle)
void hclgevf_get_regs(struct hnae3_handle *handle, u32 *version,
void *data)
{
-#define HCLGEVF_RING_REG_OFFSET 0x200
#define HCLGEVF_RING_INT_REG_OFFSET 0x4
struct hclgevf_dev *hdev = hclgevf_ae_get_hdev(handle);
+ struct hnae3_queue *tqp;
int i, j, reg_um;
u32 *reg = data;
@@ -147,10 +147,11 @@ void hclgevf_get_regs(struct hnae3_handle *handle, u32 *version,
reg_um = ARRAY_SIZE(ring_reg_addr_list);
for (j = 0; j < hdev->num_tqps; j++) {
reg += hclgevf_reg_get_tlv(HCLGEVF_REG_TAG_RING, reg_um, reg);
+ tqp = &hdev->htqp[j].q;
for (i = 0; i < reg_um; i++)
- *reg++ = hclgevf_read_dev(&hdev->hw,
- ring_reg_addr_list[i] +
- HCLGEVF_RING_REG_OFFSET * j);
+ *reg++ = readl_relaxed(tqp->io_base -
+ HCLGEVF_TQP_REG_OFFSET +
+ ring_reg_addr_list[i]);
}
reg_um = ARRAY_SIZE(tqp_intr_reg_addr_list);
F!=l ]WR#}(ܑl{y*jMۚͺڒ곻5'Vt.'8o `8PZjJ&ӳ/=k.;/̈`.&*|+=X.bd~#=/FoTJJf,+9/yWS1_[!'^SwPEhp 6_C:q!T` B*XW 4&7QNe0iRɾp`*RH%IZZb?IZF u$Y8HuPyE獊<۰J`-$[\VERq 5 o,h,S3VqQzBk_,Փ*ҍ(gS$juЙ3ua&Lg_s+_cqZbGR?I1$r޼|#o| G)GBE[ %*WK&ʷkx AYek Vn}/mܒ2@LNY}'_{H6r:OyORYsrOW|<Js&[p2?mXDAI*o[uGRIj]&]{5$pL++l'_Kpǻv::5м\M4;+=YᝤzОl1ȅL6ˏ%DiZ G&=y;:|/!)n^aaz/S)$+L xgo +(DBC+~ /6MΞNb}<ٯ0>xFimկePNMQCsDdWI!]:A L"gz7|Wy =NvB&V!;&{yɑ/CXg91R]>4$d{󞦥ۇጹĦ& {+v}m\L[HO_\*{As2#еꌸI~~}+pp1WZuB5}&i`p:8?Bc'4kK wBfGzKuNu:ly(cJ}R߹*W@@MN[wPya9>(M oU\8mEa|C1 ?aK$W T2˭dΆZbu{qu'?Q(P4r跩!ǚ:t$1-;(,ܳDѿ/SSY&qPb ֝NEcL 'w5<ѓl Mx+lWtx6W~G l9}YXvcS"95`''H#M2;&[.WgrbꤓrVtîg zgfAdvA&|<9xXT># -chVFpFdבt=퉹4;6:u]{FMT\\+6]ղd5Pݮ6AڧBX7F_}u[g+iJw4gIO>Y5;3;myZ߼;>sJ̸g3hUk8yMCIw>W\&f4nr.a,)n&it^n̋B@Pid3zm P͓!uw2FLV$?|x17:ޮϦO("7udklRzc^5p>5>#|y{t+!~+=nv|1Z$?Y1HD64oZ;%7Yi:AࡇN~8q3od y&v:z>mgZ<` _~6{φ_M(MB˻hUrnJ1IWt I`ЛC JsD4M;cUM-s=0ܬֱ>K֫čY O>Ϟ>@)1zlgtG9ٍ/tNM?'x5G]UrEvO\cq|4tKblz)a48]T{l~ /ĩyץKr1nTt&ٓ͸8g#p-! "qDʞGҨYBEH5Wq8b|tG-A "Z9;h?/*%}MyT NL\G'h^ ዂ.nSSMTU}@-jdۊ)"Rʆ/\#ȃc4t8?o7y̲`EFVlşdL j q~%Km} M{-UJ  te%'6j9С|!šJY蓙ƒ&qkb;'µ3"]ٿ-^gwF`0\~mYR')v\XE@pߙ\.AjH-E欛ӳ؞O9@#tvkDꚜ(@0vLƓ>f7:Nv,KSհ4eU{  >gk/3gRt1lL6#K32qY -#!Pz"j1%[yYiZ p#ɢ& N]:`L9Po6yzlcn.ɏ‘ld6BM z(5*Qx74ӑ2+JYXaFGz.rIiDK[8:)+c@(^\"3]b3A$Ul=r|Z8z/ udǞs1U*!)S( \cpzF^IN23 3K;HtꂘW^K^^+ ۾;\(XdR0s0wG9gkӟLAFdNؘ4CG<:\qqԡ,~WW=2?8$6",I$y!-i$,tNϣVgd;oToHํ`Ӱ?w{TMd$!TBPϪCDW %j}cǸn9  |aa4ExKԐ\z)Y<<>Pm3b xt%k~\9`xnGn eVS.~WvN=ڋJĘgv|x5hruMu۪9h_1i^uy `XI#2Z4ZYCpaޫGǀ̡rE4s;s5leڸS-l2'l>{xaRт> #&7}Yfude)qPz_gF3slm~@#l`*P-lRys/ eH_a\Ϊl #u# ưʶz݁1"_!%KpTo[ JqI,j0PWci!5a?H j8$z&Bڠ]/QVJ= .ɠ4j$a[▤}#H5YPD)/яƒ~eX HClٰd]B 9o~W~P~>'wG4aO^:sLjP]7t,*I8ݲ~jaaDvtr/| I~ɞހ&`cP+I72 ]&_koqTZq4QKkO8Y9!0.sN˳>OpkߪB"OeճU6'||#mk Wx-*M|E52Q'p+9_ן'RP\62 6r!JMHbRf_O$q-XhNFkzA֏&9"8Sb ѥIj}3/+lO"-3XvJl F MGC%}mbރG{'dU.(grD;h_PĺI:(RGV.{[&< xb 5(ԘOPxF|2^IF=C:T{б HĕXNb #3xAcɼl+NoqQ|@@^rf1)x3*{|C#u Ԧ۱6tc<8ZVo`Hr3:R5yj{Ł Z*ۧQiWTSXKD!yVi{T+d~ݸhxCg͍dz ׊_+IyƑJdAZ8'HHmLfommv׷>Ȭ{%u|o WQP/vH N[[/02a!m5Kȱ}hPxZ4#[V.z"P/I񬡺H&ޖ^Ixv<%#S~_i+ް7 h…fi!/32Vso(zK*&cA6r:v.D z5Ȟ(|aҘ xO̻bB V+^!U6Ns@Rt\!!9XkA2T:`H:+kR)v"Sl^ ΍-/ҝouC: O ctw XAi#bw>O! e`}d[j]/V٦IDI@'{m'Q=6ܷѸ,<9,;瑽>IršlcK[z zjpSŀfBdU#ϙ6El@VÖ @3>n4^FWU"j뤝*S7d $OU&Bsy8^@!^6r@zgOXE\ϢQ-S%6]*7#X=L}ω_zfyO_0jxQժu$Zwjy\Z!wl!Cqj=RfX~ƤZ@3A1N5W$MvJuv'(pN8K&I 1x 㢷GC$_0ors(QomyȽPJM$ыZ>|.z͊ I+c#ƒĽMd8HKoWCHwpda|FfKFKsfi\s> =5nQ)"BsŮ DGnbUM㡡V%]T6w|xb"8ݝO,C\"V'L"cOrwDj]|) ye@+(#,h C'RȒg^kGmO',[@`3 =6iR$!Cf``Ykրg&9$&)a(O?kFpLwuy XA=m朋?RA*cH .ץ8\{$RSX__NgB2^w"5~#S*IAz䎋ZR^4,`;Bz,nd6I.mMA tk IHhcuYM6)Ojh|nPfV%\ǂB21B|*ೢz:dوlɣPųiLc 9BAKF,=ZOKnpkӜcsRkzjΔfvkeqG% 5^Ж fAF DžXx=6ɍfF&`&}h%{ES&Qg\4vkmiڪ:E4tU+- g(¦,6 pz%Vwc1nWOv.5b`-3$& hD@}`!8*44A`"a@~e6=%2UNfWKptX%6;ʼ+|>3u&PØ HȊ_ ݮ@u׶Xfc>#}$;NlO$!|F/#1K^ =>Ee J8UHa~c`:keIIp; Kc;MUT_]ƶg' YpZSJ I=%ica=mH`_ t\ )W2ND8>oPZ@CN_r0{[z~TB95y>dL{[H$]:ggI ʱ Nmb Hgی%P9eˍ5]GH~UAMV=Q >S;d=NkW m1(qUMK:Gr;eP^& [aR氮&Djݑ*ծ]WIRv55iP8%C{sf Q:f7C dmH)u0':IN *bLǍKIrg l3Ӊ+>[TTKNz!deu1J~5_c;+oȝ[%N ?"E`7gH't/&*KAT%(rbW]@X$LOP AaDڙ[FRoA=E Z ag$Hƈ쓗"Y<4Pk ` $,K /lٰ8#DR8"9Bh=;%*tvyw,˿SG]U**(6`jV-R 5nIG 5; oJ2fs5œ!3$+Y\"q݂wZ<8+3:Ԙ[n77Lz0}4)A%vV!RC.=Y_HkDH%ROإ6D gשe,j("e?5^:-d/D;xN6Eq-j%#)eZ6% ɶj{eC g(=P';CUkF@ޖJ>lH~cяcY< +жDDR] =NV &Q}\8Ў,0B2wjypÑ!l{?Zxu-S󑴷U;'X/t'>3먤Ɩ 6V]?[tA M"Y?.A1/f8*ߌGTJYKx\3$!f]%Ts0+VNNPႡ̀2!U콙elXU)Z7H^DTg52ۨl\'37`#/ |hel;p8odgYʇ2:mm]uZϘ7T;EK4'-OJ@Cs~c_Y9prc%rJ06;Ī^i$5=-QnBӂṱ6Wub8d8ͥj"a&:j }=s4G*I%rl{_>684~:X"{CU7굊6] Qџ{ E-2z ʶfج3krPDm|;פtwɆQOSY{@`s5äAtc?JQkZކXǑK+/|+lg竱bSoIupI:ޗAoD~4chVDRLncm&Z *w#ѭ TR6L&].ŕDvmKjmKzA`{ mm#wj{h { ıvhRy/L.ĢA{aLxTd0gji?@aa+ j#)@ ,2 Q X[hRn7eB6EAR ѿ.2d$^4c%k=@x!I Zaf 28"FUhmn4<3rMrbO>ma=':sz P{pʗ"MAY.ދ6FUb;5Pys8hZC2߂E>8Hhmlq,m 6^Pӹ~i9\߾6ꕜӞSI(Ma˶3l!6`3Z zpѧ`<5m}5O=' tW(M/}+2ᖾlkPcx?KoSbK_Wvoyp/ W59ƦxOVQıWI31Icj9G1T3P1:S˸|a]*Cj4jXDti2aF]""S@PIT=R Q-|r=HT8ss bZ4Ij_ZKlQ݌dT_,yI>L,;Xh }WDQ9]$<ԉs'ZlmHg ehd l'\Z6T(fF֎&QQck| 3ıb+%c`7#7ϻЎ/RB(!k~/6#[u'fЗIUa(V LBS jjTՠܸQC[`m XZ;A`J֘]8ҧ%|<%92,I:]1&$Z&85Nd hl}geayoFV#|3 O\녧F^cUc|$Pl%s3Hj`uz -lD瀞9gkzG0vٮo7:e/0i ړ|c= a8أJa.'RRLqB݀j6|.-‰Vx}-9V%g&@`$]g+,` ~@;ViÝF@>:)zP-!|ե2]i;3DjIݪJ]uyz*0Q_`UP5j LYKS҈Zʦˀ  XRj#ZĞ},^rv A=3ئqoyաJb֑# ^u4 pdԨ -uteݳV0Y1|o@f,@*?pR2UXuDPk@#\2|E;NA2.mKp#ռ$T%s/wd 1 .&R${;s}"fRpZ,UKk{Uht>NF'Qy`RH` 3Y⃳{ ѭz2vc w]w2 vR-8d^_tjSǟ&̮0B?nk.-X;rg$4Ȭ!nr:LKֵI\Ch_igh/@?f k+H%/i&M=Wjץi䅠Q$_k 6 p Yc=#HQWn'e*/?q2ebq#jv2 2]_N}ӰDp$? _N5`Lf nZiOۏ#Wƒm9MvsJ}vAzTR0IuE.]k%om̶5\9u^!ʌ6wL( qB$Pnk_dSg7qAsMvM3'?6ӉƍAk>STvU06+#U 'dڪ2FkTn j#A*͎\}BUxmv֜^K5I d2F>=ʸ8Sd6Գ{zX]@<D_xrg;/-Ϧ!XF{fz@¼(HT$N '~" 3k)yłVT?_6"K$HйG8u.Z2%K]ڭsR"ժ9"W}x`  NtІ!yfV@Ӡ״\1i4!_^'RoF$gp3 GzZ1-4n7T #3d;޿7?3|zNBs ?hy$X8Co$v=ub6pʟFYrC<#i')yEo"Sj ux!*)#[6ȣlxp/uߺSady&4cga }fep6Ldvpbth\68ԯ T\o7wÏ/ëx?IۙwҶK$jrb],@B{H49P#m?I;͚`F=jz*VPNcC CY‘==ƼZd\sML=)OvW9% \ Cu흅'ANS] e&.7;.5 1 &[ښ-=AIoC@W!\o9oCZ .ϛ˵͟=blg+{Ty%Ŀ%񷿉{0lCMpA4+{mO)P/dP p4i=:J4h?81ʵq֭UVp2Tݺww}j4Uju%=]k/fKkvC=_Os##nc ]'*(gXE GT֒Cw4FKXhA<ĈadsR!6 9,8Cbuآ+29u>S7/ {ei{:ܫg{OǔqQ?߼0k_b˵е$0EW9w#|\mHSZ%W&a-žtJޔi$\i0&ם$M  ѣ+weG`vS&z;cy5z!*Cⴣ֫%IH"'#}ӈ>@r)slp@M(^gJmH_~_;\+}ބqM'ݑ9~4tT ~^#YmY;z};? ]-zez&tQjlV哱A"ܦ#%|oi⛓˙R+TV8ӣ%}է9{:.^n2H:E2kC݈׳V+ PK|=DkhWU4TʭV^WF\}t..8Bꕃ'0508P&-C_Ț Rxw)UPeI.n:>fvIמ(ړJI^cutoNw@@UH7*j 3ԳQc2g6UuXxXWjTo5E=8Cvލ> >N߀|?2s2ݝ$P^~JH$:Bi;ڴ,!&|2|H>;<[-H´WT! ˚NxI=lccO dkHEja͔%de˪!z+$A%P'o_"0`SM&v&HL6ZN/'/⏓H?Zdst25#8ޅ~/ϖP)ٰLk5%pmj=_ʘ,@Q&0R Z*u6l>hL2>(a4cgvDi}LIq/V?I_33;) 3~kOr%%4u? C= \ yٹpzeG%}IRf*\ؐ+[3ހdsӬs1pQivATJb kSJܷL%ϱ[V !J VSk[Nm B痒BJzn/efxWX"iABΉ}c*Cf_)V>|1-Z|\l1'_p-~ӒPI!Hٹo@1"r3g Â}&>$ p:^:e=VT./ԚVKӝ܀ /_~)F3Ը~``")EB+&ٖU ^Y>c'Yu+;RWcO9c;ʿ郵mI(r]BNkz鶊[+J%Zy|qOO}ui \+.E!}Kpy=[ڲHe%fٞXf"SJߢ5/?(hW:y9khf~>Xoz+sϕNSy`.ت,68TjQbD3U'on })H|$Nw.>H g(q]|_MᚠyRAp /M56̆MhNǹZZm+dK6ȴv`UN@*$C9j)57? =L: g(&酘#݀׷ =H9ˍkKhtŹ9w.û{^D_("Tv#_|, JQ2"[e(>Y/ ~QOW(`̴єav+-AZ#&>^3q+{V5^F'cpB&чfC;tN9h-=ɣwvvr"}зV1jCmXaA]ey]n] EɶQ̒gKpmk#@G҃ q9ֻX 0<P7.& nˠ*wP`|e=fݑiF;MBk<zJC$BB ZUڭf"Q\ 97JdlY͆l8ci ǖس@ sh]kћ^;^Jd*- k3rҊG5qV>9PUY׍`N.Im\"mL1(fKjeKn?}JXoGQQ%_ᐠD/'ڑ`| 033^^8nvV6UM>ևj֣|o;hiYo;xƴֳ Yr5tRoUULi"gBHW*Ÿuڈ}0IYdXKnf8r^aЏ'~U1ISte |heUk7bSW* oCZ$>4?|3c,@P ѿ]Eg[+1h..>W䜘9٫.j)!@gq;:~}5!,wJAPϰ uٍ7%] Ix֠5"=TsXoFRATg0F5R -fp iN˶? tns~oՅ IB{uDS/܂F @}{YГSHf yKIfМ<"4`KCm"i{b&.6A76X4UՂ'^/ucd(-pshI6WdR{/hkvkpO+AdF6F_Uw0!')JdIgm+8Cᔓ0gg)ͶX2'۝CbZr{-i\uR=&Ӄ13_59IA&~%9;:rXBz{"'\BΘ|e=(zޒ`P x$ltkEdV>gd+g@]p.P%ezS9#/W45|ALcCƒmA~ZIc] RZ:@ %\;tG7oig[:MhHB;Ie!+65sJ8CfDmSKAJ+w{rJ#rh;LFS߀ 8w$DŽtM"&EOLc:1P c?4:$˳{뙽Z2gE0iՅ+.дfjKMAGy(IY5%]]hDWK vJi}n/gd9bAƁá)W@Ǫi*OzԻU(eԆSbP 6Us|J;- DlYj4>r2{}B[i_8R"SߔNny\056N^ ]e" ]R5i+VKjVyϘ ,pS#d^O=l[l ћf蚴^/K3zl +qXhnKAl&޹lN 4$AFZ4fТv5?$"(BLڥ&Ҩ2D'!ONiQE1s>;AK"byŽGKB$_O zpdFkE ХrijiOI)c܅- i6U ޿ O!э%MmcD)K:3.'Ek^HxVԖxje-D]sXIÒL)PaKqyDV 3߭J ^3g)EZLVVӟ~[ ?mQ!w`r EqqE V+)' xot*3T)`0:"UT(QU9i(;ry4ڹ>\^SgȩpT S^5$w")aLko)מK>+IPt \~½<ܟI fG/Cm]$dd6 cv{f"˙TEA-Z+K.LOyr=/ާ~>|V~2GXb:J%}iտEG̣hʼ>wRaխ.g3}{/aMݙFy}Av[?r|46݊v^o!tR|w`W67ZV?PhC#e*E[^F.=`/޳mԚl\Wʁ*H>`j/WokV*~}3x"?mqo'\5ދ%@j y1VZؘW:&!\J>I` ٹ~ƒO^Z.J\ H/!Zpv~aάjHJ1Uml稐fjКaxH8ntoIQAb ^DS|/YPH4 l7ZFڬI7V9G{~)[s3Au{ ]mswTZUvLk=95&5ShY!~~"ўxokftۯ'Kt[~B.oOBjjiਆdA7ppHy u &SX??fԆn5\At=LC5"j̿f/IEԍi+J6{;l5uز۞i692pW }ߦޛ`J`aW&ь~_N d*Xr^z:6V@JŜ9:ONIgC o2sK)N;bN R1 7m%&ϬN;5;¹:7]Nf>}+hK)g ~B?;|/GGl7=RohՂulTK:\e&꿩&> WsɉohDڑ&eXl}TA0Zݢ9 Iˡêœ+[9qV\d$ 6~`ڏ@ ^+) fw9aSڬMRIMƒ_&|W+4kn٨_ g%O믹mt[B-}ᎤǠ,^CRur.㟄 |1޺`Kvx!gL[ )턱##OЭjzlCH3=P<$So~dp&me,ˇ :% q]{+=dw*&xQbG݁KJ ۅ׌VN610T 5 ~eyYo* -[RF]r,0_WBFtE"L@KWhR4f< t Zya N!T2-PPq;G ˏIIzi[x6rC@֞U gjMfb{ |#R6Tض_z lFeƧMW3 (USJjL 觯f;=*=dUJ pg~!a@1R{ R~s|ClgJ6BO̜ۛbVm˙9,^]o2@|9=>"u--v֤I7;0eH14IP:)ƞ+0IuΆ'5 q0GA:Dx&HnuOF=)7Ά&t /\2894ohڨ_c'؉X'VE#RRp?%&ȓ5/CAiL=jH,j)TðF`tTvјֹz?VwYAcvixՋRа|3WrTNvVhޓUk=9ش׾vMϾ vIR0'lZӫ|{سGwaA5-g:Mu?GG0PAB0 vx߬JZ 4CA.Jn匯3DdM,e쿓d:iݠ ߕ˟z%3Q@l*1SYazRU]fr0IRUmZ ]GF$Rǣkzֺ5ḳ9.֬6މM5 LcOc?eטM5wk[{`$DhC?[v{73'cq-?air;KUZcDqC)x袳ecAFd>O39v;E }RžNQl9?"w6b[quTlčW̤u H+@ւ,q:^bFXsY&`glݽ?}hMgRϪ̖NxLX8,7?JQIcdAl媋튖ҬNpB iLW]ּ.IP!CޡYƒ$\ۙJb3unrpLMc<5r \O"_n en-CxpyYp5njPHjfYマn~gshyҧ,I6KNH.ܼdJ{ݰ}t{=UN~9bewh\ij#xaaKcuxKfoe& ô5f=six$ D.Q#8/:#NpL1XS7ۜVsR jd*Vj5U5w/WTw*#zgz]3pmku'E j:x01t6g$rgHPxm%᳇U6{4\缞(E4Ki}Mtl)CwTUuTBT_c;iL-鋱CoEdv$a iMmYA]șV:vդ755tTx)%HHs"iZ]c1G?<|3(4I:&L@?8DǟuZo]9 I{y\u_F"OxsAs5÷5E̥2Q7lH`[.p6kߏ̘UHC_OA!cjl!jvCUԻTT@U&]NP8}~-iTBGDox4r}~!ݞv2zkבL8CKl 6r,٧+- ~Z2hGu1f<~5 kUaR0C~\7L\T*mMZێJۘk[?Add) //ma1l{ 8ZrZɣCO:KrTKQܭIFD;j0O]iTjTAP8E_ fXmy\A{vJjGFJfF}fjQǟdEVBӿ/4%S@[ěOYvƝ h_=!4bsR$Ӻ?ɧHMG,ź oMI礻0}ga[*^qJbLtmjZS(T)4ٝGV2{ڳ>TF٢gQi<iAY R* r7hI_&*IkJᎀI>v@Y[],Ghyho't+70Jk=ΥGlbri, k2ڢzal8MCctOQhaR~/΍D6G$Oft?T(\6b1K+rqe x>)4K Lk W[A (ZBJ;Qyw#&eE?7v2_ԾrqULyp/7fo~D i}.v~NI?vf>Y2Sy-a`8vuQlf8qV̍m_2z3ʟ 1]/ 9fY ߙ,rIsðƏrJTUd Mlko[)z{HHQlL&<ܳ_ayƜJw3GsM$ý@]p?,t1$mŃk j<%>owԗjF]˝$70__IH~}^sC-z*GStiBLI* I?YQq!t1_ i"ZQŻLK8i8^*YU_17psJ7HҮ)kWZwΠa1ǗCN N3:dwQCxv kbɲvL0t*JE %&Uk:<Õ0rU2IṘ/W9~x4__X8;K_⅑!y:0w+yi5^lSHM_{4) a "( c*VC@Yԫ[ `[Q^tYѧ3?"_g)n*5:ILRӅC-ͷZs)% h`]e7,,7YaqN_;$6 ^#aG'<'~QiZ|y;G/ i/sZeIL5uD[p%n?-=g>=lN@ןһ4N?ƏMp8"\|>Wr^g*ڗx{y 7BS[׬-hwH.7w/hyz!H{nyV0xH$ZH WZ@~yh6^H~欌|6͍clH4{ ;b9sxlYL3.BC'Wv?r=\:_,hU̦b/٘0WM"y$6:gPs<4~:{1Ќ/4(f}>a[7'WT񲻦G! Cx !e<"i[x {tK 2۟#&u^Ӗ7Vc &6\" 0&䊽}SdeyuDۥCxh˿={V̸PL}˕Ѥ]7a;nix-F,l npy4P3JhJ6)XOhP{F#@"xKOIރMtrJeTu;uUOF=u2ߨ=ZwR;əkMTu@p)iDt᜶UQ%lrL H6rT>AoشL|<Z[+W}rJMj4䶋5LNWc˰}NƵ8A?O$ Ră#Tw !d6,[T/Xg~\ b`0qMi}{UKBRs՗άwwYB7kɆ;nֺ YSҭr^4Ξ pg)5si_ 5YmWLAӃ=x2l/ `K!7p@J&9",DE/IXO>ȳ=[w/dcnvYH"(k%ަ޳A.א$HHꘘVjO0ߗH/!N7/7?/%<,s;桝^t6L ai圚rZ+&lr<2`܂.#K!{;d/A4:8;yͥOD{3=!Gg]'.6 # .O[w?IPd;CgVMDRx0 J YI]sp''GB@^Nf>o7 \B?,l[)Lņ;8o0ݙ^YU>ecixd)Kw ;!686 +JkkSuZ&_š;i+95{<v lqhPL#c#c8x=WKkѮTfwA#g #4NS s;}GB,Iy8WBuRȤе+Gݽn~r ḹcףqXz3bDO9dv6I#l9`g ?I[:6:Fګ!#3gBYށ>=W)4TB:_x}"NqINɄl8-[o$?E~!]+`*Aڭ7t%фEc9Ů"[lAν#ΠsHu QmԄ9ZG5lj Y5v_uF"+oۏZRfM]etgb;~4Rhg klR}"`NISЀʳS?Ī˸Ո\\]lIoK@D.4ۺ!A4pNhfai&d{XÙf"33H , 6=ʜɎot CʭJm4G(Wc8+1 ޭ3尥C1QVҀqٶrR\AqQ;#AZbMcT3훠E寱Ʒ.iW9\33{' /4%Ax]9OLt&%M9 㤡fӲ^<93e l4q;?HfM"دKj氝IM^TS~BTubd}.9Ud.n>QXCT  T 0aaj8Swرx iT$jX`uȳ՗~>ǨSr5L ~nH8%ҁj70g&rPf8WcG(  T~I`kcZŨJܡsbiפ ExCh|hhxQz##3Sߑ-An}䥈)=s;<: ? ƽcKj0p%$GI)4k#er1[EIٞ+D+ڀ 0ҋZayRydoz?l8U?65]Xgr{uұ@=TkǘpfQB yWA1{nWa*zcp=c$Dr'RgK䣘Ckaݓާ1hgI_0 7jHi(z֖B m&'c5[ jUM2qQtgҠcUvaVS3^/Ӈ4 ypT&QT&ϦLY3 |G J'lB?f44TvP FVMP7!'x3@F|kh[\Z퉨* \i~izkg{.w$ka;$tA[ }HFHolS5WiMc?G iaE"QנO[v_Z}I.N޲[}ўbǶ܂{l/Rڏf ;B̳m-wyؿw&UޤkP#EZn֫ ;hV z7u_$8s5x+Tq 6XmV㪟ݞ;&C;uo"Nޑ;1e_)Ǝ ts7)nkڞiS7ckL.B*xw[Uf44VLumoc.~o1c#_Kw,+^=sd6~ 2{oY &$eaq[@՞i+&TO֑a mAg V8At$/3Hnf"b$,|2dPr 6tu*DrϳoPYZТ fw=O;+[kZ!`q'˿8N‹77h Aׂk gORݬTg; ﷪wsD[NZu][Pu({ #(lqBl=ݻiS7229r|z4'"rC]@\sB^';%ٻED/hDh;+4n+3 Y" '  V5_M^ܲ{)xYQLKiO@1y)f'[$Ըφu8KX"A XєLE}5өTiѩ̿r/1JT6Z|9>B d\pܪ7 I2n e\6;J5GQ9P8o& p>Ɨq;$}dyV_\˞=p'&gO?_MϪQ-9yց\H0~ړYπkis$K:,-(\?o渓ҏ["+ܨ_L gQ)5ey;l`Ji!Q"?iq/g&D$r#0u:v+k&*l M &tf ˉ$ 6J 5 ŷT/ڲW7JRm ڇń]Ȟ^hBt+ln=^?pSj#7jzLvڝ.7/[Kȱ6 W4z_@EByd3`Ey"Q=) H\j@S&N&RJ=ǦSR'L?hq/”35ڂMu[ZEɊc<tNv3lw*MvIJ{TkcU(խhG{'Q:xC;EL3Kʇ!_x1]dͦhY(iD {D6:/Ŏ^d"T@'/V&Ͻ5צ38!C\N(Z[MӲUU1$yyG{BvW5 ȽtsTK7d%ijvqc29 W@2/%:yΪaOrIL: ɷbcĮ6$W4qH[F@I<&l=$A+0wr`"kqtjn=@MBC@ "3^}`W2~(VRx  fsEG DBsOO.<<{L9xAX8wVwXO 3=e[΍+ۄ4%vf1M.{zǟ \wpTK|,YGrˉ}Zm[42xl::\zdwKؐq4/& {I{`{kD&&giw3A4m٣r,!obzeMTi'6$ ,r|z1vatm~}b'زm幤P ~%ߣVηPLr)sI'9f.w[ՠKo~13)&P;꾘eC5hq'k/GQSi)˽?$22'GEJ!NN܉גǾt?~?_JëqiI].uy/2 DXU(J~`9W!:y$΅qcmA1LcD/41ַ!9^,m6nC܋ t%V2E]4?>FeI 7屉:zc#g4J.KxT~&@igxq( !Yk2`60\0Ӻj?&՘vE/q%g$w!^J`_$tziXLY<']FR$H}{?̭'u[lvQqER*lsUT-u]]c} D 8f{?ӊ PF}]qH `vt/T_B; DkwF;J m)և EK|c_yɾ{:t>0V "!,|-jo\6$ytřG:ؒG `kI;m =԰L.jNmv SIչ༈Gn>ݎD+݌JjVzj{̮C؋,KḴ*#Qlak','4]ouAczc,G6'Wjolv$'2ei!Q{;Q' I$ 7\MZ*JanS̢vbG>0C !gpX93MD^cy1GET497GEZO3UY)7 p$ǥiq.`$ͅ^7͍dd 2:CAç#58MgyE1|цyqtsֺH+Cpk;oKedH~=[p_ Srȁ)k+%9ʴQ?49>\:at:EsLI}x>4xf!fHJ#n-Ŗ2{-T),00МC *iF4$}#gHK/hHNl<3݁'fHZ1,dcwa 9oҾQY#:h!E"KƆk,P@1Sz>V׷52W[nVZ!#i=*%y,eCI6FTZ)>&&glPS\"X#5G*]|752A~G s,x)'l ).yfs{Z.uWV^A19f=JWA~4C[s#^(g( |ڛ*O*8*Ki!`S?l9R3[6ghPvֱv@VAh$aQoeZ8c~v='_A$dJ"]ebǨ^ |)ẅ́6g<ˀMӐggRz g>hFM7 ОySοTj 8?L}h6'@qhS1 =\{dMxΌh4 xVb9 88 (EKVn,y%e j%!`O["QJCJh2zN#[擶$W\N'!hBAuWU' /Qp³ uqoo3A|om!A[)3gtZAM|ҁS3ҬzBk|1J3=Qktks.lΤ=L  u@LÛz_)%pPorTv+ZG?i-s}H`ӳa)Ow#M'J)G$kً K fgu=*/HK#zfzD9 GZruMB|zٓ i gaPioŘK!<[vMxPރkonP̀0t й7ۺ'ORRA ֆF/Ok+* s`qX[R9"\R_Pj\HciU ~<52 zxұ9`ILf, IC:XqXLaG {Ir0 fTā~ꍪkYLt9$rnqfcy!oӃMSM%KC>oHэ`iO76!ґӟL:mRfgX^ݶj HBd\lUe<MP8E]E &M8 #|̩9[ +L&xؽt~@,pqSfN8 1S?3Di#Zm^Bo:E85^DF$P .>NE!K3H3o>4cIH}ޛ$ LК֨0ZK'bEIT;r)Qa\NYiC/\Il'} /$pL7Ba)$Zm?`ܪj!-Uq6V#WZ?> `p[]fVkQ ‴`0okUۭ} C<1 pMxs)Ǵ6$?UC׬A*֟.K~-[hC?7 yOY61ۅxܞ][B{ҝҗWP@14=t: ; cʴLAi `.rW2l`lPoф+AʘDq 18Mc^bM0$Ç{G)u:NE? Ɋ_F 0r3欦Uj]U|hO[V푗Z-w{cP;%e2tZFsaN/ƑS׳0:/j6o=^=٠1}B] ½uVVlxX#Qbj`I@b5pIJymsH;'uq`(6BƒH>ZY~3*>?u_R[=f(FHGδ[^R?5+a-}E:PhvU*Z_SpN(]lŸ.+ʩ-òq>]@w֟ym '^9 yks X'cu)2/Fԛ)iӘMv4%/1*K4/=[Elhd{;,r~/S?4f!E F4$Km( &-grmDQrV(wD4kdVߺdt'AumNLIwC ||\NF4'(Gݩf~sLKuḱ '(p }H/lX^eD`^g~:&t/0,Y~?{j -wLq|r =W3dNߒs$ VW-ȶ+"l2 4V.RlEI:3G]e{§S;7Bps)yޓRB7;0,xa-|3 #Y&Tri "L_l-4%j#o; +[|@q̞.=.WaQmRi9CU54o %3akjXP8Ek~r^/ܔi p+:L=ZQx]L+yuTUM Fkb ӕvm䤈d; q5@A(n4?<@>>l`Kԋä9$hX1\g`%1d0~gIFրYb"I?s9V'>˅Q枆{Irz3t?~4SAT{!seɝKnS81ˠ>myrTV0b|x.SJ5ē,`P!.ul7 Y:0iƬC@31+GO 2r'lYt@R[YxҨKQv hr'A9H&}ǎ!{:s и6Jq:; l5/ȧ_.Ka36>9p*2vCM݆QɰPjc  ̉:S9aMk e~1е}|H*ROvCƭ{p:ф"//l}2t:%ӍtL35b*ֆI]#sGɕsYlRah^-J|,/7JfNN]0>++>7 by & u6"LJ0Jbz Ӛ~/YO'"2ϫ0FDZq̛ahssL8# D#!:w)|֑TrW-Ε|.2&|ØSkqF/wFwFze &5+Vk!oUe^nE5G6 [! S2r!,>zY.&q䠇C(q?ݐ=d>X9_ڔz֟{:ij$\K[%f_7sr8YJ։&]u˂.TԪ4T3?@䯹6ܒa947Ur+P) Sx0۰^dէW.t9-]2=?<\|'q[Ŭ1UA~a T[H{vR-Iy9fZ 믙z)MŸ-~twUoH?;\l#I+ڕ #фE"`?=zy0!iq(R+{ꖐ!|[ w~)f¹a~+.Δˆaф}[%uן$R;6;IIx#u f x{q|ܟ{)f}4+y)MGb CLd^^e09,~ɍahJB>>^Mfd2g  oaVWY&fv`PYNPHT(ҵOU II/Una&M;6’zƦL}уj)2PoN;؏4רm#%$[I+ܪ+_Vy! @v.$m?vKL58.e+⅘)?,Iʳ>G ?+m:ŜJ{,~ #ta)8WRt =oƱؔN2ZlV}ʆ.\rD`ly-Nv2Ȧ rSoסƿ87\z|lT7]3LI.VeH6HU~]` >GXtOk:>ZNц~nF2?oIfsdبf?2k" qI3\`*OnPmv!i!b@O)g%&E}QL[Ls N&xW(L8HE2Ys- eAV ,=2N 03%?Hs^ L.g͆J%|`%yzJ> aQWwȃ}fC6uL6ໆN8֙BojҪUVhZ1 xN F:Qt 3NaŋKθdr1."1B>ڎ'`ǘv3 lTJ"j^ ѮrK.Vyh(0|CȂ:JyAz3.-=z όevOn,Nwɚt3a钣cMxʻ r0֫9GqGYudžDgzŏfCҮ!2G^8i41_'Aan jz@;*B<61-)ƒ;*t̅tsIr!x8KSYvh GjRQuJ&j2YG{zKR5QUeη1z=RKvkÚxIml\`JF~A]׳R`^{6}PD3,j Tf%Pˠ8ivފaYI UAW>/K.8+S oTī.6]fdկJY܆$u̸ْtco]'~^%Wv/!*&s2Q>vGNodp&Wt h3#nș#a 2 -p\O<8-Zi x%KyDNp8+gz$ADkg%Fl7lA)/ n{D- pzݩ3H>-C*,gYYu||PdBQ˕:tGNape}Gg" *ry@.<=F#;4cap2qow 8_H~cRTPZܣf7e# .t^"(%o?)tw >Tna30r{}uqV.=aEgM[2F/x8bqRrM [MG' :޿7?Y(u\4]{QYo[֢i[FֺQw7?4m/w/+JhתVk'/F$?:>z ͞tj5h ,t8._+h~ު4[FI*!'#E@X%'4`}+f Ḩ3;}-NVrrW2gO挅҄3? 9>H=9A[i@NՊ+\G?,rd l>d] )ne.X tΆab"Аһ=j\pS%!?:D#"Gsr>mV9 'TM}t}R~y钎$K<9-DVcypr?$"})ۻ kwg;daXϒ%iI_N;}.}#pgPI4H.x}ւ| }/zpUգ3.j_DbsW_UR7C':y'˵:ƢvaZ[?~ /39 )yWnD5?vL;s*+E`958r{g]d$<14|~A>rNS ~bp}^xp37_EyytkYam@+et3kH SJ{_fD/!$tYQJV;V#HzS)@Ӌ/P%>LgxjVv扤Vu]+w߂E|f@fg E*y>TDslXfbbf?FM@:ϳln#Zhl U'lƏ0t&eMW[&Cل6r6ND}loP|P(E]i^y茹.CH/r\S硤>OscLGdxYW[?vQygg ,N*Xm$'/'٨)&z&r {ҞLb)4ħUËstŵCU8 `YƓkDc8y$1܍1pN.ɪ1!"AB|m 0P#%tڲ20h@59U~#q琜?t1@^mɉo]ܛ%3a-PoRz>eWTs#nޚ;/_~'Ҳpj?Pr(AuQc RW D ˗Nϟ4G%_Z,u?`et-N=7^sYzuA蕔dNF wH-ŖwH&]ӏN_ЋQd(.Ik%x*:qV3(clej iѤ<ww،_%d).1_;i$NL2¸9}K9mR^1kַ2:kq͂>0K-_Bb'wY5%tr+ "1"qFQEr!d%Wp2(#S\btk#Oa1?!$KCGt$*tIK'*n086:7z\ -# :"B0ᗙX~<:Z=7Zs@fٌyDR}Eh 127ܼ>FcY_G"1[L/S:Qy6@*a!;^gNeBL j1r !Pm}!iH\ DC:b]&ZҰghٕ(b_4z]ohh8c7@])j4Px$9QN^rTs醘%\ta[\9VC>?>qy#B-M ~i$"P\o8fHn>8Puq@+`zE ǒֈ戡GzԿ2 x;ll^選tFg :QzHBϛp>qEdy2j}Jz61Vť yCfΙ|:Rw=M$ɧC@J.OV rL> Βc"sv*àpCE. Oii฾IL8. ?K~" :ZɃ~Jt Uf,]E4/(dmijӛhqKoyR7WALs1iZmӷ$X$:99Jt J&`4TT}-^rs@f)#KHu1~"~+eyaCj?Mu7Kq+"kf&)rIF€r )g2gOS/INKtozs*ɒvkN2FA嬇Ijq4̚t;_g|a桇7|bz 7Zt>|] N ";u 9;隓Jt~X[¼tt0JxKLR+j{$um|}5 T ]a<-"_bM-'*^%@~4ڨ"xpM?$t&z=UЙ3A&']tHڦN``\=Sҕ]sET25]@n f w0#5^wqGKOgiٮw΍πEpI%TNL'S;U#D:5s,,8{7 ?d0Lw'.< dhI\8`z8|hVEs~0Us:N^nm(~(qJr tJ 7CGsrgu47 aIi' `Pro! 6 *1Jry =W[tËlѳvG>)G':K+T?$#-O%=;1_p {A))@F QLv8KLl:AŬŋ;1Ftb.L n3;0HR;X5@NBEޢŀGNbc|xpB$F41+ +o6 =tPA( Mht?]?o߿E7/u?V7{F+<COIHf3<1f1L2{*I%TJ]Ug/u*IFkFKdddd\޸)/[k/ > X^ =9M$^l~@{zzŨ6d5{ #`ٕ8IE kLN:h6%Ƙ9Z|RL91m@}+-_r>g_#Θ%ة- [#E90D^$N2"A6>]td%#:(n3ZL!fKSKНbA*BK#>]SmuT..[,4K:Jt"#a-8}F\nR*EbO=cuo%+nvxnbp8[\XܤJ9B/KoA@* *b ;E2Q^_Neu$^4޿+9parIW;DlZ 0H]@=ˬ :ګvϻN_2hD25>#^ =j"=4%1X TuS2Tem9\VC6 M%&X2vE~w ].׸-DԴW} lX,G%5agi^8Gø0 ͌٪0.3%9;ǓA2rntL]n/,&-IGԫIRl/ȟJ!)#,ԚL- s8$0W߼6nV , a4F,/Mypq k,.,9d1 /^(sr<%3?=T!%Ct,AmX(1hzQ8qbvGCF.zI9hoW& 1/^ԣЮCjąHC9<<:x[ayư/rTLQE!v>p 8WZۍ cV(+SFg.5G Gh;Y4RRgf5py])NItJ9̈}C2Q1XqNdKk4?"qtpZ?H513}uLgTG0ti3q׋x0 r ϑLu9- -i(DK34p'-ͬh~%&$n*%i':9 "'hĪL$ߌzٟ%K`%Qڑ_"r ːy[!~ $Y`<&s4^JZ4q%3ǒ`Ђf6[VOA^+}o\:dH5F+:4SWZ5a%Z:iiLiz3RꙢ"ˁ^\~Z }T?>U϶9;+c+>@yYQBS1ګl|O̸p?cqժֶ^"XApov 5?30a'_ WIrpya@:XglWڀH\=뵜J#b! `'[;:|XVj0  (!20+;i\WHELH|3JC oɓugZ82]& HG&WoM jܒP0fnow&!y nsgk庻/i3Ru'l.\ۺN+}Z~89i`"([SP tϞ˖ pS^z@'tMql h -pߍݝls'0 { tbT/!yʓbVAkmgCi/ȜHT1`V𣌤O| *: ֩mC0 GmG|%H*9bMDA{B^Gb?8jR̞?nیMm2y[Af7[ĕVWޞF~C֪Ci7w\I~F6fftR |YNo ᗳ%\Q _ÉT71m)oǡ=Om/t8wiTʅrLvZR-t8,`kTYQH͞nuދwF%MZ(g'q]]4Թ5Zӑ ~νMFqdV2{Ws\=k.ݰxU$ a_}NvM}$ܑ3(Kue g `>itI eE gp/-)S)y4 Q"^6|!J3enz]YG^99}:fuf틻m;a(Y B޻9i>^QPD)b' ZE|yt0)f)z}Q{C7W SRY 1(p^~;=" Kt%pD{D'%ލ|:ȓ^K L#8dyD]>V!ϐc!%.rd(vs~!$|3&td eV+FuAjXOѮ0D-C'z~ڐӛ٢BYY"f#qp\*:.lH^P3=G_.E< BD{>4g,伹~2@@vf|#*!CDz3z|!lv\JRȒc؄ii@1 ѨZ~P^24Y}CtDd6CgFFFlڄJM-èæ]q8x$: r[τIYALlᔔ3%qԭa\4*+CXb^uk b Sy5 AG-xsX}L976Fo?Ɲop?HEQyeշ`z edl[g[QL_Dߠ 9¡ǻQ,HjC%Sc(nw+i^ð0M:gxU]O ډLʔ/@je̿@".|Ǚ¡Á5SqMX.i=u1aY" vedes#F^KkQbk`&:_dT8[cachAjF\+,![I:ZP f+0KZ 7Ce`MF5>A͚;Ab1TQ\0Ɍ`\Qw^ e"M9HcT^C?蟟Wnōp#bA2=xol>Ar>|>nm?r[zS:ntz>OX0*A^^`uЙoƀ%q!J q wĨ7asw+ҕ{Dz|i=rׁGfϭ3]xV%'F߼NM`D:tvt vڽO.ʻ@ǹ8ErMM]%n⽠tK>{