summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index 4c1b0553f872..6371a9f765c1 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -7936,6 +7936,7 @@ static u8 fan_control_resume_level;
static int fan_watchdog_maxinterval;
static bool fan_with_ns_addr;
+static bool ecfw_with_fan_dec_rpm;
static struct mutex fan_mutex;
@@ -8682,7 +8683,11 @@ static ssize_t fan_fan1_input_show(struct device *dev,
if (res < 0)
return res;
- return sysfs_emit(buf, "%u\n", speed);
+ /* Check for fan speeds displayed in hexadecimal */
+ if (!ecfw_with_fan_dec_rpm)
+ return sysfs_emit(buf, "%u\n", speed);
+ else
+ return sysfs_emit(buf, "%x\n", speed);
}
static DEVICE_ATTR(fan1_input, S_IRUGO, fan_fan1_input_show, NULL);
@@ -8699,7 +8704,11 @@ static ssize_t fan_fan2_input_show(struct device *dev,
if (res < 0)
return res;
- return sysfs_emit(buf, "%u\n", speed);
+ /* Check for fan speeds displayed in hexadecimal */
+ if (!ecfw_with_fan_dec_rpm)
+ return sysfs_emit(buf, "%u\n", speed);
+ else
+ return sysfs_emit(buf, "%x\n", speed);
}
static DEVICE_ATTR(fan2_input, S_IRUGO, fan_fan2_input_show, NULL);
@@ -8775,6 +8784,7 @@ static const struct attribute_group fan_driver_attr_group = {
#define TPACPI_FAN_2CTL 0x0004 /* selects fan2 control */
#define TPACPI_FAN_NOFAN 0x0008 /* no fan available */
#define TPACPI_FAN_NS 0x0010 /* For EC with non-Standard register addresses */
+#define TPACPI_FAN_DECRPM 0x0020 /* For ECFW's with RPM in register as decimal */
static const struct tpacpi_quirk fan_quirk_table[] __initconst = {
TPACPI_QEC_IBM('1', 'Y', TPACPI_FAN_Q1),
@@ -8803,6 +8813,7 @@ static const struct tpacpi_quirk fan_quirk_table[] __initconst = {
TPACPI_Q_LNV3('R', '1', 'D', TPACPI_FAN_NS), /* 11e Gen5 GL-R */
TPACPI_Q_LNV3('R', '0', 'V', TPACPI_FAN_NS), /* 11e Gen5 KL-Y */
TPACPI_Q_LNV3('N', '1', 'O', TPACPI_FAN_NOFAN), /* X1 Tablet (2nd gen) */
+ TPACPI_Q_LNV3('R', '0', 'Q', TPACPI_FAN_DECRPM),/* L480 */
};
static int __init fan_init(struct ibm_init_struct *iibm)
@@ -8847,6 +8858,13 @@ static int __init fan_init(struct ibm_init_struct *iibm)
tp_features.fan_ctrl_status_undef = 1;
}
+ /* Check for the EC/BIOS with RPM reported in decimal*/
+ if (quirks & TPACPI_FAN_DECRPM) {
+ pr_info("ECFW with fan RPM as decimal in EC register\n");
+ ecfw_with_fan_dec_rpm = 1;
+ tp_features.fan_ctrl_status_undef = 1;
+ }
+
if (gfan_handle) {
/* 570, 600e/x, 770e, 770x */
fan_status_access_mode = TPACPI_FAN_RD_ACPI_GFAN;
@@ -9067,7 +9085,11 @@ static int fan_read(struct seq_file *m)
if (rc < 0)
return rc;
- seq_printf(m, "speed:\t\t%d\n", speed);
+ /* Check for fan speeds displayed in hexadecimal */
+ if (!ecfw_with_fan_dec_rpm)
+ seq_printf(m, "speed:\t\t%d\n", speed);
+ else
+ seq_printf(m, "speed:\t\t%x\n", speed);
if (fan_status_access_mode == TPACPI_FAN_RD_TPEC_NS) {
/*
}FRnl魾(Cm2ppkOݘL@cr1.hVJӮy=C)5ξOE]uduWX-wbw+ߧWD4 HpzYa]3r vps۾1JM$!pڰ'zfUP#B")1nFDOotQ\8D+9;|$ғ*hӢ^f-(X.]_4_RrF=kmeSU`o4/[Ld|p?2tIr){Mnj%ͲjŎ%` #B-Q&&g~AV3pGKK+IW }ZDJ] 7^͑iT.ڰ hxWG4iGF !8W86&e` V8f#d+ګ$.~Næs>>Vi0)F'1pYhpA&:xR8OSD.ORʜs-BmВjh-9GÝfi7]q:a5wPp3%#GE~(slI8~~vn[7 } Jqˬ= ځ-X%Wiv^;>5[f[_ k7FtwB x֮TdŴtf喓N}jߛ7#]x˴ x+dgI.◡Q@anޠsZ6lY{4$ h,ڇ@\. !Jh|5SL~4|ϫ) #bL"!" *!Y> Ʀ,$.ז;wR3wyp]w0Dٱش@7xDA1:]^zw(1Q `umWÎ b6*rRHT~.0{SOC`o17^f;\%r /8 iS v "ZZ Īu=hc߸NIBW΅#|uVIH÷0 &"ט'.xM`84MSv2E_JÃɤIDŽP >~2Wu#Iƫ] bVbkM G'>}sMJ0t[|_l8snwc}>KOwF#g7s4[w3\˟⸏gT;o }RVB"= 8usؽc):ܸ2P B& {%92-78Sx Π8 ٿtr>#:i._93!Zw;yl 3Wd(UI4 R\5L>]37}F! 1 ^_/n"~}cF WT %dFUx_pR{\Tg-D겁Efu̱ZsSVhBA(Kfd:mkvlYͼY_rዣ8Ϧ~I[ͮG;,]Y>njqvc/. v;A⼸ jjb3xm]b=Zl 4]!}.v,T,d[ٻΫ=w!..F6w瑯>q^ N:q{? KW|4 凋w-w?Mua׸ka߅쪉U*W=oa,>6`׻}жMM.r1!ivڥ\ד!|r ŒĔnTgozy^ ¦3R%r9@/},(sYp!d7Ӈ[-Qwp÷~LFp Wx=Y8 ׺㮢XCS R>hοXT`pmq/on^ ĺf"ld843Ѕ̏UXN~bWk wEʢ:VCp2UF׭"uI?WNưk cEG սR:$1Gfjv6ފϓN&nv >\]SŷiNG[*y #mI=^Eqsf9l诃+Y5tъ.45yϓ{cu*2FQϝzEf^+^ߦc 4 $xؙpl?mҁ(;]En{덍:Xf7k~ÁqB@ yy/ xw+`VZYWsDXPJ2/U>,aHH^>O=g54, ћNӤ~ǝAév㴽}-Б An!m$I&Ge0X#`U:MGb F*6qcVX"Ƭp1¬\p0)8Z_.'g.-.vB @%7(vfU(ޜVK̟'B3?ML6I$|Y + bWT5@q&dSf|y}ql_Y40_ߛJ~[MLɔbCze~9֔]6_A$?Ed 1%c14A $<ဈ+0$#JGZhHJT(} 柿h"(!B-d`XJNcrNX\oXʎ' [Ug|y,,}<^/)HzėzP}Y?˟Isv}lVZm?bȣo]l9 *!' Q]D'9[mzxAo' [2ʉB{L~W hpw("iW;?Q:vr"y 1r"~zb8L=qtf#'I.Վw.q ?ٟ~C)&IxqI @l@_?;8S?HIМ3\Pa7dy{.v#~oHZ<~P x ~I2aW@|UZJ]@(ot2(?T[Gl80~ hP D4BRr@ }o0FFaSca }V@3m ڕ R})Gc{$t,XQNV ) *E7W(ݞKkꏽZeisF!|)0rgGFVpȿ9bP_p;>O}ѵh7S'C{@ޜtu)huA$ ʟ*2+.Q{aPއ8٤2)צcԨ5ʠ N,{rJ9SXOs8jv\ht6a_%ot?QCxx׵nbW}+YsF록 ?NhOJF~qKX˟1_#kw /QEA/uy9{.>r뇘{OHuu T?eV/×I?Ȣsrdq$<bj7|fd ^-mַ7k;GZxeA|XùQ=EKx>ǘJy:<=$ɠֽnJ[| u%v9]!sx僽m A٦Qn~YՒHA鳎[׮dvݹwseh~&wMG6 %BJxb]uu|Wvj2zdzwp|"̸[THNy *S˵kUzgڇWsq?'s:g(;6 R0IkumWt1SmLQvs1-ź2`æWvᦻ{V +`s]!|nz<;8$`~(IryA"_f` % E! _pTFv0)9Aid:x6NKkt:+<% 8*ɶ3O;N  =<fG&ls^M.#lX/%EvԨ¥'% ΁QF螑\b}پZ#C;4[|ۍ֒!xoK!:xw8ɰcu|%c'%.6r ؽ/Wޢr*_{^bo1'+|kG>2xh;%,n۩!!lJ|9+侴}716[irt{~OwUhɐA??,w yT&F~5e_o# ,-sjχi#2Y Xr7\-#ϾP-H嫓cNmHbxM6&h+VD9ÞA;9 /n8~v3e4Qim vX<H1pX*K_J ,C]]P;!c\n|C]׎sT[mS-5쒘NݻoUӸ яG58ѭΝgܒú.:'lBW3O?Lk{Ϝt$\8uvʗr/ףD1 [K7Vwq+n]tVRuݻZ(]P9''yDL5d#&ۄڠguPч&%2Λ9aߚ#|*{$7>mu/s!Q5%?!Əӟ_>XnB!ȟ`aΕa=eѸ.YN- SNrP40l—khf?FBA=&$GɸD`8`i2Dk@l9Xj#+)PPN}]*}|7U?~Y̌' Y@I٘Y_LF^V*=`o7:c3YL|ݜ"`]Pxr]nvG9䈒@9 'm 58 ǃ"WOTn[h` G> "%9Fj8I!z|9vVx:S DQ4~^=8ttf_?NA E%Ֆ;#^U!3L! Jup{ًrx_Կ1藵[_Ie@:xif-}( U1|oDNo=n}WTUEλdsυEѶSjh`QɠQ:ۛo&`~ lx~~q3>B[uNo1r,xtKΪs!]8-p]\+3Q+uXc@B>b!d^xOAc%n`<~KD߾+wx/:@|}ڣ>B]HP [K"~<^6&`Pjx]]Fk0A;fHP fugDN+}_Z&EpBl>uRF128Ch= "Q-(,accz|k7[~*~BF^Vyi >l% aD!QqsoaSbcj\_C@ͿTB" vx߄5 xɷǼٱc ftHum9 2er!X|xdEzaBH=6/xxШϬ^6Kp.vEFv!X&m Y˄!Kͧg4 x|kZWp$ ̣Pp]LͪH4wy<~HSc5 .Un6g|8*r];-xFzt渙:4>{R;EatjWnjR!D4D%xst9lܺ |3$ѝdRW6/]  \B}(!sB ofd :hLEwǡ@E𞻩ZLJ ]\gٖߛ`lۈM/`n&Ŋ8MT{h-AZb:?g/:$P;jA\:G2 y,P, #2Pv!n6(kL¤2G9]z<ZHxcr C◔yfS; .f|)[e W8gvjl4=Jf9q7 1{|@8;?t+7Yb^H J~Pe44YU'Qٷw0$h EƔF "@ܰ$DB<r^xNtZ}f ߔ41`vb]l ύ}A"W.؈ )^; HE-?I$uX>- '7(W T ?N7'Mbw~yJzaeE3g?,e;Y( A>UUŠlo?^iQ%}YtSܶ88AZ8Pl3~AfjA;8{3_I u\uk}v;(*||⦹ JOG]tre; Uj>޷(gkn,e{ew{jɭ__vI81dL3:d)1'#^m~_}p^`(Z}e=$Md]_mU&{Q+l_&NwAV܏H tRًQ'tm;k1|L:Ȝia@ik{tVhl@N'EwXnQ!T- *˦$y\ݠo/xwrM nzCd=H JduXҡFtn P"H fV .vZBS0K/X}Q!Biwd5ꇫ: unڞ%Ch,F Ƀ[<31Μ՚roA߹mR@[]`(2! Lha$P rgqYJKM󻔊6[If2_/ ®O ϡٰdDyll1!pyzL54Օdz#R1 XΙzeX tKfy^^8>F1,5Qh] 9'lF$X, rPpY爪1>=Gx= 73В Mh4 +7;.^ u|l^UdY "Y1 as}"Qzug̝HMxw1tU>7a.W.vÇlQ -:nm%P15'+!LUW<;"#ϘcᯆY /F׻~֋w7/ʷa-۩,EWtO,X~}GOI.]:2lG*NAK" )<0 I:? z!gElSgghP˂ߢ]9BK[Ng|lO@5Bم_?ltJ2{KoK厧'L!Fo# tGF\\)v9" @F^Lt'Gv00ދ}ӯ+j.G.}蟯_ W4T]>38L5ƲڒC艐]^W5XPe!b &EJd?H^=(ofP iA-^Yc;V(`Q7'ֈ.O" lSgsms z<ȎabN:ėDfWU_V7=0ue<2_HwTPp*!-\/C$g>7: 6%HriVbEB$2o!fmNJ'#|[/u ^yVBB)j"}XvzheB ;Y>(vP|!ke'WokL/{s9& 5+䐼t>_r \]x5ٹ4-҅J%t]# QVt AFglShGv~a_t3K K' wWhWlO= F=VI:zUzYѵ.+G &eäaЛ5jg6'Ʀ WpM/|zE@>XdWyx`4cnQt>=$"=cφ7kꆧ6y*q u=y(ս< mB6 PwxX -l]^@LѴ{T#r-dCFȍ Yt-\6=7xAM |u{rM9@M)UD-0rbNlV5 ]&6M>2 ܱ뫈Lu_QsWaɘWۡ+y a/%B(l٨V#m~a#p%W|KkGXsY`bPtq ']!:RAEdvǗDKܶq~g0@& salWJ-m/Hlh̍h8UR8 CdC`=LUq OfBDT`eLK.'b0L$ rjG gQ3˜WcxV ڴRcf6<#.ea EL=>q "!S=M$pJe0<꥞e=^\xRlbbIH t <5((^ aC(r* "*k;:{miKNJn!͐ U׫-t \ͨA\_H\Į 0#z~O_4y)=v_~=5iL0@n?|?ҷLߕ@F OmYJDzȀmr#&7Rd#|y~&ţtGҘv1X_@7-+ S8nxm9#|o]f,.U`$Sy2 JjUoƳ0ؠoᎸ6Z0su\%"kk ^Xd_q݄q]Τ|lY AIșDJm~Kݬc~/'CJ(9 OpE\j_YZm-xw8t{LMCu':v6_wN!3_~qee1ѧ ojOO8,Cܜ(t2nVD4!9͗E[OQCzIVhAV__AYs|].=y]_Y-4 vK8A:pddO'jj\-*gS;3OOh*S_p>͗>iSqn]w9Ď@WA9H׃͇cCNJvr!\^G`NuQyo?"y$v~axg lgEX`49k7~0mΖ HyyR (ó ?ᕍ)"AT( Q3L33kْu%^Yѱ2n YnfW C"AJ `ygm,XG;B7nDwĩgY}bVby^ 1/imuwȦiA`97dX #]ŠD/ч!r m]hVZt:Cx۱N7IPNq0J={ʁ]Ξ-oz>Ogӌa˭m_䎾c×~+nǶM{ nb_`-_8ni tR?8£_ؕaȣkiŞ!M1HR(`|̧':t^`~ 5-TwRߞ v3T`&y,)p rk† 29\=&N6Iq[%>h-B&g 1,B- g|SҖG:u4F@N Ie-nRX-5ޢ^ - BnE &;xc(Nph_`l. F]+P Wͪ 䠿5Pݾr1޺EK4Jxȩ8rUZGa,x^3"qGJ?7b$zOVwW,q׎{|]֤ F̐4fWAt¯ [R0yO>"aZL(agAI/G& 6֯*mSZ#Eniը!̠i*?L7M>\;? k}{[S,e]0`UU6!S*3<ц4vV}߶&k|˄dODH4.ĈG*Օ/dYIOd-څL?_d2WRt˼x{`؎8SXcTD^G)GYJH76IkV6&;\+7!Iw^ъ|rF~0$lO8irP;=& :׫i>5,r(zL.M$ \/lF)ymVE$CqRJlk܊`:^?\;¸@dU_JоE2qSi#qJ ]*; W %/nL?ں{ )V$r2@&ywi%u6sīA./h5ap:qit:*&?1t W4Nڴ4|<j]vGwqݡ~|[wc ] gq$X]a"'H*꼸UYgcn5"ĊA`v }i)c 4jao,Džd..?j\>^/9(< ޸"|1i ߯V;D`[VC <a׳쭺GL|G>w;Lv6H_W4>A(4OurkО͎zGGӤUFME&nr1H*H:1!38ahbXe _?7-=Ֆΰ,q2SլRꮘѣO`Q BQWMjXr_,'mw; b6 -!6xEুl}e  Sz6 b7o5?9d-0* A ɬ`*tʹn aph+XZV m^ 1t`Xa<[") p ;Ӱ:^F~9.Ccς_ G#^' xbN>X=~XnAyhӛ%jM$D6׈4ۋm&k?DkB+A4H:ZQdY[XP aOW?߷grK>pc4yc).WKt|s2jI$5+3$`8tHČDYspқN&Tʗ@ K%,=&[~pזpBޣ脿XeLHGɫr ڜ"g)~osS1u*NL+WNЈ3XBE'SHvuO묗"nAf\Ӥl!궺4j|^l (tp ?L:2&UQ ]YZ?&vh9* as!>P BG"xGl?!&x=_,_4o8 *|Ny|J?MDMV's90/^;k>BcDB)xs o^(;,ZM^ 2ZG =)vg{P4 }!SJ 178_JnxG}?#{GYit|ǠPkO(yyA:˻,aA`z`C H$. .Q6Lv_EfA8vf%NB/I:˜D^FP$uD!YFώEn'9v0nO)IRx<^">'"E!lEFp\5jπh_?m"Mr(y`.,Qk-n *vMY$f81sݧ"e^,`|n@g% Joㄓ;(?1y{4,;F anET aFYBQ^5y(PO0l+ϟMw8f*[r{h%Գ>RٽSzs. Bk f nzvhϩ6D*Fx,.qxc~ MV 8;Ź1i NF>Zr>mx#sW?:6ԲpUM"jğ7T8jjAC'[6F1`RT Xߋ9 <*eζCȮ3AyD,FHLnfU2Q`[X `PlQ8>GUG+U3!&R%@QĐ nZjXwcn]2Nuyv|JV1CMIl 81Wə_F>Zv* Ev!AqGX%1e?B>Ovzʹ;]G7@r-Iw'n8B|Arܽy0|-q- idc¡tx,a$D$qlƽ[c}<2fjcQ#1p+i久:g_W9S{ BܛZN`ғS/4+Ո$SB>hay D'I4b+Gf9%*}Ϻ[`4 Q**HL1J|F/JR~Q0>7bt^}֋q=? A{.V\:|ZV~*|t:vV OJvEKMUg|ҹ魐}mCSNlբ[]t!n2ho 䳆nr-}::фukk>X)-\NQ9"Zg i+s.kIf}{<(qrr5Prڣ HO @%l.۾\ףӺkңF&T~]KQ@7-ˣeu.pu-&go{"@*K@o#~ѪJ/%rJ]͎xS}`'5~+Qu^}m,\5 X0֑VB,\p*r)zѭ ϣHT?2 wjE=?@F@9*ڪ@f[QtY(˺[ZpCO~%cc1={ԾC%g>52Hg]hn|f8U֦u)ӭ}d{Yݭ{̛ R4'?Ėw-]mR\#++H$H l7̝&΋4Y,4JP@!Z+ *]%|Gw7w H(h ;$ 1|ԋ +钸s!CfEr~0 Jt R?Xx}IZ/@Ors" 6A[>jJ1CW=NXS<|>xУ> T:-uF,OLy 0,5={!C+˧ή :&V%Hp[-. .4uO_^Kzs&ܥqt7v1&N (D\z)?a9wܻUDPdUm:csoxs2!Qv9GU8ЄOAK2S/2'VٛAJ({NqkWY8bmw~wt)}ۜ^w6"SyCaN8˴3n9 (6Dߚ!}uB@iu̖d[6⠈ [yimaT$e |Ծ"K%{z#`~abJP@l՛!]n*%S לqZ1lc XM?!e M$W '}Q$o:>?Ϡk/~bvhOGKRh$s߁[5sx=C.EbP1:˲pM]|H\,Sl +5/=SBHX%S ^^6/o|~G!ӯSP B ݐ̆PLM S٩2 g]T : ˇ"O03sSD RbuK(Z%tHy=:]?IPʼncMC FN0lފVmKuD^)h\bgUб˱%go豘]P `93wtl- X uj샡u&Y}'}ycda ]shh "6$uriqMb>'Ǯ.Lz+pxM?l(C74捼3X%=lYwWǎ_(A"LAHY}r,GQ-_k :M*BAPCJA&F /gpE ksg\֜pǫ? ~c;Xd)שnTXEQz\Xc{(w3%ON}xy*ZF=0TKB-:s}Xx~P‰tVI g)L)fa' b DfkBPQ:GcZd;\ OT[`GTzϷ{d鳧HO1< ;QݥׯhuۨUoU I=n&+"Oʶ # ;S8_8xp8QAmG F۞[,# ֬нUKđ_#@q &3,;CKT?lirJNKŽDdYD%*yW2 wus% ^<#,mL$͝칥ń>"c Isòkg' l_<c[4a_n'yͷJUDby{\i\`o5^B9"A72>Ti绞֏bf{|+U xe3it:0jh,eF?hYPbjTW6=anUnOjNԲK;_Iأ01QuZ*ƁmL1!8Qu*g`wDн>O+~_.^.YTo{{= A֓'ȍ -ttG/o_ >> xɇHãF'Y}ok$Ò Nn9tGO9@ 3=Sd/7 uܤ^U3e]5.0(J+.[< szߣ)KsU Gkզ"HQL_wWV3R}q&#HLЎny֍`aTK8r_埗,}6#"Q۽!.)݇w7ÓAF~5$6Y^w;;BmoY+ʝ<xR0ȼ9Eb z7Ap0r0l 1ȔJw`|wMp1@ l/7 YڭU;L}0\"_e-)ϷDy&:u)BhM_9f/r`l3˧f']L j>9S:/MA&K:<ϳ}}\o~bT^򺲰'H{{/9**򴍔ݳa J .{q-[U2,ciH0 lp/B= /@}jhoKS¸1!~#qXü@_@9i23|65sO6hBym8=M낙))PqR)s@(yILIEMU]Af.ۅvc|AOB3 wڬ IG,X&Xruʻ_kc]qr}¯ed}oL({Cίd4ɗ9̓1{3D45M2QiȉB(تPPrs쪶 2 oES`R4E]"Cž?W aBD3V3Q1F(ˇ+ XI*,hH&/H 1H6ቷ-Y>X [6C"fEEBARyhzdI=ίmS4|ξMvl{&"^p{]g\(EM a5 f Yu#{ʻ[}LM3>mW GaSq5YypDUѭ+Zbi{p7Rh$m@8U}7\SY n #VهrNwⱑ㮎P Z V@ * hDEP.|ݳ"~p~AAnIjm3,0bw:˅$fq])/d?2M@/; ?*;KZ B2biW@4ǥuOVNGvH闇!3Awie̐ѷ(Ip1LᄋCg[uF6baAcI7nb&o wϴd|gafcYyqS;Կ?Eooʃ0;=nRmh.6EFپ8̧FxF pnvfgL:N K`}w>NIRbnÆ*G{iG1^~@q1[2s6;%w+XQEzx = A q.ɨ%Km׷ 8~}w"{ 5꩷?Z~8˩G~bZs#O,蟒UZYZATPibWDK !Ǔ{50PlUN\Kj CP*ڧS*W׋")2P$ud&;Y/uW)Á;:N#kD^a8Ƣpeqz2|I,%ǠEXoy$t)̽͝ 3NMRj1sOE ɷR[ lbVWknRjxyĤ@+hLCQ IF=}1gs#_fڷ#9sHgDodHR'ff+Aof-Ȣ|[{t [FǬŘ q]{U#Vٞ󳝵p'tAT՞*Alb=9Pt?Fra׭JrLA5( }|U>Lك1x9=f!&"3zl ;~iTģq)SAdO\GWDg5K?7f+ ]fh[>w90'=b9L3PBf4:Ɲ}ڵD̓hV©0h-CF投q_en_C҈P{"ee Aά1]@`%$:ui_}M{_5 i:_דv'y-QWr0 Q58+X,٥ݾ1tx^iT2g?^b>g噖F~Mu="? iУ4Sd_#ffnXOr A깨'~NL!י4J? 3Q)s|c xq3O: /SvϲOZ!(PBӑ HQ}:]ëZ'nX;% uтYŒYPGqׅ_B4])Tav(})x893fB])g'FJ$ܒσ&3UABkUVmROE,âm9Г;l/߈otGP( 4jP#>ܾFқB+ϝb Z$$7&B9H fwѰAdޙ'\$QlQ'yǸNl8gr`5 'yӤ Wp"Ң4qyHO_MG^Z2d=DYNW1|mu# C}{Ø n'Z]7) o?Dy#LD7JExD%RVϙ0M'άJT#UXZP %ώMs*nv\%O{\0e>Pbt28 F ă8>brq6N9v2 {_o׋=CظMp5< ŨمzpOT!`ꅰ::`F.x1m^tgg'2N]m˳x1P$G{lNd͑v53t%.Jw3 5"gţ֒sQѪ=,HLT Tbf`y÷\=&o`$ F1 0`91^̀[à ,Dp“Qe붡bnӫ B5֊ _G𨧔ؖW ;ޥ஛b#Z#k̩ёM¹uΖ'B pkVL !!PAl87/93: B7~fa1t0|ңۄ)5=W$5J׮rB qPpvwH4жC)J @r}b-\7?TK0gcw9ͥBG?/kW:>b$>n 9QmtZۗNJ`' hUt'DEE( ʑ2$ϕSǏ_dHkf\`Jj9وx^SKy !ALosӨʭbsC/fa_ꡢPZ9^\n?#~uK&0S pd*Q&\=KϚ_]ڡ^ KRds=4KZBAԳ0Qطv9Q)_Q2Bx?켹3M@Z ɼPu5dxkcso] ,T?dA;ټ-Ya2VD) G6֠ NQ(=V F[{kT:mB(CJC]өyK&3{fuJhl_}UӚJOW3MEoA{^^c*QHÚF fWޮ?[o/ڱFA3ޯ~6N;B861hT wnD΍9 _;yG{7%Bܡ636s~VHh'80糱xt\-rIecMcoa[Sa.yr cCqďQ@0sAlv.#+V4LΐX3wKl m'|pK .jUBY,S@90|Vߒ+mg(2ztt:86}""ONcs%L8ߞH|_/=.X\VG}y2fZ67̘dLmC|zsxҏOjQhxH0~s݈ҐcqxCٍ*خuNa)?bعj4}G8$OȜ!GszTʵz99TZc>б% 5)=G#_"<]cS$^Q"b ݷ/,]F~XPR]L#р+\a.٧Ta6Avto8sxCWT9z# lt7i0F'xnӻZ*s+,=w'TԺ}$-V8~`}%V =`) t٥aS28o:D&9,NF91хј))ZK[JIV:[ WOdQJ!copMǙς6{9uۋ4pyw OT`b<6L(o?qNQ<2拡;us5ɤ[;E8Aop]j# HBǀKR4Di)\|_,lp.{pYo|M,ySg!ň0ói n^'yQMgG]*s8D2`~s{O>#uێ/p RRUG3[NU[KX_mv*ӯ5}v{jFVκ}KɛםSnoeAL/s`[\%m.xl/gizu^bd]:VΧI*9˅8T+E<5Uw{Q[w\(xratDcNnugW8\hyG~c8_k$HJ[jO>j;GD@ݖv삠|'h8 \ w$:o %G/= ߎ$裘2 [Tq)MT,½D>]{q|rp=?Y&-gv09k5aa礊~O-a82نжP[8I$s+WG/%%a#{3\;Joڬԣ=oYqD|o1ll_arsu>DUql>sj{q=4ip% W&LgTd~w[6RFI{;v~ :ʚUk\sR>J6xwZmo&yrpmĂ_n2r-XHcfG\#|k<1b:Pnb[OF1)Ot9Ɲ=qǫ^ Oà1ۉ̳z]+24j;[q\YPv^T\)i -gAN5V;싮;fx(;AoV a&^xsY֕6X\ͥ$^Y7cP\gƶЉvt<1P8guG߃/5ڈaJpNQDĜmhJ|Wť$2ԹǡPՄ{vzϡB2[~jiRb ]ی` CJ㻰tu1KB (MD^8kkrd!Ճ: #6w`HH*l%)}7ԓgc+bJ;{)vYTaZrfZ1i&L:bZ5m=, ]0#CXG9LIO.yѳ%xr9봿O,$:~F"w0W^%_eɼIL^ݯ(XhMUy#t 7Sls\hQmaVgyu( %x+*UddFTh@M7ۿ_zJ D3CCZa28.O9_{#C)c+1m}(V03[gdEAzE9ϻL8Ғ7nOMt~`\jd d" Vtgm:"`jLb&{ -uI+@Emq,Y@V]-5PmӾ áPBS%GUix.>Lg2Oң<5B&XJ4v0ŭ?K}Jz^]nVVyLylI +J9U IHM{:Nt\8K; 0 FzC BP665bC+;+pug'%+ =T1F[|/( ɋyDKۏ*YUbJyg̼x8\S;,/k>)7٪ v) 1V l-.Wu'qVR Sd x9Dig($q0hMTh S5,} #( %*~VW2C0|M~8UKgnbaԉg l  Ô߁L.浗-[g!r|^Xk\K.<Ɲ+O9V^g+ E]}}JҴA 8u>6+Tcy18vQfQ@\9݊*Ŭ(w,S` G4AČ6Gc5DeΣ¹vjs*[ifGB~7df{>8Cb/Vؠna#M"#ݙkETM2ZUIvyhv96]:xS~>n] 1nhhVG-ꋆvzuToMaf}`&NDo^wzxbto̢V>tUv_smY> _1F%kx?!4/~~ c-4<|eѠA ՛ yl4xJ$Sc-;<ðߧU`BhI-^Υ#I]. H|֣G;,7ܺcC+.N69Y|Y#øq>mQ+~ 4|9WFp꫟@znrZIR ^^"/%=W}>Gm>C3\YBNP}Oꪪ5_Bs5}dg)~nU_:/C wza.q=5x4l!`.sM|A‡̜6PS̔`$EEY "'D>hxuZ&.ῇgOlxckno(M"AWow$aZFA #xN eLY}3zHf`熝cqLv0.Í^P,WE^Ynxْ@2yd(rg(MIÞ]B`a," =n?xG<:ZHl B.Cř3b~|$==%:FB]{Z{v^xc7ZY,pfQi~Ri9Y0wf O9]ڟf/ndPYYvGԐDP: Kuw" S寝HaS33^l/*=bDe(e8%{(>$ c֩ n?ጠTGH=mpAyE:S] ~4ا\v_(Boū_U g#Fij|[:l*>MkC'r|0PEg`2K7Zw\S4}cH-e89}* \mog"Ρd*  Ҥ\E>L[Zs,ԽXpȧY q#!Yb.  >)Eϒ_94U Ùi{Vy(T}\kSdHqDa\&1kı5=ty=e^][t-~O!fH/@?i?L ixÕWV6D.wl=Xs R6-\}~#Z;;_n|i^RbnϚOeKZ,[ʠIl䓌\SD#)Xk!#h| >罕$)&~ڼ/X]~c6>0Wu|`h1__~)iatjLB!v7r֓nl7kx~F>}6GB$F(mU}\M7.e1u?a)<ЇJI2GSX)% t4'%9+98bi prP?V(@Tce >8' a1 =܇Fν aӦi3iZJSȠ?3g>_?p2:>Gz8[f |-P-D.7/(YսT( ) kar}^_xh( pv+ҟ-eIoֲbskǧ.pV!%= ќˮ 9-Wio6'[w,NR'cMB3ь[ΔCҔ7׌%puY?'Jn\lQQv8;N?8;TLF;E] [=A p t:V'V*J)+Hv\Xj\Gf7 #y+Jxpxtr-B%^T FQe߻.<لא|άrUNOsNQE\+4#*:BjP&9aZ~~f=0\vro#:L- 1N6U5TYw+*}$H ׬ )#ߎ}!Tp*JYob+AJPLZOԢ@ͳtTDLd Qo$)Vi"@h!"iwBJR_͎H&)&Q?h{O!dp%a̺,5 O0'zP!9|aȿ<7;&ۜPD̎y;g/ɧc@;%5&Mo|{5EK?GgU=;9]f>k+s_բco'FOsG+lZd2TlGPl8N :c>䳲7}u4Ĩ`Fl2\4;Ze O(k 6#"0Ɓ?ȲES_N(! s=8(Nvfa1X˙C)*H2 P˗@!b*vNupg۶?$v+P?*Ó^7&6Ǫws0Ycsw7 |˵xe`1}=/cɵ¤ = #lv?1Wp׽ c X*`<^GO/%}٨:xh j98qՔ|y$ PB$ӍHZq &isI7(`3'Xzg__ɏZW{lãk>:tܽr=vՏ,>N}z R:u4>ylQ>=6)yu"z޽ uChw)pCR]hk`tN;Wb/پN[1YYH*03zϴȇ~Dvc Qz:xz_HaRe++ ~q4|Y`Ľe*c(X,ң@We''UbMA9ɡMr߬Ll>6$+Ed ^*@ S9 _pFUڵ}<ݠL9Kp;;\^* )$?޶ʑG`U2հ[==MTx9W% 썼!е0`Q ;Ps'Wiz%ۮ"~[!qsL,]']MO ? r,Hf.83&U{A #I]2Zj=W]cPqz\nFEr8rpmhrj.*K&/9o{;W{?t" *yKx( W~7:7tul͟~}|^K(D1#g:Nt9R* $CMO>yibYQ$$' {4ղjW }=2E}4a4`R'؁kQLG6ʫ!\G]vΐba(@fP8^㷳czzV0ࣝ<(5|ϓ]⃲iO١W?]NM=>@;-?X81maGCn`2UU鎑{]F8`1TPud}ix9@M9]_K*f"M%Vƒ'CQp<| qtVaֿy4lxH}n)?C޺#F8Mya~~0G7 6 <Ԅ5wG:M5ATZ<ݿP]O2^ujwg5@949qW$NEL D//\# \M,(!B#F|v'?K ["{|ڷT.y NRYz6[/Št;r,\n`ȅ @ӷٌ=d۽(;l(2T,n׍@ `D6 V/!"d!F$"{YZoy@ pwM! $~B %"7}tE`z^)lۍ r.Pp4N vw $0TS?^ѮŨyᐱmЇ=!* M1UJ&FJy rvpCtvc4YO(Gu[}e@5j|{5u`̯A8nc>AtfԦ #ŝ~lGoј،b*;o.#3ֶ d2@{_(ɟt. 2k bI(r"'pQ9pK_K-{vyD'=t? ̀A Pz#kAI +tDKQgXYaSVVƽ6[8hp A#,ˢ@àF0W}[k7/Liz < eHXCŪE7SLY ZVh7eI )w 5fDp}m5ؘr?*A6=mM_*W>? Җ/W[VzWE[j9愭_?F\u{<|w )K wG~qq` G1w6..{$սƣ~ OȝZNe˟æU]SyV TEYL*Ɲ{z ľݵO|;5]tQ\pc̆3=R?2qa!E;n=-xA:poZݻY)0[,!rî3zY~NyۛaXU*ar8(+?q_j'DH@ -7BAIn497'4 M7`=kS'Q&R6@nْZ c!c3mzj:\2b`ai3882kbc ܶiTW#5Q#YxS/gX y<} vO C0CF =)Q哤*h=`ZrCd"FV|NݦZE`ҷsWcQ8zt"FuMAR'!lI.{Ρ>S#@o W72JJ&kkX\Qv5ٵpYRn G] Y OwD`W*7?mH/MֶU:LXx+dg!Z&UXZuVp8OY.9bs/׫ ylV|>q1WM*JQGRG J*&>z9k89re䊡X5 s1 ` eaM!~EIb9֎W8l-\tT F(OhFK R[Ņ\F$= NB*HIM9|q C>9/<6 z0ʙu9TQR0lw9[v=>$Ϻ5Irq=]G3V|9aڐ$i$m:G)41h.U,P(ƻUW- 7(npuӓE*XA_Ӆ  zЊX\t^ 拰 >Vά|<mb;79C a 0[x6[ 3UM\L "J\P^Z5,QխxZHγ+:,{ܰ~pA=|]q% BAe $TD܀.ڥNȶJdgKOc8g\#AD$2."˪zmUL]hppג%O\ZX[KMK +?&5Y>:cܙ!8We\@/e}.sHY'L:ϫno,|oG3<HL_f 5|K+o'M|ŸnMGyw6x&}ebQ6̮wm8pd.y۫V9֋j(ح(C ϵP{l~\Vh -j3sd$=ýǮt|_NY0}8vi찹mג8|K>V=;2Ҵ'@z 2/l6Q֜D#A&ݝɃf}z+; Ыl/|Z 6Aݓ&q:j!\=v1|ڻ5]@Ҷg~YwzZeIU YKR,`aK鬉bw;܃LW9wUW x|`~uRNrݺI("iAe.Hb۶SA*",&*|öȬ'2|Ais.nWG\~(PVw^yMRCCh*>4Akk-\9'jwN7odGl$-J=SwxCͫB`8O/WBKV\0' zd=2ZFFQT(_D6 @'iBempP$C?ώ#75"%s7pw!Z7!4}g@fŋBtZ* o6p[-pqAkbljP|Ol2i{cczb-9h)%0 #w$U `b€ ey;)kgp $=>G}xNQ1 +Y͙%\\ʺh}U(Qu8 5cBA!pׇ90lxCdL7w[$T >y<'QlęiLRU H-&Yk s$")@$>_Z86ɞchfX7 } >;ֿ7ܣ~b@@`ALJjA/O`׆COlRCIr=扺Wy'HbB/C!$6cLkzF 8(qۡ3'w5K`r< (90+,׸@?AAn|Ԓ$T:FI DEKv᪣Eczqӎ(6)e~ʎٌ)ί0.9crtuk$%KG;!NTl3_h09wQ"MŤcJ ; %[§F0K4$swM%Al :G}c~mQgywf.9IxfOUM~]'Qv8&Td)d,X00r 2qY|qÐ^u?q.՜Nc vnA- JSYXfuX 8LDnPrm T T&reyAN)Aώb_ 媝Gu7\cP|=&-^|(W>^ޫ;2+u;Q|{YvȖc~pGw|X ݡ(& Vj<@d @ΪTܰ1s}56>iVut&/XAٛ)PgT6hߢz imt7y5PXT0sʬ~z܁!0=Yu" jNK:/r\OgtxL'}ގǯۉ:W)eŪᄫZ\h 9eM"ip7>QMYㆼm79' ue!fw.P\e0{qoS%a!)k)ݡ@w\@ מOB] pKWv0'4zzrC~) M̷M3&q_KʗΧ& ucUT:8X)(iGy~4A/|wv/ؓKApŰ DK BA4] zkHpL;<ıiivɜ6Ndjqˉ}U,%+j !Vb%|6_)Cz#oa [L6l(B6f-DuC1B8; rur #%Ծu5Q}GzRPCc_g{5RKM;?YO8-o[Tط'J7>,!WKp_Р~R~ ,kv/!Uͯ7F)-UA|HPpZ:`TM-s5GOMzIWyZ#S̷NwA s;OADH@{OCIރmi_Iahi莘x yg誋A5SپLIw_SfdffV6E?aB !%vK!hݾ 7y]WP5l;l^n /rF9Ӡ{)9KGDgDxi=s? Ϋ˒ AvZM'wz07d< n]tvtzߒGEtg'?6݊ ~Vq7qN|G5MV[m6|)e瞐K&?.SyaN uGQ&lZpO+d僱H6׆r-h Tyk&}oqTix{ ;s3k`X@UI`ZzOE^HkzCWPm l*֜H $h葠 /3 6B_.<搇_o_lǍɸp3ӻMC~WrAV {;0۰ Ku&`26"Qx\L:;wvHU&&&A`ïp}N!DZ\ O*2wI[pVG4;7gWƝE- ]# H%( *df* Bhi `)( Q(JR |x{uʊJU(f3A DrեcjұbV.VډU4G*@RK/@+&ڲm \mZBU)uZBU)mmUs]՝;Vvh )XѸI qOwy#kSB!k Z=AYO P| c<`xsoTA+պ_50t؉jc &iZ@tDUۭlw*T QR%AV;2n;9;i ^UP këW5Yvip@x8 ƙT f }EXOg,er]ĸ1(*Nr[?O"zTzÿ8{m0 q yb0wJv-r=J$QA1ӱE/搻7;=n-_C/O뼄s")nG$CR iљg5mD6g$DKG ׄp T$v7=g49=>[bͧ8yi:ҙ!.Af|!g }_.& @I ɻbo\Fun[Fmđz{w_}B Rr T@GTԍDEIfM b"T4?WJ@(PJ% P$́E\*BJty!MyW{Hb*Vca A&n T@aD÷x *Xp?e(FĀJ:@N<4un\0M=пPI) $z]\Xt ݔ݁H{RꝖ0 n)!Id ǠӃtLdKpFnqwǶ?N3[\N⸙>NX[^6eA S%# U5nP&!"H nըvt6"! Tq ,3 bBd5!_-sټՒuu!]a׽=s^`)mӎn]W.MG/>?&foxULSU%$̨IwƸFf_]齨_/q/.B#fHѸ<;8M@`DBDā% 0#j-EUky~Ƶ_k$ $ 6ۃ7v,IگpZIW5>6!j`H$S,l?ivwgў=~\cv:hKX/G -.:Qj*JҲ m&m:O8@^{Vq\DKvU}U,{V1 Q߳:|hV=3w"Ђ@0j3(r-3 [ANg_m.( t`cYp-4G7kh Ě[F=]/K޹F`&GX"Nl `kf_NN9̘Îg0h˔lNn5= +vAeNfw0Jij)6M[7|Q F_*=b+w*"&+D@z`!M`\d[nAb<*S8 ݺ c6w-̾օF^#њ3[das7.2a;kȭ0|TX僖nuŃ"!Kb?':b5waDz届9ηF<bT_79\NLj’y)mm4ƛk>1k,]C(y^Lx ]˻/ ]]:[+Nr߾^{lו# Z-mrϢBZS1x+çNL6x|g?/zW6P @@EtH(P ν9g~Ul5ODa6Q:bglb.|[H}jA!zs?=QW,WKfp 4%ѝhg] QxpHV~?ÿz*vv`+ P dJuQ B@g-r$Yr (c_ x!ukw(fwHA5Nځ!{ؾ@+|\@3 8dX>lBǴq$SV; 톾 I%d ={w܏w"$'wx80 4cTD%F;clQPfKfTL'>5EhzUf̷YWYk̿MY8o '^w0CzK܆`W8֧w ]UЮ500D(VJQ䯐nz{;  s1}tt4uztf*;kW)0Fwv5P:CZfPs%Es夣*P5mK(d7~o:I'AÁV% "FzOUJ 9vn (ٙUeEP|v(7؀>s΀w\ U.t?~ALfURP,ND)ruY#d%*LxUKͪ&*SlH}b jS9=jXї 8!p$IaBxA¨KՌTOG՟cuˆÞu! !f]cb-busW|hvŖ,$H֫ה;?+etiLD8g’-kc(n|8ʷaIB6e7;O&`)Dmνuyw1g zXb>E cGMUX +}h')?UiPAS]G9 !yO=W0p@euMC$ޑ@uOla%\|+ud7CDgf(>or-, *]~ Pp#ݸ7ݽBeAEÓMϤ/vccY&]$zn;}6d$" "B^nufW 3qܢ!69csJ:*^.NL>fq?_D_{G+8r+d,lf|oSlCp@iR&_Nv'^VJFpp"lv|oPWGVů6d-.d<%d#Uz텯. DN NROٰ;;_`҃fB>\s Ɠ!|)F{~9k~r(e+8 `uʭHk F2$c)F-k8[ۑC+I颊EW~dqƄBe69緪y]vHiAP5OˢXcS%D`ȑTu)*P|oJ9?oq FG40/L,z̕G 7l}_~ÚoXg\#..o# [UV QP\15OQ% E0V=6/[ a0"a"QT.Kw{mTb nUT/"<~BY?kKoK4= ic yZѳPɨh- ]uH-|J y=|ϖCK- `fC1e[?gs]GX~]X?ݢnj?b_u͔m{DŽAmnT^98mXB+Eu$GKF{Sfp\_ε~ݔ7Ol; 51  (/3٭$ks̙\vJ [9XD*{+ &b[9!D9B; \,b@ycQa\0-5}ϯv~ nA1[4PikЅ,}X1"("*~LEws<o@>Ŝ!(|߿V?(bIK`2Rv~ n Oɂ=QbVÏ'OoQck=\3E;þL=(`$͑2;8}^7߇ ԒD#0{<-F'܏ * R1yd؍qAȸu>ud47-j~rD^7aЮxݢBa F9dΚdn*~nr>i3D r(;w}y8b(")I"`h4p8Df>H1̺n`?Xpu|f=gθ ܛc.^,G)W2z;Ed-0+GiA_eHɯGDCpbsZ( 9|dGZ[dl_T-A=|f+Q=>`p\*#=~w(]aG