summaryrefslogtreecommitdiff
path: root/scripts/checkstack.pl
diff options
context:
space:
mode:
authorSean Young <sean@mess.org>2017-02-13 10:35:44 -0200
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2017-03-03 07:06:57 -0300
commitdb5b15b74ed9a5c04bb808d18ffa2c773f5c18c0 (patch)
treeeb676f7b82fb67ed32998112f7066e32be191197 /scripts/checkstack.pl
parent0265634eb9e04a16ae99941c320718c38eb865e0 (diff)
downloadlinux-db5b15b74ed9a5c04bb808d18ffa2c773f5c18c0.tar.gz
linux-db5b15b74ed9a5c04bb808d18ffa2c773f5c18c0.tar.bz2
linux-db5b15b74ed9a5c04bb808d18ffa2c773f5c18c0.zip
[media] lirc: fix dead lock between open and wakeup_filter
The locking in lirc needs improvement, but for now just fix this potential deadlock. ====================================================== [ INFO: possible circular locking dependency detected ] 4.10.0-rc1+ #1 Not tainted ------------------------------------------------------- bash/2502 is trying to acquire lock: (ir_raw_handler_lock){+.+.+.}, at: [<ffffffffc06f6a5e>] ir_raw_encode_scancode+0x3e/0xb0 [rc_core] but task is already holding lock: (&dev->lock){+.+.+.}, at: [<ffffffffc06f511f>] store_filter+0x9f/0x240 [rc_core] which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (&dev->lock){+.+.+.}: [<ffffffffa110adad>] lock_acquire+0xfd/0x200 [<ffffffffa1921327>] mutex_lock_nested+0x77/0x6d0 [<ffffffffc06f436a>] rc_open+0x2a/0x80 [rc_core] [<ffffffffc07114ca>] lirc_dev_fop_open+0xda/0x1e0 [lirc_dev] [<ffffffffa12975e0>] chrdev_open+0xb0/0x210 [<ffffffffa128eb5a>] do_dentry_open+0x20a/0x2f0 [<ffffffffa128ffcc>] vfs_open+0x4c/0x80 [<ffffffffa12a35ec>] path_openat+0x5bc/0xc00 [<ffffffffa12a5271>] do_filp_open+0x91/0x100 [<ffffffffa12903f0>] do_sys_open+0x130/0x220 [<ffffffffa12904fe>] SyS_open+0x1e/0x20 [<ffffffffa19278c1>] entry_SYSCALL_64_fastpath+0x1f/0xc2 -> #1 (lirc_dev_lock){+.+.+.}: [<ffffffffa110adad>] lock_acquire+0xfd/0x200 [<ffffffffa1921327>] mutex_lock_nested+0x77/0x6d0 [<ffffffffc0711f47>] lirc_register_driver+0x67/0x59b [lirc_dev] [<ffffffffc06db7f4>] ir_lirc_register+0x1f4/0x260 [ir_lirc_codec] [<ffffffffc06f6cac>] ir_raw_handler_register+0x7c/0xb0 [rc_core] [<ffffffffc0398010>] 0xffffffffc0398010 [<ffffffffa1002192>] do_one_initcall+0x52/0x1b0 [<ffffffffa11ef5c8>] do_init_module+0x5f/0x1fa [<ffffffffa11566b5>] load_module+0x2675/0x2b00 [<ffffffffa1156dcf>] SYSC_finit_module+0xdf/0x110 [<ffffffffa1156e1e>] SyS_finit_module+0xe/0x10 [<ffffffffa1003f5c>] do_syscall_64+0x6c/0x1f0 [<ffffffffa1927989>] return_from_SYSCALL_64+0x0/0x7a -> #0 (ir_raw_handler_lock){+.+.+.}: [<ffffffffa110a7b7>] __lock_acquire+0x10f7/0x1290 [<ffffffffa110adad>] lock_acquire+0xfd/0x200 [<ffffffffa1921327>] mutex_lock_nested+0x77/0x6d0 [<ffffffffc06f6a5e>] ir_raw_encode_scancode+0x3e/0xb0 [rc_core] [<ffffffffc0b0f492>] loop_set_wakeup_filter+0x62/0xbd [rc_loopback] [<ffffffffc06f522a>] store_filter+0x1aa/0x240 [rc_core] [<ffffffffa15e46f8>] dev_attr_store+0x18/0x30 [<ffffffffa13318e5>] sysfs_kf_write+0x45/0x60 [<ffffffffa1330b55>] kernfs_fop_write+0x155/0x1e0 [<ffffffffa1290797>] __vfs_write+0x37/0x160 [<ffffffffa12921f8>] vfs_write+0xc8/0x1e0 [<ffffffffa12936e8>] SyS_write+0x58/0xc0 [<ffffffffa19278c1>] entry_SYSCALL_64_fastpath+0x1f/0xc2 other info that might help us debug this: Chain exists of: ir_raw_handler_lock --> lirc_dev_lock --> &dev->lock Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&dev->lock); lock(lirc_dev_lock); lock(&dev->lock); lock(ir_raw_handler_lock); *** DEADLOCK *** 4 locks held by bash/2502: #0: (sb_writers#4){.+.+.+}, at: [<ffffffffa12922c5>] vfs_write+0x195/0x1e0 #1: (&of->mutex){+.+.+.}, at: [<ffffffffa1330b1f>] kernfs_fop_write+0x11f/0x1e0 #2: (s_active#215){.+.+.+}, at: [<ffffffffa1330b28>] kernfs_fop_write+0x128/0x1e0 #3: (&dev->lock){+.+.+.}, at: [<ffffffffc06f511f>] store_filter+0x9f/0x240 [rc_core] stack backtrace: CPU: 3 PID: 2502 Comm: bash Not tainted 4.10.0-rc1+ #1 Hardware name: /DG45ID, BIOS IDG4510H.86A.0135.2011.0225.1100 02/25/2011 Call Trace: dump_stack+0x86/0xc3 print_circular_bug+0x1be/0x210 __lock_acquire+0x10f7/0x1290 lock_acquire+0xfd/0x200 ? ir_raw_encode_scancode+0x3e/0xb0 [rc_core] ? ir_raw_encode_scancode+0x3e/0xb0 [rc_core] mutex_lock_nested+0x77/0x6d0 ? ir_raw_encode_scancode+0x3e/0xb0 [rc_core] ? loop_set_wakeup_filter+0x44/0xbd [rc_loopback] ir_raw_encode_scancode+0x3e/0xb0 [rc_core] loop_set_wakeup_filter+0x62/0xbd [rc_loopback] ? loop_set_tx_duty_cycle+0x70/0x70 [rc_loopback] store_filter+0x1aa/0x240 [rc_core] dev_attr_store+0x18/0x30 sysfs_kf_write+0x45/0x60 kernfs_fop_write+0x155/0x1e0 __vfs_write+0x37/0x160 ? rcu_read_lock_sched_held+0x4a/0x80 ? rcu_sync_lockdep_assert+0x2f/0x60 ? __sb_start_write+0x10c/0x220 ? vfs_write+0x195/0x1e0 ? security_file_permission+0x3b/0xc0 vfs_write+0xc8/0x1e0 SyS_write+0x58/0xc0 entry_SYSCALL_64_fastpath+0x1f/0xc2 Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'scripts/checkstack.pl')
0 files changed, 0 insertions, 0 deletions
qN>: tn@}0삠VDHO@FUx_pR{\Tg-D겁Efu̱ZsSVhBA(Kfd:mkvlYͼY_rዣ8Ϧ~I[ͮG;,]Y>njqvc/. v;A⼸ 5[cMv{eF힭 uW|T.L`u]U]Ϫ|m-݈igUX|e; yןC8z/ h'L=φM/n+azy]XDuw{*qg7kh2[9XK81Ͼv{tv5t-|C#Kymzz]>x|W5H1d㺄ri,9g!UޮeBp87Ի@܎P;p~E:+\+lY Zp}{*?`v)!vǫ'aZUuYjs?6a?2~J]p `pmN4!X_}ldMluz+ z JaNTGJn\~*݈N=SW[a9Lp^ᒱ}[+Z8oC}-o{ck-;n2iOh>>K\mЫkU?-|[yƞqTU4!G3M81@O[|{zog&w:TK9 T)Sꛜ+뫜|tqCsQsBzjκDX)=:Gyl:M*9Z]CHgJ: LqVH_vmyݶ?AFhhor.(F*XՂ1Vb qVH U?GjmmUUm$R[lI @m ݃[=gIEp}yWmUUmjcm8hPMAͼbcd2mAu+[r2qk$j2c'>4o#*e:Nd;(UEXtdUF8`d[Ap}~Mv6l5)In%(]Yp+J7$Nj+c¬̟%E5 Gk-W*梜ɞN(J|V3s;+_/BIP֔@@#//-ecC x ?8UQatmܙHF z+δM|I!z(!대,c&#6;C $= ;a"B1{HԐ(}?wo6 DQ 11$CZ4P2!WĭAp(uQ |?H_O=p+z#('‰4\5ʣWs_r"D U΂*NWչ߁փQTecDcGgf9덭vlӣ1:Ivww;8,? A$+'?RBP?`R韝ɀs%Ǫw$_!'Bsr@ݐ T˩/$'֏$¨yύғ/ 2"j PЪADS{A]lbJS F%p P D4BRr@ }0FFaSca }v@3u ڕ R})Gpѓ{2":,P'+"DIGn%uGޭ24rBUp3+q8d_(/'G4Ok{Ã̄n H?Nab|jjpn\KܠveO[LWzHĹ{aPއ8٤2)צcԨ5ʠ Nc?*e}_`lE5d5S]=d٘I o! !#rh< ԣ"kiM% `eDHf koJ/~ϮOKj;T#\>,{rJ9S2?;eq;:їl;u[9-?#"KٖFAe!?En':oeGԹ]piiZd#Pq_9Olzo7>(-1Y[…g)]l@~(IDrKnz"79 oA%(dqFшtʥA@tv]z8yGx ?'34)ݞUy镻EP0{* D@O{[C!ԀߘCz($3M;3(%2Nhoc ,@ܨ"||%cW<dB^SWJQ%-Xf;ٮ׀rތ6@Ƞ(`7?,$ b{PL۲;Xnܻ? zOt\&ۛȈ`G%{lf\ -u*'^h{<kX)eڵ=3W mC9]xhug(;6 R0IkumWt1SmLQvs1-ź2`æWvᦻ{V +`s]!|nz{*`VN\͌T֩]bTYKvN 6Z% \GPnȗ٩0:mZ)Rb0E ͋:[CWruBVYgİgY6fig`2y(d4' ̀^ИؓXh0v|c͐NrKɱCm`1xs*:0AI|i#A aض4ʘlK8xG:$< %~>6+[jfr,-tvcܜœcu|%c'%.6r ؽ/Wޢr*_{^bo1'+|kG>2xh;%,n۩!!lJ|9+}iL.o|b:mO;=Wa?&C'◾*|oj|G+-no]PՖQ~ѿT:ۗ7h` kV|=7IEDoXbÑvm16}hE~nZ<4锆'bfdC9D 3Wc;ضSEے 0etG ~A/e8oT?$Pw(IgoV :q8 w {tzpczKmhdtV;zvpgz91h7p&ot>Qp98f(BW3O?Liݏ:wKhrHn'\lw,`=Rz4C.ugwْ[f߯7E`1k! ]ۻ~ՠiҌANٻӞrwD\vB=m˾malQ<ݸL Vw_~ ]rk^,Ó\7A8-4uFnFŃ3A8ORƟv~.Z}ӦɍW:[V4FÄ:f2Ϗ[Ǒ rZaE+m&uB/k'RݴN\?5E Լ y iARtTIځ/IG7Ul=;8rc>3\Y 6.7F8XʵLu;lf+=CG7^q5v_hWFǿDy8PJ&NbI]J&dU.ԥ`-e ؉nƯRݺ Fc8|ktvvG:GWL}=1Ҹ/I3T6c_?wq2?xLN?>{5|л]&.(ij=s?M;3oK<-N`9+fH9)Ԡ1m6G`@"џk0sU=ؒSaxnl]Rvjig|1Ĵtrě$n82's|fCztn#KFӋBG9`(mK݉6Kwq"'G-J`IdRi"00W"5 Oc,zB\(D( AsqvG`vpɀRx>L.}Ҁ ď7'7o}\>٫e*@g]B] ~XJީ4 O0(P~x4Qv{m^g=qŻ HduD(|mɷ0?Mj6^{R.܃Mږڼ#= N:}_ccOs绝Xa.C-`=ND<M UPqT\[Tt ~#<ϧ^uH98*wW@ԃtdYXYJ/3=FUdTBm)~QZHe~*sjpx;p# /(yVDw7Yz] uJɦ )~Sg6@qblٰi=~,{@r㋃ݬngc-:n€qt0wQ/9g.~;>WGz)ldJ9& O &K%j΄||DNuQ4\/&'gLjTW'У3t |`<ϗ}zm!!pMO! ?V==83vb{ө9׺ӊ;.?a_ҳc8T漞G1aDS4˨Ujke>>.C~z^v쇩A\rkT(N: !\I,jQ[(Jr)e[O $1T<윸fPxZ}'AÛSdm9h0q+g&bf9ӚNM;4m{[ kL[8]Za,7\ܨ\YeR|" n٬ǻ!KpGyvlQ%F[&;LH`{\^#j|pLDI2=rE {,֯26Pߪ(50ܑa0ʍ>pwpBT;gB1"y`VەP8ί/^uw:vVDEQQER[gAǍH~9=t%,7+:̽u^L/Z _V9{F=9tc!s?i FJoy pPlrlHO.A }S>~))0acc}|2feTpO_k7VarLC\_eAYŹ3'R^:|mA5ύXi˝!aBKN[IexT? e} SU尿ȼ)ek᧖~&>kƋkѵߩo:u0z"K{F6{K$w?%D;Ň)N}8a=beӣ*>J-ݶr,1[D^.d @ #ZcdK 8z+`6<<E訋r\>ne]^P4%vaN Mql^jBXiuvP P6a`[6&2 c@Q:6Q7WwL7_mj`˦1F r'µ{ >UO j(?MqGsk"d WWxjHXIR}9=o{sAI$.]}YlZh#o.^\%ì0ޣi@-G@|Faegl1ǽv?5@> iA-^Yc;V(`Q7'ֈ.O" lSgsms z<ȎabN:ėDfWUߚ&+larLRBP^Pp*!-\/C}~nu>g5kP}~4o6}M Hq2o!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ѵ.?0ml"Q Te [U"PxA ñ /C(QP 6ďUhnd#h" |t:9& &*x ysR'Y6C +io&vnrY|zknX&Y/+O+uЕNӅV}W4~.{a˓$s< ws: UB4 H[zɠ{6"Q >_lߎm(Qz[3\Q93m X:NRq&KGLߕ[4F8̶am}yYsVd_ykS 3%Rܟolmݖ^:~p]2́ 7\Držԛ65Nw y_ƣ m=/ Bڔ UHՀ#Q7z@lQãxPը<뻺WEzqi3Egj?4k5I`w􌤸1 CZv֫ ^GڥXE0tk{v0Fv<Ӝv{#AMkfS㻾qqӎMKlً0v59 Jݜt KFwxF0>!FV/i?fV-ic-nḗi3D;hKv 8^-(B,]6c0b: c5鰋}IpޟvQ0 sk`1\*~1l>}qb0T΄֛x2۫Yndw-Z I(Dh\-.[W Į櫼Vk3 ] 1f덑Cm9_^pZQn?Yq r/8VxW} % <#ɐZHwD"Sm8^ck\Zȡz0҃!ȡU4 W_xË^PyIίo]]uf}rqLߜYrufLv6tiv_ڤN 6w' 2֒ Mȃ2!9hr s 4H I11Elȴ<G# %!~D 6I&D{\fҠr%/.PV[OD> ?|'Yj"\%'C舜5;66`hEqP1$@>v ޫ%K:Ե>ڳ\+5y~SMkmE3O \ɻ"X5( ̈_ÜB 7#,h0tcok 7{a{<35<4;[+~=^d>AZ.շ:-%@'/V6ݏm>\[sqoA=~qx,,[G/K+5bA@SG6L2ɢ7<ы=jB-hb<"PHYOeNuۀU уwYk>Z<g[L=XRYM\i{ق3 *e/`rzMl:5J!;}4ɪZ+dM5X" czX'Z/u #ME-u )uh$Zܥ*0Z=k2 /E=<&\$>[A*ΊMiwB GU7[QX f\V@< \VyH%:vH^*\ptU gQSEHs;Qg#w+:Q 3ײxw곺 ^8=vZHA 2@՛5^97 Zk+$)nr H<>F)j&rA:,a/`:~&̞9V8Z2=ݿ|v8ml^4paLJ{vwX݂ TљV1GɊoV/p|<2X - ZȟXXiCqCd[J#jʍ,U'2`<̵~mԤ:,](@*9>;.6#aNp/eQ7Bzg)GYJH76Ik4mMwԸVnC1Z7F&H"G~R%31\N@"CzS`*SR*r@z_؍M$R??SLH㎤Be)_@t&%;+~wpȫྕ} ʋ$d8FTv,I28Q9tRI@e`^JeԔ"oaS$JCCԸ H caӈKQ4m?S 1NEsLt/`9sũwi'ovvmvdn1t-b# đbEu@."Ue$g36A`v }i)c 4jo,Džd..?j\>^/9(<pea79yZBլ:1ՠu+n ؑh2 plF&H}9psNCZ< f52Ifkޞ|m2(#B7f&a4GI4Z0!jjGLXoeٵo*ӡFfԷLeޡ55.M% %]ˤS'-`NRL[k7iYvva.\;j ]H%Մ$VG)IJY iLԨ)Ps O9ۉv4V@ɒբr{ߙמ7eORī}}eS\SW{gis&hx׊$pUK)X(7( 5vIsGo}&dp)xBr>́c/c/P`Ӷۗ0-vXۿ.i=|XR#`;ƒDW& ;t}:EYDn]krvYՙ} jf|2GP@\XWDX8Z))uWLhHV]v'B(V!l7 ^]6qaLhsl%`Qi /< cds(Y!&Wl>znk~rZa}hD$*PB~pc4yc).bc/0-bݵxO) <-zQr:U$^bF"M,8iM`yKDeK EyJ@8rk\ e~!fQB_kJ 2$VWp~d9 0vb;+ zΣz?8*8BHqSⲉ}u:.y8G,pN@~\pnu x@ y.#ӵ,@f+gh0ʘkUB$m2UӪ? M>TH`ED"쇫קH}C7 ү싮CrUX\>b;‡~CԳ{%|ѿ3:뮡*1if+2*OϿ`dd<n胶&4L4 |@; >XQ\V*J0r\jꯈ8;]J_2`  zxvPi5zOUOAD*@Nc?P߆PzP[! =:P ɍ`ygd1Ts>8r͜SK>*S=jk99%7J6lk8?C;98% 'u~Koee(P+3 "IyiPExJ4f ezѯ\_ji^YZ;t lɡ8@Ͼ,0 rx6f#H= VzBf"B5Kܖ{d+ws}X@U1:Kpч Z}}$)+ ·! ]PzꊑdIId}?: =N6ǔSsc\[g!/ɖ2;"#Rc>PE1];ɝۼch'ldEQ8QS=9uD!YFφE9/ra.ܟS&/y,@Ȣ08珉ȳQwH[/QQ$ o3.W`0m뼰OGmsj G;FA&Ь݀C3Hӏ^ fTxX> VG37Im<XK#^ITzTOnflN0#, l<(Q?';FW9&JHiqx܃izdӆױ8"=:ދ;S˫%&C9 ,? Wttf^5ejl8tK>szVp^"e ZE6*0M*L00b/3 @p8NJGmuw[&uΊ8YG~cm*D%kX}6r_l\mɌYr~$>v>]qcSPeUQ҉o`8(rYvņ3Lc{I"}&`;IZٗWkj8d8> LbS`(]~c>ZɃWs 8[b}?"~aq[Wg T7g)1H]mTE;g\{s);wN5,]$:(:P!۾A3"?3gO~N;lϟ]w8f*[r~(HZ`8ȁc69% S=2{JКCۣEꞹݩ3M# : 'QljAs5y*$CP'sA[oi}4m-9xL͵zvv]Ж}z@ MSXg C-H!s$rf 2 \P\ [g?AgT쳀yh/  h) ;">@, k * >g>jdq, xT3$̯1׫rãt淪LLj$s;Fd|n.aDʦb-W+TÎ+zYɰe )52LXE=ze>~zE9 tőَ}%0qm"(*c\6Qjdλ1" lW1L["+syʨ7bt^}֋q=x}0? ˇUsϋJ_RNSuA[iX?YxicuiW=5;|\56i횴Kk.-M #A|pїNE}wCGV0m#G1w#Әy;O+85ؠ:Za .kIf}{<(qrr5Prڣ HO @%l.۾\ףӺkңF&T~]KQ@7-ˣeu.pu-&go{"@*K@o#~ѪJ/%rJhuߡzk)ݘ϶ig^p*8U blb愉|\iĞko;' \)ɪJ*7gE8"m,iagx?4ɡ!=_Q;޺PKm`al2~vAmϟ=;f_K%w_׳u+x';ux>+{𕍌qR7 ݋ݛ_S  r$CnGJEtr_Fwk|乄&czT|@d`IQpARn*v>>]=,,+&\YaV̷lR ]MV5/J7_~{o:d<#KӘjEDet\RXٹXlwGjY\RCԏʺzoϩ:#7{9E ~nNs:$ұH3‚+`v:sT󵇱s8_"cQdom(Qk X(6]?upâei[!DK8ҢcO^$_2mXN@dc~h3mbd0!҈D@eǣ̽;M)⥶8K3qqp3bE*zP_N$B(xPNXlJe *-"cN1{}9ȁOy !WQ케W$2;i:Yg۾ڪ"c$;+ocsoxs2!Qv9GU8ЄOAK2S/2'" K#])J^P)X+,ըp:5FP @[hd:uz{8CJ5U=[y鉻5a# {58F]d+#(|8Á/be[D RbuP?ĴK?\@MR}fΐ~0lފVm뜈;9SSB<]/}#EƗ~-o< &}m)>dlxڱc]IcF ^Gmnq 2DT Tڅ4IIJ:B&n(0Jfs!HQ4NxGtlfӚ6q`@e^:zc۾$PD26GX3 ZH>t#kUm 8G%P-Ie\8ݸ9Jxlӗ}>GOgw; e5Y0pMJ4oK~Syoe7t]o?2ۃ\0HǦtQeNo\^Q.?VcL6Xsi'$DYLߡA{Rw'\h,kLG}|9ʋZ9)Ղ,9go^D3$Gv^ɡnV8Tp.,*C$Dl> .**(L,|~ ćV ǷW8qĚ8tn*=`0DEEZeY-.fB^$Tn]ԪUY16a' Z+`xWSLVWSϊRr^v*$C ͣm."7 qO;/?olWzwT/pXFJU^!"SiG 9_pr}v4Wvڌu]:'ƚ[vJQY}Zrf{1 ÜQ/k-?Ӕ;#|,G(T;>\ˤ9fEDY,lSl,zst.6=V8fYPH’yfv}ܸBkϖȵYqXq.1+EԩmMX<`z9Vx*OWЎEȱ72>Ti绞֏bf{YS dW."}P, ͥltI%*+cD籝.-d7&H5>Okj&M#b TgȖxHc6dx&4TC8- XW~^Sany'F1Pt1 \9!>]t[&J=~*T>HsiK |`7ٺ։] ‹YW>S wVH@z&\ߵ~|&A[v*p67RG"̤e#k˹י &OˑZJ.^,}v|%>1GҌO=9 1F"M RvDže3 '6^nHfʺj\aP ?W\x.*/n@07F!ES)T(櫣9IV K#OיE2]Mߵ_AXJ1FDrfwp;sk]ÕBN6w,!cs H(\ΐJnI'bjHY^w;;`nnvquNBj^DQzp8(gRs_C["u\.tb!TfF9#IQώ!rAV f3s_! Q^ iI ><71< }3'IN{ono/uYKܘ8>c[)oL2ىo$_CM]2gV߷6~Z&t9Z0%fXIgTu}{cY AC*tBn1oZD)ʚ,`!~ :J|J(9`*Ы:o6 | ;h$I_VhgX_W%bS @3pVe9/wҧ $ ]lwKS{n#QRcE(+@{ 1G}RːyOdmzjAzqgJ{s1)åY+>FWhzChFARJ銄T^#L8i*S_U&bCkZc|S}qf>ɮ-di39'߼Ge\Vx _gMﰼ(jDsHM6D2 wLn~C C|[gku(m᫥l0!r:̄:[sɖJX L@1en9^p`{B/YWg | [deY}Z`4#J_z*~^$ޗ;]ysFqAaEN"HJ /ħw X>?+HDLmp))PqR7j%D<^$UEPg秃zًvF?S䐇l숞6A6'WNΌ=RPE >^bTjm6V:hjMt#N}szMxZ|WO$}\DZb@NY,1|w[e׍ JI1zF}yvJfjAnBC78_Sw?:vdJ!fL[i&?rgJd$w$7Gx#y>qV|r,fZ48-eɤ>M(HC"9t8's|𙏏h/GR9~\1\ 0sFXM!ӮqCi Tdh0/AU'P¨ifkڕT` ^USC> sw uAp18Rtݟ~I rL#qۢc$y7,f͸Ը'gcһ)7YЂ"T*>~P&$Y}K1`7SNι<r)U}.iv"ҸM>,Vsce Q[=Yy mKۜ=M̨ޙ LvIiF@!:9:gsjYl4;y\.z ][Λ׭G̣.2b$ ;N* "|M $xNv laYɞ,>6<Lzn,=?;v_`YZ%ҎuOk<؞x 3ӭgձo x?p9q!}B/GX}O8&ô)̪?) 4T/N&?NerL@OZAźRPE;"q b# ~q/VCO?DOOT@|-,p."{o)&|~ɹ}]aҲ GVu`K zǑX*حlQ:7uѰLL]E $҉"厾ʾв MoPZ|˳cqҭ!oꈙlQPDԭ6Z h~Os[bl"1M3]3?~aMWgo M> l֌ayG\ _vE9p6D*[TE (%\'o䳄EGw(_ME33qp=&8dU ^W$N5_mު}rYv{;5'RD[qLgV; 3R;:E+]!K}cFعȿjwv162wv7tW4S$CZ]{Bm䥡}=GZtJm֛-R~& slu(WBMٛeT^u|20r{<p.n=q@<}ߍghAݳ$mZ{f9G9D8AǢ{d_s߆cdl; 2)1tpfs2)zRFj75ѩ#&Y9j~)vHIPվs0OLRѐ~KLY=3 Sg#fe#9>GEْ67"I#1>IH_J:#1, & LЩs6F|P}&m!!Ix:^U[7>QlMi`]Bp/ HLY6!e:0f'0cs3:`pPX+zSs߾i4\*T'ኯAƴz+f#o9F+rO͎]-Œ-[_+e)Y@nz hnT{|MӇz[ުsY?]Ӎ̺htk1ovzxLQduoEN% >,z(HtI:o$xW^L E 6ι4s׏-7 @n&j+oP AN?ؒԩ_c^/笈C띬a\p5y/0 cQ828=nc>VޠKK.΅Йo5s)k-АA{c1+C⇷H©5o<HT՞*Alb=9Pt?Fra׭*ʓ߱0m"1PaV^$fp:3fR@tdn*cYs.եR(~ZKĥMr)=q_ipx..V[}^Xv/mnb0Sx0́7P!Nz'j=87a ޸U:[ UhsRN'9efj;;h{6$iOIg˝vZ!b X'!Rȸ!Hrfclxvsm"4 9ak .{^;FW29woTH^ݔy0NJʦR}roڇ EAIkUɈXcs*E4JI,I:h0kA6?* 9ql;A*~ł}93,D/wtk8ռDMS멻'-LXr(V~V!BiȆ$E.Heխ,Xnk\ ؟eVN#R /1@ۣ|.mas1P,^[,#^8?LA!|uؔWABN0ɻ@>;<桄eH֕:PB-5nsܶ >fƻsO@̶Q=tf&>o,̾l4&1x;XφWUNe](F%NXr-]BUqWܿ\KoEۊ}-<08byc+@=0Na',^"6IK{6oj{ij|z6;H;E$(o8gYO~ʹ8Z _0u/)#0b!qYo2 +7ߑKN+Ԅ6ԇ>rxNzyF+:L7!Y` bI2ggPf#6"52EiLlݷ)ɲXTX^{{'ʴzkFM:ǨH2$H#=q<5wPQ >|(y1R3Zڶ#lz(sf0h}憟|ϫS#n=n{-xL=ڃᨅD:7/4ЇJsX!_ )Z38_J~?O?\}`pa2;NE6H3 أNO4އg=tu[a88+>NI9+ɞ?!J[4pr򑢞wHB4OeR54ui3i)34h&C`*OH~O0M1l33|$셄8B9'Kڢ_Qזar,>kjh;Sƅv:!>aQ~CZ.ğք"z<~U X}Lt%eG<~D%RVϙ0M'άJT#U`„ǤYM0}7G˴wa˃,Gj,N~ 'd|ɉq|67mss(]xh8[>͋TG Ys Z_> b {0uBAhi^ v_fE#)Ts4?kj`BmS&Ua+vfAkg٨&ƻ&~SӜ͟sᵤzjKR.@ S-1X+}=٬u^p,}p3 !02|BD7L}pGL~ +&7t"pTrYz`X449kA8:u$ ))%x+دuց0*l4dSprDgG]sAyD 2;4ZՓ)CHz%1P[ Ky ΂na=wvfK~|<D0{˟=mk<$5v>T=MֆHd47:r PH+|{XC46m c /Y+ueE0_PMXdc5\LTh_.c0}bpTɤih1+uvbn_QgufGd;=9&^;ZWՆ=W[ꝑl:H63C1T"''۶/o,csD ZFARvӥrpv0Gs1Tlz.nt},;H6|ݸ)f-!ݘrg𵣷.Ε\Ni/mnGz}䳳eIѤdy2~53T .0Ai5䒈x^SKy !ALosӨ2ȶ8vs/E~M{:0P׼.7N馽Wsn_+~71.7 J]GvP/_|q2y9žÚ_%[!tK3^E]|aJ:5?Q2Bx?켹3M@Z ,͓yҡdi㭏 t>,T?ŅdA;ټYa2V@reA H͵=lScu=fՂ.ŚU&l 09ξpDfJC]өyK&3{fuJhl_~>k}%'" [1QHÚF fWޮ?[o/ڱFA3ޯ~6N;B861hT wnD΍9 _;yG{7%Bܡ636s'Z" b 9^ziC.I4u6Q>fX0-)ΰ<nGĸG ]ظ[$0vC:@ ޗ--lH[i..$xW ;qdO=#K粿`[~Jԭ!XHehL1z h nA23>58:ю7̕3&ʮy!79ՅΡlwG&eo#Ѵ9P5 &TV 8Xwsw=@UortRLv/16{1>eש;S~掹Ccg&Fә9٤>hnl,5LWSEf3@:] P1r'rbKGcZp^Q"b ݷ/,]F~XPR]L#р+\a.٧Ta6Avto8sxCWT9z# lt7i0F'xnӻZ*s+,=w'TԺ}$-V8z¸'CWTQXpz%iɌ&0Gɺl0n)7Ut:D&9,NF91хј))ZK[JIV:[ WOdQJ!co]19FxAd6?V"4X)"Bz%gi?RǍxo0sVifURWEfx0F p:(dA>prS(GxBWLRŚ_8< aRMArSQd1ly&7 ksEНcz͉9 - \7g.ۄ!cdGj`d oj~̢43CgY կ2`V2ͻ{icʜ>_tb_8teOCmvZ!۲ sĝOrrp)ܐ:(&G0?q~6p~8`(' mQǟ]6yP Q<wu)Ls5dT(b5Q)<aXfBBvoϾڧ'ƚm'P?3̯]/ b_8TsSM(AjRϬygog=!M|9ϹVuIU%Ѧ)\1RgUoJ1 M' Sm`*iV({=qqH+~eij4ÿLwa ~CUphuc9!/ypň:FA-YlfUӺ fZo[΢fߒr X(\)4F"{~~9JmUݥz{ںAL,nC'LZ`&8:]>tjY5gkY+Ķv%l憍'+.ymGg )u׋(>h56b_ <Ƣ^|g3?\vǛgb# x1?'Δn'2κv(lTѨo[>]T&6CNk'$Fmhs2ir@af.dP`* NoV6Dy\/$PQLj0왵=[5l-l#vize$%Ut9 pLK6$l.Q?Qp1mkؿ39)αlb` \k1G9C`ė"l}~ŝ4g3=R6+}90E\qxt׷'~aI+rI#Z !3am*^Ego 5H5b0~Dz:PEks>Ⱥhw9E`Nme뗇>Ři^zeyn=/7,,%눅cuBɤt0)Ijt᷻Y7y٣sq (C/?;: ߴLc)=*>ъpS;-dYC3n\c8z@SU!ե,}VԺa*G,vsH4I1vOlTF-sP[铃ECYm] bJLZh*(cσrJyܒ󞽻^PqЛő*Gq z9o}Ѹ[/UE-}/ž9s+g#DJ1%U<ᩢw vtW@L"&䙝*R֫Y e5Kp|cy1^t8f9biS=Ŷ}6IztT޳#r3R#xqS;_N/5O.&`|oT]0s8 o2E--Na(""*#uD/MY4Վ9i77iL[(W%Y,(X"H Zk'Uw pۧ|7u8#C5%FK)YWbFYZB{ \C3{;}7ҍ21kO1_nX@ft[<8SEHsD zh纳j&%!7> ByypZU,ahPvyg1 CKlm@kćWXwF8W>gې3sхȞO# A(Btrbf)D t ,*1O w9A3^.UD)KJ׵ԟUmlMĻmb  + ~+8Te}))2Z @"4 4&^ t4_IY)oŖZE]Axi~ W|b`v}Jϫ!Ne&?F*3L37#?0!? C.o&YvZ˖W-q>/,KeӇӥ *hxuZ&.ῇgOlxckno(M"AWow$aZFA #xN eLY}3zHf`熝cqLv0.Í^PJ t&eпr+ɜ=6c(^#%& xJi[{}{qTb4DRk49Dz~ B.Cř3k1?>guOpF#OTG.ݽ=y;/\gK}.{ZGWܘDNBv3^xW~ۋ*ǫUY~ 5 M='dݽx]]H$ksR.mLץs ʃwiN#^ =~{ ~oXmrpBa"lV::AkpFOw+%E2(85v0PANE0>U%n{@/S(~$"/ C'r|0PEg`2K7ZܱeAc#DAbt`|z, o3DzE\Fd&[,+u(e$1I2;a{{e#oCzJ>LiÈLK|pf18 J޷gP|P[iR.V"1n_ikꗎx7SR[Ucðݨ l ēZ|!@BB/PV7c殲vըu *|yWxh=m sSy=e^][t-w۽ 0X)_ ?'ߞ:o&)?`rjOHg{;fǛ-HضYp\F^4Tuv|yU4"zqR{NjFw9F9m+}BFvv!Ҽżݟ4%r82.˯[zX/.A6 g̫~)iY+2eq;E#S_ \W'6x iXdp/\Xb;bQs޿R\.ZԘ-C$7r֓nl7kx~F>}6G${B$Y,ÿ} I;TrHI=5Z 81./J8bi pt+ׁY C:B! !U*4A C{]gׇ1 _GFG4@gVhʼnmd)dPd3L}WxzsOVw=?g`Go-Bi>-P-D.7/(YսT( ) kb|])"9'D>kѾ~W?.Z;?iaeg-Qs .plT.]q͙̬ڄyWio6' -n}ŧ)yH˦quX Jr-Jf!JoxI'Xř ?H^Β{jl󃺕OlAAqpOяJ|+*~ SYo/7ozs[P} Fz[vQ'+ `Oawqk\hgIѯ$?[ֱY +;Q>,7wz9m[&өΘϹ,짍qdM**`s)!scr? 9@4 y}*N(! s>v9# P_va0Z,eOB}@2iЫgW6'W ~c?zK7b91prkh[ូzw3 ?ģ V^]k/c{^M&]Aeñ ڻWoEmmvGVA =Byy+D1@^VÎ!r݄2OG6]eC;aK'y>`O$*EjhV̹s%CnDqe~ 7'e4f`Y-Zpxqso8~ X+1V$+g[_2wG]|r~H޽v%U(:ZV﷒N٠9>ߣ 'Rs0)C8qQPB$ӍHZq 'b@ɓJ%|qhRko?Q FՂTt3?A/)joTmUŒEqFF, )خ(o3-P Z&N߷wstuNo_owVCl3R1@GB9@ճcQH#R} Cޭ- ݊ߓLisrm+~+&ARZ B*%G) Y`+g4U?6l,P5 \GOc^Y8#_@Qa[jysfɀst7tOJX&U1 ?l#i1AR7itemD!)z%C։xav$?Cˍ?}g" [mAd]2팼MUtFRq[ܛ&;l@^OLy1Jm:96Mݗ#po]>*X!gרzpY#W@s].金љ]Ͼ3mR].\z׭ЭAw[1nr m>]+l5~_7XǎWI_8=|[>3/\;ܑtE~]w=7tjVÚbQn7;Dr);])'3_zoYꆤ%Z{_z ]вN뭃O՗wgf+<=Px)3Fo_toݯgT^:2RT`_M)X:1/rgJ3X+84=p*kI_~c26_Ge0tI F*, BH*N t^۽T0z#"9{[-2|ufg۷loz}"ۺ)n9kw,99134ghz68V& L&8'FW*"_Ctwr Pđůiܛ}578@-se|W +i/OYV$ߐt940P }n[i?6%u*:uCCv_k7hREzm 6w1*%hī4_̮~l頇bFSU+{GU v}{#oi-k`-;TE$H{ Uy'VrMBM IFhC\! 7>ISh;¬<~8Oxfbʿ?Oh$ |2i"} GUfn^[u7Ζ-KWÕClGcTqW(wNY1}&Y{Y܂(QIS]C@V?[eճ6}_M{,UG9ҔJWw+sc,€T`7do2',,K Y$zo55l? Z0YVeфсIߺk_jFl)2J>>gp~u_+G ($'{ G;ʏޓFIa(@fP8^㷳czzV0ࣝ<(5|g]⃲iO١W?]NM=>@;-?X81maGCn`2UU鎑{]F8`1TPud}ix9@M9]_K*f"M%Vƒ'ۼ/^gx A/8i/:o&1 V-=ڼ bv{B hi>~l/ѵOTy@hM,t@ *&G 5!MAzκSfMy@V7onh vםD l(DdM9zpU!ӱASlk-#KƮ>SyKl/(ѭ_?8ƮHA2㈿oV*0 ""Z"58R޽Tgy81UJ&FJy fhgE^لv*>$}jLYa>O~3:i`̯"pϴ| "ͩMSBaο{߀aB#ѷlMb*;o.##5d!/@(yDLTƞۡuF`%IX];O1@Ñ<Æڌ˂_V7_rYoe6#$m =tA^d EP0K \ bHOW}BDHԺ9_dC=H r{ ^^5벸Rti?p0 -h^CjBb$5"j`"~.vBֹ՚' zC+@xr[e Gv&%ʐh ucS_芡'%ekϳ{ǮBpt՞q|?U8\|ЕCKݘOge)b^n]~ܮ6.,!.|Dz8s6'oh0!sbsGTUz"$U3?m+%VS qsq/wmSuڜ\ CCGX}]Qu[5W&k??4 c0.R_Q`sXuFoR=QO;ss ,? BeP,.GEⰂ׮:r^00 29* u.Np4 ɹ9}iBi1pX'i:&q7\v̒  n w8/loTi*ᖫ{ >Y3882kbc ܶiTW#5Q#YxS/gX y<} vO C0CF =)WBwJlTyd .}x/fVܼi.7ȯ-i[qXr+d(=p:u#:\)AqΏ$JƽjgP )7q+i%%5.[k8t\)jKPr#ʮӍEt" uYz̫tivBHxQ$k[B&,< 3F-mY`-:x+GQbd'CTlu9ՄRi>UV8+%{(l#եmkx=U|lӵ9o2EPRN}ORXUy2Ɛ? QIn"{tGTʫH 6Ҫ"4V%m!5ofۤ FeҩQA ) Zf]Yh||R9b{O=}[l-wێ`)tGVOʷA&;ǛbslϛfW;[6ǜk8w}2t<իF~EH5ClVD?S>31Bl\̉+q[0t}?mC&Aڄ o~> psD]*/}|z[,tQ>;lX\kSe%RiZ=[mlM-t9;p Qqx €nӸCVOFVYϱFPnI7g{u@`.:`cFJ+c­091p* 0@ilr>D$vLr]p^ML0PЏ?nt'9n$b4BC1mPJ)qʈ 02+2 ̧z\3˛%,U%נz_FSTn%ǐ ?O}-&xywY>K;'o⛷2|Jrr3+$Nq6 G?|u]ӷn{r\f6 Q@?ƭD#(/?f e -7PzEbZ" BD1*8+hs¤H֐"2J.MHKED򙗄5Zt0H'CN; >޶ e(1xLTN5(z>f\/8:Xo$vS Fn䊤, [xP<"J_Dh .@!bCwϯEєj9mCJ{sfIxt:񲮶AvBJ%|64Zq`\؃8Рae3S:Z4c{ZV0A!& ^F-T*r >xYP:`:4p֙ O t>?}<~ g2m/t7ggzo@xvD z/M~xa4$9Ğ8#>h~g8rt$+bp`I$?r-Jf:ƸZj`  32p~Q`Dv)OnZ2s bm@گ]n{-vPVuz)$ȽB]u|N5Th{\NW!t^u*[l[vln:s (pR vad.L[l ҃tcﭬ|28}~Qץ@hxiOFi66-t49RAΕ|3sIEe4INƔ wJMIg-aSV%{[T9; [w煝wۿ6E(3~;GxKpM'.|eCߕӬ>MEq`Wö=2l,kU l8Ͳ/QN_ UtMin YmW1zfӅ.Vo\R%˟:Ŀ{˜*d{/PL]C+!X`kح}HWB}A\ّ]Tn{)ڍ[˷vD]z;Kfs%UG#H ?QJ[cg&ߌJmK}%zMf. oFV45PXT08̿nB.?"1 ZL]9N9J0X)Э#+6jp !HΌ` KbhZ@zTǨD:GQ DN-omjZaL=SԜFˆp19o n3QxF;JekEvYG>xzNNX?n$i6 a;Dt0[I6ؽb-fʥĨf᭙\Gn",gڟiS7b^Y l@цM8lbHdcRH0 k1٦PPg,x3EAwϾX_w g*>:8X)(iGy~4A/|wv/ؓKApŰss!ؐfKvmuzku4JOhOQo=6AM'+9H ?X"sGv?O!4e_Aahi玘x g誋ʂjtGu2.&o*58V%Q =_dSOfdff,[mXpOepI@DuC4@~%ˋ![,pٚ"հyD4iOYrdxǫ@r}ΉWѰ'i=-yAss{:yD=#R#~9{?.`,~p ˲Ύޏ_rW<2HȮ_?᝾᤺_s՜ \S/4TNysG(<}" CB言BO`ѡ!8zX-ꏇ H- M/٦#X-UݬvBiB@Ei#z]/2U;dǁfu'K:gl I7l6\/gq=l-&!=xJ%3I;M ]2@ lHDr-@w~ J|ZdcdaMBW:5p1G@ xdJ7Arg&TRb= in~X:{$aR 曯k;mr3Va7ddQ´\I<"xH-#{R*H:B@:_R OZ4i! 4M^ wG kH $h摠dKǗI!CӺz13y793@ 4m*,va`@Ld3(lE@𹂘u"v쐫^;XMMwMV{^!C;7 BԁCĝk@pm< Yj *(*(*)(((j(j(j)V ";'yt6wN/D]UD  ćj}_nx3 r1_yGG N^>6&BHW𣬑$ePz lˡ6 sȢ"RKE3'LI$DNȉKeamxoB܀xBCw@O5<~s] @&0 D H%( *df* Bhi `)( Q(JRծQ{$2vPf-6+Vul0~, -*fUbU ]V )~rudVMՓVͫHR.HR-mJOjNm;Vv'jQH$B8gQ)k!k Z=aYO Y;;$/a8F<5`"2ĕ/BWwx6<4 t؉j.L\{U(Jk=mN p҈ jW)=60M '(םP92*iΎMu:mWVU*bQV"Eyi@/00p%y/␚;Z ]Y@14 :" `*ֶre*-]@K 'u=DwiSx֬j6_*^]7Gʹ6xHw*Kn47"5U|ht{yc+>K;9l^ (v@4($a@ E-4BR T ~ ΞX Ǿ %!$ L@Q#>!~þ}7/ϩӫ澉!\A-)of9+5بDDH`Eۺ ' 8W5mp ;f;b]oxegL`!N،6T@Lj{{Oݮ{\]eH9{@O1}ol,oI4گu!]a׽=s^`)| iw{.i&w}/G~L  2Db.z\k^4l&km!ǽ#^3d'f*37Dg6nDd  IKT,vp=  Ç~ێzy_w qT6)d F$(nز[^krqi$Jfj_j})mCuZBYR\=-k`=sñD,xZig>HQiv8ҋPRPhM@l 0 l} ^Y]q!.WTZ7G~4Zbv8G8rME ^q׼2t`B)"J5)rF'lL?hDbȨQaLAduR!˚af_NN9̘Îg0h˔lNn5= +vA3i;Eb? b&r>{A F_*=b+w( a)[00ާϪ9C-L9WߑoC܃Ɋ 8T--p8t@w2tm:[+g} 1Gף5fn\d0 4-%9`囃, [e>?OGT6髻G5Qu<76[쵽3/R>t?rwgWNKn+i4Xaq#YbUIF8c_~T< Ztt-,mSrsfgoltÕov6}6rҟ/9^:paß/oP8RҠ'EАPѯ*C+oN50|BQۧh FĒfK=zuHRt ϙg#F\P£ ƂWeɡSn^{^3fד)*o.S_Lg1@9\TrDYRO=]E(jH00Mgvgp(fw/k5C0g<; RSCnBޝhh2A$b,Ũyg:.*dVIpqB8=7T"rH˒8f&`Gp_ \=d\Adz;@f&Z૬3 QZ۳yH^y|v`MM# +%a(pW7?<<.7sqqU/6AU U{ĵTaQ ~G3G̝~(QJDݢ XUTX@:z[U\70nȄZߟ5x'Əo~YbD jļ9 [+Je4 ??}k[Ct[)U J).y3J&=NYONɞ%~3ZXH9Xb>E cGMU +}h')?UiPAS]G9-j2A^ٶǔdSgP2|7$$̏PDo k898MWA+*Cƭ_қ^mo3*!僆NDJ t*j^Ff`95?{ %8aNPBr|_uүNӈp$Q yrۍZd[ȈJ& {_bD:# l%*^.NL/rmOÈւ@gs*?@[']k/Řzzp-[]\$2wXju }kPB.t_br>qit rX2bsBenb߉%: G&Bj 4y;9f!NWwl$"A!t! rōѼu V`ot(zܼ㦩:t&Z:3db@2F湙[y]?y}5 @X ,5=u ŖoX֝{_Eucau`v!}6QsUuQx7 B K煷%`> ԑ-NFas?~uF@HwdaHV }gqDpj*֛Z=Q`#F-G_oj}vږ:}..$YQ&,cɐ& fpbY HP)l7߀*= }\:{6~BrE&yK.(Y{:?>* i!;rTr;u  !GR)UYI$ !'V@?t2L9)u~WꖚfRՁ P~#޶ .o>Ews<g@>] 8CAٿlf(fIK4L;VH?ew d@q١}UX(fI !s̳zyo{7^)s糎_er#6F˫~Oݛ﫬"Bl`v\ gakQ7# ?iÜ f?~Tb(#ζ]}`FmWYnYh `f YcW>_L9H[9\>YP21LBY>2p܁BҐȅ0I8GZ(")I"`h2 d2B?=GEz޺o`2~qO#1kSk 2}q/L' :s`TڽdvENeHZ?͗cdv沽jXFG]GuH9 WnE;|_% ' S`B8ߙ:ps]nm\a@kGG