From 14b102f1434ec52c04c63c8a4bf43d35a71ac7c5 Mon Sep 17 00:00:00 2001 From: rmkaplan <69548581+rmkaplan@users.noreply.github.com> Date: Sat, 20 Apr 2024 22:55:53 -0700 Subject: [PATCH] TEDIT-MENU: Eliminate illegal arg and caret location errors (#1670) * TEDIT-MENU: Eliminate illegal arg and caret location errors @nbriggs got an error when (as I remember) parsing the OTHER font in the charlooks menu. This was because of a missing BOUNDP check when trying to decide if the other font is a fontclass. Separately, the caret appeared in the wrong place if a field insert was the first interaction with a menu. * Remove redundant binding --- library/tedit/TEDIT-MENU | 116 ++++++++++++++++++---------------- library/tedit/TEDIT-MENU.LCOM | Bin 93198 -> 93028 bytes 2 files changed, 61 insertions(+), 55 deletions(-) diff --git a/library/tedit/TEDIT-MENU b/library/tedit/TEDIT-MENU index 355a34eb..15aa1276 100644 --- a/library/tedit/TEDIT-MENU +++ b/library/tedit/TEDIT-MENU @@ -1,14 +1,12 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "27-Mar-2024 15:21:00" {WMEDLEY}tedit>TEDIT-MENU.;167 268556 +(FILECREATED "19-Apr-2024 10:53:42" {WMEDLEY}tedit>TEDIT-MENU.;171 269091 :EDIT-BY rmk - :CHANGES-TO (FNS \TEDIT.SHOW.PAGEFORMATTING \TEDIT.APPLY.PAGEFORMATTING \TEDIT.APPLY.CHARLOOKS - \TEDIT.SHOW.CHARLOOKS MB.SELFN \TEDIT.SHOW.PARALOOKS MB.WHENOPERATEDFN - MB.SHOWSELFN) + :CHANGES-TO (FNS \TEDIT.MENU.START) - :PREVIOUS-DATE "20-Mar-2024 11:06:06" {WMEDLEY}TEDIT>TEDIT-MENU.;163) + :PREVIOUS-DATE "10-Apr-2024 23:06:52" {WMEDLEY}tedit>TEDIT-MENU.;170) (PRETTYCOMPRINT TEDIT-MENUCOMS) @@ -2003,7 +2001,9 @@ (DEFINEQ (\TEDIT.MENU.START - [LAMBDA (MENUSTREAM MAINWINDOW TITLE HEIGHT TYPE) (* ; "Edited 27-Feb-2024 08:12 by rmk") + [LAMBDA (MENUSTREAM MAINWINDOW TITLE HEIGHT TYPE) (* ; "Edited 19-Apr-2024 10:53 by rmk") + (* ; "Edited 10-Apr-2024 23:04 by rmk") + (* ; "Edited 27-Feb-2024 08:12 by rmk") (* ; "Edited 3-Nov-2023 22:23 by rmk") (* ; "Edited 31-Oct-2023 08:59 by rmk") (* ; "Edited 10-Apr-2023 09:46 by rmk") @@ -2030,6 +2030,7 @@ (LET ((WREG (CL:IF MAINWINDOW (WINDOWPROP MAINWINDOW 'REGION) (GETREGION))) + (MENUTEXTOBJ (fetch (TEXTSTREAM TEXTOBJ) of MENUSTREAM)) MENUW) (SETQ MENUW (CREATEW (SETQ WREG (COND (MAINWINDOW (create REGION @@ -2049,8 +2050,7 @@ [SETQ HEIGHT (FETCH (REGION HEIGHT) OF (WINDOWPROP MENUW 'REGION] (WINDOWPROP MENUW 'MAXSIZE (CONS 64000 HEIGHT)) (WINDOWPROP MENUW 'MINSIZE (CONS 0 HEIGHT)) - (SETTOBJ (fetch (TEXTSTREAM TEXTOBJ) of MENUSTREAM) - MENUFLG T) + (SETTOBJ MENUTEXTOBJ MENUFLG T) (* ;; "The mainwindow's PROMPTWINDOW is also the menus prompt window") @@ -2071,12 +2071,13 @@ (* ;; "No caret now, let the buttonevent fn bring it up") - (\TEDIT.UPCARET (CAR (GETTOBJ (fetch (TEXTWINDOW PTEXTOBJ) of MENUW) - CARET)) + (\TEDIT.UPCARET (CAR (GETTOBJ MENUTEXTOBJ CARET)) -10 -10) - (TEXTPROP (fetch (TEXTWINDOW PTEXTOBJ) of MENUW) - 'NOTSPLITTABLE T) + (TEXTPROP MENUTEXTOBJ 'NOTSPLITTABLE T) (WINDOWPROP MENUW 'BUTTONEVENTFN (FUNCTION \TEDIT.MENU.BUTTONEVENTFN)) + (SETSEL (GETTOBJ MENUTEXTOBJ SEL) + SET NIL) (* ; + "Have to click to get the selection going") MENUW))]) (\TEDIT.MENU.BUTTONEVENTFN @@ -2806,7 +2807,8 @@ NIL]) (\TEDIT.PARSE.CHARLOOKS.MENU - [LAMBDA (TEXTOBJ CH#) (* ; "Edited 25-Feb-2024 22:26 by rmk") + [LAMBDA (TEXTOBJ CH#) (* ; "Edited 10-Apr-2024 10:18 by rmk") + (* ; "Edited 25-Feb-2024 22:26 by rmk") (* ; "Edited 24-Jul-2023 17:10 by rmk") (* ; "Edited 30-May-91 22:18 by jds") @@ -2860,10 +2862,13 @@ (* ;  "Delete the new font's name from the fill-in field.") (TEDIT.OBJECT.CHANGED TEXTOBJ BUTTON) - (if (type? FONTCLASS (SETQ FONTCLASS (GETATOMVAL UTEXT))) - then (push NEWLOOKS 'FONT FONTCLASS) + (if [AND (BOUNDP UTEXT) + (type? FONTCLASS (SETQ FONTCLASS (GETATOMVAL UTEXT] + then (* ; "Fontclasses are global") + (push NEWLOOKS 'FONT FONTCLASS) else (push NEWLOOKS 'FAMILY UTEXT)) - elseif (OR (type? FONTCLASS (SETQ FONTCLASS (GETATOMVAL UTEXT))) + elseif (OR [AND (BOUNDP UTEXT) + (type? FONTCLASS (SETQ FONTCLASS (GETATOMVAL UTEXT] (FONTSAVAILABLE UTEXT '* '* 0 'DISPLAY T)) then (* ;; @@ -2879,8 +2884,9 @@ else (* ;; "Tell him that the font doesn't exist, but don't update the menu") - (TEDIT.PROMPTPRINT TEXTOBJ - "Can't find 'Other' font, font-family not changed" T))) + (TEDIT.PROMPTPRINT TEXTOBJ (CONCAT "Can't find Other font " TEXT + ", font-family not changed") + T))) (PROGN (MBUTTON.FIND.NEXT.FIELD TEXTOBJ CH#) (* ;  "Not OTHER, skip over other-font fill-in") @@ -4313,41 +4319,41 @@ Tab Type: " (ADDTOVAR LAMA ) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (10613 35178 (MB.BUTTONEVENTINFN 10623 . 11845) (MB.DISPLAY 11847 . 13804) (MB.SETIMAGE -13806 . 14760) (MB.SELFN 14762 . 16505) (MB.SIZEFN 16507 . 17485) (MB.WHENOPERATEDFN 17487 . 17921) ( -MB.COPYFN 17923 . 18381) (MB.GETFN 18383 . 19121) (MB.PUTFN 19123 . 20000) (MB.SHOWSELFN 20002 . 21035 -) (MBUTTON.CREATE 21037 . 22269) (MBUTTON.CHANGENAME 22271 . 22650) (MBUTTON.FIND.BUTTON 22652 . 23675 -) (MBUTTON.FIND.NEXT.BUTTON 23677 . 25020) (MBUTTON.FIND.NEXT.FIELD 25022 . 27556) (MBUTTON.INIT 27558 - . 28474) (MBUTTON.NEXT.FIELD.AS.NUMBER 28476 . 29408) (MBUTTON.NEXT.FIELD.AS.TEXT 29410 . 29836) ( -MBUTTON.NEXT.FIELD.AS.ATOM 29838 . 30639) (MBUTTON.SET.FIELD 30641 . 32847) (MBUTTON.SET.NEXT.FIELD -32849 . 34240) (MBUTTON.SET.NEXT.BUTTON.STATE 34242 . 34722) (TEDITMENU.STREAM 34724 . 35176)) (35482 -46018 (MB.CREATE.THREESTATEBUTTON 35492 . 36659) (MB.THREESTATE.DISPLAY 36661 . 39367) ( -MB.THREESTATE.SHOWSELFN 39369 . 42292) (MB.THREESTATE.WHENOPERATEDFN 42294 . 43635) ( -MB.THREESTATEBUTTON.FN 43637 . 44956) (THREESTATE.INIT 44958 . 46016)) (46119 65901 ( -MB.CREATE.NWAYBUTTON 46129 . 50198) (MB.NB.DISPLAYFN 50200 . 52468) (MB.NB.WHENOPERATEDFN 52470 . -53618) (MB.NB.SIZEFN 53620 . 57248) (MB.NWAYBUTTON.SELFN 57250 . 59358) (MB.NWAYMENU.NEWBUTTON 59360 - . 59947) (NWAYBUTTON.INIT 59949 . 60798) (MB.NB.PACKITEMS 60800 . 62779) (MB.NWAYBUTTON.ADDITEM 62781 - . 65899)) (66155 75073 (\TEXTMENU.TOGGLE.CREATE 66165 . 67655) (\TEXTMENU.TOGGLE.DISPLAY 67657 . -70090) (\TEXTMENU.TOGGLE.SHOWSELFN 70092 . 70692) (\TEXTMENU.TOGGLE.WHENOPERATEDFN 70694 . 72044) ( -\TEXTMENU.TOGGLEFN 72046 . 73245) (\TEXTMENU.TOGGLE.INIT 73247 . 74078) (\TEXTMENU.SET.TOGGLE 74080 . -75071)) (75325 111634 (DRAWMARGINSCALE 75335 . 78794) (MARGINBAR 78796 . 85657) (MARGINBAR.CREATE -85659 . 88531) (MB.MARGINBAR.SELFN 88533 . 100549) (MB.MARGINBAR.SIZEFN 100551 . 100909) ( -MB.MARGINBAR.DISPLAYFN 100911 . 103713) (MDESCALE 103715 . 104255) (MSCALE 104257 . 104587) ( -MB.MARGINBAR.SHOWTAB 104589 . 106912) (MB.MARGINBAR.TABTRACK 106914 . 108299) (\TEDIT.TABTYPE.SET -108301 . 110747) (MARGINBAR.INIT 110749 . 111632)) (112651 127762 (\TEDIT.MENU.START 112661 . 117781) -(\TEDIT.MENU.BUTTONEVENTFN 117783 . 118267) (\TEXTMENU.DOC.CREATE 118269 . 127760)) (128072 148897 ( -\TEDITMENU.CREATE 128082 . 128378) (\TEDIT.EXPANDED.MENU 128380 . 129461) (MB.DEFAULTBUTTON.FN 129463 - . 132929) (\TEDITMENU.RECORD.UNFORMATTED 132931 . 133264) (MB.DEFAULTBUTTON.ACTIONFN 133266 . 148895) -) (148898 178297 (\TEDIT.CHARLOOKSMENU.CREATE 148908 . 151122) (\TEDIT.EXPANDEDCHARLOOKS.MENU 151124 - . 151834) (\TEDIT.APPLY.BOLDNESS 151836 . 152117) (\TEDIT.APPLY.CHARLOOKS 152119 . 154225) ( -\TEDIT.APPLY.OLINE 154227 . 154504) (\TEDIT.APPLY.UNBREAKABLE 154506 . 154904) (\TEDIT.SHOW.CHARLOOKS -154906 . 157690) (\TEDIT.NEUTRALIZE.CHARLOOKS 157692 . 158956) (\TEDIT.FILL.IN.CHARLOOKS.MENU 158958 - . 166579) (\TEDIT.NEUTRALIZE.CHARLOOKS.MENU 166581 . 169154) (\TEDIT.PARSE.CHARLOOKS.MENU 169156 . -177448) (\TEDIT.APPLY.SLOPE 177450 . 177729) (\TEDIT.APPLY.STRIKEOUT 177731 . 178014) ( -\TEDIT.APPLY.ULINE 178016 . 178295)) (178298 204777 (\TEDITPARAMENU.CREATE 178308 . 178684) ( -\TEDIT.EXPANDEDPARA.MENU 178686 . 179248) (\TEDIT.APPLY.PARALOOKS 179250 . 189966) ( -\TEDIT.SHOW.PARALOOKS 189968 . 197816) (\TEDIT.NEUTRALIZE.PARALOOKS.MENU 197818 . 203464) ( -\TEDIT.RECORD.TABLEADERS 203466 . 204775)) (204778 240124 (\TEDIT.SHOW.PAGEFORMATTING 204788 . 218403) - (\TEDITPAGEMENU.CREATE 218405 . 219444) (\TEDIT.APPLY.PAGEFORMATTING 219446 . 231529) ( -TEDIT.UNPARSE.PAGEFORMAT 231531 . 240122)) (240429 268223 (\TEDIT.MENU.INIT 240439 . 268221))))) + (FILEMAP (NIL (10422 34987 (MB.BUTTONEVENTINFN 10432 . 11654) (MB.DISPLAY 11656 . 13613) (MB.SETIMAGE +13615 . 14569) (MB.SELFN 14571 . 16314) (MB.SIZEFN 16316 . 17294) (MB.WHENOPERATEDFN 17296 . 17730) ( +MB.COPYFN 17732 . 18190) (MB.GETFN 18192 . 18930) (MB.PUTFN 18932 . 19809) (MB.SHOWSELFN 19811 . 20844 +) (MBUTTON.CREATE 20846 . 22078) (MBUTTON.CHANGENAME 22080 . 22459) (MBUTTON.FIND.BUTTON 22461 . 23484 +) (MBUTTON.FIND.NEXT.BUTTON 23486 . 24829) (MBUTTON.FIND.NEXT.FIELD 24831 . 27365) (MBUTTON.INIT 27367 + . 28283) (MBUTTON.NEXT.FIELD.AS.NUMBER 28285 . 29217) (MBUTTON.NEXT.FIELD.AS.TEXT 29219 . 29645) ( +MBUTTON.NEXT.FIELD.AS.ATOM 29647 . 30448) (MBUTTON.SET.FIELD 30450 . 32656) (MBUTTON.SET.NEXT.FIELD +32658 . 34049) (MBUTTON.SET.NEXT.BUTTON.STATE 34051 . 34531) (TEDITMENU.STREAM 34533 . 34985)) (35291 +45827 (MB.CREATE.THREESTATEBUTTON 35301 . 36468) (MB.THREESTATE.DISPLAY 36470 . 39176) ( +MB.THREESTATE.SHOWSELFN 39178 . 42101) (MB.THREESTATE.WHENOPERATEDFN 42103 . 43444) ( +MB.THREESTATEBUTTON.FN 43446 . 44765) (THREESTATE.INIT 44767 . 45825)) (45928 65710 ( +MB.CREATE.NWAYBUTTON 45938 . 50007) (MB.NB.DISPLAYFN 50009 . 52277) (MB.NB.WHENOPERATEDFN 52279 . +53427) (MB.NB.SIZEFN 53429 . 57057) (MB.NWAYBUTTON.SELFN 57059 . 59167) (MB.NWAYMENU.NEWBUTTON 59169 + . 59756) (NWAYBUTTON.INIT 59758 . 60607) (MB.NB.PACKITEMS 60609 . 62588) (MB.NWAYBUTTON.ADDITEM 62590 + . 65708)) (65964 74882 (\TEXTMENU.TOGGLE.CREATE 65974 . 67464) (\TEXTMENU.TOGGLE.DISPLAY 67466 . +69899) (\TEXTMENU.TOGGLE.SHOWSELFN 69901 . 70501) (\TEXTMENU.TOGGLE.WHENOPERATEDFN 70503 . 71853) ( +\TEXTMENU.TOGGLEFN 71855 . 73054) (\TEXTMENU.TOGGLE.INIT 73056 . 73887) (\TEXTMENU.SET.TOGGLE 73889 . +74880)) (75134 111443 (DRAWMARGINSCALE 75144 . 78603) (MARGINBAR 78605 . 85466) (MARGINBAR.CREATE +85468 . 88340) (MB.MARGINBAR.SELFN 88342 . 100358) (MB.MARGINBAR.SIZEFN 100360 . 100718) ( +MB.MARGINBAR.DISPLAYFN 100720 . 103522) (MDESCALE 103524 . 104064) (MSCALE 104066 . 104396) ( +MB.MARGINBAR.SHOWTAB 104398 . 106721) (MB.MARGINBAR.TABTRACK 106723 . 108108) (\TEDIT.TABTYPE.SET +108110 . 110556) (MARGINBAR.INIT 110558 . 111441)) (112460 127903 (\TEDIT.MENU.START 112470 . 117922) +(\TEDIT.MENU.BUTTONEVENTFN 117924 . 118408) (\TEXTMENU.DOC.CREATE 118410 . 127901)) (128213 149038 ( +\TEDITMENU.CREATE 128223 . 128519) (\TEDIT.EXPANDED.MENU 128521 . 129602) (MB.DEFAULTBUTTON.FN 129604 + . 133070) (\TEDITMENU.RECORD.UNFORMATTED 133072 . 133405) (MB.DEFAULTBUTTON.ACTIONFN 133407 . 149036) +) (149039 178832 (\TEDIT.CHARLOOKSMENU.CREATE 149049 . 151263) (\TEDIT.EXPANDEDCHARLOOKS.MENU 151265 + . 151975) (\TEDIT.APPLY.BOLDNESS 151977 . 152258) (\TEDIT.APPLY.CHARLOOKS 152260 . 154366) ( +\TEDIT.APPLY.OLINE 154368 . 154645) (\TEDIT.APPLY.UNBREAKABLE 154647 . 155045) (\TEDIT.SHOW.CHARLOOKS +155047 . 157831) (\TEDIT.NEUTRALIZE.CHARLOOKS 157833 . 159097) (\TEDIT.FILL.IN.CHARLOOKS.MENU 159099 + . 166720) (\TEDIT.NEUTRALIZE.CHARLOOKS.MENU 166722 . 169295) (\TEDIT.PARSE.CHARLOOKS.MENU 169297 . +177983) (\TEDIT.APPLY.SLOPE 177985 . 178264) (\TEDIT.APPLY.STRIKEOUT 178266 . 178549) ( +\TEDIT.APPLY.ULINE 178551 . 178830)) (178833 205312 (\TEDITPARAMENU.CREATE 178843 . 179219) ( +\TEDIT.EXPANDEDPARA.MENU 179221 . 179783) (\TEDIT.APPLY.PARALOOKS 179785 . 190501) ( +\TEDIT.SHOW.PARALOOKS 190503 . 198351) (\TEDIT.NEUTRALIZE.PARALOOKS.MENU 198353 . 203999) ( +\TEDIT.RECORD.TABLEADERS 204001 . 205310)) (205313 240659 (\TEDIT.SHOW.PAGEFORMATTING 205323 . 218938) + (\TEDITPAGEMENU.CREATE 218940 . 219979) (\TEDIT.APPLY.PAGEFORMATTING 219981 . 232064) ( +TEDIT.UNPARSE.PAGEFORMAT 232066 . 240657)) (240964 268758 (\TEDIT.MENU.INIT 240974 . 268756))))) STOP diff --git a/library/tedit/TEDIT-MENU.LCOM b/library/tedit/TEDIT-MENU.LCOM index 15708748a7c0e85194b28e6b96ba8243e10b36e4..97d4215d8228fbc8c27931bbb1d5de11ab40eef4 100644 GIT binary patch delta 2254 zcmZuyU1%It6yDu7jZHz*HYDjb#pBwNrjTXs+&h0MVs3V4n@MM9w!3%pQwue1QnP8B zhBUATsu>=xv;a4dSV{0b?!6> zsJf+CB={iSNjL88f}TRr9(4S2sXL1yFoLp?t4ezmy+>11&@_MbP{L4_K2JRJdK-f< zzz`IG%9F5%h2J+2+r8 zgzNqG-FvnNN3V6g^dSCqU$ya4D0E&4*QWL5hEu&$S-9Pw7+$zJaB|H`>Q9YHTe<8C z9b9=_vx!8(^0n4sS0;6TMbveFcr!@?InnrMz4W;y}4JHtyhFiiy^M$(0%pRr3NU`&Hk zj#nxd?IFj@`a{5o28FVSzR(Qc)UqIa(dff8;1qV2BhuwUh8JxCR5zd&FEY_pDDX`0 z@gqPfT5kzYDZyaq4wNt%78?ar)2h2vHCgc7&6YW4)+;Ehmk_1y5>;Wqh2WX~T2aI# zbxs76jFdc^m1z@%BBIR@a?XU3DB33)%RFQt#a#9#Ofz`(`imVZ>TIN#aC{G#8rCD* z9idZ#uda8@DH`;Zh44Ll(Dp>mLj);!z9s}?nW5{kLOWHBA`P=sDgzT z{d}SJ5-6aM^}S93s%3(3glmVS!|1Ak;B7LULkZm?0ae?CHB%suZ{nP^LB;8m=fm<$ zFs$omxSMf(>=c4I50p#7$&COp@kZQhghNz$9;XygbWi2Sr>>-cG7D0|9;?iDr+^?d(Fa6Yf(dUGDC$z>?E^fqtuc7( z`=!IX%POKbio%fqPDUwRbj*i8v!8$6 z)5&GO*-uK7)ti2@TCFTB`t6C+?F(PX2!8Y3*keB;+U?-Km6I(WhoT$3lG6Uua@)1^ z@(*qCZHB@=Tov)Q;P(fOEjl9U5Hw&5) zc4NrtsE-Oo#}g=3Ame)(E`aGY_~gg7gPK;e%OU~r&w(*xYg|TYaN*nbqDmp>d!ob# zx#LD1k0@-^Lrvs}U-q&%Ua(!t(R8A!ve|}^bsHtTzjZ11a5_Gx>sWcgE|xMyry#)4 zEbuPPTpYas2BRS;YYK{nSI%5MJ5!mS1p|q?#f_ltmFe-BnqJ2q$A4ZdO4kwEb%N{I zrjj2zwqYoqi-@mdi8XtIJm7i99RXdjWZig(0LZu;r>tgTCNj2$W2bh~bm%^NVf6B4 z&?GOyt2H%zvgkzC)C}_p!9=t%193D|GonM*!GXd@fZ?S_a8;yLbR)$HP|Jzpz?AM( wHG;o>y0zWXAQk-fDA@rFYffcGr#ffhTxDtu{Mm`|88~-oY8IC6Ju2S%AA&MENB{r; delta 2306 zcmZuyU2GIp6z*&V3O>+Evy@WcunAeJ+0D${duMiw{7h%3cIfQRxHH?OK++UiWEERd zmIs5n8VC^+`Ee2nCh`CeCce0BQ+@CUjSmJ$h&9ppAn`$8^a)>mFrIs7mu@TjuygM@ z-#O>I_x#*HeqM9=mo-<*-Kw6-Pt2xNS*4(`0aY203}` zUv9geT`z5t;QIKu)OVyZjliLj<3KAqolYlUa-upl2~YB(C;B(+92Or`%$7nVY~Gi~dOXZ5R)KztB|^F4l6IcYB0U zr6sr!MElN&Yg&Bn)NfUUVg0?6oo&0Ru7Hy=4c`K)sSpHXX|L#-mhS^)4363bzf`o! zb|L4Mfzk|kr6AgQwW8|*C1_+F3eX5Q3WXP}rd~*7(k!2nXBtH-0FsecfrzF-BdBmg zGzC1v9C;Q9(N<9)M81BD6br5Y$X7GagyZkZ>utsiso7g|pD881C^YghW&t-oCg$ zMoIYZ#l9NJz+fo|+=4Y~6#{G^ip&ab;CqgZu?HQ@iINp=j66^|D~`*(;+ABii|3~& z8P-G*ovlDo0tF*)0Z}rKFN?@JzwcV!YorPYUO>(*Bm+>hIs|s$SiH}WlB(my7Tsm2 zs;jF6tR)RpYZ6hhF!ESE_F)TDMT5L?NUW8t4329Wj#+bDtU3j`A1wKSJv4@EOfKe5 z(HcqSBtW5A7%Eyg<#;}=(RKa)7G6UN!fTrR_@Iu#+2^ZHQ zIm@EGz%!grLq^_q#(-gw^OFJ7saTkffzy^TWD;Qs&jF9ZR2@>sPfeUT0}NXz64ETc zb*`pJx1pv?jhs@I8}H$2f_0FyahMomVp`xh&5)Le1PiIbiKr|x$1xG^U%IgsUxkD@ hF`cZ!iOTdOB;D%Cso5l)n3=AIzbE~W@gHX7Nr(Ud