summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authormdejong <mdejong>2003-03-12 00:25:40 (GMT)
committermdejong <mdejong>2003-03-12 00:25:40 (GMT)
commit5fa0b916e1a1c47c2251286bd3aad486bb08238b (patch)
tree1c5f6fc421347a2e042b8056bdecab04a447614a /win
parent6be1cd95fff709a3869038db3e989865154259fb (diff)
downloadtk-5fa0b916e1a1c47c2251286bd3aad486bb08238b.zip
tk-5fa0b916e1a1c47c2251286bd3aad486bb08238b.tar.gz
tk-5fa0b916e1a1c47c2251286bd3aad486bb08238b.tar.bz2
* doc/wm.n (minimize, maximize): Remove claim
that the resizable command keeps scripts from changing the size of windows since it is not true. The resizable command only applies to user sizing via user interaction. * tests/unixWm.test: Replace broken tests with the nonPortable constraint with new tests for maxsize and minsize options. These tests verify that setting the minsize and maxsize will resize the window if needed, and that the wm hints will be updated with the new sizes. * tests/wm.test: Add an exhaustive set of tests for the wm maxsize and wm minsize commands. These tests verify that setting the minsize and maxsize will resize the window if needed. These tests have only been run under Win98 and Window Maker under Linux, so further tweaking may be needed for other systems. * unix/tkUnixWm.c (UpdateGeometryInfo, UpdateSizeHints): Fixup comments and initialization for the minWidth, minHeight, maxWidth, maxHeight, width, and height members of the WmInfo struct. Check to ensure that a new toplevel window size is not larger than the maxsize or smaller than the minsize when updating the geometry at idle time. Pass new width and height values to the UpdateSizeHints method so that it can properly set the window min and max sizes for a window that cannot be resized by the user. This fixes a bug where the window resizes back to the original size when the user clicks on the window border. * win/tkWinWm.c (UpdateGeometryInfo): Fixup comments and initialization for the minWidth, minHeight, maxWidth, maxHeight, width, and height members of the WmInfo struct. Check to ensure that a new toplevel window size is not larger than the maxsize or smaller than the minsize when updating the geometry at idle time. [Patch 568861]
Diffstat (limited to 'win')
-rw-r--r--win/tkWinWm.c57
1 files changed, 51 insertions, 6 deletions
diff --git a/win/tkWinWm.c b/win/tkWinWm.c
index 69a4bd5..edd91a2 100644
--- a/win/tkWinWm.c
+++ b/win/tkWinWm.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinWm.c,v 1.54 2002/12/06 23:29:37 hobbs Exp $
+ * RCS: @(#) $Id: tkWinWm.c,v 1.55 2003/03/12 00:25:42 mdejong Exp $
*/
#include "tkWinInt.h"
@@ -176,9 +176,9 @@ typedef struct TkWmInfo {
* window is gridded; otherwise it isn't
* gridded. */
int minWidth, minHeight; /* Minimum dimensions of window, in
- * grid units, not pixels. */
+ * pixels or grid units. */
int maxWidth, maxHeight; /* Maximum dimensions of window, in
- * grid units, not pixels, or 0 to default. */
+ * pixels or grid units. 0 to default. */
Tk_Window gridWin; /* Identifies the window that controls
* gridding for this top-level, or NULL if
* the top-level isn't currently gridded. */
@@ -199,7 +199,7 @@ typedef struct TkWmInfo {
*/
int width, height; /* Desired dimensions of window, specified
- * in grid units. These values are
+ * in pixels or grid units. These values are
* set by the "wm geometry" command and by
* ConfigureNotify events (for when wm
* resizes window). -1 means user hasn't
@@ -5018,6 +5018,7 @@ UpdateGeometryInfo(clientData)
{
int x, y; /* Position of border on desktop. */
int width, height; /* Size of client area. */
+ int min, max;
RECT rect;
register TkWindow *winPtr = (TkWindow *) clientData;
register WmInfo *wmPtr = winPtr->wmInfoPtr;
@@ -5056,8 +5057,9 @@ UpdateGeometryInfo(clientData)
* requested depends on (a) the size requested internally
* by the window's widgets, (b) the size requested by the
* user in a "wm geometry" command or via wm-based interactive
- * resizing (if any), and (c) whether or not the window is
- * gridded. Don't permit sizes <= 0 because this upsets
+ * resizing (if any), (c) whether or not the window is
+ * gridded, and (d) the current min or max size for
+ * the toplevel. Don't permit sizes <= 0 because this upsets
* the X server.
*/
@@ -5072,6 +5074,28 @@ UpdateGeometryInfo(clientData)
if (width <= 0) {
width = 1;
}
+ /*
+ * Account for window max/min width
+ */
+ if (wmPtr->gridWin != NULL) {
+ min = winPtr->reqWidth
+ + (wmPtr->minWidth - wmPtr->reqGridWidth)*wmPtr->widthInc;
+ if (wmPtr->maxWidth > 0) {
+ max = winPtr->reqWidth
+ + (wmPtr->maxWidth - wmPtr->reqGridWidth)*wmPtr->widthInc;
+ } else {
+ max = 0;
+ }
+ } else {
+ min = wmPtr->minWidth;
+ max = wmPtr->maxWidth;
+ }
+ if (width < min) {
+ width = min;
+ } else if ((max > 0) && (width > max)) {
+ width = max;
+ }
+
if (wmPtr->height == -1) {
height = winPtr->reqHeight;
} else if (wmPtr->gridWin != NULL) {
@@ -5083,6 +5107,27 @@ UpdateGeometryInfo(clientData)
if (height <= 0) {
height = 1;
}
+ /*
+ * Account for window max/min height
+ */
+ if (wmPtr->gridWin != NULL) {
+ min = winPtr->reqHeight
+ + (wmPtr->minHeight - wmPtr->reqGridHeight)*wmPtr->heightInc;
+ if (wmPtr->maxHeight > 0) {
+ max = winPtr->reqHeight
+ + (wmPtr->maxHeight - wmPtr->reqGridHeight)*wmPtr->heightInc;
+ } else {
+ max = 0;
+ }
+ } else {
+ min = wmPtr->minHeight;
+ max = wmPtr->maxHeight;
+ }
+ if (height < min) {
+ height = min;
+ } else if ((max > 0) && (height > max)) {
+ height = max;
+ }
/*
* Compute the new position for the upper-left pixel of the window's
+U) cpython-3.11.0rc2/.github/ISSUE_TEMPLATE/UT5cPK +UFJk/ cpython-3.11.0rc2/.github/ISSUE_TEMPLATE/bug.mdUT5ceTM0 Wm{T!$Ӟ@ ĝF&Un=v\6mD_ 2)scTxe\JdVO3EM0cX;OuRY3XGb4nhƩU}\8eo3JC߻d[K>}Yq%+aXxJyul[lb+>.Ƈl'~\L{qJz&۹6zd~9#䓲xhΥ.\u"G}ƹ P킰iZ5I0|!8Lc;>.e,|ԩωFW>}Nm'Ja 8riN`)eRH~kĩPGtәj{ 䈾^u2=5V`LsїG7\\HѮPWP*@:oJpgAaxUSH8"%hڃKPq2q_a hsA^&] Ҍ sFj-(~1OMimG;Ŕ;;}C]A.ZP{$1 0Tr<2|9&an۵ޤ=ȥb֑c9wզ]^vo4ߒdsd33'^*֓,ik@7n-"[R< v@\QUŖWb;JM\:.㤟"U,0cb<,G c115aloGM{SPK +U"t9 cpython-3.11.0rc2/.github/ISSUE_TEMPLATE/documentation.mdUT5cUA ! @}Nf =AoԈuШrYYeZ7w}H,\@;^(rрʺ_*8w!=1vLR%|xVPK +UdZ\3 cpython-3.11.0rc2/.github/ISSUE_TEMPLATE/feature.mdUT5cu1o0 w !EHکZtHKI, ;R\t4M}w:a. $ o+ZP~ib 10:>? 'r|]^#[ӮŹ;޶=#A,hblV k(iWGiz8@`0%V#\M80顃;.X  'GC' V$ !0f8WmVP$>:$vdX""2e&(t is8n&Cl CHQ{ P=Ģ> ZWWZV cmZm/1OYx[GTT=g1[p /x:IHWu/s+m% [lMe_+XV3lK*{ƴMPK +UH2 cpython-3.11.0rc2/.github/PULL_REQUEST_TEMPLATE.mdUT5c}OK@)xPa2Τ[IVe& zU{/O<63p%a$np 'ffB"AFZX2ɱƭeCLbƜbSÖ^ e82VX\Q28_9 6i3q_mGrQ)Yf{9ڋOy/:/ T5_5?-/+;+PK +U2B% cpython-3.11.0rc2/.github/SECURITY.mdUT5c]Mj0:ŀ7 M&2рb iT׷ȩCr|5p"[ ٮ4 J! A)s1gGp\ŅgʐDkCy<RnG|1N$淾[]Իn}6L g(C!S%>)^99zLǍ`S<+§ᓜs.:TkL&2˲T~0>bfV Ou_oy4.pUsUA6K#_OC(1(3?PK +U0?( cpython-3.11.0rc2/.github/dependabot.ymlUT5cK !Dse@YzŌvo@VYv*@P˲Wol"Mպ] w$Cj Wm ऴ>)BAe}r^MiR| #f_}aͥkum8Ds^ysaFVܦPK +U+ cpython-3.11.0rc2/.github/problem-matchers/UT5cPK +U1p3 cpython-3.11.0rc2/.github/problem-matchers/gcc.jsonUT5cuN0E B"Mn%;vTƝT! ιX|h K_, ;x(sQkϞNWho;|ѲFJF{ |5gPL}mTkI<1l|!D@vlo!hR[>yUmQU~/ZS?YGAV :"~Vqݍi|?2&-0x8Ā#"\* PK +UUD!&4 cpython-3.11.0rc2/.github/problem-matchers/msvc.jsonUT5cePo WfZ6n@vm#!qD܊6e> ١5\o޸"4V(OVET&NuQ|-N!Ҽiوj[opBitI1W 6rD%|6>ng c[_,^] .gW24f1 j[o4O{͇)cv覫A=ulb!Jtw-R(o [B#h$DkyM~ v׸%4-xʾϴȧzLpj% m RfhlK]E`* @,qCT/,GRh_ 1n{Ɠb*ƛ]9`yBǴ![ioYLlhua^_PK +U$ cpython-3.11.0rc2/.github/workflows/UT5cPK +U0 4- cpython-3.11.0rc2/.github/workflows/build.ymlUT5cZ[s۶~أhj{Ƥ|IulԱ5ҜN/($Ad5? wS$mO/ o C;  Ƌ_XЊx* ꅌP!!ąIvLYh_@/v`L Q!d4Br6ޱ1B׎_pءT1&:I@Y99X#)q)S&5 ZsƯ&>\*(?! ɀfp`vKߔ~(~mD\KCPm摜 '="ςdqbv)Q*ʑ߿HJR9 |P_3'˸aސlGF(~davS/[pJ@]K+A W0Vlɨc ~) Kę2ش,AbC/I-|f. Z;I\f'݆N1Ao$ÎbSLToČf˄b8άOm4wz#G%^s/P/A5 J|7-QN{rs0M^߃k؅aYnpc\u)ka#UOpl50|*c~62dأbKɼ47n2@<ԅcLk;i3*hl 钙Pz M=Cq/.5Oװko jd2ݑhFH+oZhRo7GƏL!ơh\p*8Zv;Moh .O.~'iߩ\ULE*t?0.۟gߨv|>{̃8a) 9xS[ΪV Ikh8WNG%G?6:A.'vYJ?>x@Ed_x _VWM8!TiXl[oEưIfݩ Dj1HpնjaF& @:i \9&v6ԿY.n0yizS2WK(#) \!B5`]-Z8iQuDS| ڑK]r Œ%Тc[Fs 5a·MBvPL啪hADġL gyhp{i8" MU)D 4@E/YQ̥F9>st$-۱VPix_oiu<߼x]s=|K> ?qɛyd-Vr[H9R8"`^FV&i@P0ʃ݊c*"_ޭ(M4Si뗓f]n<RӔ׈ PNoebo2H "V~dKcBټ|gXOLx:- H-+RlBt1swlfahG.RTMh~ gGÓO.g/ߜ[)x? za#Ҕd\* l.W+.wNkL ĎoWptď)&=}b:iNwK[ǣ/)P|poJSS]D*>(nl$nר]DC˽2K3B #J#cRt0YW٪GxVO%[ӈtCyܑLS)\BP~7Kgp)S|.!N&@@9cqSY{Ƙnּʄ t,)61b<\G GѠoۗ&D1e3Cpؾ'3= g?ZZR-QbLr **ਛZ 9eؾb(Zږ;0%|ALXza> "I4 /"Ljgcqv ȗw4ޏk>Qϒ>O?4VKM RT qw+y-G9@K"!j ƵY;|{?nf_w=ge0<,WZuRG^yzo'-b `MQ,Ͱ-_uۺ+;\eZYQlX>jQHd;i[ӰOYeJe~;sw7z@\?}sR4lvX)wO?#}pf`Kb O+ݵ0# b Q~wϚڡ듑 ެXc5{fjfk7rO'@@-ΛoPK +U1 cpython-3.11.0rc2/.github/workflows/build_msi.ymlUT5c͐=O0wPC%X"ENbS>ǵ)DH;Xҁehp&DɒLJ^HM/Gh4m0t1D2:4Y\ΛYs=W*.}ut@.:!reX3g.;5!}sXK4TJ/bA34lI輀+lwʚ{ piz%+!<+4@\CWGDE>nNYœ/PK +UNh+ cpython-3.11.0rc2/.github/workflows/doc.ymlUT5cTo6 ~pz+ {E l;@h`Sr@dg.h=0I'p g&`c}i6wZڬ'`HH) qo$ϟ/CSgpbg|veyGd}|LedDdcHcbHbB0+R-}(M2L",*;:S 8Mnu_Bd8ׂ̬2R~{2ξZtxK P7fQb'6l9 t*\tt>@)䁌Fkjt-բ'^_tg6jsCT9O>I&ZNc:Go][ϊjBm)[)k,@a*B^$)Q(u>O}zh!_qyus2~3_g/ޝ_ K2V8m] 1!ٷvH[{ڦ!=w">;aH}pH:[bPl y"%!CvXAmJp*eF}Tq? 4ôc:~Wc"Hoڐz9MOl%yh7Qr4^-]p:E!of}\_CG9.(!J|xWՇ$Iۥnym " 32p"x{{sߘhoH|ݷm.oPK +UENB cpython-3.11.0rc2/.github/workflows/new-bugs-announce-notifier.ymlUT5cUێ@ }WXR[@<vUZ`/ B;It0.UI\6G#.5!R9 Heŝ@=)1*Pr4Z۰Nb.̸Ec#c8 eXylк"j *j|%FO5(-Y < "KdkwJ[ޠe e-D=&QZJ$\D71W}\>_|x5GL4Zîo.:EV"udH,8?8 TL_ Ϩ#q#x%oP9'@.gWT%yyʊ])ɔN)Liy!3mV HjwQi7V3K@/cԑ'dg*1TcXiIڰ IZ@~&%)tIW|)$ܑ>{˼,S] O Aج-m}әkAW6tGg<̴ѕ弘pr ;:-+DŽtdk%$A0ƈT"Us`4رZnEz[o`KNPK +Ui4 cpython-3.11.0rc2/.github/workflows/regen-abidump.shUT5c5=0@ہ11)rҫ!DHR4*˹ҳ^(ȍOEd)$AԨIhIste%4fZy>>OkHH^W05:R Y~"8 PK +UXH]_- cpython-3.11.0rc2/.github/workflows/stale.ymlUT5cmQ]K1|ϯX@HZ|9("*RKŦəMZ^Z+b dfvת((FcWD $Y4jY (?-&RII  TMB}%,thb5:n6=ǐ]hEhIұ6DiT`}`SSm)KyHnTzPܰ-ζ[ =?N>nקD&[/WH,OM|G[a"~5wFTGX\u *4P2"AOb'qLE G< X%G7UPK +U>3? cpython-3.11.0rc2/.github/workflows/verify-ensurepip-wheels.ymlUT5cRn0  5 tPt5dȢ*R Ңc'Ipz1 ]tY. rMppK)t"g]5B6P뤭Q60A!"ב?85]E)%nK"$+.7D#x+-c*AaJLZeTJBSk*Z/{$Z eaБT{T0.߼{/)E-WhɊB[uwrO;.z؝T*1r_ڝM_+G08S2D ^aIvĪd!׫ aV^][*谝nDhٝS^,ٽWJb,JOw 6r牾Pe y~}|;^ڸA?.WI2r@>m_DVAdy"NU8 n$-뷛Qrz/+)\1`9@V!U$/RQ:q5 CbQ Kaa|^ﻡEd/[Ҽ=+( VL-u*"aQc!Y 9`7S`-{|;C" ۧ;uŴ=oPK +U cpython-3.11.0rc2/Doc/UT5cPK +UyKfܲ $ cpython-3.11.0rc2/Doc/MakefileUT5cn وԤ8Nڨ\p Lqyܥ>H$]KɍZ||f7eT*hef*c˹ 7Rem?n`Ub1- 33[BI*4j,V9LD?,'ς'o_]V`!Ep5:=Ƨ{=Ld6U̾RC;?h&8>zs}z}uv5~{ryu4}fJ@|1"`t=ȹgX4W}ӣW͟N~QdlgPo-{YxzL~d33O %bg7 .m<-ȶKXRC8/Do#(Dy!ŒũHT(i$Kk޴AO2 ;?xXg`s9_Ëa^tr&IT&vjl愡u!栃f"Vƅ1nX&b5/V6}\2nKVYSt|_m1Q(k,hh԰Ɋ։U`Jj ]Jn$i3LG.P^_Dl|62ZRGu`-0ҳ(>=6<}ذJ-!*rFdt}Ilp&㐣,\2I"k$L1oQl =!j@S +n iV-JQ4R9)0}/̧UmGeVh eGDu/:Ci"HZ$j'>Q/ԆAXo}΋2GTii{cTtDQPZoAt U\)8{-u<8ywEFa=ٍi؜kv[A)DMlf>S`b)=%vmFQlpM5ZL&gNAGv&kk`#jmt2dlG.R M?/`-Y ;GOأGue2\` IhHZ^=qe5+:Ǡ8%9vjq/ZjM)J ŅLT%C3e\1=Q#ľLaY8@t5Zlyڪ]}=ҥծ1#3(``TŐbHb ziĝ`g{Vw<ԩ!s 4Q֙F2x*HhLď:85k p-Fe]@*nL6`fN# 2P fڽBR%j۲ܶQx » <ɴ/鮭xi(_/4u̬P͌Rb`w]h8kq"İ[+s&А6 ;:6( K&u$[j>Ω EfݴZ>?]sXo/HsuEqlqպ v7ءjcX@?`yMԬʛ[5F^DM_!u=J@];aHl!r tCy5 +R^3]=?`( uw,%4nJ ib^"Mk:$xBZVȻ5c;_}tN$$qo/8$`zi[?=<^¶QjѫQ]g:ej}cݾtGU$mez藋ص6krb~J7W1M m_Ӝ1y RL|=G8M~Q,)%Ň^#|hxj0!KŜE=v0>6fAX5ͷk:d)Hllq6s3ieHD\jD:"uqnO67pǔ˼ kz”9!Uj T[lf\C*;Yjx+qj@>OtV(`t6 v|t5 zg?=0𥝌xz/R|S{S vzqB Y+hlE-0}g{`-{7tD嚓h P'QICTQ''!̽dſjםt܍/;Dm`:2aKu6͐'0$nʠ&?|=>w4>O26;\ȟ#迧f}i9 ˺Xע[񟳲[:V\i6kcN<6"ݕ.AN~!a]P6$!c[H4nϖfE;s&oOiU_5zѝ+dUλ59}L -vTcڔü e~7}!`%)T/PK +U/ԙA cpython-3.11.0rc2/Doc/README.rstUT5cX]o8}ׯ d(f4$δ}Qmq-Z{%%N $Hޯs=!ֈO_>,[ڋJ;UجV©e蝪V)KD??~ I (֏G6 ]>zM$M^e^k4v+@E1rC\ JsY?<6EgS@WtS.Q[tA}M<7O_W#i#ױ!c ҋzG 0A"tC9 CQ$V^2%?V|>QޏĸF3r?>{:钲E#&W$VUz45!Aϑռ5bf[֪NG" ) :) IzH}ͬN8t歂n&h 1|!/TcIʒf+ؗc朠Ex WG)t4_ b`Ж2}% V [2tP};iB-X/Dmp_ӓjx<2)O΁bx3AGr4 Gn`xON4 %$ q %C 5N=^I ]bc 6924fhCîqQP ^:-ƀ|Rޟ\&jD߀̳X%4{[bK<ހz^;)LTL/"RY?޾}WC\>l&AҕED9g}b19ĺ=JJ-v&Ir3qש/&)5MI@F󓨧p<3Ep+/ij&)7,獏p*6$@Xf 5R[\h,v7 5寓 O#Ƒ^$s/j+xej4D'y0R&KO#a$x%!l0o"lU<ƒߗy9 +СG[ 9TEWnI<T>}eɸ7=R8(mAd'{yb '-//L|lyE`fG{<(Qg9g_$ldeXti<o۔ '؀]+n5#n4DHA6Ep"PK +UF/ cpython-3.11.0rc2/Doc/about.rstUT5cTn1|Wl^+8IS)JT)mRU%/} n'{ ;%(RvgvgwsGݮ|#Sa'Q}Tzz~_G:0u8h7 jIg~ EB͑V{Z.޸˄:)ht->,̚k[Q'qˁ]IˌQs6Y{Dș;zC?LMsm`P|L$$fr~3 DѡQ֬ID FG'}Ew3io{ΣQrz$-̀瀒 =^M%q2(&Sx;?#W5=[ؑA nAFKdנaHJPuqS ^hKhP /j-]\SL mT`+<#n1tuQT:qjG#2D-o½Ey !^J (!A9i9C)' 3Iӑw=_1NvET@;oO^u^+.u= ' tҴs?z0 )եpb&HCH^K>0hӋ]Mݺq۶oځti vԏP!1@RO%jKo*Ub>tb[z@wj2j"쒾Ȣ ` _ʩ1j\I&SP!%S~ˬnʘX-]gՙ;! JHuΪE_ykW3OPiU_{ц:MJS`&Rv6祥E.RE )NxwRX7 VzX鍘O/E l^㦓Զqhy)vjt#Ke&֥eOnmFx酅構/bp}iFʾ`I繾/;Ei=+ғ\ucQ3~q1R FtV0. OӀ(6e:꓎خ $mW̩oRm☗hMǗyThҤrWv 2<_h!;GM.X.$\ +`Sd*eRmANJ;g(w缕!d؉ԶIYw**eB7`)ޚb뚤ʞh|D}U?IT^i I.\Z;8JCik p-BRԹ%qQ =COK:Rf S >)M!`v}8v?ֽ)QˮB;qKSY=Ѭ6t5;ESU&XbcOu?ͪrl2CBn fG0*Xk4)no/ѥ48^wo \~f!8*uhBBpj.ĀѸm9yAIڐ0xAEv \_7Fgfw萂_g\z2×;6vI*]8:H8:֫XbLȋ2Jy_ߗڽk`X|vÓ.^ݐV:=ݨ-kqPVТV0h$Ɩx&l/ pH (OV#F?2BG>k-G=7gN~e;=]omiY^9;PK +U cpython-3.11.0rc2/Doc/c-api/UT5cPK +Ud( cpython-3.11.0rc2/Doc/c-api/abstract.rstUT5cuRn0 +x\L[ e8('ʹ/eY"#)k!)D}c-8/1+? U,C׀0- @ $n,xr|-\զȇf˜!e7ϱ֔JGVǹnyk4DM~Jw3T+yDB.rXn1hz@mt] :5Gſ=?a6H|4W:4-v<= T^ ^ b~֕ Xh_uN{na %>PK +UkU * cpython-3.11.0rc2/Doc/c-api/allocation.rstUT5cVM6W-[a "hI"@OM,)97o=COX w'EDC,B~C1^keݎVF,z2L^iUϿl*&o`ӉC;"mq`u A8T C LP PE4ς t>([h%` zA(C T4g`QK=}E4ZI8!(=@(EFp-aMgj4*p) G.2h[ZA7UhU]vo)%3|$z0hO,msDh%eڨwt[gQX(iiя\\Uhu<}"[mI㔀&P(I̬ڝV[?td~cHHW-{痫ýe~OZHQ}>Z2p_UߤaRGrjKHflhT\u'IOvf3tG21`;HmzFEmiӲzSt%y-.bJg4-0v[=;UjVJx/BmDk*EUsc!qs^X\`Ц3m촺-Bs1[ L}C]<3㏣|߀KܤKѬ< =$^]r :>9 C1bNbBF;&C $ђG<xb'SܤޮТMՋy>(='5dYz $o>,-,̝3u\p#HYHnG">wG]>P 3?:5