From 0c49ee3ccec34e7bcd2628734a25cdefb0d37706 Mon Sep 17 00:00:00 2001 From: Tran Dinh Quy <124875024+dqez@users.noreply.github.com> Date: Mon, 2 Feb 2026 16:39:14 +0700 Subject: [PATCH 1/4] implement pinch-to-zoom and pan functionality in PDF viewer --- .../reader/ui/screens/PdfViewerScreen.kt | 100 +++++++++--------- 1 file changed, 49 insertions(+), 51 deletions(-) diff --git a/app/src/main/java/com/zeq/simple/reader/ui/screens/PdfViewerScreen.kt b/app/src/main/java/com/zeq/simple/reader/ui/screens/PdfViewerScreen.kt index d34f3bd..c49750e 100644 --- a/app/src/main/java/com/zeq/simple/reader/ui/screens/PdfViewerScreen.kt +++ b/app/src/main/java/com/zeq/simple/reader/ui/screens/PdfViewerScreen.kt @@ -169,25 +169,54 @@ private fun PdfPageList( onPageVisible: (Int) -> Unit, modifier: Modifier = Modifier ) { - LazyColumn( - state = listState, - contentPadding = PaddingValues(vertical = 8.dp), - verticalArrangement = Arrangement.spacedBy(8.dp), - modifier = modifier.fillMaxSize() - ) { - itemsIndexed( - items = pages, - key = { index, _ -> index } - ) { index, page -> - // Trigger rendering when page becomes visible - LaunchedEffect(index) { - onPageVisible(index) + // Global zoom state for all pages + var scale by remember { mutableFloatStateOf(1f) } + var offsetX by remember { mutableFloatStateOf(0f) } + var offsetY by remember { mutableFloatStateOf(0f) } + + Box( + modifier = modifier + .fillMaxSize() + .pointerInput(Unit) { + detectTransformGestures { _, pan, zoom, _ -> + scale = (scale * zoom).coerceIn(1f, 3f) + if (scale > 1f) { + offsetX += pan.x + offsetY += pan.y + } else { + offsetX = 0f + offsetY = 0f + } + } } + ) { + LazyColumn( + state = listState, + contentPadding = PaddingValues(vertical = 8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + modifier = Modifier + .fillMaxSize() + .graphicsLayer( + scaleX = scale, + scaleY = scale, + translationX = offsetX, + translationY = offsetY + ) + ) { + itemsIndexed( + items = pages, + key = { index, _ -> index } + ) { index, page -> + // Trigger rendering when page becomes visible + LaunchedEffect(index) { + onPageVisible(index) + } - PdfPageItem( - page = page, - pageNumber = index + 1 - ) + PdfPageItem( + page = page, + pageNumber = index + 1 + ) + } } } } @@ -198,10 +227,6 @@ private fun PdfPageItem( pageNumber: Int, modifier: Modifier = Modifier ) { - var scale by remember { mutableFloatStateOf(1f) } - var offsetX by remember { mutableFloatStateOf(0f) } - var offsetY by remember { mutableFloatStateOf(0f) } - Card( modifier = modifier .fillMaxWidth() @@ -218,19 +243,7 @@ private fun PdfPageItem( } else { 0.707f // A4 aspect ratio fallback } - ) - .pointerInput(Unit) { - detectTransformGestures { _, pan, zoom, _ -> - scale = (scale * zoom).coerceIn(1f, 3f) - if (scale > 1f) { - offsetX += pan.x - offsetY += pan.y - } else { - offsetX = 0f - offsetY = 0f - } - } - }, + ), contentAlignment = Alignment.Center ) { when { @@ -241,12 +254,7 @@ private fun PdfPageItem( ) } page.bitmap != null && !page.bitmap.isRecycled -> { - BitmapImage( - bitmap = page.bitmap, - scale = scale, - offsetX = offsetX, - offsetY = offsetY - ) + BitmapImage(bitmap = page.bitmap) } else -> { // Placeholder while loading @@ -271,23 +279,13 @@ private fun PdfPageItem( @Composable private fun BitmapImage( bitmap: Bitmap, - scale: Float, - offsetX: Float, - offsetY: Float, modifier: Modifier = Modifier ) { Image( bitmap = bitmap.asImageBitmap(), contentDescription = "PDF Page", contentScale = ContentScale.Fit, - modifier = modifier - .fillMaxSize() - .graphicsLayer( - scaleX = scale, - scaleY = scale, - translationX = offsetX, - translationY = offsetY - ) + modifier = modifier.fillMaxSize() ) } From 931e951628109edbc109207a515990747157fd84 Mon Sep 17 00:00:00 2001 From: Tran Dinh Quy <124875024+dqez@users.noreply.github.com> Date: Mon, 2 Feb 2026 17:56:39 +0700 Subject: [PATCH 2/4] add text search functionality for DOCX/XLSX files with UI and navigation support --- .../zeq/simple/reader/parser/DocxParser.kt | 209 +++++++++++++- .../zeq/simple/reader/parser/XlsxParser.kt | 110 +++++++ .../reader/ui/screens/OfficeViewerScreen.kt | 268 +++++++++++++++++- 3 files changed, 572 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/zeq/simple/reader/parser/DocxParser.kt b/app/src/main/java/com/zeq/simple/reader/parser/DocxParser.kt index fc26da7..7e066d4 100644 --- a/app/src/main/java/com/zeq/simple/reader/parser/DocxParser.kt +++ b/app/src/main/java/com/zeq/simple/reader/parser/DocxParser.kt @@ -1,9 +1,11 @@ package com.zeq.simple.reader.parser +import android.util.Base64 import android.util.Log import org.apache.poi.xwpf.usermodel.UnderlinePatterns import org.apache.poi.xwpf.usermodel.XWPFDocument import org.apache.poi.xwpf.usermodel.XWPFParagraph +import org.apache.poi.xwpf.usermodel.XWPFPicture import org.apache.poi.xwpf.usermodel.XWPFTable import java.io.BufferedInputStream import java.io.InputStream @@ -67,6 +69,46 @@ class DocxParser { strong { font-weight: 600; } em { font-style: italic; } u { text-decoration: underline; } + img { + max-width: 100%; + height: auto; + display: block; + margin: 12px 0; + border-radius: 4px; + } + .image-container { + text-align: center; + margin: 16px 0; + } + .page-break { + border-top: 2px dashed #9e9e9e; + margin: 24px 0; + padding-top: 24px; + position: relative; + } + .page-break::before { + content: '--- Page Break ---'; + display: block; + text-align: center; + color: #757575; + font-size: 12px; + font-weight: 500; + background-color: #ffffff; + padding: 4px 12px; + position: absolute; + top: -10px; + left: 50%; + transform: translateX(-50%); + } + @media (prefers-color-scheme: dark) { + .page-break { + border-color: #616161; + } + .page-break::before { + background-color: #121212; + color: #9e9e9e; + } + }
@@ -124,28 +166,179 @@ class DocxParser { } /** - * Processes a single paragraph, applying basic styling. + * Processes a single paragraph, applying basic styling and extracting images. */ private fun processParagraph(paragraph: XWPFParagraph): String { - val text = paragraph.text?.trim() ?: return "" - if (text.isEmpty()) return "\n" + val builder = StringBuilder() + + // Check for page break before this paragraph + if (hasPageBreakBefore(paragraph)) { + builder.append("\n") + } + + // Check for embedded images first + val images = extractImagesFromParagraph(paragraph) + if (images.isNotEmpty()) { + images.forEach { imageHtml -> + builder.append(imageHtml) + } + // Also include any text in the paragraph + val text = paragraph.text?.trim() ?: "" + if (text.isNotEmpty()) { + val escapedText = escapeHtml(text) + val style = paragraph.style?.lowercase() ?: "" + when { + style.contains("heading1") || style.contains("title") -> + builder.append("
$formattedText
\n") + } + } + } + return builder.toString() + } + + val text = paragraph.text?.trim() ?: "" + if (text.isEmpty()) { + // Even empty paragraphs can have page breaks + return if (builder.isNotEmpty()) builder.toString() else "\n" + } val escapedText = escapeHtml(text) // Detect heading styles val style = paragraph.style?.lowercase() ?: "" - return when { + when { style.contains("heading1") || style.contains("title") -> - "
$formattedText
\n" + builder.append("$formattedText
\n") + } + } + + return builder.toString() + } + + /** + * Checks if a paragraph has a page break before it. + */ + private fun hasPageBreakBefore(paragraph: XWPFParagraph): Boolean { + try { + // Check paragraph properties for page break + val ctp = paragraph.ctp + if (ctp != null && ctp.pPr != null) { + val pageBreakBefore = ctp.pPr.pageBreakBefore + if (pageBreakBefore != null) { + try { + // Try to get boolean value + val isPageBreak = pageBreakBefore.`val` == true + if (isPageBreak) return true + } catch (e: Exception) { + // If val property doesn't work, presence of pageBreakBefore element itself indicates true + return true + } + } } + + // Check runs for explicit page break + paragraph.runs?.forEach { run -> + try { + val ctr = run.ctr + if (ctr != null && ctr.brList != null) { + for (br in ctr.brList) { + if (br != null && br.type != null) { + val brType = br.type.toString() + if (brType == "PAGE" || brType.contains("page", ignoreCase = true)) { + return true + } + } + } + } + } catch (e: Exception) { + Log.w(TAG, "Error checking run for page break", e) + } + } + } catch (e: Exception) { + Log.w(TAG, "Error checking paragraph for page break", e) + } + + return false + } + + /** + * Extracts images from paragraph runs and converts to base64 HTML img tags. + */ + private fun extractImagesFromParagraph(paragraph: XWPFParagraph): List⚠️ Showing first $MAX_ROWS rows only
\n") } + // Extract and display images from the sheet + val sheetImages = extractImagesFromSheet(sheet) + if (sheetImages.isNotEmpty()) { + htmlBuilder.append(")kU%w^T{88lp54pE@fh01 z8%A0oVHHl$Lq}>PN&E(YrkbpDwdT>^f$yobG)>C5OxM_!+PxgFCtOG$tF_9h$5Ivk zxr{UD6!?fQtOR|xd@!>*_O5<(z(B1x9~V$frhN_jgKW$en{+q4#H{pr#i_vK3o4+}*&ImCZ5K7SQMh#zqj z7r-VOBlf*7sPAvDz&TUh+MF3Aoah{FZ3EncwJn`L&STuKt&c57+PMk;dshxUd%UL> z1e{=yAOyR5Lf=`q`$26CzDQ!kQaytG9o+qArDUaKWFAAfY2zPNioKqFa=&}`v`k-V zVwFksmEyDbv(Lx_gov9&2W7a$x{?ne#&u(f^-aKi AwnzKvn`yFaK7mh+0 zC9pnis^WXF;MrnCv_jZb=NPRZB2+RP1-|X<>Uw~|= |$w9AtlHHDs^m=JcUr=xQm)6ttuFerV=jyh(? zKT=OVp^K1L*Vb0cDDTQ$T=4zam4LHTnG~nYb1Ccpiezr)68C%%zQ{l@wQ9Z+@k$XI zjvcG7uRj)!WI;8m{kXn6829?YZRhN0l0!pU8Y`}#t@<1M=%<5zz9?|0Z($XBF;DUN z#M{sw9&r;YONSSxqu(ya+Huz~+zJphl{_bq)FNUVMa4|*+vjG`A~G%*uDfgiwgg`b z4)&ZljfyuT)6T0pm%C@-iPBuuDk2-3n}sT<;Z9kBZzYj+e0XKRXx`OO>OYGqf9t;> z;Ra|uET@V{&qGa4PEJgS%E(aMp5b!s9EY^wo}Qk HmNdEocA enW04Nl{RFBM*aFS_Z_(G(AdP`PWy7>DSNpLN)s69Xl8$gvObllEg5} z{TOxu=(lE!9322Hdz_jAplpNv|CsBNltALgYbJ@h^T0JnO#qu24rSpLk*{)vlI0jI zUBCPabx~H#L)j9vXQn|GQGf~!wX~cZ$hf!)lSA-!7Dq?aJqLn~-r~674Gb$1Ls`&e zH|71``);0IoHBvRR1s%VEs>w)*yyeh>tz@12E$TP&vWE_*Lr6*NTJzpB`B=s8KS14 zK**v>UCqce$*Q*HX>&_S3^>^}>2(=4-@pViK4p~Z`9Lmfltm_aD}O(vZ?WA!q8n4Y z+buCiao~Q8<>2=D+c|k>i6ydj&uy;>YC3jKcM z0N`U7fh3yeJbx|waHt85nT?|grTF>w$^Ks-P-1jW*qNH-GpT*OZDcO|3V3B|#zWv* zEC<=zr3VtcS?B{YK5J4sZj$?BuQuHDCyQNo%;?X}|1)%w(wWE(OMMF`rAnM~VlBr) z7wnJ$IFm&0YyBlR2gi7&hSD08yrZMdRyA8fRS;BXmjtxBMNi+3WtlAZscJhtuWf8@ zE*E`Wc# z&~ zS1J61UfkF|p7q@-2tv?eg_0Z`D>~fQvxk}5{*tPqide+Bqk(QM=ClAm>yXndmf&+o zAmVglj)OiJ1*-?jf|4oRg8#31fsdm`emx!Tx=-;1PxTa~oVK&6@fk|o@+IwT6xdAn zWw;Sm;0PWA6=AKvuNAPd^4(UDedu0LS*b4dCp(){@*%vF`%+`U^v>rS+ZVtrLRpu) ztlR o&Yee4qYRsoH1I4WblsH+eDX_f zbA`OHZc|~;R zS0^vb%;3U9yFt%AZ4L&DbApOivAial#X+9RA ~>2V(A!|WlnW7H{?CKR4|u2r3_Nbh zCh4{#lzh6C0T=`;FA7O6fv?1RD8)AIFS^3rWE~punN5*)z7{UQe(v_x+9rd6?tT{T z*7m`E_TIrR!QK|`HZMQ)Q9#@HM9;X;xN2jZg8aiJ)Xwg=Gbrn9;nQ+e2|3) LK`fn$+J#;HDf_hW9(LiIDw%)tz00&{HWXi{y&bC(U3?-Sm0PI9YD%_Y+ zlZbzsi~5-9vz6iB_pW|sJfE5AUIYK`u185LA5`b8*|u Aoc(@4B$dNliT~MsvzGLnyhr{e zg$-?OZB{}#dz6hQa-2p< bLkXMUrG+#70{0R#y|QVPoRA79XH=}!*wYU<)+H@mTSKsR4(@@u8n zuPIiex3?--fY^*(@g_F%LSL&3CtrWS(V7I+i8;|~W-cl!YEWWYU4@#T;-OiNQ&nb& zV6!3S1kXI3&w-;m-$o%K;rV{# Mg8Va*v3!v!QlVj#8xC(2>eM+(%rUF1U~3J|N5H$qTw<<1&`mJp z{`b~3`CR3v&sphu9_8uQ_D^HS$A3|pJ@A5nQCDr8ZuM`E@^42^Pk&wGRFPv5g6wR= zC7+4$g+5$6@$Vp!mT%Jlkg8?Deig^{i@y8Kr1d}45Xri2P0qTtx#X`NVAaV-6!`y7 zw!Ssdl~CUUOLLcYdrm6rx 9X?eyGS=1$Y5i{|qn z;#vB3jgON9TQnihpJs69)@?*5<=iX1sEeMe%KaTWWPc*h1S^w7!;@#v=Zv+c(|vw< zV|okF9JJv!wwtNUDLn%)F=_*nt9E^zZ@Fl-UrzLZ{EjRVi%}<4m2{?;iShNUkDCKm zYt)vm`-23Vn_b;XYPa{6KcH;m^aJs`h` Q|>*k!(C;1y35Rw-zO+|iCU2|0oTlqn)^ zTRXJ795HJS-&KId**XzSEk@U2&y>L6pO^#@k@}Odv3e2RdbOL;? Bb^P}R#!1)*?cG%PD)|fzvU{a}4P5>Gl zOCh3?Xv&E$iXTgPYp=hDWaW*Q`hKU7@f5v;MV4ENzN`J}iE=QyDf-Ov)IMwgfOzEH zM>%bD#Y<^ h-#}7Ev;gCc-_#LOmUiI{TJr@7HYIb6zai}9;T3H%$Hf7eE~%6hyET)~ zZCq3gGssU+beZ8nob83+q2GfbvM>TE;)#)uy{7&%@&8wA5hI_gu?>sdZpuiRLRTG) zt%LlWF$hEXt6o>AtGqK`e#HV wI_^#zz$vN+gvF%RD=Yd6~e&pJ`;<%LH6>R~xj`ihkm4k~GphpHUfSp2D!T<40 z$$W0gs#@Ya W&AY z4@+G6-0Toc*MIgRndhp)?56o=?%nx3JfiqcgyQLK;ES%rP5~C$PM{Zam|X5!bVd{h zAN~(jFb#k%bxhR7W2S;Z;_B vFWLDEHy0RDDVZ<-KKz5}x}7{M%a)ayo<3R}@(cM6CRtQe z+^EFoa0|I}k~E>jhpI;;SUc}HIq`|HW@Ua>c*t;%`?cL}q{@bt4-17s7;FA2LqH9v zl+@LS9G0$^CaZMk&U_02iq%RmdIXs5e+zN2u<*BW5j`#WT>JORM@LIXLrvY|p|MG6 z$YgOHC3@{8bgX6b(#RZN>wU+lTT5fF&%Ku_H?w(S7fSIOzQjsX(vt|WaIDi{Sof86 zO)ft2pNAt0 kCYDybBGzi+);L%U}zUQ52*g z9H+6+vt&8iNqPR6?y5P<^WF|Bq|Z)E>Gbt~_Dtk ^ZNIcjE=%sAWS zwjvdXjEUd-RS=(F!x=3!xwmfMoL}ZNb(YO9yGs%+Y~4_dQF!8+wu$3v;X@@&nV_Yg zJX}Hc=czZJamglOZF4Bsq^9F*MS+eY^?Lt3S0CPG(LelWx;u_3MrFzF&(T=GNTy6$ zs)@uihg34kM-n4gtWOty71=Iz&3MEN A;?@IU$-UWfrhAUdlMJ&a|#rsMy+rj7wtL z)CVU|W=YO?HU(Qb`Ob;ico=56V2H;sZh%;TtItR-^|f6G2N2~HR`WvhvuDpxauUBi zs|t%qZ~UwkNk< KHbFGT|F2OiDaPbgW)!4QuXmH(#zLtUhS2 zB6(WsV#1 vR)V?5zyHP0IRx$o u5k77Yr)dk7p@gmkhyG#QRyWx|qUrc>A)L}~jbdUc zcaqOePvc_fd_3n$oJ)i%E6Pf$%B74#%9>iMatm{DftG_f3SOoUi#3}|@C-woZnFqA znsz|XQ0pG4f;pg&+}hK??$(>?wxUDoEa~YZ(Y-|}vni9alap;8o4e^I8dH;CaOM;K z(kFsRzFPWzZB0dmg@yI2y@$WM`d);%+9F3kUfa>gYKV#ba*K8_uB^N~j)j@>lWdTD z2YiP)l~YKN_c5>F6Mo*xC)Fht6)E*SP)Ti5Gab)5y*t^0yi#U5?nO0a2E1ie{AE?V zrBwow?s#PjmHnfYjvp|~o*oyJqcy{~6pq~-_ff{Zs;z_$0k5#Yhz$54XdgXPL8?yp5Xn_nUOh8)PsP0_m&pOwg zFV%#Tg(BNCE;$eUcxccyO4d9$pgO=ms39iSU~2Cufqrt7*ShXBHuHLPdQNN6x2UtW zsifcq?~`FUbI&(-?rbpKS!V{w1$G>M_FPA*okS1Z1YSzgPfgKJ%`B@dk=C6b_r#kz z!au=IQiq#NWdhD#4fYJC4rhaWR(_T~5YW1#udkO~R#qig-6tKm)))FQxzL))dcCj* z$fJ=NucvKflorzQ!VXFSvmmX G437`7y5#ti0{Q$X=^|@G*a0kC z=SpmVEOwoX`Aa1s4sM$RGBf~t6n*=qg(rE`nRVy|>=Pox@#(WG={w!lJwhyN#AoMy z9!MzU$uBuA LGPCG c}iY zh~pEMbJ?J^Kg$Hz>MRkqg8EUnietK>6y*Ww8wxtM+eRXe2tnjbpAk8ZX>6z_ oYM)Ff^+zDcA1JRZuA{fAx-7 %s6OedM_cAR$v*-@UG*f$zYs>Qmg@ zL%#?*fNbF71K*eS+U|-L7VAPeix+c35Wzkn=IV~Rki`Ws9p^O9%e;buqLP}Xr)1BU z3;iGF%0A2ue6ZBNawS>mI4W+9iBs0w6d;)*1U+%-mp1Tyg4puSHEnGuXy~ZusH?~` zB_Rqb^fd1DFY?h8D%TkVla4H_0kb~b=XU$cALK7Q&N*OKo@;JLweX%oO+Y1nTHM@! zDFo1dz(rpOC)cO!anKm0s7ubO=TDKPsSOz^%5yeq(M4rwri2Qq#7PQGFFeM6ubXWv zqV!pG9Md>hKfAnA(&O05uO||wJA~9|;;fVksHw1UwZKFp9fJL^YaU7(Al$oc-H}w8 zBc~(!99a@PXCvsm|6v@+eaj^7;9^;mp0KrfEyw?C3xUu(+zUme#_3^3s--d^rvu+V zbSoVLK}jhoY88@RZB0#8wfk@6&ESEUw6Rmsbsj#|!A2!XU~*xYwIafol*SWsmgGrB zMjgj7t*^6iNxOMc+V D?X(cDQM6AB^*kPnlQvgDp>QV$Ck zZjJ?U)+!WC^negHHYr!)LypcD6NnJ<;3~v-Eh6M(E0KIynL}Ll$-$w{bI3d7!0iO& zx$LRVjHbCD8MiQCYhFrP4^2;{pXh|H{R+)5zHzL|A3dnaY(SRVgZp^u>F1v#iqC_G zf2E~R{iDG9z~GM7%Y^Jt*oA=Vf79=5t1EVeo9)F#T`zc(^M>mGWA81$;%c5~VPJ3> z+}$CB-~ ufI`ulaXji-e0d91xZ1qu5f*9qIq9dlWZE!d6SwH*1pOlnd3 z-EVkj`M6w9j|0h{?2o+bB8OHpQZE*^Ywz-%X#!R|b3()bncab1&!iiaea7tm)IJdy z+%PAPq3Gccp{=e)u29+BBjC%)m6~OTz{2zH(;DT=dD`bS;d+}jz4yaz;Ynor>W*f9 zeS!U(^}=NB7uonFg`bMkn;VY<2_q;yvd_B+(F)s?`A&MDiP?6k3Cx8qRflNV=*M*v zxL GAmM{EcLZPn0f@VB9U(NhD0LV=`*7yD2cJXuBDk{3Y_d zJv=V*v|Ccq{`B}n+5W|E^U0y(?QwP z!@&(3Dz(4!(UpF3`_080Y)ZctA7z$L8PyCkvOKLsPxZh~YfNj;U1M!o6n (Cw%Q@^&FuV=MppTjEY(^YW&;YAgTGm&R|YVdJPnTiJ2@;{Jr|@0@U>(`bT* z-e{Gy%Xdo9b=4WE$*)wCHIyIxIAp%}+1m|;^c0z~_mABdPZW@)E63y86pkedh@YpM z*eET^@0v{(i@rpKUmwyaR0L>C9W|{sMtX^B4COO!#D+@ua49mg*iG%1Ynv{nvmidt z3+9oU5|VxSc)!d2Ue?pj+ON7uk=6u#h}t}#%I+ZTcNgB26ifc+WkHv9VA@SeqeiDi zv??`1dL@76myLX#8qHl15>3G`InS|0e{{a{aBa?y$}jVAc@CG(oYYLai= Rm`ddA(Rrbc@w{)TN%|YP@KPT5&+Jfg 74Tc55p;)9tT3(qG#6rIeTG;P2$Ad%iqS zJd9RY`q7`g)=T$3^#J>*P}(6KyTw)anI(S92t{@oJFfK$o$FfO^*n=Rt1$i5L_(>1 z5SIvW?9oYV>~q({8WQ0Pk-pc5%GOo=1t@cwTH>tiFl&xnBy_5;qWa aj~ l|p<%{BCu*W|xY^0fZH zP=a6dw#M}CZs-mZ+$^XB-NQ}xIj|#?yjH2?mAB}+k@u{T;ViGck+*V+Kz#?jv^H7J zpFPRP;e%u{c>ReIE)x52MrpQ~(neKyF3(S*z$ZY)S1IlCQ> d_1qBto9fBawj?4!My#Pn4-TiMVsL!HWqzl-VCnYQ_HL=HkilW zXAUC&bkq0By*|}?eR9pR|0Z(j>)h4OX2>MS&STy7^;>UVGHc9W)lxyvi4T?i9RS6f zfw4`1 w$-nn5W;= zZ#JBJq^_r*|16*3d9Dp!L8jAVb~0#&$5nS&cTu&BH4N4d9T+uzdFzh $0a}bRf{qQFW?t0b$b$88PJz&ML@ q)oj;d|^n*nOwPi;pbxN>egb`Du%7y;Lu1L*kHd zhZy@xdBZhES%hQ!)>|4`Dch7Qxk@)deYd}y+$h0Iuix(%8wl|_cq{hTr+dRK&B&0W z7Wr7ep^C2``gc@0)`Xhh!qRSl09V2TydE+#)FFeU>3R^+%4^}Ql_ zvp#vN0g=HTO@5I$p_PTtT*>k96`BBu2}qcSQw2WC_;trz@*;~M=d2R+QN+@>Wy`OD z&5pV0&(P)nVPkce%1yCg_9m8O`2dwwp$Ivks)2!)&+-3xG4%g=aq9A3iX&S4wU#WN <|Fqh8N~XTCk9GEI zF=26`;nbK;j<-dM+bO5XD(B`xKKkJv0q*#xIiZI1)DE$yV^pVCIVVFV4)=VwQ`D98 zon1>!c;T9lj$>0$elQ?Y7w3G2^D2J$Mk!Q|(%_Q^_eZMQ>*6VKrLtEK&0fp+2w@dQ z@@&r4!l|{{LNXLZ5kZ!>(RbN6@=yH=ABMU6ktt{)p;%Cs7xn!hAs|!#ed5I)6!-S= z4;K|`DLac(KQ@)1U(rN4=SE%q#kfi&+GPtO%JLl)e9I58B%J=pF=oL1cT=UPX;@=i zY9K38RhTqCxkK*pnX}g!{KFG$EH^tI_90WZH2s3lA&6L65CjX6?fkqUn@cp(f&G8; zS72fh7MT?vJe?M(lHMyD#E6(jmK+^01M3UJo}z }bpNNPiNfBk{Dx#D6 z-2=rYmCaT``ua@+Sq|kIi=TafsF49-zG#z#$CehQ16YB$vG1y1mN*Vl6%-q%jw1Wp zLj$ U)l9%AVW- z bu=u%5w_$a!9FSdFeS?~9NSED6Lykqo6MEu74V6IN2UF=XQ{{gY z8>7kBSM8&v_bHRe!;N$iL!pmR5hJD#Fbe;1 vv5V&~hDf18H!(Q*^eXw=8c)JJrve5@GQQvx(GTu?!>F!UA& zJ+@`ZCHPk^>_D1KMLKR7PsB$zMA+60qF(s+h<~~$U>1NbN2D26RV^HE7a>UxO|Y^V z7Kjcpv!^q#f`&HI4#rk!Jx=fw^Vb7<{djd-0x%%IlL}TBTe=I!noq1I*=`#U*PZS0 z&(WCuP5AzQp$bXQ8V^+#^26+Boo$l})!an@+)EN^_% 4u^y=Q({<6Suj7dg7 |1}e3rMF+_{ zz(SxCbLlifSVS;u0frmcDJbXr9aZ=W$}qX;F(z0t)KCPD_+_df045GuW+E+GOr@(n zLGPY29CB7YkC+hUXg<4RC}KTmJcuwH+F~f22tSjz z*%iSeANb1z)}t%9O+HzCbHos=(xIc)_CW~X2o&8 | UWK&4wM zte_R0xe}$8%1?U0qu8Ks%%#dG$ZlcT2Y-8Sbya2bMqWEhg!Yz6<;(``HGPK1_!VwE z(zW6N;lz0pX V9i~|3*c(NK}_GI}th} z*Xe)0Mn??pGVUY)583=@9% >2&tFXf`JjWwpEx^ByEJF|EPR0 zW8*sA7vCZ#ZC>5`Uqte0rPd}1!($UrrGcE^i4@x3c=`>chx0PV1O%w%y`)#CnWvm2 zbtwd$ZKw8!r<&xP?`S#z KJ6IHS^czj&hieZPuiR0|9(LiUiK1lJ*} z%ezN*zNOMeML$y}PEvO3JIe3gw|}`EklDE)Z%V@?8p--ECpZ1-M9NydQ?}6myKkyn zYKayt7?{F_jE4*-sV|fz9?_^v4F>Shz4&lD G0%X$nD7*P`wO;!w9j6& zk2JaSDyjJ&iLtCb;4qYAobW7!<$=;D3D)Hju<#RtDxg0w0zz6ji9cpInW M@})%BCeVCje!)JWsKNM_O>Wev`k{fZ% 27| z#lZE)Vpy4IVLAo@OD1g^GNx|T3{W{Cb2Lu0O8LwWdMBU~;ysBvl3C>s*N@q#yC{Tx zlsZi084fPo$v&n;(WGj1D{2vA40d*9LZZR8na6crL(Jwk}g!tS#x3`4%a&9=d3_ zNF~I{9GZ1f7^Iv%IoA)dx?O5DcwUK82=a&!Wz=mcjt_7`NuSKu*!~jY_WT$OQ|#T- zN~Vh{_M<%@mu)|zEm-W-(vDnbIpOn^hjiU{YFUYYt=(X0MH>Qj{}5`slaA ct@)_*F=ptlKO(}zSa !{2r$}F277I4a9*qPNsBnq}=krPAU7O{Xzux2DsE|_@Yff*SfkElL1EFC I}g7KE2X-F4Y_O=ldD50=9|Ygl;* z$Q5P7h{Dytjid(HA}K*^*9^Kj=4u|ThtJTFT9b@)qKZ@6shrc9jf`e %G66TwhjqOu z0BaG59U}{y4ey1)ZUc*>1;?ZT%7dBUuFU4a29!fsc)<5`diLvbH-hDc$hG>JKUsr* z86zNb23PI{536O4>fGF?hi~Hr3L>>KE5l``Frs5c&1Q=PwC?>*WTAe6hL_0}h%%c! zeyAM~xWASkuH`!eex~xxnf9J{RNgo1bL><~*@^-_RGUXpUGRLQ9{jBgM?Dz3zaYl+ z5NN!yxy}+@VNmbT>T ri?=1M67=qkFnHtUT(b(XU?-_t+-9r z?Iu0)?D;P%#|UawSpHP`MbaGVA2RvtuNG= z7+1mc)<_x|H0KeO76eW6sIGm35kYHDtYX(&}d~6?J%qvGrZxh1gyDB%h7|c zn0Czi_otBi3ZS{4C*Re|i!72`pR}|hnrBQ23XDEJiB5o$CzZJG<;UOvd@6W&EM+Py zI1f|HOC^!h!`jxOt*YIQFl#tr|Q!Ik; *1t9CYvkNEHUju_4(38ox|1jzLx zBE@U8zPbPR(rWtbf~rTarbqc#T09R(*qDZ{H&OS-6&Ygl%Zs%8g8^*xLjnqfKm6N% zjbx>Q!}@S=f^8eJfFM!H&v=mSjQGY^-0tomtx1UxM9DIAh#@gqi;qbU7 ay7gzU3siwXqP+~i{zF-~2rkbSBeG%-4A%qVq&cr8H4dZxhnTz}Z2sa;0>snH z!g R6y@4C_QN<@S&Jz+|aE4oX&y>UI^j4Y7{W0-g_M1ySn zR9`x(Hu+t+qK>(2IM%&eS1pwzJnw}GSEw)b9`ke}Mer8Bz jgu;mDu zWzLYkau1RD8dYQk;a+AIBcgN1{{|PgKrK~TB;#AR=n;(%ZT3A*kT^+W0ya~Eu?hQt zV#dwRlcz|QuJ4YEr=EdiLtXW_A^&>msr&48 0FVgkSNvX z3lD)nlOQn@csW`br4+xxrkA;gHUI>pL1@W7bIJd5I*yTY&t{z!?pr_TyASKGchgdB z8(I`2*G>>GnSOm{e?fTQt9N(c^|u*Eb|wFP-cu5w#eG)OE|CGTt6)3Zp%1RkI?FHk zR20Ejf`J< ?vXA6 H$ zqufQq#KCY+?kMy6*q_JBt?W=w&hrebwJgj9N0&`%vyR;*eUzB*kCAuQ<|X|jQ-q!F zjz;*Sdbddf5)`qwERz3m?m=gw(OZnW10SybgY9>?UIL_p+(^D*09mR~2B$w5f)Q}K z_}YBocMD&bSCW7RR@x`7_!!OARDiJ&KN~qE1F^eb92p`#*XfFHb>9?h#CP(;6r^wI z1i3?dHv!qGoqZhAKOe91Kb-fq?+@SJ*xmFBCH}ot<2R^3ymBS|n`p&@XAFh~1L5)B z?4NG@I}MINq(ES9knnqfnHpazvtK4PMp*1F@*W-O`3JF%C4 8?0|E z1V$@d8Ob@6PFdM_*2!7gchLcIULKG3Si0excujhX0WTO&(Yi;gB8uVe|CMx$H+keP zzS)~t0b58WBtZiNLp``TtqGE-qO-=TqJh@zXb=Sgz0H%_8kY l(fOv zxw8kE^RW)mM8NvMQBKax;GfSc9N1Zf*)5IATDU@(!GpM2T%?1P*IsuJ_kR8L??xTi z8C>$$#^eFt_>Hn=CL52#oV#52Hctz#OHS*Eb*{eBQ|ig~kqosg>!JEd_sJXGd{N-r zOiaehKH?hoPiC3G-sR}Fo*6L1>uC9JINx_|&LS5#jz46%sqL?eF^uR1pp$_hfJ`L1 zo3GK7``3O~O9dro^DJ8XPU5+vh|}-AH{1*uUaF@aajyrm&1!_g&!+$Ud3G@t 7ul*ISv@o;w;Nb}R&PGu(RPWH;fiQCL%Q|L}7HH`B`aBPt}42eaFmb85Ry8Pp-QyD7_3 z5WA?^MjM)gLq?L6p)K5Xl@_jD{J_&MZa*U`2m=Qxcez8u?34j_S{rR+6MB}p;i z^ zaz$f@Og;ULS_468@WJ#;Z7%t7?|3FxvcKg13r-?KhV`j4bU1f13Jn)kS}cyZ&&_ zQDx(MP|ik9e>0-s1<_f$v))>$ftDS l}DIOCyLQA(4D*X z=uNQTS(Q*Ttczk#w-b_h3gYSsi&AlB|85hbM^2{tiIKs1uQm!5+ND%L0TkvUDVo>m z7#3Vxow7coK7ZmQv)<>2FTxEySFknX4pV82C3w?z4~^?XH-kP+#q|vw7HzDn2%_|A zAq~OP5e_K($0;IhCdIB;^42a*HJ@O&)#DpJMF6F@F)TMVq;EC6MGISMr*)P$n5^B! zBEDqMzl?1PyQ_qA6^^DnjhE=LWqt&saizHgKzri`1s3-AyI1a?di;8vqonT3AFdSY zi9&fb{B9gePmG20Bhht07M?$pqNEkJ-%ro!hyu1~Y4>lKY0=VBrlD=YVO!4^33|~N z;$uap)05(Je_#9BdQ-rBL2F7Z1%w~C&d Q!BXZ~D>HlpDuWa8N%gKO zpEw#haJN_$P+QbZ+PO(c=a0R;Sjv8Qh$jdi`fFNOVq@X!{PEDlZphfw!pOkI-|jeo zzNC%!&e~2xWhxjRmW`e+$lR7+S;csat0&Ol` 0`Yh^m~1dxQ|gf~W7p%mD(QGg%@ZiOz09%<2- z{#oYF-i0*7*Yj_ZNu>YegtTBa <#7CijNu^gT>5h!K1OR2)|`us+eTU@IM!VMZfoyt|ey zdx4y=Lt6j3J);u6+-X30VkQww@G7_{kB;4yy#$|u1M|e8D-r7>ktOw@Xr$=14|Z>0 z4t-cGw ^%OdNAUP)7(y2DU5gA&f@KNqwTTSoHoX2xzI( zKzlgvywO%qSe~Kpc;qzbe#ZKCXl4E0isGYD>FezY`cV>sYk%C>?C#x*{>oSIg+QEl zI |Y2IYob@Sd^9!i|xFTG*J>CVU_-C=e m5|G;jWZWZbGglu@; zgybU*?8bd;R?KPoSQ+v6I8<0XXQ!KliHeVg+{g@TD0pY$95#*>9ZU48pWe5RaL$dm zEA;zTtVyg2Y=V`oisBG{o =XDk|F;O1hp>O{jbsh%3W$+vSg9}Wj{*dZ)}j; z_-R&N-mFZmx9zRg#A$qk(;z=frwaO8MQ4?YmevOe*&ZB(TI>*FD+X8{DpeOT%7(^~==Kw+hl@6`7lBx_^$1%u>DrfWqxxhxK6bESMCn$_ggo8Q@{dfR6cA8j;E@ z>rC4E^i%)|R9Z|aMBxg2Dd3DLuTXSAg~XHmevqUY6sGJv fnw;%+@2cfxIei#6^ z5B}#wo`sqyZb>y+H36qcAHzIpL9L2WCax^aTu%pzBKw771-)egne<%SK*X&0?D=WJ zNND_OER8By3a^ qK-*b3#l3A{; zY{A4#VG+HbnPHeER#-c@$gG5Wer&9FZ%1*EJp;95E4X$WoMYX`LT-7b^j&v)LS+F8 z0d$}MApB9M87(qLkYyIk7i)`G7aG@n`HNAm2ci0qB}hp7V}gzAZ% e$F=d zKVPDVhzCLyk#&WL2N{`SBP0x{^02WGp_94h4V)NQOo2nlR~V@LU~7UJsA(E z;?yK=_D3^ps_n4Ij^>-JlFap~E4l(^76jZBAsJO;~4!fi^DwAw8DmIKJtJt`j zXpPK8j{t;I8Fg6F7zdU$E!b@k7j=JYK&&`Gb9|Nr8cpCdTj>IA!AS<7s1EO;s2GZd z!$w0s{urKw`$@5jFKrsckQ|DEv^(DOUOHcv-WNs6cF=;EQ5h+`6AeN#ryGz>``%sW z1;zII@vr?+qapQDz+kp2`!Rs3nJ`sM&;Eyk>V2!`J_w3UwoI^axV-7Aj@cX$mZ8%P zsf}dhBpjQ^mWo~cDBiZFOLs`a4~+sbASstX*^zlFADDJnJaKrI1VulDJYvJp=|V9O z;qYfzUD%3R$T$wE0)He}2~g+SSu?e%QiZ#Pn90T>;ru12kqNy;n>+{*MRQS($FqtJ z8iZ%UMYArPgW<_!QNPU7O<{<^E7qA1kI}77lTl{Z{Uxp%zzCy@N(9g**|+81F9-o* zDRc027Kv+xrOF|IvyGwI?*BSNn{#oCkQHt30iVeb0H^y)kV?Iq><)g;^7-GQ!3Y>g zmlzDx(!F7S7?25^Mr +qn |m;s#pT*aeW;~n@yqh1@N8Q=8{q>HIPf1;@G2x91_vNb&V+6A zPajs988% b`Z}4Vs9(d@IZhJ%1C-xbr>!5 zBYXq~gg_X;;tCkWt`-GD+cEnmUBHQlMF~ss67JFwgwoNnc3~Km)AEDz8A41d{kcG; zKAlC1@;G5kCl*c6T_`Y49l#oxgT#tf3aDIF6-Y44M XbtCtZUPP8hh!2JBa#XnT!M zN#A*(-Pf)tnp~ahJ0jqH>uU9BZ%KW%z0H(@^hf}`$;5Bh4HphPe3V0g^a&SqT^5}r zP>Nb5a) 8cpXDEWn+hDC0zT_r zGdo=G5G{0R{n&0dnZki7#EG!45kNB;rJDk@d!y(1Vf=*uht2j$sw{oRnvKX!^39sk zl<(Rq8_7ishc&B0GR+JIwQ>{$74Q3@9@K9cQ2UQqZ!Yw7EdxIAV6lpy+m?f8^2bMr zJmSp68}Z~eI+bNEIRjBQ2Paaz&M7PgQfqs%SeW=XP!Qp(V8@Ei%~8{zrRW6!B>9y~ zCn@!hp?*P#QG#e4E+CN1?gx;ST$m8~LdKF=&C~j0lR?-> zRX}u5zGy=tv9c39Jg1ZeSF$j%1nYE%{>^flx2cE+?ale={^4_BP9kxkB4`(VQSM42 zmdFc^Ck7EaAi;4|fFOTcO|=Tb7)qam5Fgw%!c66aq7ut>5`6*|7ACrx3>*L)WwAw} z_*}?}#t;()Be2Jv7fcAiz*VB_KLnF}Wp^QF7Z3OgA4Cbdf)onDXZqo(o5}l`4hM~| z$@$wU$?H$m4stC_l!^5pJa80tXDlB4Jh6^Cup4RI_&7eA$}HK2cD=|H(a*48i_u0c zgyKO1D(W=l5|vt>Ik6$6T*iMoJiRwqGHI}bpnDGrPQuh$b7v4Jgz`>p*`va+qD4{E zhA9c+VzoQzy6kT^?ucfyDaU^03JMOCLm2VGdNt_`94!H!=sXPV{swCb)6b!1yKYUA z>*8on=+>eU|3858MwCG#M+#gsoUv*{T=B0oKZ!e R=aHEFRPk*aj*_Xlan}@LP7AY=0L&m(SH8jp;Q= z3A1_F!o7DZl6fIS_)OAZ %fr z=7mW0^xR&L|5ck&cpq?;jsqp@>W_sT))u|&jh0f#wT?+!E#E)iR&99_ltK;q02c-W zk?7yRC8Pd%O@WHf4YI2bS{mD5v)%Z7)a~zTW>i)&cMvNG=GHf$qUI_7=LO3GgTiQw zB*FuJKJi|-?Z7v3v$eBXnD=r!V~eiPcWZr)+}bI3Zb?%rUub{iXX-;mXuD~V%|q9m z3=7V*9xDA#l);7OkiGMh`DeiPQ1nN9Sj|r%VWzHk#pxT(*Lro6@43|GbarF7PKLo% zm4}*>Xq$u;Q;wXNYBEiNftatA FD@ec8LVslNP>6D5)Z#9>==S2 zOY-}kt^%|4zkJpd{vrgU|A;**e(2Wk+GK)6@_zKG E41rq^3 zgkx$<_2lBs&u(^o4J_U3JnIc?gewo}Z%PN(w?1#Sikx&zD7)rYU0aUt^4Q>PjE5^x zg~MWG$pr7VgY-Ple&Gc-`M)a_lAn;??v_489)$W_!>P +`Pn26bbuLJDb%$2@J8hV5UA zm(@5Q)(?pZm3HfN q@?mlRgTjc`cKAlYDmPv1`}Xdf6hBq>evmqergwZjgZpC<^ P zFD7I pp9`@|K;t5H#pGHJ^CCWDeP2Xw+8>6OL&xCs<7& zJ<=t@DQE^v{l Vt_BCV8b?B@vwPPd!RO{sQ)O-NhNw^5VGH4 ze0sXMt~Yn#-JMO<84()f*1sqU?)B%3c &+joKCB=~Dvhjn-U@vMaRogHP$*Y# #^zD zkO<4#i~M$ >h-XuMj|Kf0{WjGM%@Nw8o}%4DUR7sW*}p=Hc^uD-5zH3+Zy zvt}^4_vye9uTCJszOiI6?avp|;nvYv5xqac-i&sO>N8ws=z)G%Me^?)V)MkR59^lK zmEl=RQVV%+8O8#6`QeL=g-@fu=-PPNtEVekL^jv!W6F?0g_+!}PclIhikCa@HJMl( zJr~O9ORNd|9p-=a;kN)*(^?$@NhLJsd?Zcx##0Ro`x*8@KJKh|eVktXj4=54d?C(l zyxAz-Ax}~SzepOxr74hw1I+_Z4{G@nLs{bCBMONC2jb5lhGO*u<${}+_& Vi_ z*iM7(Rl^3?M@>Q5eXW^&f6x-kM9&RBKxfc?TcFJB-rcssXUzzmZo1jn|7xl1j`O`y zpQ;ei!rmX{z=nOEL7;Eu?Rnk6ql8x3Q5qaQeO6-ukeNNgO_>*y8e`VOj X9O}||qALmDUBDJ?NR3r<|A9am`Zh2+mgZac`rAKa zY1VT5#5t#q+5nR9$wsx1Cwn+ ?=tq=MGYC_XQ08#%Dn2X z>+Ur_rx$5lvr@m8lH^S$ m@jx&0}0_t?$!RzZo^g;eO)wt}`}IukQv$9Q;mtdCVI{mZQbYL*ou z4mL8fD$5L f>mt~|&F@|Scj zCv)-Hh`iVLHo@Lz6IueDuB&3Vfyg7gB*w6cle6nHr@F+Y303sAd#`VnRMK?i5ZC6T zYvZ=fd1!yKo15X)b4p^JJCX^*-wm_88myQf_3vYfgDXxoq{=l{f#-X)rYW^p8GFtQ zONPX=2#{`8q(eF^WKZmd>?@+JO7u8gK0On9PnC~esM4qYLdQUI=|mMmE321$(+Spe zF=h7${%=q74y+f^()~t$N`0oyL69#)5MVBPg67@ySBu(g1kjR_0RQ3GHJmh_@?Ed= z^K4|R%^-5`V(h3{NSSV&AIWhUvrML9*TT<0vEx+#g$0l5VE@#t&g)UM7HP?EXhIfl z&o*t;O ;{vY-x_vF0^u=r^nBG;26>z)UWv#d|z> z^6ke_ab&1rVQ&-5Hf$yw2}2D?G>6y+iFfS4W#{hSX7iCIdgE4e*~Ppfqstekb%dpl z{O>r!r5T(JziK_wx+O90r>H-1H~vw!ZorQp0leO0tXkVK zEXy{L`!?6aK;bUj5($zvd8k-Zl?(pOOVUDjrdIQ>J#?L^N4uYf?)42#m3y}DR9nit z#(JIkjV{+C8GqZYSaJ@j!qTdj5Wg9x&`#p2Q6%$6izIA|Tx{5%`gpo7!RSa@5HCK7 z&-yk``m- zA^%P!M?DMp7H z;j5DLV}SRG*4d6#@Pz#z9IxF{Ie1OsLN_0y74NU(y^qV81)GM_@7D(UcWQ7RGj}ZL z^KO44bJ@+MC{<(jh2&7|9lkoZ{34f25r9RepQvWK#*^+r#AZYEZeQYaadTfPZar0# z4X&RlZ^o<0J#WsxAGzbV^c(2dExP2@a%)6w8;dI`bb8d|&3dU4aGf=)!yBLjfd}Oo z>S6#C+<_H9MpyolFGtgecCzA-fA)H2g|y`jRmSVfBxegZTIu*n 3$pX;`E`gKauxXe!nK{ zRyz^MU4CdI_pPq?mJj#zIel&($GKeCd}&u^-$6alM;jg_@BZnq@!CoMUCQcD(F@yF z1p^ZRBP$`Q{(lPt=*8^09|kO=Y=>d HQLz7BcS~HTsO8rV z4X3xp!tHYjc?nJ=MReTvWv)N7oVP18Xpo$rW_kiFrx3}8mz0FJ>OM6aw&aZJ_?3O{ zmkyuW{L2_tfh-e^w$Sjk%Xm1^zi#_xo|U+^^uCUxyimA#K32rz>)9aN(C1P=4qMMo zFxt<}bZLJ<&6(+H3|@_JvY#*Y8g1p jgRTAA07emFA+|lV`xAdTI3LEC1q(Y$k4FI=UXGHsk_zQ@BF^kL}w5qmOm| z?wTuAVxgZ}Hdj52$1ev4I`bpzh^uf#mKzSkTyJL8bN~vWWr+!pg6bL!^Pe1D?EcDZ z2@cMz>Sj?(0gftJNJ5Gdj`>pUQSdB;$O7s3LW$R>&B?; TH;aLUq^=_53^vZZ)` R5>HVpWGwPKNE*<4c$B(4;|(C-LPBsvBOR)ekT^aX~v$XT0i z5@2ars1V1?I=(eJWuCOg-)-CQQr)n+tj<@X(SPO2*)os{w@qCG@XpLRkxEerNn$@@ z*1GU=$j@(-o1r7w&bjlW`c)s()LL;;`S&=sHoSRS@%h>4@*Ahj+jySdDt-H$el*OP zg^nWOf6^s5R~R1PUf<4b45lnKaGI{Jt#G^WPah13K32=xX7$lDMVE*NtLt)8U+3?+ zi1@?^t$#RcphIt>Jxd=xUj*~+j?ElR5``#t2bN9IE_HjQYrNg45x2^?+i7=vIg%4s z@bVad=faAZXbe^yPazojpp@#_t$THMrD1Tx;$_E%(fqe1J;nSRbsnnSRDhdR0OZ5+ zGJl^Vdedda>>LO?=x*~5ylNY$9O-Mx4=%_QX?c#J&7_^yj>G7YKssslG)3GLni8~} zg@@`N4A55JrMs%Rd+hpR8{@6@_USI3K?&p!ka8ED{9-T_7JQJj*(pEwiv*Y*1@jf{ zK4UEIh>>Pdsf_46? Cij@Pcydd2DV`gZEt5?yzu=QDyc zH@pWGk*(3y$V6|%Yv2Cba%=;uijeC8<(YvAFVsn8V1j^Z&Y`}x*&Vaq_OwWew6eE; zt`{%g8V)ci(uW=Bgwi#2DEc+^(#v$n)kf7{jX?c0a~JOJ;&`xYfD}a*=;DzFY<(Sy zBrlIk%Uq@gFLoY0i|#c?-tr6^;-o}_9JZ4Iy#nOPw^SZ?brWt{3sA=4qaVjLk}LH) z;@z<+!qPH18gnG%0l(Qf69g>Fnm0b2)DvRxXaX} ChS1&Y z4c%s%xAIDDE1#ni|F{9&UpZWN}qSLl{BxPA=ndhTzix`q3k%)9>b({6>%C!&OOT z#90(5C7;rpteY%0^d~R#`w+lEU%RT1Yk$7$dt=h@tn|DD^MW3n|0i_%9orGz*n&cI zNp=lM7r@1Q*Tz|6J?8ATDAlwQHW-$Vlh_Zm*bO%NGT1fJ7q1W>xH7JO8>GD5UK3FB zyD(dA@$TLmA^6^8WrRx1{7!1z5kW4oyG8FDmreOrSK8L!RUiJ`(wMr2`!ydQf7#&g zDQX~LTNR?#Dyc(Z z+ujx1Rle 7hfZsEBmNfzZ<%llYuJxyexUli^6G8HwG6SzA-1)Tx=jSb#Xw*?N3DWPX6OQl@ zBFMSD-gZpMy0rlY9yKhi64sEbJ`cjGAf8)YQ*8}LL(QkF0?X0-<|%P+O~vGhdhXxy zF@QMQ5Y0h&ie#AMwcWc$l@=eU@b`bQ{x>cMBUI3dR|oX)+|vF)1}OSx3t$%OiBQeO zcKE^B*-u{wt>;NQ4$4!=>v>(#nTTxNON{%Z%Hg^NWkMyMcZd&w-K1e67wr* ((dOc6jzGUz>`gXhvU!6dZ-FVP3$BEOAX)W d;&~7;$%}~LVmztHu?b)+dW{6>6_oS)xf4?+#tZ7H~ zv`*@-`D*O5`rp5*#44hotoLT~$`w46BoJY5zpUJ%Ete^Wz0akC=|U_aWjKH`9M%v9 zl nUsjAV`E(P>6Bd#B z6v=$BGo_xbP1)6L_16D1Io5|rtbz{H&?(n^>%P7@^{<6tcu7CkJuZW9Su0ATf!tRb z@P`%wzb-k#f}a81qHOMDJY?Yw!Xn$u&0A4NLNBTvtj8AMi;FuhS>g#*TkJsIw?yIv zA8ZfX4~>pAW#c4B4v%*=I^vLHpx#ZZ^hBcCwc$bgOVS9QhpSrAydl^A$lHy+ux*k% z9}9$BmJZ#j;(Lk;`b*DJi};t)& )J;5$-M%*e*@0PJrmTk6qn-igzJ@-Ie-3JEaAT zr@n!6*$>G8L@Ep{R35T2Lz%A9_+YKiBbU4uw>mU$r?TXZ1ocgyd!>}HaRS6)C{Svt zKX%hW{suI&7z-<*!;{b+%79+rKg{e<5e7fhbn V2rQvI32sInmVd# zmnin?`q97C=$2_L9Q=xiJ=pHvOyfpqWYy4GemFTDnG3tlPQ+ME1juIN-b@hh>r5OB z)qR}mOd1M^4Z+`C0NN~`^lh((75N)5o!PJA5n9g>#q >=Yn}5SJZnAoeeY{u*jr=&s#C*Yfy|2M<(&8Z zA<@Csyv@|38vY7AK2k@PGG``g4<5T*%S6z~Y_Ep1)6b>FX2pp`Es!-`2>QRHj`!@! zU@=J3aZ0l*(C^JOBUC>DCTIUEMzKEa*)-0X3ybmT dC_34e%fe+@nWXY$m() z-vhIyr;@;rEyPoY(eF?DF(}CUig1#895%j!guc-C;lE5DFA>A>371=!Y#H14rBBNA zc)vO#0Cr~^H5KX!EB+z&Eo}{jaCu?(Zrs&Nzy>_!_mUFwf x&$C8q3y5sAM)B$I zUb!Qs@b&CNv7Gd}r;88T@UQE<9YEjWpGF-yd4<%1(i7;#cT$gG-r1CXseAmDg+D!f z%Q%nMv!^oW>OEA*T10&)q0a_m?!|kR@xGt7Pw|2gJXdIXjRaD`z zbZntqgk>-WXoj|T@pVUOFZhXE+^X5q`Cwz%(t4R?t3=m=u~t=-=EEA!=Wg?FBY}It zup$4zu=7M8=ZmLfGg4ZDwD46g>I=P pQA=Si&x^$d;(VZF5v&3im4%UFNsF_h zsU~*_8}b;iuMbeym>&=C{4x`nu)iGQC#1&sM#pXxtH*HRB4vO9vl#VQq#CS%2P3c| zH)PXcmo8tH-j2rlht_5$j~=YYmlmbkugAS_29<=_ytS#Nbt+*_tu4Rnr$!v(?sy~{ zXQU>w*e5kd{z$cO2-h!e+#aOYSP_q~#Z)Myp+NrKUljuUevR@WAA`^~pF3eQrxUiT z=d>LU+EtX+{|vl~02Ay z?F|7+Epn$YpGdGjYRNYywQVX z0rTzBCkfli1l>LFtmlpBRy@D#@ZMvCxlUJZk$m9rl+oB`ip2sz`Pd_Hq(&211QG&_ z;Yzgw6mg(@4>fc7uFwBdLX7@XLPox_IDCb{*gur5sI4XEzp}RCao(V3{Ce47GT~h8 zP^P>MKGfrv%9ELr(T!h;0nN1^O0Gu%K(D;pyR3&_SVS?Div--?*S}+xOZkM3{lka< z@=|V#hqu*(STEy{!h=vGPCE?BR!*WETG$*{b{*T;+lb7=o21ZWm#+4m;8^wO!QJ#& zXmIPf9M7uF-B)KEvt&;^wA?ryeH>y5?Pa-SkU3S+ND{1dsK}QzJMt%PZgT5t#}bz> zhC8;)-*(>J>YJ#tB`eSf*SqpJ)mV+?F00~BYX%X8C-vyD8C4_i0zqQG$Z2g v$~{0-J1*2_^-wS(7w{p(i^7xoAo zRJ+;z+ra Wk(LW*z8XUzIq&YB0E-jh?+-rr=?|?fI-y?HpfjA@z}+UR`y=kETuhUBUaA zT=Le%4ELKPdER9E3VBgy^M8~|Q0>BZMs$+ohrj%&>pkkXBThXm_3P3O{!XRZ#%CrM z3oEKRO=Xn&`<&TJJ;hVjf=GK#862PUinnirlfEC$6VuzhIoxOLo*EdX>iw9q{ovbe zY`g0EQx|@+6X3dUB&6fww2L0Kk&lTVyZA8FuuT6_fhYD*?=Q81B{%PplZ rJ=z!rp(%^<7WKY8Xo0D`;KhG9Le>ubb5cnE90J!*fXT#wCAKpcB5@$~XXX zns~2W)Nni1*J%=T{8#r9W!^{5uC0te;LYV53kj_ony(V#KEV9;`QOYYsYWJ4BE`e3 zy7+ICraoDMleoLAyyW1bqN3>VG-%?JRI5vaOE8CL8P0<+$$a!=(e|}2$i_Yv7k; zwjBW*8=zLb3hbxYcLIS&gGt@ZlleopY`!*t#^R#}OpkMkw}ui4Xd-Q0r|scg457Yz z7GS6U=X`HJTM3|rh4NJELx d^ua>IG8)G)5sq}N!GVX@-H(~qWePen_607z*6?C06i6K!+#X<2_4 ztmgA3UAtmPrv1|HJw#IAk(cOi(Zc-
zpwZNj3u6_K<++l(9&EcD-`GKe7K2?GowxZVM;RPwp|qjDaDb76 zP0jK1>0DxcXt5DCmD7tWi&<~>fY#yOf(s^5xAd_7$=Uk4sGBTageV1JC3xA=hD*Td zyOFJE&vtdZUnbCoZmNAx>7*jvg*AOnFY|Nbx9c6xu{hoA&k{8%)Vvf_tSOTnP9K2& z4Gy4H#mP;hDCZuFS;vhU9+{AXlv1wpvWoF#g#A^h10$f+w-&S$r+_v4;oVu?;eXA$ z84UbYK6z4)>?rG@G5LH`WPbrM9Q#==dnuT@bU1l-U*UCrTmoQMe4N%B`LNXf`ft;h zGO#6!)71~l21>Nob4I}K{xm)caYaln@J(S{gq*EuXR;KHQV!NZPg)vlMJJ~xMl_#^ zpgs-BIefV+LD{LrLD#{&Yf#fRaRM7>0$rqLl?uT 5UQX17KLCsx7!u~5^mb664@7AS!nEVihs(G4Gqsb9oK!{b@L)vYFI zw8n95(zoDXBzek8Xe;DH@mQ37TVX*0L#o1#o(Zoc>l!H)OK}L9i9c5B&r?%AQCC>Q z@ny~He7#7tD(69Es)Y}w5|G1Q$>v{>Km8`KzCU^CW(k0HWdg2UZOFNjs?en==k}1M z<23$Q!J}!#9RBpN|LH+eSMm3#;Shws9J3)|QDhOSVv;g?hE4+M0|A%n2#(}7(oy_4 zHWE-}IHTU={PD)>LQf21TOXgC0e24MKqbV{>2YS2bsAO}FZTR+iDpf+xn=UEdf&?V z2RnXfuy!(XR6Jr`qG*pec~P3Zs+O{(lDekRxR)QW9;ZRTA8UrBZsty;&~ZfHyj1<3 zV!-Y{T{w+xG_pLi)@kf) FS+5$10L zQO>3||D`BPNeAGkl)J3lemnMKe&wJ2cXvuga|G`W+KMYYnr2U5>S8ngw)Srn$G@k> zi-HTLlID-6-Y1jVY*!1sHC1<~Ynk%aCU;MroTCI3DOh&CD;E!j%^pm{=kGwlhHqll zEE4kQYeX!i)O W`v(@@FxTlH}!DZ<8#t=h8+#t>QUd#J3b9PmU+J+v +oefAM|e7k6fE-t29V z12}I4-Od0z^6reiUT5wjNzE8}0q~U*#_7ns!-fl~WhJe8k^W>AM1bt(p*=Lad^UuFN7k`M zEJIE$ridy3?Oc#cLhA4g5YzLFE=od$>x%-gH>M50LZ1BRj`OqLg08J^#~^yP%oD9_ zp_-4^KZ!{fy};efDc_9E?@LPuhU+JW3u;Dl9{JVF*~ Y1`)HeZSRujAgFWjWpaU3VuZK`oZ zl1NB%`H9dIh%I%?N4j>C`3uVU&K;3j49pSQ#;_l~QuRwGTJ99CJ*3zsy?*nbEM{Hr z*ZZse`&j=wJI|a`=6&04x!7{!ZvTNq ?18cgicM*;+<%W0X6iRL zYFng0m$S?4^jVjN`G@6w{sMWOFnoJUKqcnmbQ;~gNe1zv;WZ-!P_i;HWNYb3jD!G6 z3S{Z8MDm(tDFHZHw-HQObwZe%7;|(4Ft_X}zJv!n1X}W?-*xb})cjly!?0D-sCfQc zTUhb)@w!Tjd+|)*)X0ZQdCtAP_%Jh{y>sp01?jL9K #=Yk3wWF z>;%?O7DM4a{eIb*^1h!_*Y(75{@a6H$j|inu*xx-n=I_qE_#wFG1J+Bs!bpD(S*%< zczj4I>(S0K9Ma X1`sI6|ZojjJ zCc}=QY7sk{!Aa$pC}?>RF^BgH&UEBWXJ;=X%34VpTb_vXLIsDZ=N&q@pm;uQ<5=$O zTArX-=bwIq*@0U0q_Db0f;27LYKk**t>u^+(WbpUyhVf7-#h3T{Po)tIh>*?0_dJA zV{QKJ LOZpf{agDnH)DEYJQpLA^-P3w+(6LiwAFA0_YI^GrrR7Quq=JqAbZJxv+LD! zTCNTB{()UHCLc|gCHBXdoO>W4^`v4Q$bd@NvGL3pGyt;I6ugNCg9={>JY00te$jT- zaaNL8LD@)tnDHX&*$)@er<=t{kfCEAri97pFCmfqHJpw{PBGDmloqT*!?QNh@sWja zk+?R;FS1p7?&;|#vrz$(yY+`RyHA-QzM>ZEbj#V`3Ha-~fO-D53@5`b$(-(`wsOXQ zpn!)2)L|K8ac0nAQTxLo$A2y3wR5KuCv?D44FX@1-}?vDvA+lgjz&8;Du#De^EO{} zD>5jmVvsk=N&q5JrwaFjCUNO_u6(TcvwnW6Arn@jn^f^SHG4;36Z#SW%YuXZ`om## zetw7@cCN3^DZB8+yOXA`8g_W+Zii(uc(Q?JFjqwNOe~WNC~7_RF^%gZ$MId>j#9B5 zop+}*(n=59( {gh(hpS!1yo z_HXGj^^CAssGBA79rlK@%=ND#TIVxrp 5^&Zvt>@a833gh#C=TnfV0 z++lgq);#%?=c0%ttj~Mq>N+WbN?NgQJCkIx5wlF_M-ie*7E_Jc{GF}up8nxNyRgaz z!1jevP7l5jD|R3B4*W;ox)>@t>YwuBRtIn~zPSMcXGn=v11YqksH}W!9xKCgmX9ce zu&W0RPY3mjg__?LTn8{3Vj?(}HjQiH#1ZlKN!F=zPH)T#wyr1}pl2o*%6-pBiLnSZ z*>za ShWPU!hAmf;gnX)-L3lt5d0^JHnM#i4xU;DUUp<1h{2N4JL@ zn!#JmkWk?py&*=2KlTOm8XJd_HVuF?yLxjvNm^QeJPs?;nXzFL=pwWw%aH}@;;BV{ zqH#k!!mAzEgrlfZsG_H6RQ|gac4}|+k+h^_`h9-$H8K&i5oVzS0vgvtN}`7}5}hzX zu(R5yZyXdL_WuL+1I8$@0GDqPXEKHVNHTv6I9K|w(gs+V8h<>G>ij#fecY>(#w*eQ z-@M(UiX0}P^6m|JVU3-p7^c8qQ^?D+Gw?XS0VwS#aU!&hs=l6Zr7`&EUyA;n)2<0G z;7#9D%f$K9heppMuAI_U>%;afwsKd8ga@WKSWF5fm7NrpK1RBu07Kd7F2(%b6C2=@ zXAN9E)4RPAB>T!UNohL?Z0yq?mq?#Kj9(y)U!okS^oaQIFmT25?CQQlzhCTpMCCIn zIe5H}CUt5^60x>L%#om4_p`+)S5ad}*xZK@4QUyajy>gh`{x80YE9IRRxM c;F*x6Jw#hfSqDD0%0y+&2i*qOB0D7?8y*9e2pyW`E1{^y018LVm@~PJvLiD zE*5gZ!dt{?;Wor~xuh7Du#O;djh|K!403YWb#6^sJ#JmQPXwL)Jt1ltX(E{GH^ae4 z-xCkXx7@ogByE1sclY l30}Xu#tzzZ*W^`EVuQ3nluZ=z zNm5#M!Q@y_Qf)%_`U=-eu*=y7(cO>juMQgZP>mk1@cg5y!hH?RxA<|F{&yohMQXV& zG+{8b({PB~>349lF{vCci`!m7 ZT7u{G&513oU zS4}(J$Y%%_am$0C(s(hvM$}W9ju{GNn{UZ_9br}#zFB7`Gc*h^Erw7tC->{KeCxdL zDY+qa!cO(j3xq4IDOiM}H3|$hyYW#B`E*On wIsqsn2 ;IZGsA}9fa>p{VRBUb@B!Nm7uom z-4zxBp-m84q0^rIZ>+kGSd!$S(k$1@Efes|cE{ZO)t>Sawo!3Ei#VAzJv$>yg>zHz z6k^Yz)`yFkP!ve+#KS*0c{&9KL~M1#5en2qhP(3IHG9_18qFBMJ&d0qQQd3Q1ouVI zvrF)isK@ifg={^=t++$(Kd%GJD@%)FG{zjG$?2fE46luOp{Jup-WQW@JXHDHp*uGA z7G_G;dn61t%fG_;`qDT`NHX!X$rSc~>jWuysN6mOhHUZZwI(>c4QOGs5QCW8Z%w={ z*JCeA%?~?)$Yi;k@mjC$(_)WfP^xPWko|;D3qSBt vWse(k79 zrM(Clz$miR=&kPpDUp9b{b&w&@Yv|3GSc-RsTgXiuW_+=-~Wvw#HE`b&LC+(*>syL z5P^7vQIM3(kkf41x0b0dPDPRGiDeW5Iu~fNJt!%lUmb&g5!CrA{MkX{9*;t#8e5W> zy1%6zzt*%u{Eiy;)ppJEwQu5oCBq^NO1_;BGyN{wlgDy1@7>uaU)rTTAK)uUM`z?M zXKo=k@$2w$ydjRnm$jz(Nfv?BWi9i*#JLoEvlLvQ&i}_&J`Oaj0XBWmxW;XT?9KMA zoOjvd-K!jaSJt9Y%IXPy>AUyxlFvRH%p(${O1?@08XQ|ql(dF8Evao3wc|3&CgOlt zU)pgEwR~xsa?i9zOJSD_De)CHgB4OL;R Kj32}gBs2=w|VO#Qe2JGOeL z|3|9KLspz!70MzIyAgjuiI^a5PP3^M>Q8Tfk0kzv8eeaa ek7wZCUzg&Py6LU$6+lTP^g4%^a(^`KTB#I8DEQZXV{2!MS zkywP&dYPxgW&9wHSJB|ze4&o9ItDTxTy}uV@c6L(b%AtQfU5`ew^-;eH^s%aj}vnE zTrb8SXhaS%v0zhuX(vz1yRVO*+*Z~OZLaSZG2DO*Chuxv=sHeH?wV(K&tq!pXf@s( zY!i0jJ@2;|>WuLjiq~2cTHZByTs%qXro5W5n99Fxu%%XtfxTq4XzBfnIVQbw_5|Q| zc$-(_%v BW*LNC- zrgkUsc9YE8AnPZ0EQbh@19N-2JCX7iXvwcI(X`zUmO~ma(12zPnm={9{G|`0Lscv7 z^tInqKEwEPqp7uw3B|I{^JaC8(y|ob_oS$3vg2++P|4iDA1N9uv2(#c46IPfLOMJ9 zaeaeuO0{{^9j4fPF`~Fo<<(x{eHu4k))x2oy@L-_$9BF~L;1KKLY;zpXBLVTM@#(b z<9xOI_8p%q7>e*)VbIpm9W}QmPPC~Hj}vhmuu3)YkW0x5uKWznqUOt#?Qo3^tXj!R z^Ik`SYc7YG0~6=DP}v4KGFd$`wPAwwB+Tt9_SUJ>$+68`g5@E$>R6+WQkXq_ud;>z z!LQub@~&-@!;H0e9|z(}{iNk~PP~oH6xS4tWJibHi$zML;;r^Gv3&<_sKI(vW`;iJ zhrP`Q9_sY4rohJnJ`+=oNxyw*dWyXRtrlc%-|#?zQ^Yd_ ~9})^TJH8!3{uhM)5uo#s7C zvp;xQuAfu7HaqVQP=MJFe#a+{U85atz8YUGTTb?w*N2sboYNG2TN2}0iI!^Jw 3yA=fFV19sFg@4%GJj39cPWpFPpA%aD4EVnHi?<0?uxj6pWLi(z< tU@ZQgiyv^<}=X}qqWBj~0heoj u_d&l+`hv%WI4zgWR?-IDPbyxf;&V z^$G0u-?y=E&Oxp|g13Af&7MynjAusRS!-34Ll@c*@QDhK)h3iLXspLUPc>;(C1Y)u z>8Nu2^4juYVb9mYZp5-`d`ZP=^-ujNayh{#$gd8+Q@YK~1bT0*=p?0LLxaHOGTIfb zL#? wok{ljixj3>e?2pW3U0e?yuac1KDG4@PUPONpV5 6klcSmD@@72*;qp*pQ@x#C$3Cq!$rpo3io52)KRg6gn zFZZcE#m7WL4_RB1D%$2+-sbInB6dzmGB$RIaP_0)tzopu?QiekBGq&}Jw4l-p-Z-3 zy&`e$&aY8LR&^(^BwEDiWeRmxvla5zmA(Om&V6McfI721f<=?YA;&AbuHbK zAm)ST3y6GZmi~+ + %JNQKk?;Qb`{(uh=noP(kCB1Wi7T%Xz;n^cz&kL~peT;h zpX)<)g6$HPzS0%dT-vEx4Y^P7Ha-Oc@Q5azJU6Vie07v$9T%zhM&G)IN0P_aUdMmJ zrl?W%=O$S)WWw85{CMvcQ2_YoNIqIc2B_zUQe3lPydpdi>>8f)WVDH6c*U^U{)U!~ z=JD5(fiF@8*<}ABGvYHT>`-?0bK}abtIMjJ|1dv5SITQA?*92*qeVdq2k9xTA%&?^ zJ!$zgd()qxW?%b6X!7!7Pgyn?A#H_jq908v)<4-9JWAm?@%KeJIBM<1+~ms+0w?{7 zO;bHoQ-j9&$Az@W)O8m2CgH!oenIsPn{R*s8&i#I43sSrocMag(F){8A;IQXnc;Fx zC0$3217Qux#hOCkXc*DPorMuq@_g(|Q8uR+B )K36{K-S09Rx2ov>ll})gpXEKA{JOS=<=TQhjiIuJH6FqMij f)rKB; gYdXT(CAC!WfYv4v3l$$f(1-x)Ncp*0^?S~Ry-*gN*DVy16n)t_rMwK#t ztc1eGpa&%!?cl~kjC=*6# 2fKakMELK6eJ8K-Ep9;k@lD|4Ge;hHGf=72Xht_w3Pf zVQp^RmByB)Az6=Y%|BS#d3c$~M#^Mei}6}k>mA1|WYpk2b`pLM zL#B$xCzJp>kV7 c&Pv-|>h_WO7hL$!RPuHGHcI3ds#MN4Hu%9- Y?dg_0oM>rqjE>`FGy>7oZLcD)Z(gSx=HA#2`{5cHi|j^meb=&g3#|M%vr51`C; zFYEF&?U}2w$%er38#ZgUqBLK)H@`f5oIgLQ(wRLSyFg*ODAsqnNs8o&nM<1989Aw> z|6%Z@v_ZB4dNv8Lo7!-)e$;+Z+zMZ#(YO#;SG 5{l|{tXO!V*sUh=~pR<;^p_Dnm#~e_{UDZ;$$NzXDHZ}R@Dq<2!yo_pv zC$gU^^dU!A4x7sG(a+fOal}$7rOFD~j?dZ7U2GqamSI)D J 3f}bXt4%B z0QXPKgoe-5x7Lb8j2<7Spx*RZ==!j;2Ix(^%zoG(#&(^Q`3{_HvBHxn-_9u_P45uu z`L%23Qj$9+*!g)cGzHyPaF+SRI(`w`OIX_T2TUhl9M9E0x273jz5*-&cvC4@ZF>^Z z^;I0!`XTr|d;2~~^MeO#B)+L4a=R^V!(H-WOqYyg!985AXX-&fPh7}L4_JSesx|N* zPP!aNH=CFCMy)H#rs-Q@4%?dq#e(ft8oa7I_Vs>Vw#nd>S#YFLHoz`s-JET-`~*%% zy!MN+G^kN 3xKV2-0epYK{Z=G=REd9!h1*h?QN6D_s-7$Ue^|U%alECTQMoL zYxMlmX^pbcvq*Op&0Usq7@btA4wbC7Gj}R0q`N`52Iw*1P}V|}t?c644d3Op-?$4( zD*F;&iB|xd1pF7!*VAV*jtH2*$4a}et}F9(Rz& VmsC<$2t=?nd|?Q2#J^`Yef|5_rG@KgV~oF~$oLTqOu; zV}=57YYKgT@?Je~uNz#WI4rr|Q!>GXM-<4;Uh`|pJDas<-0TE2{@iRyn##8EJRY0k z7JMs4`ih<|h&a(i`^HEZyRt%usl5SllomRCANu7EyOvSd_UGS!8x&ln
+~#FRrm4z0 q?T?EZ(JCg;ngmiV?0T=QpkrR)BKZ69@uN$ltt zlDv`nB3IqWnW0u*qU3$Jp75DlB_rINIi7H$Tnm@{8g)WPyjMN2tAlIhkd3M7xIsZE zC15rn`2vn@{0zLL38gB(;+x-C3PU;kMh%B%0|)G#jOWyV?6M7Yqn4NRv?L2fR=sHP z3R3LwZcOSVeMP5;aZ&Ru-5;VAPNVypohyN}ib)o0%I PT8L+ zTiBP1B`cJgfy%Q9nN_ 8Zu`T=$mdapS0 zuLbKi{UHnTfEs<~#3Q^0F)H?L|7R}#mPf^F*HutX$+8zyb4|z3)36iHnEBJL68-yq z{*2#;gPZ6|iJ&&cXODod C1<%|^*a6LALnDwPY?Uss>4I3 zgL~Da?btj^pimU{cH`mst3}-@7W;a(xh4PO0I<~U#YsdSOmORxi}4b480Y9cWr3p1 zEXz<9>|9&&-Y)MnH&0@v&+J2cg=+~(H?Mbv1lZ$Ff^Of1CWG4YAk(bIp&|%rqN*rh zU<*vSWz&Y8**+sw1lp3c&zqyM#Uts1U>_&A?2-w_eLcerWh65q6=WD>O<*eu#2^Cy z=8e*-#VXV7XsBjto0AHVM%JN{J75O!`xeXhCkjKsujz_K_fanGBiBNH4_%Ukch_7K z7bziEzK_F`2+YS#61Eu9_*y+HZ^xs*WC&zO9k;C iX3D_{Pp!TyrQ{IZ%?T%Q8X>OW9L>N=%vofQ)2EEsG62snwQ#!%a|^ z5{4Qs7tQ4m_`OE=1wiq`|80Gxam4eeB-vX&_-=+n{ O)VM=gCm8L @OL`);#B`FU-+|iu-MxuET6W}RjQ9+E