summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwolfsuit <wolfsuit>2002-02-05 02:25:13 (GMT)
committerwolfsuit <wolfsuit>2002-02-05 02:25:13 (GMT)
commitbcdb604e358027dd76ac168778b14546a8019d8a (patch)
tree32f54ef11288f0dd53eb468b143ef224897cdefc
parentefc846c18b6df17d9dfd3b527214ec413d5f175f (diff)
downloadtk-bcdb604e358027dd76ac168778b14546a8019d8a.zip
tk-bcdb604e358027dd76ac168778b14546a8019d8a.tar.gz
tk-bcdb604e358027dd76ac168778b14546a8019d8a.tar.bz2
Merge with current TOT
Added support for the wm stackorder command Fixed crash when selecting Menu items in the Application menu that we didn't put there. Added first bits of the use of CG for low-level drawing. The line-drawing works, the rest doesn't yet. You have to set the file static useCGDrawing to 1 and rebuild to activate this code.
-rw-r--r--ChangeLog835
-rw-r--r--doc/AddOption.36
-rw-r--r--doc/CanvTkwin.34
-rw-r--r--doc/GetPixels.34
-rw-r--r--doc/Name.34
-rw-r--r--doc/ParseArgv.34
-rw-r--r--doc/getOpenFile.n8
-rw-r--r--doc/menu.n4
-rw-r--r--doc/photo.n27
-rw-r--r--doc/spinbox.n6
-rw-r--r--doc/text.n125
-rw-r--r--doc/winfo.n10
-rw-r--r--doc/wm.n15
-rw-r--r--generic/tk.decls16
-rw-r--r--generic/tk3d.c4
-rw-r--r--generic/tkArgv.c13
-rw-r--r--generic/tkBind.c10
-rw-r--r--generic/tkButton.c10
-rw-r--r--generic/tkCanvLine.c4
-rw-r--r--generic/tkCanvPs.c12
-rw-r--r--generic/tkCanvText.c5
-rw-r--r--generic/tkCanvUtil.c10
-rw-r--r--generic/tkCanvas.c65
-rw-r--r--generic/tkClipboard.c15
-rw-r--r--generic/tkCmds.c20
-rw-r--r--generic/tkConfig.c4
-rw-r--r--generic/tkConsole.c16
-rw-r--r--generic/tkCursor.c6
-rw-r--r--generic/tkDecls.h31
-rw-r--r--generic/tkEntry.c109
-rw-r--r--generic/tkFileFilter.c20
-rw-r--r--generic/tkFocus.c7
-rw-r--r--generic/tkFont.c8
-rw-r--r--generic/tkFrame.c4
-rw-r--r--generic/tkGet.c15
-rw-r--r--generic/tkGrab.c6
-rw-r--r--generic/tkGrid.c28
-rw-r--r--generic/tkImage.c12
-rw-r--r--generic/tkImgBmap.c7
-rw-r--r--generic/tkImgGIF.c4
-rw-r--r--generic/tkImgPhoto.c373
-rw-r--r--generic/tkInt.decls196
-rw-r--r--generic/tkInt.h6
-rw-r--r--generic/tkIntDecls.h367
-rw-r--r--generic/tkIntPlatDecls.h156
-rw-r--r--generic/tkIntXlibDecls.h6
-rw-r--r--generic/tkListbox.c14
-rw-r--r--generic/tkMain.c21
-rw-r--r--generic/tkMenu.c22
-rw-r--r--generic/tkMenubutton.c8
-rw-r--r--generic/tkMessage.c8
-rw-r--r--generic/tkOldConfig.c9
-rw-r--r--generic/tkOption.c15
-rw-r--r--generic/tkPack.c12
-rw-r--r--generic/tkPlace.c7
-rw-r--r--generic/tkPointer.c10
-rw-r--r--generic/tkScale.c4
-rw-r--r--generic/tkSelect.c30
-rw-r--r--generic/tkSquare.c12
-rw-r--r--generic/tkStubInit.c140
-rw-r--r--generic/tkStubLib.c14
-rw-r--r--generic/tkTest.c10
-rw-r--r--generic/tkText.c683
-rw-r--r--generic/tkText.h57
-rw-r--r--generic/tkTextIndex.c6
-rw-r--r--generic/tkTextTag.c49
-rw-r--r--generic/tkWindow.c27
-rw-r--r--library/button.tcl5
-rw-r--r--library/clrpick.tcl14
-rw-r--r--library/console.tcl17
-rw-r--r--library/demos/browse36
-rw-r--r--library/demos/dialog2.tcl4
-rw-r--r--library/demos/entry3.tcl187
-rw-r--r--library/demos/hello6
-rw-r--r--library/demos/image2.tcl48
-rw-r--r--library/demos/ixset137
-rw-r--r--library/demos/labelframe.tcl7
-rw-r--r--library/demos/menu.tcl8
-rw-r--r--library/demos/radio.tcl43
-rw-r--r--library/demos/rmt35
-rw-r--r--library/demos/rolodex78
-rw-r--r--library/demos/spin.tcl55
-rw-r--r--library/demos/tcolor280
-rw-r--r--library/demos/text.tcl18
-rw-r--r--library/demos/timer35
-rw-r--r--library/demos/widget234
-rw-r--r--library/entry.tcl56
-rw-r--r--library/menu.tcl25
-rw-r--r--library/palette.tcl33
-rw-r--r--library/spinbox.tcl260
-rw-r--r--library/text.tcl111
-rw-r--r--library/tk.tcl9
-rw-r--r--library/tkfbox.tcl33
-rw-r--r--library/xmfbox.tcl14
-rw-r--r--mac/MW_TkBuildLibHeader.h7
-rw-r--r--mac/MW_TkBuildLibHeader.pch36
-rw-r--r--mac/MW_TkHeader.pch29
-rw-r--r--mac/MW_TkHeaderCommon.h40
-rwxr-xr-xmac/MW_TkOldImgHeader.h2
-rw-r--r--mac/MW_TkOldImgStaticHeader.h3
-rw-r--r--mac/MW_TkStaticHeader.h7
-rw-r--r--mac/MW_TkStaticHeader.pch36
-rwxr-xr-xmac/MW_TkTestHeader.pch35
-rwxr-xr-xmac/tclets.r262
-rw-r--r--mac/tkMac.h30
-rw-r--r--mac/tkMacAppInit.c8
-rwxr-xr-xmac/tkMacAppearanceStubs.c2
-rw-r--r--mac/tkMacApplication.r53
-rw-r--r--mac/tkMacButton.c17
-rw-r--r--mac/tkMacCursor.c8
-rw-r--r--mac/tkMacDefault.h4
-rw-r--r--mac/tkMacDialog.c34
-rw-r--r--mac/tkMacFont.c10
-rw-r--r--mac/tkMacInit.c125
-rw-r--r--mac/tkMacInt.h28
-rw-r--r--mac/tkMacKeyboard.c5
-rw-r--r--mac/tkMacLibrary.r449
-rw-r--r--mac/tkMacMDEF.r32
-rw-r--r--mac/tkMacMenu.c26
-rw-r--r--mac/tkMacMenus.c12
-rw-r--r--mac/tkMacPort.h17
-rw-r--r--mac/tkMacProjects.sea.hqx6643
-rw-r--r--mac/tkMacResource.r111
-rw-r--r--mac/tkMacScrlbr.c29
-rw-r--r--mac/tkMacSend.c4
-rw-r--r--mac/tkMacShLib.exp764
-rw-r--r--mac/tkMacWindowMgr.c14
-rw-r--r--mac/tkMacWm.c245
-rw-r--r--mac/tkMacXStubs.c8
-rw-r--r--mac/widget.r18
-rw-r--r--macosx/Wish.pbproj/jingham.pbxuser136
-rw-r--r--macosx/Wish.pbproj/project.pbxproj119
-rw-r--r--macosx/tkMacOSXDefault.h4
-rw-r--r--macosx/tkMacOSXDialog.c159
-rw-r--r--macosx/tkMacOSXDraw.c336
-rw-r--r--macosx/tkMacOSXEvent.c4
-rw-r--r--macosx/tkMacOSXHLEvents.c3
-rw-r--r--macosx/tkMacOSXInit.c6
-rw-r--r--macosx/tkMacOSXKeyEvent.c1
-rw-r--r--macosx/tkMacOSXMenu.c29
-rw-r--r--macosx/tkMacOSXMenus.c15
-rw-r--r--macosx/tkMacOSXMouseEvent.c1
-rw-r--r--macosx/tkMacOSXWindowEvent.c1
-rw-r--r--macosx/tkMacOSXWm.c226
-rw-r--r--macosx/tkMacOSXXStubs.c10
-rw-r--r--tests/button.test6
-rw-r--r--tests/defs.tcl3
-rw-r--r--tests/event.test72
-rw-r--r--tests/imgPhoto.test145
-rw-r--r--tests/menu.test24
-rw-r--r--tests/text.test129
-rw-r--r--tests/unixWm.test6
-rw-r--r--tests/winButton.test29
-rw-r--r--tests/wm.test312
-rw-r--r--unix/Makefile.in67
-rwxr-xr-xunix/configure530
-rw-r--r--unix/configure.in59
-rw-r--r--unix/tcl.m4125
-rw-r--r--unix/tkUnix.c6
-rw-r--r--unix/tkUnixCursor.c4
-rw-r--r--unix/tkUnixDefault.h4
-rw-r--r--unix/tkUnixEvent.c4
-rw-r--r--unix/tkUnixInit.c8
-rw-r--r--unix/tkUnixMenu.c6
-rw-r--r--unix/tkUnixSend.c6
-rw-r--r--unix/tkUnixWm.c240
-rw-r--r--win/Makefile.in34
-rwxr-xr-xwin/buildall.vc.bat13
-rwxr-xr-xwin/configure168
-rw-r--r--win/configure.in22
-rw-r--r--win/rc/tk.rc14
-rw-r--r--win/rc/wish.exe.manifest22
-rw-r--r--win/rc/wish.rc14
-rw-r--r--win/rules.vc185
-rw-r--r--win/stubs.c2
-rw-r--r--win/tcl.m447
-rw-r--r--win/tkConfig.sh.in10
-rw-r--r--win/tkWinButton.c360
-rw-r--r--win/tkWinCursor.c4
-rw-r--r--win/tkWinDefault.h4
-rw-r--r--win/tkWinDialog.c459
-rw-r--r--win/tkWinDraw.c8
-rw-r--r--win/tkWinInit.c27
-rw-r--r--win/tkWinInt.h28
-rw-r--r--win/tkWinMenu.c29
-rw-r--r--win/tkWinWm.c371
-rw-r--r--win/tkWinX.c56
187 files changed, 12227 insertions, 7201 deletions
diff --git a/ChangeLog b/ChangeLog
index 9ec92b6..f0ff5ac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,838 @@
+2002-02-04 Jim Ingham <jingham@apple.com>
+
+ * macosx/tkMacOSXWm.c (Tk_WMStackorderToplevel): crab the Mac
+ code for this function, and change it over to work in Carbon.
+ * macosx/tkMacOSXMenu.c (tkMacOSXDispatchMenuCommand): Fix a crash
+ when a menu command isn't found.
+ * macosx/tkMacOSXDraw.c: Preliminary work to use CG for the Tk
+ drawing. There is a compile time switch to turn these on, since they
+ don't all work yet: useCGDrawing. Turn it off for now, unless you
+ want to help make them work.
+
+ TkMacOSXSetUpCGContext: New function - CG equivalent of
+ TkMacOSXSetupGraphicsPort.
+ TkMacOSXReleaseCGContext: New Function - release the context.
+ XDrawLines, XDrawArcs, XFillPolygons: Use the CG drawing. These don't
+ all work yet...
+ * tkMacOSXDialogs.c (HandleInitialDirectory): Helper function - convert to using
+ FSRef's everywhere.
+ * Merge with the current TOT.
+
+2002-02-03 eric melski <ericm@interwoven.com>
+
+ * generic/tkImage.c (Tk_ImageObjCmd): Clean up bogus for loop in
+ [image inuse] subcommand [Bug #485803].
+
+2002-02-01 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * generic/tkCmds.c (Tk_TkObjCmd): don't use 'bool' as an arg as it
+ conflicts with the C99 spec. [Bug #511956] (ingham)
+
+2002-02-01 David Gravereaux <davygrvy@pobox.com>
+
+ * win/makefile.vc: unset macro located in the tktest target
+ caused a failure to build. [Bug 511652]
+
+2002-01-30 Don Porter <dgp@users.sourceforge.net>
+
+ * win/stubs.c (XSetCommand): Overlooked CONSTification.
+
+2002-02-01 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * doc/photo.n: Documented transparency subcommand.
+ * tests/imgPhoto.test (imgPhoto-4.40...imgPhoto-4.68): Tests for
+ the transparency subcommand.
+ * generic/tkImgPhoto.c (ImgPhotoCmd): Added transparency
+ subcommand (see TIP #14.)
+
+2002-01-31 Todd Helfter <tmh@users.sourceforge.net>
+ * generic/tkMenu.c (ConfigureMenuCloneEntries)
+ * tests/menu.test (menu3.68)
+ Correct and test for logic error when cloning menus. [Bug #508988]
+
+2002-01-30 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tk.decls: The POTENTIAL INCOMPATIBILITY in the changing
+ interface of Tk_ParseArgv can now be removed by the -DUSE_NON_CONST
+ compiler flag.
+ * generic/tkDecls.h: make genstubs
+
+2002-01-29 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+
+ * win/tkWinInit.c (TkpGetAppName): TIP 27 fixup. The code now does
+ not write into the CONST path returned by "argv0" and
+ Tcl_SplitPath anymore.
+
+2002-01-28 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/configure: Regen.
+ * unix/configure.in: Don't set TCL_LIB_SPEC and
+ TCL_STUB_LIB_SPEC variables since this breaks
+ the AIX build. This was used in the past to
+ support linking with Tcl from the build dir
+ or the install dir, but it is no longer needed.
+
+2002-01-28 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/Makefile.in: Remove commented out vars.
+ * unix/configure: Regen.
+ * unix/configure.in: Don't subst vars that are already
+ taken care of in SC_LOAD_TCLCONFIG.
+ * unix/tcl.m4: Update from Tcl.
+ * win/configure: Regen.
+ * win/tcl.m4: Update from Tcl.
+
+2001-01-27 Daniel Steffen <das@users.sourceforge.net>
+
+ * generic/tkFileFilter.c:
+ * mac/tkMacInit.c:
+ * mac/tkMacKeyboard.c:
+ * mac/tkMacMenus.c: TIP 27 CONSTification induced changes
+
+2002-01-25 Don Porter <dgp@users.sourceforge.net>
+
+ * All changes below are Patch 505159
+
+ * doc/AddOption.3:
+ * doc/CanvTkWin.3:
+ * doc/GetPixels.3:
+ * doc/Name.3:
+ * doc/ParseArgv.3:
+ * generic/tk.decls (Tk_AddOption,Tk_CanvasGetCoord,Tk_GetPixels,
+ Tk_GetScreenMM,Tk_NameToWindow,Tk_ParseArgv):
+ * generic/tkArgv.c (Tk_ParseArgv):
+ * generic/tkCanvLine.c (ParseArrowShape):
+ * generic/tkCanvUtil.c (Tk_CanvasGetCoord,Tk_CanvasTagsParseProc,
+ Tk_CanvasTagsPrintProc,Tk_GetDash):
+ * generic/tkCanvas.c (ConfigureCanvas):
+ * generic/tkGet.c (Tk_GetPixels,Tk_GetScreenMM):
+ * generic/tkImgPhoto.c (ImgPhotoCmd):
+ * generic/tkMain.c (Tk_MainEx):
+ * generic/tkOldConfig.c (FormatConfigInfo):
+ * generic/tkOption.c (Tk_AddOption):
+ * generic/tkText.c (TextWidgetCmd,TkTextGetTabs,DumpSegment):
+ * generic/tkText.h (TkTextCreateTag):
+ * generic/tkTextTag.c (TkTextCreateTag):
+ * generic/tkWindow.c (Tk_NameToWindow,Initialize):
+ * mac/tkMacCursor.c (FindCursorByName,TkGetCursorByName):
+ * mac/tkMacWm.c (Tk_WmCmd):
+ * unix/tkUnixCursor.c (TkGetCursorByName):
+ * unix/tkUnixSend.c (ValidateName):
+ * unix/tkUnixWm.c (Tk_WmCmd):
+ * win/tkWinCursor.c (TkGetCursorByName):
+ * win/tkWinWm.c (Tk_WmCmd): Updated callers of Tcl_SplitList and
+ Tcl_Merge.
+ * generic/tkDecls.h: make genstubs
+ ***POTENTIAL INCOMPATIBILITY***
+ Includes a source incompatibility in the argv argument of Tcl_ParseArgv.
+
+ * generic/tkBind.c (DeleteVirtualEvent):
+ * generic/tkCanvas.c (ScrollFractions,CanvasWidgetCmd,
+ CanvasUpdateScrollbars):
+ * generic/tkTestTag.c (TkTextTagCmd): Updated callers of
+ Tcl_GetStringResult. Rewrote PrintScrollFractions to
+ ScrollFractions to stop scribbling directly on interp->result.
+
+ * generic/tkInt.decls (TkGetDefaultScreenName,TkpDisplayWarning,
+ TkpOpenDisplay):
+ * generic/tkCanvPs.c (Tk_PostscriptColor,Tk_PostscriptFont):
+ * generic/tkEntry.c (EntrySetValue,EntryValidateChange,ExpandPercents,
+ EntryValueChanged,Tk_EntryObjCmd,DestroyEntry,ConfigureEntry,
+ EntryComputeGeometry,InsertChars,DeleteChars,EntryFetchSelection,
+ EntryTextVarProc,Tk_SpinBoxObjCmd,SpinboxWidgetObjCmd):
+ * generic/tkMain.c (Prompt):
+ * generic/tkMenu.c (MenuVarProc):
+ * generic/tkMenubutton.c (ConfigureMenuButton,MenuButtonTextVarProc):
+ * generic/tkMessage.c (ConfigureMessage,MessageTextVarProc):
+ * generic/tkWindow.c (GetScreen,Initialize):
+ * mac/tkMacInit.c (TkpInit,TkpDisplayWarning):
+ * mac/tkMacXStubs.c (TkGetDefaultScreenName,TkpOpenDisplay):
+ * unix/tkUnix.c (TkGetDefaultScreenName):
+ * unix/tkUnixEvent.c (TkpOpenDisplay):
+ * unix/tkUnixInit.c (TkpGetAppName,TkpDisplayWarning):
+ * unix/tkUnixSend.c (SendEventProc):
+ * win/tkWinInit.c (TkpGetAppName,TkpDisplayWarning):
+ * win/tkWinX.c (TkGetDefaultScreenName,TkpOpenDisplay): Updated
+ callers of Tcl_GetVar, Tcl_GetVar2
+ * generic/tkIntDecls.h: make genstubs
+
+ * generic/tkCanvPs.c (TkCanvPostscriptCmd):
+ * generic/tkImgBmap.c (TkGetBitmapData):
+ * generic/tkOption.c (ReadOptionFile):
+ * mac/tkMacInit.c (TkpInit,TkpGetAppName):
+ * win/tkWinInit.c (TkpGetAppName): Updated callers of
+ Tcl_SplitPath, Tcl_JoinPath, and Tcl_TranslateFileName.
+
+2002-01-21 Jim Ingham <jingham@w098.z064220144.sjc-ca.dsl.cnc.net>
+
+ * macosx/tkMacOSXInit.c (TkpInit): Move ALL the MacOS X specific
+ initialization code into TkpInit so extension writers don't have
+ to do anything special to initialize Tk.
+
+2002-01-18 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * tests/wm.test: Rewrite stackorder tests that
+ deal with toplevels that have the overrideredirect
+ flag set. [Tk bug 492259]
+
+2002-01-18 Don Porter <dgp@users.sourceforge.net>
+
+ * win/tkWinDialog.c: Overlooked Tcl_GetIndexFromObj callers.
+
+2001-01-18 Daniel Steffen <das@users.sourceforge.net>
+
+ * mac/tkMacDialog.c:
+ * mac/tkMacSend.c: TIP 27 CONSTification broke the mac
+ build in a few places.
+
+2002-01-16 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * generic/tkListbox.c (ChangeListboxOffset): improved tracking
+ when scrolling on x axis with entry/text. [Bug #225025] (voskuil)
+
+2002-01-16 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tk3d.c (Tk_GetReliefFromObj):
+ * generic/tkBind.c (Tk_EventObjCmd,HandleEventGenerate):
+ * generic/tkButton.c (ButtonWidgetObjCmd):
+ * generic/tkCanvas.c (CanvasWidgetCmd,FindItems):
+ * generic/tkClipboard.c (Tk_ClipboardObjCmd):
+ * generic/tkCmds.c (Tk_BellObjCmd,Tk_TkObjCmd,Tk_TkwaitObjCmd,
+ Tk_UpdateObjCmd,Tk_WinfoObjCmd,Tk_WmObjCmd):
+ * generic/tkConfig.c (DoObjConfig):
+ * generic/tkEntry.c (EntryWidgetObjCmd,SpinboxWidgetObjCmd):
+ * generic/tkFocus.c (Tk_FocusObjCmd):
+ * generic/tkFont.c (Tk_FocusObjCmd,ConfigAttributesObj):
+ * generic/tkFrame.c (Tk_FrameObjCmd):
+ * generic/tkGet.c (Tk_GetAnchorFromObj,Tk_GetJustifyFromObj):
+ * generic/tkGrab.c (Tk_GrabObjCmd):
+ * generic/tkGrid.c (Tk_GridObjCmd,GridRowColumnConfigureCommand,
+ GridSlavesCommand,ConfigureSlaves):
+ * generic/tkImage.c (Tk_ImageObjCmd):
+ * generic/tkImgBmap.c (ImgBmapCmd):
+ * generic/tkImgGIF.c (FileReadGIF):
+ * generic/tkImgPhoto.c (ImgPhotoCmd):
+ * generic/tkListbox.c (ListboxWidgetObjCmd,ListboxSelectionSubCmd,
+ GetListboxIndex):
+ * generic/tkMenu.c (MenuWidgetObjCmd,MenuAddOrInsert,MenuCmd,
+ ConfigureMenu,CloneMenu):
+ * generic/tkMenubutton.c (MenuButtonWidgetObjCmd):
+ * generic/tkMessage.c (MessageWidgetObjCmd):
+ * generic/tkOption.c (Tk_OptionObjCmd):
+ * generic/tkPack.c (Tk_PackObjCmd,ConfigureSlaves):
+ * generic/tkPlace.c (Tk_PlaceObjCmd):
+ * generic/tkScale.c (ScaleWidgetObjCmd):
+ * generic/tkSelect.c (Tk_SelectionObjCmd):
+ * generic/tkSquare.c (SquareWidgetObjCmd):
+ * generic/tkTest.c (TestobjconfigObjCmd,TrivialConfigObjCmd,
+ TestfontObjCmd): Updates to handle change in type of tablePtr
+ argument of Tcl_GetIndexFromObj(Struct) from (char **) to
+ (CONST char **). [TIP 27] [Patch 504705]
+
+ * generic/tkCanvText.c (GetSelText):
+ * generic/tkEntry.c (Entry{FetchSelection,Setvalue},ExpandPercents):
+ * generic/tkSelect.c (HandleTclCommand):
+ * generic/tkText.c (TextSearchCmd):
+ * generic/tkTextIndex.c (TkTextMakeByteIndex,TkTextIndexBackChars):
+ * mac/tkMacFont.c (Tk_MeasureChars,BreakLine):
+ * unix/tkUnixMenu.c (DrawMenuUnderline):
+ * win/tkWinMenu.c (GetEntryText,DrawMenuUnderline): Updated
+ callers of Tcl_Utf* and Tcl_Regexp* APIs to reflect TIP 27 API
+ changes (see Tcl Patch 471509). [Patch 471513]
+
+2002-01-16 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/configure: Regen.
+ * unix/tcl.m4: Update from Tcl.
+ * win/configure: Regen.
+ * win/tcl.m4: Update from Tcl.
+
+2002-01-04 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tkMain.c (Tk_MainEx): Updated callers of CONSTified
+ Tcl interfaces Tcl_EvalFile and TclGetStartupScriptFileName.
+
+ * generic/tkConsole.c (ConsoleOutputProc,TkConsolePrint):
+ * generic/tkInt.h (TkConsolePrint):
+ * mac/tkMacAppInit.c (TkConsolePrint): Updated Tk's console to
+ CONSTified channel driver interface. [Tcl Patch 503565, Tk Patch
+ 503983]
+
+2002-01-11 Mo DeJong <mdejong@users.sourceforge.net>
+
+ Use ${libdir} instead of ${exec_prefix}/lib. [Tcl bug 489370]
+
+ * unix/configure: Regen.
+ * unix/configure.in: Define and use libdir.
+ * win/configure: Regen.
+ * win/configure.in: Define libdir.
+
+2002-01-11 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/Makefile.in: Burn Tcl and Tk build
+ directories into tktest executable to avoid crashes
+ caused by ld loading a previously installed version
+ of the tcl or tk shared libraries. Remove setting
+ of LD_LIBRARY_PATH, LIBPATH, and SHLIB_PATH
+ before running tktest since it should no
+ longer be required.
+
+2002-01-11 Mo DeJong <mdejong@users.sourceforge.net>
+
+ Enable use of Tcl stubs when building Tk as
+ a shared library. This should fix the build
+ under AIX. [Bugs 220858, 220955, 220921]
+
+ * unix/Makefile.in: Add TCL_STUB_LIB_SPEC and
+ TCL_STUB_LIB_FLAG variables.
+ * unix/configure: Regen.
+ * unix/configure.in: Pass TCL_STUB_LIB_SPEC into
+ Makefile and use it when linking the tk shared library.
+ Define USE_TCL_STUBS when building shared. Subst
+ TCL_STUB_LIB_SPEC and TCL_STUB_LIB_FLAG.
+
+2002-01-08 D. Richard Hipp <drh@hwaci.com>
+
+ * win/tkWinMenu.c: Fix the following bug: If you select an entry
+ on a cascade menu then the next time the parent menu is posted, the
+ cascade entry was active. Also, if you traverse to a disabled entry
+ using keystrokes and press ENTER on the disabled entry, then that
+ entry appears active the next time the menu is posted. The same
+ patch fixes both problems.
+
+2002-01-04 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tkBind.c (TkBindFree):
+ * generic/tkGrid.c (ResolveConstraints,CheckSlotData,DestroyGrid):
+ * generic/tkSelect.c (Tk_DeleteSelHandler,TkSelDeadWindow): Replaced
+ Tcl_Free calls with ckfree so that memory debugging is fully supported.
+
+2001-12-28 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * test/winButton.test:
+ * win/tkWinButton.c: added updated patch #463234 which returns the
+ default sizing behavior (not so native), but enables native L&F
+ with negative sizing (-11 for example).
+
+ * library/text.tcl (tk::TextButton1): made text receive focus even
+ in disabled state for Windows to show selection and allow
+ mouse-wheel scrolling.
+
+ * win/tkWinInit.c (TkpDisplayWarning): added Tcl_DStringFree's
+
+ * win/tkWinInt.h:
+ * win/tkWinX.c: added TkWinProcs that represent a function table
+ to switch between unicode and ansi procs on Windows. This is
+ analogous to the TclWinProcs. Using Tcl_WinUtfToTChar, we can
+ easily take advantage of using unicode functions where available
+ without having to switch on the platform id each time.
+
+ * win/tkWinWm.c (InitWindowClass): corrected init routines to
+ allow unicode in window titles on Windows (for Win2K/XP).
+ (TkWmStackorderToplevel): Corrected casts to enable debug compile
+
+ * win/configure: regen'ed
+ * win/tcl.m4: added shell32.lib to link libs, as these are
+ necessary for new directory chooser (when enabled).
+
+ * win/tkWinDialog.c (Tk_MessageBoxObjCmd): use MessageBoxW for
+ proper display of unicode errors.
+ Added patch which uses new OLE based directory chooser. This
+ still has some issues, so is disabled by default. [Patch #468139]
+ (ColorDlgHookProc) Corrected ability to use unicode chars in
+ tk_chooseColor -title.
+
+2001-12-27 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * win/tkWinInit.c (TkpDisplayWarning): Use MessageBoxW in case the
+ error displayed has unicode chars. [Bug #485986]
+
+2001-12-27 Daniel Steffen <das@users.sourceforge.net>
+
+ * mac/tkMacInit.c:
+ * mac/tkMacResource.r: synced up tkInit features to unix/win:
+ use existing tkInit proc if defined. Added spinbox.tcl resource.
+ Used TclGetEnv() instead of Tcl_GetVar2(interp, env)
+ * mac/tkMacApplication.r:
+ * mac/tkMacLibrary.r: minor version resources cleanup
+
+2001-12-27 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * generic/tkButton.c (ButtonTextVarProc): guard against being
+ called while the *button/label is being deleted. [Bug #490051]
+
+ * library/entry.tcl:
+ * library/spinbox.tcl:
+ * library/text.tcl: added extra checks against bug #220269 and
+ made spinbox reuse more of the entry procedure code.
+
+2001-12-20 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/configure: Regen.
+ * unix/tcl.m4: Update from Tcl.
+
+2001-12-19 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/configure: Regen.
+ * unix/tcl.m4: Update from Tcl.
+
+2001-12-18 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/configure: Regen.
+ * unix/configure.in: Move EXP file changes over from
+ Tcl configure script to fix AIX build with gcc. [Bug 220955]
+
+2001-12-18 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/Makefile.in:
+ * win/Makefile.in: Use $(MAKE) instead of make
+ in the tcltest rule.
+
+2001-12-18 Don Porter <dgp@users.sourceforge.net>
+
+ * tests/event.test (event-click-drag-1.2): Corrected test that
+ failed on Solaris/CDE due to text scrolling. [Bug 413735]
+
+2001-12-18 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * library/spinbox.tcl (ButtonDown): added catch to ignore
+ possible error in after cancel when Priv(afterId) isn't defined.
+
+ * doc/spinbox.n: corrected spin(up|down) -> button(up|down)
+
+2001-12-14 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * doc/getOpenFile.n: Documented change.
+ * library/tkfbox.tcl (SetFilter): Added code to guess the correct
+ default extension from whatever value was selected in the
+ filetypes option menu. Adapted from code by Chris Nelson
+ submitted in Patch #492220.
+
+2001-12-12 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * unix/tkUnixWm.c (TkWmStackorderToplevelWrapperMap): added static
+
+2001-12-05 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * generic/tkText.c:
+ * generic/tkText.h: changed TkTextEditType enums to be prefaced
+ with TK_EDIT_ to prevent name collision.
+
+2001-12-05 Daniel Steffen <das@users.sourceforge.net>
+
+ * mac/tkMacWm.c: mac implementation of wm stackorder
+ (patch 481148, TIP 74)
+
+2001-12-03 Mo DeJong <mdejong@users.sourceforge.net>
+
+ Add TK patch 481148 to implement TIP 74, the
+ wm stackorder command.
+
+ * doc/winfo.n: Update documentation for the winfo
+ children command to indicate that top-level windows
+ are not returned in stacking order.
+ * doc/wm.n: Add documentation for wm stackorder.
+ * generic/tkInt.decls (TkWmStackorderToplevel):
+ Add decl for new function.
+ * generic/tkIntDecls.h: Regen.
+ * generic/tkStubInit.c: Regen.
+ * tests/unixWm.test: Add stackorder command to test
+ for wm command usage message.
+ * tests/wm.test: Add new set of tests for generic
+ window manager methods.
+ * unix/tkUnixWm.c (Tk_WmCmd,
+ TkWmStackorderToplevelWrapperMap,
+ TkWmStackorderToplevel): Add unix implementation of
+ new wm stackorder command.
+ * win/tkWinWm.c (Tk_WmCmd,
+ TkWmStackorderToplevelEnumProc,
+ TkWmStackorderToplevelWrapperMap,
+ TkWmStackorderToplevel): Add windows implementation
+ of new wm stackorder command.
+
+2001-12-03 David Gravereaux <davygrvy@pobox.com>
+
+ * win/makefile.vc: install target changes by request from
+ Ryan Casey <scfiead@hotmail.com>.
+
+2001-11-30 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/widget: Further overhauling; shrank fonts, made
+ better use of fonts, added an icon, fixed the About box. Prompted
+ by Bug #487442 from Vincent Wartelle.
+
+2001-11-29 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/palette.tcl (tk_setPalette): Added heuristic to guess
+ from the background whether to use black or white for the
+ foreground when not told specifically. Suggested by Chris Nelson,
+ this makes the command fit the documentation better!
+
+2001-11-27 David Gravereaux <davygrvy@pobox.com>
+
+ * win/makefile.vc: Fixed CAT32 target. cat.c is located in the Tcl
+ source, not the Tk source.
+
+2001-11-27 D. Richard Hipp <drh@hwaci.com>
+
+ * library/menu.tcl: Do not allow keyboard traversal of torn-off
+ menus to visit the (invisible) tearoff bar.
+
+2001-11-26 D. Richard Hipp <drh@hwaci.com>
+
+ * win/tkWinMenu.c: disabled menu items show the activebackground
+ color in their background. This change makes menu behavior
+ consistent with what native windows does.
+
+2001-11-24 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/Makefile.in: Add comments to better describe
+ TCL_EXE and when it should be available. Add
+ rule that prints message about running `make genstubs`
+ when tkStubInit.c is out of date.
+ * win/Makefile.in: Add TCL_TOOL_DIR and TCL_EXE
+ variables to better match the Tcl Makefile. Add
+ genstubs rule so tkSTubInit.c can be regenerated.
+
+2001-11-24 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * win/configure: Regen.
+ * win/configure.in: Don't AC_SUBST CFLAGS_DEBUG, CFLAGS_OPTIMIZE,
+ or CFLAGS_WARNING since it is now done in SC_CONFIG_CFLAGS.
+ * win/tcl.m4 (SC_CONFIG_CFLAGS): AC_SUBST DL_LIBS, CFLAGS_DEBUG,
+ CFLAGS_OPTIMIZE, and CFLAGS_WARNING.
+
+2001-11-23 Daniel Steffen <das@users.sourceforge.net>
+
+ Up-port to 8.4 of mac code changes for 8.3.3 & various new
+ changes for 8.4, some already backported to 8.3.4 (patch #435660)
+
+ * library/tk.tcl: added <Key-F1> binding for <<Undo>> on the mac (TIP26)
+
+ * library/button.tcl: fixed undefined $Priv(repeated) error for button
+ without -repeatdelay support
+
+ * generic/tkConsole.c:
+ * library/console.tcl:
+ * mac/tkMacInit.c:
+ * mac/tkMacResource.r: corrected how mac deals with tcl library
+ files present both in resources and in $tk_library directory.
+
+ * generic/tkConsole.c: crashing bug fix when printing to console
+ at program exit after the console has already been closed.
+ Now setting gStdoutInterp=NULL in ConsoleClose().
+
+ * mac/tkMacInit.c: correct use of Tcl_JoinPath in tk_library
+ initialization
+
+ * mac/tkMacMenu.c: special MDEF_PROC_OFFSET only needed for
+ exactly one specific version of the MWERKS 68k compiler .
+
+ * mac/tkMacShLib.exp: removed file
+
+ * unix/Makefile.in: removed reference to .exp files
+
+ * mac/MWTkBuildLibHeader.h:
+ * mac/MW_TkBuildLibHeader.pch:
+ * mac/MW_TkHeaderCommon.h:
+ * mac/MW_TkOldImgStaticHeader.h:
+ * mac/MW_TkStaticHeader.h:
+ * mac/MW_TkStaticHeader.pch: new precompiled header files
+
+ * mac/MW_TkHeader.pch:
+ * mac/MW_TkOldImgHeader.h:
+ * mac/MW_TkTestHeader.pch: revised precompiled header handling: now
+ include a common header file 'MW_TkHeaderCommon.h' from all .pch files,
+ the .pch files themselves now only setup #defines (e.g. BUILD_tk,
+ STATIC_BUILD, TCL_DEBUG, TCL_THREADS) like in makefiles on other
+ platforms.
+
+ * mac/tkMac.h:
+ * mac/tkMacPort.h:
+ * mac/tkMacInt.h: use of BUILD_tk and TCL_STORAGE_CLASS like on other
+ platforms, standardize #include'd files to what's done on other
+ platforms, removed use of #pragma export, changed extern to EXTERN
+ where appropriate to enable DLL export via the TCL_STORAGE_CLASS
+ mechanism.
+
+ * mac/tkMacAppearanceStubs.c: removed use of #pragma export
+
+ * mac/widget.r: new resource file for 'Widget Demos'
+
+ * mac/tkMacProjects.sea.hqx: updated mac build project files:
+ build support for CodeWarrior Pro6, UnivIntf 3.4 & shared runtime
+ libraries (see Tcl ChangeLog for details).
+ changed weak linking so that CFM68k binaries now work on all OS
+ versions from the free 7.5.5 onwards, with or without AppearanceMgr
+ and/or NavigationMgr installed.
+ added target to automatically build 'Widget Demos'
+ included XML versions of the projects for CW Pro5 or Pro7 users.
+ use compat/strtod.c instead of MSL's strtod()
+
+ * generic/tkInt.decls:
+ * generic/tkIntDecls.h:
+ * generic/tkIntPlatDecls.h:
+ * generic/tkStubInit.c:
+
+ * mac/tkMacInt.h: MAC_TCL tk stub support was badly broken due to
+ multiply defined (mac specific) names in tk.decls and tkInt.decls,
+ removed the duplicates from the internal unsupported interfaces
+ "interface tkInt" and "interface tkIntPlat"; moved declaration of
+ TkpIsWindowFloating from tkMacInt.h to tkInt.decls: interface tkIntPlat.
+ - these changes to the stub tables might require you to recompile your
+ Tk extensions if they turn out to reference one of the removed routines
+ in the wrong table (should be unlikely).
+
+ * generic/tkMain.c: MAC_TCL: workaround for broken/non-standard isatty
+ on MW Pro6, #include <unistd.h> instead of defining isatty
+
+ * generic/tkPointer.c: MAC_TCL: #include tkMacInt.h
+
+ * generic/tkStubLib.c: MAC_TCL: removed obsolete special casing of mac
+ headers, standardize #include'd files to what's done on other platforms
+
+ * mac/tclets.r:
+ * mac/tkMacWindowMgr.c:
+ * mac/tkMacScrlbr.c:
+ * mac/tkMacMenu.c:
+ * mac/tkMacMenus.c:
+ * mac/tkMacFont.c:
+ * mac/tkMacDialog.c:
+ * mac/tkMacButton.c: renamed obsolete apple API names to modern
+ equivalents; UH3.4 support: added #include <ControlDefinitions.h>;
+ fixed munged non-ASCII chars in sources due to bungled latin1<->mac
+ roman encoding in CVS repository.
+
+ * mac/tkMacDialog.c: added support for -filetypes option (fix for bug
+ tcl #221636); added update event handling for background windows while
+ in a NavigationMgr dialog; fixed nasty bug when calling CustomGetFile
+ (missing addr operator) (fix for bug tk #220911 & tcl #219367); renamed
+ routines conflicting with standard MoreFiles headers (see Tcl ChangeLog
+ for details)
+
+ * mac/tkMacApplication.r:
+ * mac/tkMacLibrary.r:
+ * mac/tkMacResource.r: fixed obsolete copyrights/dates in version
+ strings, updated version strings to standard usage, added support for
+ '(Support Libraries)' subfolder for shared runtime libraries in
+ unmerged binaries, commented out demo setting of "Tcl Environment
+ Variables"; reorganized resources among these files to avoid
+ multiple copies in applications and shared libraries, the script
+ libraries/Xcursors etc are now no longer duplicated in Wish but are
+ only included in the resources of Tk.shlb.
+
+ * mac/tkMacMenu.c:
+ * mac/tkMacMDEF.r: changes to support MW Pro 6 68k (vers 0x2400 only)
+ compiler producing different offset to start of MDEF; fix to static 68k
+ presence testing when calling the custom MDEF
+
+ * mac/tkMacWm.c.c:
+ * mac/tkMacWindowMgr.c: added/fixed AppearanceMgr checks; override
+ AppearanceMgr version detection on static 68k to ensure static 68k Wish
+ runs on PPCs with recent AppearanceMgr
+
+ * mac/tkMacButton.c: fixed misplaced/missing variable initialization.
+
+2001-11-20 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * generic/tkText.c (TextGetText): reworked to use DString for
+ improved speed. (callewaert, darley)
+ (DestroyText): plugged mem leak when not clearing stack (callewaert)
+ (TextGetText): more efficient string size calculation (darley)
+
+2001-11-19 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/entry3.tcl: New demo showing off validation and
+ password entry.
+
+ * library/demos/widget: Some reorganization to make the code
+ simpler, plus a new entry demo.
+
+2001-11-17 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * win/tkWinButton.c (TkpComputeButtonGeometry): corrected the
+ default size of Windows buttons to conform to the Windows style.
+ This changes the default size of buttons on Windows.
+ [Patch #463234] (nelson)
+ **** POTENTIAL VISUAL INCOMPATABILITY ****
+
+2001-11-16 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * library/menu.tcl: corrected menu traversal code on Unix to
+ better handle entering cascades. [Patch #481219] (oleinick)
+
+2001-11-16 David Gravereaux <davygrvy@pobox.com>
+
+ * win/makefile.vc: Install target repaired.
+
+2001-11-15 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/image2.tcl: Many improvements to this
+ image-viewing demo; now uses labelframes and tk_chooseDirectory
+
+ * library/palette.tcl (::tk::RecolorTree): Made this work better
+ with CDE, which does some extremely annoying things with the
+ option database that interact badly with Tk's way of handling
+ options.
+
+ * doc/text.n: Overhauled the documentation of undo to make it
+ easier to understand.
+ * library/tk.tcl (::tk::EventMotifBindings): Added Emacs-like undo
+ binding, but not behaviour (we separate undo and redo.)
+ * library/demos/text.tcl: Show off our undo capability!
+
+2001-11-12 David Gravereaux <davygrvy@pobox.com>
+
+ * win/mkd.bat:
+ * win/rmd.bat: Removed -kb CVS attribute and added changes
+ from Llyod Lim for better stability. [Patch #456761]
+
+ * win/rules.vc(new):
+ * win/buildall.vc.bat(new):
+ * win/makefile.vc: large rewrite following Tcl's makefile.vc as
+ a guide and Patch #456761. Appears BugFree(tm).
+
+2001-11-12 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * doc/text.n:
+ * generic/tkText.c:
+ * generic/tkText.h:
+ * generic/tkTextTag.c:
+ * library/text.tcl:
+ * library/tk.tcl:
+ * mac/tkMacDefault.h:
+ * tests/text.test:
+ * unix/tkUnixDefault.h:
+ * win/tkWinDefault.h: added TIP #26 implementation of simple
+ built-in undo/redo of text editing in the text widget.
+ [Patch #458879] (callewaert)
+
+2001-11-12 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/menu.tcl: Show off -compound support in menus.
+
+ * library/demos/radio.tcl: Added some code to both show off the
+ extra capabilities of the buttons and also show what can be done
+ with compound images on the sly.
+
+2001-11-10 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/Makefile.in:
+ * win/Makefile.in: Add "make gdb" target. This target
+ can run wish inside either gdb or insight.
+
+2001-11-09 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * library/clrpick.tcl: changed a few parameters so that the full
+ 0..255 range could be accessed via the mouse. [Bug #478498]
+
+ * unix/configure:
+ * unix/tcl.m4: added -lc to AIX libs, fixed path to ldAix
+
+ * win/configure:
+ * win/tcl.m4:
+ * win/makefile.vc: add comctl32.lib to build libs.
+ * win/tkWinX.c (TkWinXInit): added InitCommonControlsEx call.
+ * win/rc/tk.rc:
+ * win/rc/wish.rc:
+ * win/rc/wish.exe.manifest: added resources that specify using v6
+ of the MS Common Controls library when available (WinXP+). This
+ enables use of the themeable widgets (like scrollbars) to be used
+ in Tk. [Patch #478933]
+
+2001-11-09 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/configure:
+ * unix/tcl.m4: Update from Tcl.
+
+2001-11-08 Mo DeJong <mdejong@users.sourceforge.net>
+
+ * unix/Makefile.in:
+ Avoid adding libc to the LIBS and WISH_LIBS
+ variables since it is not needed when linking with CC.
+ If required when linking with LD it should be done
+ on a case by case basis in tcl.m4.
+
+2001-11-05 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/dialog2.tcl: Typo-fix.
+ * library/demos/browse, library/demos/ixset, library/demos/rolodex:
+ Installation does version number fixup, so we shouldn't. Thanks
+ to wohnivec@iol.cz for pointing these (thankfully minor) problems
+ out.
+
+2001-10-30 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/widget: Integrated labelframe item into the labels
+ section and added a spinbox demo to the (retitled) entry section.
+
+ * library/demos/labelframe.tcl: Adjusted so as to show off the
+ labelframe widget to better effect and have a better description.
+
+ * library/demos/spin.tcl: New demo to show off spinbox capabilities.
+
+ * library/demos/rolodex: Changes up-ported from core-8-3-1-branch
+ to make the script use more 8.*-isms, but not menus due to the way
+ the context help system works.
+
+ * library/demos/ixset: Changed to use the labelframe widget and
+ the grid geometry manager.
+
+2001-10-29 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * library/demos/browse: Changes up-ported from core-8-3-1-branch
+ to make the script much more robust, particularly when neither the
+ current version of wish or the script are on the path.
+
+ * library/demos/hello: Added emacs trailing tag-line.
+
+ * library/demos/tcolor: Changes up-ported from core-8-3-1-branch
+ to make the script compliant with current good practise, as well
+ as extensive use of the new labelframe widget.
+
+ * library/demos/timer: Changes up-ported from core-8-3-1-branch to
+ make the script look and work better.
+
+ * library/demos/rmt: Changes up-ported from core-8-3-1-branch to
+ use more 8.* features and make the demo script more generally
+ useful to people.
+
+2001-10-23 Donal K. Fellows <fellowsd@cs.man.ac.uk>
+
+ * generic/tkCursor.c (Tk_GetCursorFromData): Fixed uninit nextPtr
+ field. [adapted from Patch 473875]
+ (GetCursor): Removed double-assignment to nextPtr field.
+
+2001-10-19 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * library/console.tcl: removed transpose ability until the console
+ can get a proper rewrite of tag handling.
+
+2001-10-18 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * tests/defs.tcl: removed threaded build warning under X.
+
+ * library/console.tcl (ConsoleOutput): fixed undefined widget
+ argument.
+
+2001-10-16 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * library/xmfbox.tcl: fixed filtering in motif file dialog.
+ [Patch #469670] (nelson)
+
+ * generic/tkWindow.c (OpenIM): Added simple XIM patch to enable
+ basic XIM input on Unix. [Patch #412727] (fabian)
+
+2001-10-15 Jeff Hobbs <jeffh@ActiveState.com>
+
+ * unix/configure:
+ * unix/configure.in:
+ * win/configure:
+ * win/configure.in:
+ * win/tkConfig.sh.in: reworked to be a little cleaner in
+ comparison to each other, and to AC_SUBST even empty vars for
+ win/tkConfig.sh
+
2001-10-12 Todd M. Helfter <tmh@purdue.edu>
* ChangeLog:
diff --git a/doc/AddOption.3 b/doc/AddOption.3
index d6c7ca5..bb36b47 100644
--- a/doc/AddOption.3
+++ b/doc/AddOption.3
@@ -2,7 +2,7 @@
'\" Copyright (c) 1998-2000 by Scriptics Corporation.
'\" All rights reserved.
'\"
-'\" RCS: @(#) $Id: AddOption.3,v 1.1 2000/04/24 19:00:14 ericm Exp $
+'\" RCS: @(#) $Id: AddOption.3,v 1.1.8.1 2002/02/05 02:25:13 wolfsuit Exp $
'\"
'\"
.so man.macros
@@ -19,9 +19,9 @@ void
.SH ARGUMENTS
.AP Tk_Window tkwin in
Token for window.
-.AP char *name in
+.AP "CONST char" *name in
Multi-element name of option.
-.AP char *value in
+.AP "CONST char" *value in
Value of option.
.AP int priority in
Overall priority level to use for option.
diff --git a/doc/CanvTkwin.3 b/doc/CanvTkwin.3
index bc9490c..6d44e07 100644
--- a/doc/CanvTkwin.3
+++ b/doc/CanvTkwin.3
@@ -4,7 +4,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: CanvTkwin.3,v 1.2 1998/09/14 18:22:45 stanton Exp $
+'\" RCS: @(#) $Id: CanvTkwin.3,v 1.2.24.1 2002/02/05 02:25:13 wolfsuit Exp $
'\"
.so man.macros
.TH Tk_CanvasTkwin 3 4.1 Tk "Tk Library Procedures"
@@ -38,7 +38,7 @@ Tk_OptionPrintProc *\fBTk_CanvasTagsPrintProc\fR;
A token that identifies a canvas widget.
.AP Tcl_Interp *interp in/out
Interpreter to use for error reporting.
-.AP char *string in
+.AP "CONST char" *string in
Textual description of a canvas coordinate.
.AP double *doublePtr out
Points to place to store a converted coordinate.
diff --git a/doc/GetPixels.3 b/doc/GetPixels.3
index 3df2985..5ac106d 100644
--- a/doc/GetPixels.3
+++ b/doc/GetPixels.3
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: GetPixels.3,v 1.3 1999/04/16 01:51:08 stanton Exp $
+'\" RCS: @(#) $Id: GetPixels.3,v 1.3.18.1 2002/02/05 02:25:13 wolfsuit Exp $
'\"
.so man.macros
.TH Tk_GetPixelsFromObj 3 8.1 Tk "Tk Library Procedures"
@@ -42,7 +42,7 @@ units and pixels.
.AP Tcl_Obj *objPtr in/out
String value specifies a distance on the screen;
internal rep will be modified to cache converted distance.
-.AP char *string in
+.AP "CONST char" *string in
Same as \fIobjPtr\fR except specification of distance is passed as
a string.
.VE
diff --git a/doc/Name.3 b/doc/Name.3
index 0dd4c2a..94c18d0 100644
--- a/doc/Name.3
+++ b/doc/Name.3
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: Name.3,v 1.2 1998/09/14 18:22:52 stanton Exp $
+'\" RCS: @(#) $Id: Name.3,v 1.2.24.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH Tk_Name 3 "" Tk "Tk Library Procedures"
@@ -30,7 +30,7 @@ Tk_Window
Token for window.
.AP Tcl_Interp *interp out
Interpreter to use for error reporting.
-.AP char *pathName in
+.AP "CONST char" *pathName in
Character string containing path name of window.
.BE
diff --git a/doc/ParseArgv.3 b/doc/ParseArgv.3
index 2ed9034..0d86958 100644
--- a/doc/ParseArgv.3
+++ b/doc/ParseArgv.3
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: ParseArgv.3,v 1.2 1998/09/14 18:22:53 stanton Exp $
+'\" RCS: @(#) $Id: ParseArgv.3,v 1.2.24.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH Tk_ParseArgv 3 "" Tk "Tk Library Procedures"
@@ -28,7 +28,7 @@ no Tk options will be processed.
.AP int argcPtr in/out
Pointer to number of arguments in argv; gets modified to hold
number of unprocessed arguments that remain after the call.
-.AP char **argv in/out
+.AP "CONST char" **argv in/out
Command line arguments passed to main program. Modified to
hold unprocessed arguments that remain after the call.
.AP Tk_ArgvInfo *argTable in
diff --git a/doc/getOpenFile.n b/doc/getOpenFile.n
index 26625d2..ba14e1c 100644
--- a/doc/getOpenFile.n
+++ b/doc/getOpenFile.n
@@ -4,7 +4,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: getOpenFile.n,v 1.8 2000/07/25 21:14:35 jenglish Exp $
+'\" RCS: @(#) $Id: getOpenFile.n,v 1.8.6.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH tk_getOpenFile n 4.2 Tk "Tk Built-In Commands"
@@ -42,7 +42,11 @@ Specifies a string that will be appended to the filename if the user
enters a filename without an extension. The defaut value is the empty
string, which means no extension will be appended to the filename in
any case. This option is ignored on the Macintosh platform, which
-does not require extensions to filenames.
+does not require extensions to filenames,
+.VS 8.4
+and the UNIX implementation guesses reasonable values for this from
+the \fB\-filetypes\fR option when this is not supplied.
+.VE 8.4
.TP
\fB\-filetypes\fR \fIfilePatternList\fR
If a \fBFile types\fR listbox exists in the file dialog on the particular
diff --git a/doc/menu.n b/doc/menu.n
index 0bdd2f1..771d15f 100644
--- a/doc/menu.n
+++ b/doc/menu.n
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: menu.n,v 1.6 2001/10/12 13:30:31 tmh Exp $
+'\" RCS: @(#) $Id: menu.n,v 1.6.2.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH menu n 4.1 Tk "Tk Built-In Commands"
@@ -428,7 +428,7 @@ Specifies a Tcl command to execute when the menu entry is invoked.
Not available for separator or tear-off entries.
.TP
.VS 8.4
-.fB\-compound \fIvalue\fR
+\fB\-compound \fIvalue\fR
Specifies whether the menu entry should display both an image and text,
and if so, where the image should be placed relative to the text.
Valid values for this option are \fBbottom\fR, \fBcenter\fR,
diff --git a/doc/photo.n b/doc/photo.n
index 5840473..c33a413 100644
--- a/doc/photo.n
+++ b/doc/photo.n
@@ -9,7 +9,7 @@
'\" Department of Computer Science,
'\" Australian National University.
'\"
-'\" RCS: @(#) $Id: photo.n,v 1.7 2001/02/13 21:52:45 ericm Exp $
+'\" RCS: @(#) $Id: photo.n,v 1.7.4.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH photo n 4.0 Tk "Tk Built-In Commands"
@@ -31,7 +31,11 @@ can be supplied from
C code through a procedural interface. At present, only GIF and PPM/PGM
formats are supported, but an interface exists to allow additional
image file formats to be added easily. A photo image is transparent
-in regions where no image data has been supplied.
+in regions where no image data has been supplied
+.VS 8.4
+or where it has been set transparent by the \fBtransparency set\fB
+subcommand.
+.VE 8.4
.SH "CREATING PHOTOS"
.PP
@@ -308,6 +312,21 @@ not noticeable, but if it is a problem, this command can be used to
recalculate the dithered image in each window where the image is
displayed.
.TP
+\fIimageName \fBtransparency \fIsubcommand ?arg arg ...?\fR
+.VS 8.4
+Allows examination and manipulation of the transparency information in
+the photo image. Several subcommands are available:
+.RS
+.TP
+\fIimageName \fBtransparency get \fIx y\fR
+Returns a boolean indicating if the pixel at (\fIx\fR,\fIy\fR) is
+transparent.
+\fIimageName \fBtransparency get \fIx y boolean\fR
+Makes the pixel at (\fIx\fR,\fIy\fR) transparent if \fIboolean\fR is
+true, and makes that pixel opaque otherwise.
+.RE
+.VE 8.4
+.TP
\fIimageName \fBwrite \fIfilename\fR ?\fIoption value(s) ...\fR?
Writes image data from \fIimageName\fR to a file named \fIfilename\fR.
The following options may be specified:
@@ -367,6 +386,10 @@ for the \fB\-format\fR option must begin with the complete name of the
requested handler, and may contain additional information following
that, which the handler can use, for example, to specify which variant
to use of the formats supported by the handler.
+.VS 8.4
+Note that not all image handlers may support writing transparency data
+to a file, even where the target image format does.
+.VE 8.4
.SH "COLOR ALLOCATION"
.PP
diff --git a/doc/spinbox.n b/doc/spinbox.n
index 97d2325..b15d7d8 100644
--- a/doc/spinbox.n
+++ b/doc/spinbox.n
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: spinbox.n,v 1.2 2000/08/25 06:58:33 ericm Exp $
+'\" RCS: @(#) $Id: spinbox.n,v 1.2.6.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH spinbox n 8.4 Tk "Tk Built-In Commands"
@@ -323,7 +323,7 @@ given by \fIindex\fR. Returns an empty string.
\fIpathName \fBidentify\fI x y\fR
Returns the name of the window element corresponding to coordinates
\fIx\fR and \fIy\fR in the spinbox. Return value is one of:
-\fBnone\fR, \fBspindown\fR, \fBspinup\fR, \fBentry\fR.
+\fBnone\fR, \fBbuttondown\fR, \fBbuttonup\fR, \fBentry\fR.
.TP
\fIpathName \fBindex\fI index\fR
Returns the numerical index corresponding to \fIindex\fR.
@@ -333,7 +333,7 @@ Insert the characters of \fIstring\fR just before the character
indicated by \fIindex\fR. Returns an empty string.
.TP
\fIpathName \fBinvoke\fI element\fR
-Causes the specified element, either \fBspindown\fR or \fBspinup\fR,
+Causes the specified element, either \fBbuttondown\fR or \fBbuttonup\fR,
to be invoked, triggering the action associated with it.
.TP
\fIpathName \fBscan\fR \fIoption args\fR
diff --git a/doc/text.n b/doc/text.n
index bd67d57..6dbf160 100644
--- a/doc/text.n
+++ b/doc/text.n
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: text.n,v 1.9 2001/08/01 16:21:11 dgp Exp $
+'\" RCS: @(#) $Id: text.n,v 1.9.2.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH text n 4.0 Tk "Tk Built-In Commands"
@@ -20,7 +20,7 @@ text, tk_textCopy, tk_textCut, tk_textPaste \- Create and manipulate text widget
\fBtk_textCopy\fR \fIpathName\fR
\fBtk_textCut\fR \fIpathName\fR
\fBtk_textPaste\fR \fIpathName\fR
-.VE
+.VE 8.4
.SO
\-background \-highlightthickness \-relief
\-borderwidth \-insertbackground \-selectbackground
@@ -32,6 +32,12 @@ text, tk_textCopy, tk_textCut, tk_textPaste \- Create and manipulate text widget
\-highlightcolor \-pady \-yscrollcommand
.SE
.SH "WIDGET-SPECIFIC OPTIONS"
+.OP \-autoseparators autoSseparators AutoSeparators
+.VS 8.4
+Specifies a boolean that says whether separators are automatically
+inserted in the undo stack. Only meaningful when the \fB\-undo\fR
+option is true.
+.VE 8.4
.OP \-height height Height
Specifies the desired height for the window, in units of characters
in the font given by the \fB\-font\fR option.
@@ -89,6 +95,11 @@ options in tags.
If no \fB\-tabs\fR option is specified, or if it is specified as
an empty list, then Tk uses default tabs spaced every eight
(average size) characters.
+.OP \-undo undo Undo
+.VS 8.4
+Specifies a boolean that says whether the undo mechanism is active or
+not.
+.VE 8.4
.OP \-width width Width
Specifies the desired width for the window in units of characters
in the font given by the \fB\-font\fR option.
@@ -121,10 +132,8 @@ path name of the new window.
.PP
A text widget displays one or more lines of text and allows that
text to be edited.
-.VS
Text widgets support four different kinds of annotations on the
text, called tags, marks, embedded windows or embedded images.
-.VE
Tags allow different portions of the text
to be displayed with different fonts and colors.
In addition, Tcl commands can be associated with tags so
@@ -142,11 +151,14 @@ The third form of annotation allows arbitrary windows to be
embedded in a text widget.
See EMBEDDED WINDOWS below for more details.
.PP
-.VS
The fourth form of annotation allows Tk images to be embedded in a text
widget.
See EMBEDDED IMAGES below for more details.
-.VE
+.PP
+.VS 8.4
+The text widget also has a built-in undo/redo mechanism.
+See UNDO MECHANISM below for more details.
+.VE 8.4
.SH INDICES
.PP
@@ -203,13 +215,11 @@ Indicates the position of the embedded window whose name is
This form generates an error if there is no embedded window
by the given name.
.TP 12
-.VS
\fIimageName\fR
Indicates the position of the embedded image whose name is
\fIimageName\fR.
This form generates an error if there is no embedded image
by the given name.
-.VE
.PP
If the \fIbase\fP could match more than one of the above forms, such
as a \fImark\fP and \fIimageName\fP both having the same value, then
@@ -602,7 +612,6 @@ stretched.
\fB\-window \fIpathName\fR
Specifies the name of a window to display in the annotation.
-.VS
.SH "EMBEDDED IMAGES"
.PP
The final form of annotation in text widgets is an embedded image.
@@ -670,7 +679,6 @@ It may have any of the usual forms defined for a screen distance.
\fIPixels\fR specifies the amount of extra space to leave on
the top and on the bottom of the embedded image.
It may have any of the usual forms defined for a screen distance.
-.VE
.SH "THE SELECTION"
.PP
@@ -688,6 +696,9 @@ characters with the \fBsel\fR tag.
If the selection is claimed away by another application or by another
window within this application, then the \fBsel\fR tag will be removed
from all characters in the text.
+.IP [4]
+Whenever the \fBsel\fR tag range changes a virtual event
+\fB<<Selection>>\fR is generated.
.PP
The \fBsel\fR tag is automatically defined when a text widget is
created, and it may not be deleted with the ``\fIpathName \fBtag delete\fR''
@@ -708,6 +719,47 @@ The \fBinsert\fR mark represents the position of the insertion
cursor, and the insertion cursor will automatically be drawn at
this point whenever the text widget has the input focus.
+.SH "THE MODIFIED FLAG"
+The text widget can keep track of changes to the content of the widget
+by means of the modified flag. Inserting or deleting text will set
+this flag. The flag can be queried, set and cleared programatically
+as well. Whenever the flag changes state a \fB<<Modified>>\fR virtual
+event is generated. See the \fBedit modified\fR widget command for
+more details.
+
+.SH "THE UNDO MECHANISM"
+.PP
+.VS 8.4
+The text widget has an unlimited undo and redo mechanism (when the
+\fB-undo\fR widget option is true) which records every insert and
+delete action is recorded on a stack.
+.PP
+Boundaries (called "separators") are inserted between edit actions.
+The purpose of these separators is to group inserts and deletes into
+one compound edit action. When undoing a change everything between
+two separators will be undone. The undone changes are then moved to
+the redo stack, so that an undone edit can be redone again. The redo
+stack is cleared whenever new edit actions are recorded on the undo
+stack. The undo and redo stacks can be cleared to keep their depth
+under control.
+.PP
+Separators are inserted automatically when the \fB-autoseparators\fR
+widget option is true. You can insert separators programatically as
+well. If a separator is already present at the top of the undo stack
+no other will inserted. That means that two separators on the undo
+stack are always separated by at least one insert or delete action.
+.PP
+The undo mechanism is also linked to the modified flag. This means
+that undoing or redoing changes can take a modified text widget back
+to the unmodified state or vice versa. The modified flag will be set
+to automatically to the appropriate state. This automatic coupling
+does not work when the modified flag has been set by the user, until
+the flag has been reset again.
+.PP
+See below for the \fBedit\fR widget command that controls the undo
+mechanism.
+.VE 8.4
+
.SH "WIDGET COMMAND"
.PP
The \fBtext\fR command creates a new Tcl command whose
@@ -784,7 +836,7 @@ When debugging is turned on, the drawing routines of the text widget
set the global variables \fBtk_textRedraw\fR and \fBtk_textRelayout\fR
to the lists of indices that are redrawn. The values of these variables
are tested by Tk's test suite.
-.VE
+.VE 8.4
.TP
\fIpathName \fBdelete \fIindex1 \fR?\fIindex2\fR?
Delete a range of characters from the text.
@@ -876,6 +928,42 @@ In this case an empty string is returned, and you must query the
window by its index position to get more information.
.RE
.TP
+\fIpathName \fBedit \fIoption \fR?\fIarg arg ...\fR?
+.VS 8.4
+This command controls the undo mechanism and the modified flag. The
+exact behavior of the command depends on the \fIoption\fR argument
+that follows the \fBedit\fR argument. The following forms of the
+command are currently supported:
+.RS
+.TP
+\fIpathName \fBedit modified ?\fIboolean\fR?
+If \fIboolean\fR is not specified, returns the modified flag of the
+widget. The insert, delete, edit undo and edit redo commands or the
+user can set or clear the modified flag. If \fIboolean\fR is
+specified, sets the modified flag of the widget to \fIboolean\fR.
+.TP
+\fIpathName \fBedit redo\fR
+When the \fB-undo\fR option is true, reapplies the last undone edits
+provided no other edits were done since then. Generates an error when
+the redo stack is empty. Does nothing when the \fB-undo\fR option is
+false.
+.TP
+\fIpathName \fBedit reset\fR
+Clears the undo and redo stacks.
+.TP
+\fIpathName \fBedit separator\fR
+Inserts a separator (boundary) on the undo stack. Does nothing when
+the \fB-undo\fR option is false.
+.TP
+\fIpathName \fBedit undo\fR
+Undoes the last edit action when the \fB-undo\fR option is true. An
+edit action is defined as all the insert and delete commands that are
+recorded on the undo stack in between two separators. Generates an
+error when the undo stack is empty. Does nothing when the \fB-undo\fR
+option is false.
+.RE
+.VE 8.4
+.TP
\fIpathName \fBget \fIindex1 \fR?\fIindex2\fR?
Return a range of characters from the text.
The return value will be all the characters in the text starting
@@ -1569,14 +1657,14 @@ The F16 key (labelled Copy on many Sun workstations) or Meta-w
copies the selection in the widget to the clipboard, if there is a selection.
.VS 8.4
This action is carried out by the command \fBtk_textCopy\fR.
-.VE
+.VE 8.4
.IP [21]
The F20 key (labelled Cut on many Sun workstations) or Control-w
copies the selection in the widget to the clipboard and deletes
the selection.
.VS 8.4
This action is carried out by the command \fBtk_textCut\fR.
-.VE
+.VE 8.4
If there is no selection in the widget then these keys have no effect.
.IP [22]
The F18 key (labelled Paste on many Sun workstations) or Control-y
@@ -1584,7 +1672,7 @@ inserts the contents of the clipboard at the position of the
insertion cursor.
.VS 8.4
This action is carried out by the command \fBtk_textPaste\fR.
-.VE
+.VE 8.4
.IP [23]
The Delete key deletes the selection, if there is one in the widget.
If there is no selection, it deletes the character to the right of
@@ -1613,6 +1701,15 @@ Control-x deletes whatever is selected in the text widget.
.IP [31]
Control-t reverses the order of the two characters to the right of
the insertion cursor.
+.IP [32]
+.VS 8.4
+Control-z (and Control-underscore on UNIX when \fBtk_strictMotif\fR is
+true) undoes the last edit action if the \fB-undo\fR option is true.
+Does nothing otherwise.
+.IP [33]
+Control-Z (or Control-y on Windows) reapplies the last undone edit
+action if the \fB-undo\fR option is true. Does nothing otherwise.
+.VE 8.4
.PP
If the widget is disabled using the \fB\-state\fR option, then its
view can still be adjusted and text can still be selected,
diff --git a/doc/winfo.n b/doc/winfo.n
index f9e4de1..6774882 100644
--- a/doc/winfo.n
+++ b/doc/winfo.n
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: winfo.n,v 1.2 1998/09/14 18:23:00 stanton Exp $
+'\" RCS: @(#) $Id: winfo.n,v 1.2.24.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH winfo n 4.3 Tk "Tk Built-In Commands"
@@ -46,9 +46,11 @@ color map for \fIwindow\fR.
.TP
\fBwinfo children \fIwindow\fR
Returns a list containing the path names of all the children
-of \fIwindow\fR. The list is in stacking order, with the lowest
-window first. Top-level windows are returned as children
-of their logical parents.
+of \fIwindow\fR. Top-level windows are returned as children
+of their logical parents. The list is in stacking order, with
+the lowest window first, except for Top-level windows which
+are not returned in stacking order. Use the \fBwm stackorder\fR
+command to query the stacking order of Top-level windows.
.TP
\fBwinfo class \fIwindow\fR
Returns the class name for \fIwindow\fR.
diff --git a/doc/wm.n b/doc/wm.n
index 4c08be0..693ccba 100644
--- a/doc/wm.n
+++ b/doc/wm.n
@@ -5,7 +5,7 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: wm.n,v 1.6 2001/01/02 19:13:02 andreas_kupries Exp $
+'\" RCS: @(#) $Id: wm.n,v 1.6.4.1 2002/02/05 02:25:14 wolfsuit Exp $
'\"
.so man.macros
.TH wm n 4.3 Tk "Tk Built-In Commands"
@@ -400,6 +400,19 @@ source of the window's current size, or an empty string if
no source has been specified yet. Most window managers interpret
``no source'' as equivalent to \fBprogram\fR.
.TP
+\fBwm stackorder \fIwindow\fR ?\fIisabove|isbelow\fR? \fI?window?\fR
+The stackorder command returns a list of toplevel windows
+in stacking order, from lowest to highest. When a single toplevel
+window is passed, the returned list recursively includes all of the
+window's children that are toplevels. Only those toplevels
+that are currently mapped to the screen are returned.
+The stackorder command can also be used to determine if one
+toplevel is positioned above or below a second toplevel.
+When two window arguments separated by either \fIisabove\fR or
+\fIisbelow\fR are passed, a boolean result indicates whether
+or not the first window is currently above or below the second
+window in the stacking order.
+.TP
\fBwm state \fIwindow\fR ?newstate?
If \fInewstate\fR is specified, the window will be set to the new state,
otherwise it returns the current state of \fIwindow\fR: either
diff --git a/generic/tk.decls b/generic/tk.decls
index dee5c13..d125ca2 100644
--- a/generic/tk.decls
+++ b/generic/tk.decls
@@ -11,7 +11,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: tk.decls,v 1.15.2.3 2001/11/11 17:58:53 wolfsuit Exp $
+# RCS: @(#) $Id: tk.decls,v 1.15.2.4 2002/02/05 02:25:14 wolfsuit Exp $
library tk
@@ -55,8 +55,8 @@ declare 4 generic {
}
declare 5 generic {
- void Tk_AddOption (Tk_Window tkwin, char *name, \
- char *value, int priority)
+ void Tk_AddOption (Tk_Window tkwin, CONST char *name, \
+ CONST char *value, int priority)
}
declare 6 generic {
@@ -78,7 +78,7 @@ declare 8 generic {
declare 9 generic {
int Tk_CanvasGetCoord (Tcl_Interp *interp, \
- Tk_Canvas canvas, char *str, double *doublePtr)
+ Tk_Canvas canvas, CONST char *str, double *doublePtr)
}
declare 10 generic {
@@ -528,7 +528,7 @@ declare 103 generic {
declare 104 generic {
int Tk_GetPixels (Tcl_Interp *interp, \
- Tk_Window tkwin, char *str, int *intPtr)
+ Tk_Window tkwin, CONST char *str, int *intPtr)
}
declare 105 generic {
@@ -551,7 +551,7 @@ declare 108 generic {
declare 109 generic {
int Tk_GetScreenMM (Tcl_Interp *interp, \
- Tk_Window tkwin, char *str, double *doublePtr)
+ Tk_Window tkwin, CONST char *str, double *doublePtr)
}
declare 110 generic {
@@ -692,7 +692,7 @@ declare 140 generic {
declare 141 generic {
Tk_Window Tk_NameToWindow (Tcl_Interp *interp, \
- char *pathName, Tk_Window tkwin)
+ CONST char *pathName, Tk_Window tkwin)
}
declare 142 generic {
@@ -703,7 +703,7 @@ declare 142 generic {
declare 143 generic {
int Tk_ParseArgv (Tcl_Interp *interp, \
- Tk_Window tkwin, int *argcPtr, char **argv, \
+ Tk_Window tkwin, int *argcPtr, CONST84 char **argv, \
Tk_ArgvInfo *argTable, int flags)
}
diff --git a/generic/tk3d.c b/generic/tk3d.c
index 4106745..28ec01d 100644
--- a/generic/tk3d.c
+++ b/generic/tk3d.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tk3d.c,v 1.11 2001/08/15 15:44:35 dkf Exp $
+ * RCS: @(#) $Id: tk3d.c,v 1.11.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tk3d.h"
@@ -20,7 +20,7 @@
* used by Tk_GetReliefFromObj.
*/
-static char *reliefStrings[] = {"flat", "groove", "raised",
+static CONST char *reliefStrings[] = {"flat", "groove", "raised",
"ridge", "solid", "sunken",
(char *) NULL};
diff --git a/generic/tkArgv.c b/generic/tkArgv.c
index 7f35368..1a29ba3 100644
--- a/generic/tkArgv.c
+++ b/generic/tkArgv.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkArgv.c,v 1.3 1999/04/16 01:51:10 stanton Exp $
+ * RCS: @(#) $Id: tkArgv.c,v 1.3.18.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -67,7 +67,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
* NULL means ignore Tk option specs. */
int *argcPtr; /* Number of arguments in argv. Modified
* to hold # args left in argv at end. */
- char **argv; /* Array of arguments. Modified to hold
+ CONST char **argv; /* Array of arguments. Modified to hold
* those that couldn't be processed here. */
Tk_ArgvInfo *argTable; /* Array of option descriptions */
int flags; /* Or'ed combination of various flag bits,
@@ -77,7 +77,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
/* Pointer to the current entry in the
* table of argument descriptions. */
Tk_ArgvInfo *matchPtr; /* Descriptor that matches current argument. */
- char *curArg; /* Current argument */
+ CONST char *curArg; /* Current argument */
register char c; /* Second character of current arg (used for
* quick check for matching; use 2nd char.
* because first char. will almost always
@@ -202,7 +202,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
if (argc == 0) {
goto missingArg;
} else {
- *((char **)infoPtr->dst) = argv[srcIndex];
+ *((CONST char **)infoPtr->dst) = argv[srcIndex];
srcIndex++;
argc--;
}
@@ -239,7 +239,8 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
}
break;
case TK_ARGV_FUNC: {
- typedef int (ArgvFunc)_ANSI_ARGS_((char *, char *, char *));
+ typedef int (ArgvFunc) _ANSI_ARGS_ ((char *, char *,
+ CONST char *));
ArgvFunc *handlerProc;
handlerProc = (ArgvFunc *) infoPtr->src;
@@ -252,7 +253,7 @@ Tk_ParseArgv(interp, tkwin, argcPtr, argv, argTable, flags)
}
case TK_ARGV_GENFUNC: {
typedef int (ArgvGenFunc)_ANSI_ARGS_((char *, Tcl_Interp *,
- char *, int, char **));
+ char *, int, CONST char **));
ArgvGenFunc *handlerProc;
handlerProc = (ArgvGenFunc *) infoPtr->src;
diff --git a/generic/tkBind.c b/generic/tkBind.c
index d6df238..7d9682a 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkBind.c,v 1.18.2.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkBind.c,v 1.18.2.3 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -810,7 +810,7 @@ TkBindFree(mainPtr)
bindInfoPtr = (BindInfo *) mainPtr->bindInfo;
DeleteVirtualEventTable(&bindInfoPtr->virtualEventTable);
bindInfoPtr->deleted = 1;
- Tcl_EventuallyFree((ClientData) bindInfoPtr, Tcl_Free);
+ Tcl_EventuallyFree((ClientData) bindInfoPtr, TCL_DYNAMIC);
mainPtr->bindInfo = NULL;
}
@@ -2617,7 +2617,7 @@ Tk_EventObjCmd(clientData, interp, objc, objv)
Tk_Window tkwin;
VirtualEventTable *vetPtr;
TkBindInfo bindInfo;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"add", "delete", "generate", "info",
NULL
};
@@ -2941,7 +2941,7 @@ DeleteVirtualEvent(interp, vetPtr, virtString, eventString)
eventPSPtr = FindSequence(interp, &vetPtr->patternTable, NULL,
eventString, 0, 0, &eventMask);
if (eventPSPtr == NULL) {
- char *string;
+ CONST char *string;
string = Tcl_GetStringResult(interp);
return (string[0] != '\0') ? TCL_ERROR : TCL_OK;
@@ -3186,7 +3186,7 @@ HandleEventGenerate(interp, mainWin, objc, objv)
Tk_Window tkwin, tkwin2;
TkWindow *mainPtr;
unsigned long eventMask;
- static char *fieldStrings[] = {
+ static CONST char *fieldStrings[] = {
"-when", "-above", "-borderwidth", "-button",
"-count", "-delta", "-detail", "-focus",
"-height",
diff --git a/generic/tkButton.c b/generic/tkButton.c
index 3e835fb..e2a731c 100644
--- a/generic/tkButton.c
+++ b/generic/tkButton.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkButton.c,v 1.13 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkButton.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkButton.h"
@@ -481,7 +481,7 @@ static Tk_OptionSpec *optionSpecs[] = {
* into a single enumerated type used to dispatch the widget command.
*/
-static char *commandNames[][8] = {
+static CONST char *commandNames[][8] = {
{"cget", "configure", (char *) NULL},
{"cget", "configure", "flash", "invoke", (char *) NULL},
{"cget", "configure", "deselect", "flash", "invoke", "select",
@@ -942,9 +942,9 @@ static void
DestroyButton(butPtr)
TkButton *butPtr; /* Info about button widget. */
{
+ butPtr->flags |= BUTTON_DELETED;
TkpDestroyButton(butPtr);
- butPtr->flags |= BUTTON_DELETED;
if (butPtr->flags & REDRAW_PENDING) {
Tcl_CancelIdleCall(TkpDisplayButton, (ClientData) butPtr);
}
@@ -1625,6 +1625,10 @@ ButtonTextVarProc(clientData, interp, name1, name2, flags)
char *name;
Tcl_Obj *valuePtr;
+ if (butPtr->flags & BUTTON_DELETED) {
+ return (char *) NULL;
+ }
+
name = Tcl_GetString(butPtr->textVarNamePtr);
/*
diff --git a/generic/tkCanvLine.c b/generic/tkCanvLine.c
index 9a0c369..ac56c50 100644
--- a/generic/tkCanvLine.c
+++ b/generic/tkCanvLine.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvLine.c,v 1.9 2001/07/03 06:03:44 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvLine.c,v 1.9.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include <stdio.h>
@@ -1872,7 +1872,7 @@ ParseArrowShape(clientData, interp, tkwin, value, recordPtr, offset)
LineItem *linePtr = (LineItem *) recordPtr;
double a, b, c;
int argc;
- char **argv = NULL;
+ CONST char **argv = NULL;
if (offset != Tk_Offset(LineItem, arrowShapeA)) {
panic("ParseArrowShape received bogus offset");
diff --git a/generic/tkCanvPs.c b/generic/tkCanvPs.c
index 940b754..85f3194 100644
--- a/generic/tkCanvPs.c
+++ b/generic/tkCanvPs.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvPs.c,v 1.7 2000/04/25 01:03:06 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvPs.c,v 1.7.8.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -128,7 +128,7 @@ static CONST char * CONST prolog[]= {
\n\
% This is a standard prolog for Postscript generated by Tk's canvas\n\
% widget.\n\
-% RCS: @(#) $Id: tkCanvPs.c,v 1.7 2000/04/25 01:03:06 hobbs Exp $\n\
+% RCS: @(#) $Id: tkCanvPs.c,v 1.7.8.1 2002/02/05 02:25:14 wolfsuit Exp $\n\
\n\
% The definitions below just define all of the variables used in\n\
% any of the procedures here. This is needed for obscure reasons\n\
@@ -470,7 +470,8 @@ TkCanvPostscriptCmd(canvasPtr, interp, argc, argv)
int result;
Tk_Item *itemPtr;
#define STRING_LENGTH 400
- char string[STRING_LENGTH+1], *p;
+ char string[STRING_LENGTH+1];
+ CONST char *p;
time_t now;
size_t length;
Tk_Window tkwin = canvasPtr->tkwin;
@@ -967,7 +968,7 @@ Tk_PostscriptColor(interp, psInfo, colorPtr)
*/
if (psInfoPtr->colorVar != NULL) {
- char *cmdString;
+ CONST char *cmdString;
cmdString = Tcl_GetVar2(interp, psInfoPtr->colorVar,
Tk_NameOfColor(colorPtr), 0);
@@ -1047,9 +1048,10 @@ Tk_PostscriptFont(interp, psInfo, tkfont)
Tcl_DStringInit(&ds);
if (psInfoPtr->fontVar != NULL) {
- char *list, **argv;
+ CONST char *list;
int argc;
double size;
+ CONST char **argv;
char *name;
name = Tk_NameOfFont(tkfont);
diff --git a/generic/tkCanvText.c b/generic/tkCanvText.c
index ef57473..43730cd 100644
--- a/generic/tkCanvText.c
+++ b/generic/tkCanvText.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvText.c,v 1.10 2001/08/17 21:08:28 drh Exp $
+ * RCS: @(#) $Id: tkCanvText.c,v 1.10.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include <stdio.h>
@@ -1376,7 +1376,8 @@ GetSelText(canvas, itemPtr, offset, buffer, maxBytes)
{
TextItem *textPtr = (TextItem *) itemPtr;
int byteCount;
- char *text, *selStart, *selEnd;
+ char *text;
+ CONST char *selStart, *selEnd;
Tk_CanvasTextInfo *textInfoPtr = textPtr->textInfoPtr;
if ((textInfoPtr->selectFirst < 0) ||
diff --git a/generic/tkCanvUtil.c b/generic/tkCanvUtil.c
index 5ec5eb7..595180b 100644
--- a/generic/tkCanvUtil.c
+++ b/generic/tkCanvUtil.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCanvUtil.c,v 1.5 1999/12/16 21:57:35 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvUtil.c,v 1.5.8.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -189,7 +189,7 @@ int
Tk_CanvasGetCoord(interp, canvas, string, doublePtr)
Tcl_Interp *interp; /* Interpreter for error reporting. */
Tk_Canvas canvas; /* Canvas to which coordinate applies. */
- char *string; /* Describes coordinate (any screen
+ CONST char *string; /* Describes coordinate (any screen
* coordinate form may be used here). */
double *doublePtr; /* Place to store converted coordinate. */
{
@@ -376,7 +376,7 @@ Tk_CanvasTagsParseProc(clientData, interp, tkwin, value, widgRec, offset)
{
register Tk_Item *itemPtr = (Tk_Item *) widgRec;
int argc, i;
- char **argv;
+ CONST char **argv;
Tk_Uid *newPtr;
/*
@@ -454,7 +454,7 @@ Tk_CanvasTagsPrintProc(clientData, tkwin, widgRec, offset, freeProcPtr)
return (char *) itemPtr->tagPtr[0];
}
*freeProcPtr = TCL_DYNAMIC;
- return Tcl_Merge(itemPtr->numTags, (char **) itemPtr->tagPtr);
+ return Tcl_Merge(itemPtr->numTags, (CONST char **) itemPtr->tagPtr);
}
@@ -777,7 +777,7 @@ Tk_GetDash(interp, value, dash)
* store dash information. */
{
int argc, i;
- char **largv, **argv = NULL;
+ CONST char **largv, **argv = NULL;
char *pt;
if ((value==(char *) NULL) || (*value==0) ) {
diff --git a/generic/tkCanvas.c b/generic/tkCanvas.c
index 48cd329..f8bf769 100644
--- a/generic/tkCanvas.c
+++ b/generic/tkCanvas.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: tkCanvas.c,v 1.16 2001/04/03 04:40:31 hobbs Exp $
+ * RCS: @(#) $Id: tkCanvas.c,v 1.16.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
/* #define USE_OLD_TAG_SEARCH 1 */
@@ -299,9 +299,8 @@ static Tk_Item * NextItem _ANSI_ARGS_((TagSearch *searchPtr));
#endif /* USE_OLD_TAG_SEARCH */
static void PickCurrentItem _ANSI_ARGS_((TkCanvas *canvasPtr,
XEvent *eventPtr));
-static void PrintScrollFractions _ANSI_ARGS_((int screen1,
- int screen2, int object1, int object2,
- char *string));
+static Tcl_Obj * ScrollFractions _ANSI_ARGS_((int screen1,
+ int screen2, int object1, int object2));
#ifdef USE_OLD_TAG_SEARCH
static void RelinkItems _ANSI_ARGS_((TkCanvas *canvasPtr,
Tcl_Obj *tag, Tk_Item *prevPtr));
@@ -527,7 +526,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
#endif /* USE_OLD_TAG_SEARCH */
int index;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"addtag", "bbox", "bind", "canvasx",
"canvasy", "cget", "configure", "coords",
"create", "dchars", "delete", "dtag",
@@ -776,7 +775,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
command = Tk_GetBinding(interp, canvasPtr->bindingTable,
object, Tcl_GetStringFromObj(argv[3], NULL));
if (command == NULL) {
- char *string;
+ CONST char *string;
string = Tcl_GetStringResult(interp);
/*
@@ -1620,7 +1619,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
}
case CANV_SCAN: {
int x, y, gain=10;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"mark", "dragto", NULL
};
@@ -1668,7 +1667,7 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
}
case CANV_SELECT: {
int index, optionindex;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"adjust", "clear", "from", "item", "to", NULL
};
enum options {
@@ -1816,10 +1815,11 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
double fraction;
if (argc == 2) {
- PrintScrollFractions(canvasPtr->xOrigin + canvasPtr->inset,
+ Tcl_SetObjResult(interp, ScrollFractions(
+ canvasPtr->xOrigin + canvasPtr->inset,
canvasPtr->xOrigin + Tk_Width(canvasPtr->tkwin)
- canvasPtr->inset, canvasPtr->scrollX1,
- canvasPtr->scrollX2, Tcl_GetStringResult(interp));
+ canvasPtr->scrollX2));
} else {
char **args = GetStringsFromObjs(argc, argv);
type = Tk_GetScrollInfo(interp, argc, args, &fraction, &count);
@@ -1859,10 +1859,11 @@ CanvasWidgetCmd(clientData, interp, argc, argv)
double fraction;
if (argc == 2) {
- PrintScrollFractions(canvasPtr->yOrigin + canvasPtr->inset,
+ Tcl_SetObjResult(interp,ScrollFractions(\
+ canvasPtr->yOrigin + canvasPtr->inset,
canvasPtr->yOrigin + Tk_Height(canvasPtr->tkwin)
- canvasPtr->inset, canvasPtr->scrollY1,
- canvasPtr->scrollY2, Tcl_GetStringResult(interp));
+ canvasPtr->scrollY2));
} else {
char **args = GetStringsFromObjs(argc, argv);
type = Tk_GetScrollInfo(interp, argc, args, &fraction, &count);
@@ -2062,7 +2063,7 @@ ConfigureCanvas(interp, canvasPtr, argc, argv, flags)
canvasPtr->scrollY2 = 0;
if (canvasPtr->regionString != NULL) {
int argc2;
- char **argv2;
+ CONST char **argv2;
if (Tcl_SplitList(canvasPtr->interp, canvasPtr->regionString,
&argc2, &argv2) != TCL_OK) {
@@ -3972,7 +3973,7 @@ FindItems(interp, canvasPtr, argc, argv, newTag, first, searchPtrPtr)
Tk_Item *itemPtr;
Tk_Uid uid;
int index;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"above", "all", "below", "closest",
"enclosed", "overlapping", "withtag", NULL
};
@@ -5205,12 +5206,12 @@ GridAlign(coord, spacing)
/*
*----------------------------------------------------------------------
*
- * PrintScrollFractions --
+ * ScrollFractions --
*
* Given the range that's visible in the window and the "100%
- * range" for what's in the canvas, print a string containing
- * the scroll fractions. This procedure is used for both x
- * and y scrolling.
+ * range" for what's in the canvas, return a list of two
+ * doubles representing the scroll fractions. This procedure
+ * is used for both x and y scrolling.
*
* Results:
* The memory pointed to by string is modified to hold
@@ -5223,17 +5224,15 @@ GridAlign(coord, spacing)
*----------------------------------------------------------------------
*/
-static void
-PrintScrollFractions(screen1, screen2, object1, object2, string)
+static Tcl_Obj *
+ScrollFractions(screen1, screen2, object1, object2)
int screen1; /* Lowest coordinate visible in the window. */
int screen2; /* Highest coordinate visible in the window. */
int object1; /* Lowest coordinate in the object. */
int object2; /* Highest coordinate in the object. */
- char *string; /* Two real numbers get printed here. Must
- * have enough storage for two %g
- * conversions. */
{
double range, f1, f2;
+ char buffer[2*TCL_DOUBLE_SPACE+2];
range = object2 - object1;
if (range <= 0) {
@@ -5252,7 +5251,8 @@ PrintScrollFractions(screen1, screen2, object1, object2, string)
f2 = f1;
}
}
- sprintf(string, "%g %g", f1, f2);
+ sprintf(buffer, "%g %g", f1, f2);
+ return Tcl_NewStringObj(buffer, -1);
}
/*
@@ -5281,7 +5281,6 @@ CanvasUpdateScrollbars(canvasPtr)
TkCanvas *canvasPtr; /* Information about canvas. */
{
int result;
- char buffer[200];
Tcl_Interp *interp;
int xOrigin, yOrigin, inset, width, height, scrollX1, scrollX2,
scrollY1, scrollY2;
@@ -5313,9 +5312,11 @@ CanvasUpdateScrollbars(canvasPtr)
scrollY2 = canvasPtr->scrollY2;
canvasPtr->flags &= ~UPDATE_SCROLLBARS;
if (canvasPtr->xScrollCmd != NULL) {
- PrintScrollFractions(xOrigin + inset, xOrigin + width - inset,
- scrollX1, scrollX2, buffer);
- result = Tcl_VarEval(interp, xScrollCmd, " ", buffer, (char *) NULL);
+ Tcl_Obj *fractions = ScrollFractions(xOrigin + inset,
+ xOrigin + width - inset, scrollX1, scrollX2);
+ result = Tcl_VarEval(interp, xScrollCmd, " ",
+ Tcl_GetString(fractions), (char *) NULL);
+ Tcl_DecrRefCount(fractions);
if (result != TCL_OK) {
Tcl_BackgroundError(interp);
}
@@ -5324,9 +5325,11 @@ CanvasUpdateScrollbars(canvasPtr)
}
if (yScrollCmd != NULL) {
- PrintScrollFractions(yOrigin + inset, yOrigin + height - inset,
- scrollY1, scrollY2, buffer);
- result = Tcl_VarEval(interp, yScrollCmd, " ", buffer, (char *) NULL);
+ Tcl_Obj *fractions = ScrollFractions(yOrigin + inset,
+ yOrigin + height - inset, scrollY1, scrollY2);
+ result = Tcl_VarEval(interp, yScrollCmd, " ",
+ Tcl_GetString(fractions), (char *) NULL);
+ Tcl_DecrRefCount(fractions);
if (result != TCL_OK) {
Tcl_BackgroundError(interp);
}
diff --git a/generic/tkClipboard.c b/generic/tkClipboard.c
index 426af71..cf87dc1 100644
--- a/generic/tkClipboard.c
+++ b/generic/tkClipboard.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkClipboard.c,v 1.7 2000/08/01 18:52:45 ericm Exp $
+ * RCS: @(#) $Id: tkClipboard.c,v 1.7.6.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -434,7 +434,7 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
Tk_Window tkwin = (Tk_Window) clientData;
char *path = NULL;
Atom selection;
- static char *optionStrings[] = { "append", "clear", "get", NULL };
+ static CONST char *optionStrings[] = { "append", "clear", "get", NULL };
enum options { CLIPBOARD_APPEND, CLIPBOARD_CLEAR, CLIPBOARD_GET };
int index, i;
@@ -454,8 +454,9 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
char *targetName = NULL;
char *formatName = NULL;
char *string;
- static char *appendOptionStrings[] = { "-displayof", "-format",
- "-type", NULL };
+ static CONST char *appendOptionStrings[] = {
+ "-displayof", "-format", "-type", NULL
+ };
enum appendOptions { APPEND_DISPLAYOF, APPEND_FORMAT,
APPEND_TYPE };
int subIndex, length;
@@ -525,7 +526,7 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
Tcl_GetString(objv[i]));
}
case CLIPBOARD_CLEAR: {
- static char *clearOptionStrings[] = { "-displayof", NULL };
+ static CONST char *clearOptionStrings[] = { "-displayof", NULL };
enum clearOptions { CLEAR_DISPLAYOF };
int subIndex;
if (objc != 2 && objc != 4) {
@@ -556,7 +557,9 @@ Tk_ClipboardObjCmd(clientData, interp, objc, objv)
Tcl_DString selBytes;
int result;
char *string;
- static char *getOptionStrings[] = { "-displayof", "-type", NULL };
+ static CONST char *getOptionStrings[] = {
+ "-displayof", "-type", NULL
+ };
enum getOptions { APPEND_DISPLAYOF, APPEND_TYPE };
int subIndex;
diff --git a/generic/tkCmds.c b/generic/tkCmds.c
index 30f9137..65ec9e6 100644
--- a/generic/tkCmds.c
+++ b/generic/tkCmds.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCmds.c,v 1.20.2.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkCmds.c,v 1.20.2.3 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -65,7 +65,7 @@ Tk_BellObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *bellOptions[] = {"-displayof", "-nice", (char *) NULL};
+ static CONST char *bellOptions[] = {"-displayof", "-nice", (char *) NULL};
enum options { TK_BELL_DISPLAYOF, TK_BELL_NICE };
Tk_Window tkwin = (Tk_Window) clientData;
int i, index, nice = 0;
@@ -618,7 +618,7 @@ Tk_TkObjCmd(clientData, interp, objc, objv)
{
int index;
Tk_Window tkwin;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"appname", "scaling", "useinputmethods", NULL
};
enum options {
@@ -709,13 +709,13 @@ Tk_TkObjCmd(clientData, interp, objc, objv)
* That will indicate to the user that input methods
* are just not available.
*/
- int bool;
- if (Tcl_GetBooleanFromObj(interp, objv[2+skip], &bool)
+ int boolVal;
+ if (Tcl_GetBooleanFromObj(interp, objv[2+skip], &boolVal)
!= TCL_OK) {
return TCL_ERROR;
}
#ifdef TK_USE_INPUT_METHODS
- dispPtr->useInputMethods = bool;
+ dispPtr->useInputMethods = boolVal;
#endif /* TK_USE_INPUT_METHODS */
} else if ((objc - skip) != 2) {
Tcl_WrongNumArgs(interp, 2, objv,
@@ -758,7 +758,7 @@ Tk_TkwaitObjCmd(clientData, interp, objc, objv)
{
Tk_Window tkwin = (Tk_Window) clientData;
int done, index;
- static char *optionStrings[] = { "variable", "visibility", "window",
+ static CONST char *optionStrings[] = { "variable", "visibility", "window",
(char *) NULL };
enum options { TKWAIT_VARIABLE, TKWAIT_VISIBILITY, TKWAIT_WINDOW };
@@ -920,7 +920,7 @@ Tk_UpdateObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *updateOptions[] = {"idletasks", (char *) NULL};
+ static CONST char *updateOptions[] = {"idletasks", (char *) NULL};
int flags, index;
TkDisplay *dispPtr;
@@ -1008,7 +1008,7 @@ Tk_WinfoObjCmd(clientData, interp, objc, objv)
{StaticGray, "staticgray"},
{-1, NULL}
};
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"cells", "children", "class", "colormapfull",
"depth", "geometry", "height", "id",
"ismapped", "manager", "name", "parent",
@@ -1599,7 +1599,7 @@ Tk_WmObjCmd(clientData, interp, objc, objv)
Tk_Window tkwin;
TkWindow *winPtr;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"aspect", "client", "command", "deiconify",
"focusmodel", "frame", "geometry", "grid",
"group", "iconbitmap", "iconify", "iconmask",
diff --git a/generic/tkConfig.c b/generic/tkConfig.c
index ab8b55f..bd0a650 100644
--- a/generic/tkConfig.c
+++ b/generic/tkConfig.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkConfig.c,v 1.15 2001/08/15 15:44:36 dkf Exp $
+ * RCS: @(#) $Id: tkConfig.c,v 1.15.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
/*
@@ -743,7 +743,7 @@ DoObjConfig(interp, recordPtr, optionPtr, valuePtr, tkwin, savedOptionPtr)
int new;
if (Tcl_GetIndexFromObj(interp, valuePtr,
- (char **) optionPtr->specPtr->clientData,
+ (CONST char **) optionPtr->specPtr->clientData,
optionPtr->specPtr->optionName+1, 0, &new) != TCL_OK) {
return TCL_ERROR;
}
diff --git a/generic/tkConsole.c b/generic/tkConsole.c
index bb6bcad..c631fab 100644
--- a/generic/tkConsole.c
+++ b/generic/tkConsole.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkConsole.c,v 1.13 2001/08/06 18:29:41 dgp Exp $
+ * RCS: @(#) $Id: tkConsole.c,v 1.13.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tk.h"
@@ -47,9 +47,6 @@ TCL_DECLARE_MUTEX(consoleMutex)
* The first three will be used in the tk app shells...
*/
-void TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
- int devId, char *buffer, long size));
-
static int ConsoleCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *interp, int argc, char **argv));
static void ConsoleDeleteProc _ANSI_ARGS_((ClientData clientData));
@@ -61,7 +58,7 @@ static int InterpreterCmd _ANSI_ARGS_((ClientData clientData,
static int ConsoleInput _ANSI_ARGS_((ClientData instanceData,
char *buf, int toRead, int *errorCode));
static int ConsoleOutput _ANSI_ARGS_((ClientData instanceData,
- char *buf, int toWrite, int *errorCode));
+ CONST char *buf, int toWrite, int *errorCode));
static int ConsoleClose _ANSI_ARGS_((ClientData instanceData,
Tcl_Interp *interp));
static void ConsoleWatch _ANSI_ARGS_((ClientData instanceData,
@@ -336,7 +333,7 @@ Tk_CreateConsoleWindow(interp)
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
#ifdef MAC_TCL
- static char initCmd[] = "source -rsrc {Console}";
+ static char initCmd[] = "if {[catch {source $tk_library:console.tcl}]} {source -rsrc console}";
#else
static char initCmd[] = "source $tk_library/console.tcl";
#endif
@@ -408,7 +405,7 @@ Tk_CreateConsoleWindow(interp)
static int
ConsoleOutput(instanceData, buf, toWrite, errorCode)
ClientData instanceData; /* Indicates which device to use. */
- char *buf; /* The data buffer. */
+ CONST char *buf; /* The data buffer. */
int toWrite; /* How many bytes to write? */
int *errorCode; /* Where to store error code. */
{
@@ -476,6 +473,9 @@ ConsoleClose(instanceData, interp)
ClientData instanceData; /* Unused. */
Tcl_Interp *interp; /* Unused. */
{
+ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
+ Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
+ tsdPtr->gStdoutInterp = NULL;
return 0;
}
@@ -775,7 +775,7 @@ TkConsolePrint(interp, devId, buffer, size)
Tcl_Interp *interp; /* Main interpreter. */
int devId; /* TCL_STDOUT for stdout, TCL_STDERR for
* stderr. */
- char *buffer; /* Text buffer. */
+ CONST char *buffer; /* Text buffer. */
long size; /* Size of text buffer. */
{
Tcl_DString command, output;
diff --git a/generic/tkCursor.c b/generic/tkCursor.c
index ee2663e..09527b0 100644
--- a/generic/tkCursor.c
+++ b/generic/tkCursor.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkCursor.c,v 1.7 2001/08/15 15:44:36 dkf Exp $
+ * RCS: @(#) $Id: tkCursor.c,v 1.7.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -276,13 +276,12 @@ GetCursor(interp, tkwin, string)
cursorPtr->objRefCount = 0;
cursorPtr->otherTable = &dispPtr->cursorNameTable;
cursorPtr->hashPtr = nameHashPtr;
- cursorPtr->nextPtr = NULL;
+ cursorPtr->nextPtr = existingCursorPtr;
cursorPtr->idHashPtr = Tcl_CreateHashEntry(&dispPtr->cursorIdTable,
(char *) cursorPtr->cursor, &new);
if (!new) {
panic("cursor already registered in Tk_GetCursor");
}
- cursorPtr->nextPtr = existingCursorPtr;
Tcl_SetHashValue(nameHashPtr, cursorPtr);
Tcl_SetHashValue(cursorPtr->idHashPtr, cursorPtr);
@@ -384,6 +383,7 @@ Tk_GetCursorFromData(interp, tkwin, source, mask, width, height,
cursorPtr->objRefCount = 0;
cursorPtr->idHashPtr = Tcl_CreateHashEntry(&dispPtr->cursorIdTable,
(char *) cursorPtr->cursor, &new);
+ cursorPtr->nextPtr = NULL;
if (!new) {
panic("cursor already registered in Tk_GetCursorFromData");
diff --git a/generic/tkDecls.h b/generic/tkDecls.h
index a60433b..10b234a 100644
--- a/generic/tkDecls.h
+++ b/generic/tkDecls.h
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkDecls.h,v 1.15 2001/09/26 20:25:17 pspjuth Exp $
+ * RCS: @(#) $Id: tkDecls.h,v 1.15.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#ifndef _TKDECLS
@@ -50,7 +50,8 @@ EXTERN void Tk_3DVerticalBevel _ANSI_ARGS_((Tk_Window tkwin,
int relief));
/* 5 */
EXTERN void Tk_AddOption _ANSI_ARGS_((Tk_Window tkwin,
- char * name, char * value, int priority));
+ CONST char * name, CONST char * value,
+ int priority));
/* 6 */
EXTERN void Tk_BindEvent _ANSI_ARGS_((
Tk_BindingTable bindingTable,
@@ -66,7 +67,7 @@ EXTERN void Tk_CanvasEventuallyRedraw _ANSI_ARGS_((
int y2));
/* 9 */
EXTERN int Tk_CanvasGetCoord _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Canvas canvas, char * str,
+ Tk_Canvas canvas, CONST char * str,
double * doublePtr));
/* 10 */
EXTERN Tk_CanvasTextInfo * Tk_CanvasGetTextInfo _ANSI_ARGS_((
@@ -391,7 +392,8 @@ EXTERN Tk_Uid Tk_GetOption _ANSI_ARGS_((Tk_Window tkwin,
char * name, char * className));
/* 104 */
EXTERN int Tk_GetPixels _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Window tkwin, char * str, int * intPtr));
+ Tk_Window tkwin, CONST char * str,
+ int * intPtr));
/* 105 */
EXTERN Pixmap Tk_GetPixmap _ANSI_ARGS_((Display * display,
Drawable d, int width, int height, int depth));
@@ -407,7 +409,7 @@ EXTERN int Tk_GetScrollInfo _ANSI_ARGS_((Tcl_Interp * interp,
int * intPtr));
/* 109 */
EXTERN int Tk_GetScreenMM _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Window tkwin, char * str,
+ Tk_Window tkwin, CONST char * str,
double * doublePtr));
/* 110 */
EXTERN int Tk_GetSelection _ANSI_ARGS_((Tcl_Interp * interp,
@@ -497,15 +499,16 @@ EXTERN char * Tk_NameOfJustify _ANSI_ARGS_((Tk_Justify justify));
EXTERN char * Tk_NameOfRelief _ANSI_ARGS_((int relief));
/* 141 */
EXTERN Tk_Window Tk_NameToWindow _ANSI_ARGS_((Tcl_Interp * interp,
- char * pathName, Tk_Window tkwin));
+ CONST char * pathName, Tk_Window tkwin));
/* 142 */
EXTERN void Tk_OwnSelection _ANSI_ARGS_((Tk_Window tkwin,
Atom selection, Tk_LostSelProc * proc,
ClientData clientData));
/* 143 */
EXTERN int Tk_ParseArgv _ANSI_ARGS_((Tcl_Interp * interp,
- Tk_Window tkwin, int * argcPtr, char ** argv,
- Tk_ArgvInfo * argTable, int flags));
+ Tk_Window tkwin, int * argcPtr,
+ CONST84 char ** argv, Tk_ArgvInfo * argTable,
+ int flags));
/* 144 */
EXTERN void Tk_PhotoPutBlock _ANSI_ARGS_((Tk_PhotoHandle handle,
Tk_PhotoImageBlock * blockPtr, int x, int y,
@@ -857,11 +860,11 @@ typedef struct TkStubs {
GC (*tk_3DBorderGC) _ANSI_ARGS_((Tk_Window tkwin, Tk_3DBorder border, int which)); /* 2 */
void (*tk_3DHorizontalBevel) _ANSI_ARGS_((Tk_Window tkwin, Drawable drawable, Tk_3DBorder border, int x, int y, int width, int height, int leftIn, int rightIn, int topBevel, int relief)); /* 3 */
void (*tk_3DVerticalBevel) _ANSI_ARGS_((Tk_Window tkwin, Drawable drawable, Tk_3DBorder border, int x, int y, int width, int height, int leftBevel, int relief)); /* 4 */
- void (*tk_AddOption) _ANSI_ARGS_((Tk_Window tkwin, char * name, char * value, int priority)); /* 5 */
+ void (*tk_AddOption) _ANSI_ARGS_((Tk_Window tkwin, CONST char * name, CONST char * value, int priority)); /* 5 */
void (*tk_BindEvent) _ANSI_ARGS_((Tk_BindingTable bindingTable, XEvent * eventPtr, Tk_Window tkwin, int numObjects, ClientData * objectPtr)); /* 6 */
void (*tk_CanvasDrawableCoords) _ANSI_ARGS_((Tk_Canvas canvas, double x, double y, short * drawableXPtr, short * drawableYPtr)); /* 7 */
void (*tk_CanvasEventuallyRedraw) _ANSI_ARGS_((Tk_Canvas canvas, int x1, int y1, int x2, int y2)); /* 8 */
- int (*tk_CanvasGetCoord) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, char * str, double * doublePtr)); /* 9 */
+ int (*tk_CanvasGetCoord) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, CONST char * str, double * doublePtr)); /* 9 */
Tk_CanvasTextInfo * (*tk_CanvasGetTextInfo) _ANSI_ARGS_((Tk_Canvas canvas)); /* 10 */
int (*tk_CanvasPsBitmap) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, Pixmap bitmap, int x, int y, int width, int height)); /* 11 */
int (*tk_CanvasPsColor) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Canvas canvas, XColor * colorPtr)); /* 12 */
@@ -956,12 +959,12 @@ typedef struct TkStubs {
int (*tk_GetJustify) _ANSI_ARGS_((Tcl_Interp * interp, char * str, Tk_Justify * justifyPtr)); /* 101 */
int (*tk_GetNumMainWindows) _ANSI_ARGS_((void)); /* 102 */
Tk_Uid (*tk_GetOption) _ANSI_ARGS_((Tk_Window tkwin, char * name, char * className)); /* 103 */
- int (*tk_GetPixels) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * str, int * intPtr)); /* 104 */
+ int (*tk_GetPixels) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, CONST char * str, int * intPtr)); /* 104 */
Pixmap (*tk_GetPixmap) _ANSI_ARGS_((Display * display, Drawable d, int width, int height, int depth)); /* 105 */
int (*tk_GetRelief) _ANSI_ARGS_((Tcl_Interp * interp, char * name, int * reliefPtr)); /* 106 */
void (*tk_GetRootCoords) _ANSI_ARGS_((Tk_Window tkwin, int * xPtr, int * yPtr)); /* 107 */
int (*tk_GetScrollInfo) _ANSI_ARGS_((Tcl_Interp * interp, int argc, char ** argv, double * dblPtr, int * intPtr)); /* 108 */
- int (*tk_GetScreenMM) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * str, double * doublePtr)); /* 109 */
+ int (*tk_GetScreenMM) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, CONST char * str, double * doublePtr)); /* 109 */
int (*tk_GetSelection) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, Atom selection, Atom target, Tk_GetSelProc * proc, ClientData clientData)); /* 110 */
Tk_Uid (*tk_GetUid) _ANSI_ARGS_((CONST char * str)); /* 111 */
Visual * (*tk_GetVisual) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, char * str, int * depthPtr, Colormap * colormapPtr)); /* 112 */
@@ -993,9 +996,9 @@ typedef struct TkStubs {
char * (*tk_NameOfJoinStyle) _ANSI_ARGS_((int join)); /* 138 */
char * (*tk_NameOfJustify) _ANSI_ARGS_((Tk_Justify justify)); /* 139 */
char * (*tk_NameOfRelief) _ANSI_ARGS_((int relief)); /* 140 */
- Tk_Window (*tk_NameToWindow) _ANSI_ARGS_((Tcl_Interp * interp, char * pathName, Tk_Window tkwin)); /* 141 */
+ Tk_Window (*tk_NameToWindow) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * pathName, Tk_Window tkwin)); /* 141 */
void (*tk_OwnSelection) _ANSI_ARGS_((Tk_Window tkwin, Atom selection, Tk_LostSelProc * proc, ClientData clientData)); /* 142 */
- int (*tk_ParseArgv) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, int * argcPtr, char ** argv, Tk_ArgvInfo * argTable, int flags)); /* 143 */
+ int (*tk_ParseArgv) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, int * argcPtr, CONST84 char ** argv, Tk_ArgvInfo * argTable, int flags)); /* 143 */
void (*tk_PhotoPutBlock) _ANSI_ARGS_((Tk_PhotoHandle handle, Tk_PhotoImageBlock * blockPtr, int x, int y, int width, int height)); /* 144 */
void (*tk_PhotoPutZoomedBlock) _ANSI_ARGS_((Tk_PhotoHandle handle, Tk_PhotoImageBlock * blockPtr, int x, int y, int width, int height, int zoomX, int zoomY, int subsampleX, int subsampleY)); /* 145 */
int (*tk_PhotoGetImage) _ANSI_ARGS_((Tk_PhotoHandle handle, Tk_PhotoImageBlock * blockPtr)); /* 146 */
diff --git a/generic/tkEntry.c b/generic/tkEntry.c
index 43c3429..46d2a56 100644
--- a/generic/tkEntry.c
+++ b/generic/tkEntry.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: tkEntry.c,v 1.23 2001/09/21 22:08:19 hobbs Exp $
+ * RCS: @(#) $Id: tkEntry.c,v 1.23.2.1 2002/02/05 02:25:14 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -45,7 +45,7 @@ typedef struct {
* Fields that are set by widget commands other than "configure".
*/
- char *string; /* Pointer to storage for string;
+ CONST char *string; /* Pointer to storage for string;
* NULL-terminated; malloc-ed. */
int insertPos; /* Character index before which next typed
* character will be inserted. */
@@ -134,7 +134,7 @@ typedef struct {
* configuration settings above.
*/
- char *displayString; /* String to use when displaying. This may
+ CONST char *displayString; /* String to use when displaying. This may
* be a pointer to string, or a pointer to
* malloced memory with the same character
* length as string but whose characters
@@ -597,7 +597,7 @@ static Tk_OptionSpec sbOptSpec[] = {
* enumerated types used to dispatch the entry widget command.
*/
-static char *entryCmdNames[] = {
+static CONST char *entryCmdNames[] = {
"bbox", "cget", "configure", "delete", "get", "icursor", "index",
"insert", "scan", "selection", "validate", "xview", (char *) NULL
};
@@ -608,7 +608,7 @@ enum entryCmd {
COMMAND_SCAN, COMMAND_SELECTION, COMMAND_VALIDATE, COMMAND_XVIEW
};
-static char *selCmdNames[] = {
+static CONST char *selCmdNames[] = {
"adjust", "clear", "from", "present", "range", "to", (char *) NULL
};
@@ -623,7 +623,7 @@ enum selCmd {
* enumerated types used to dispatch the spinbox widget command.
*/
-static char *sbCmdNames[] = {
+static CONST char *sbCmdNames[] = {
"bbox", "cget", "configure", "delete", "get", "icursor", "identify",
"index", "insert", "invoke", "scan", "selection", "set",
"validate", "xview", (char *) NULL
@@ -636,7 +636,7 @@ enum sbCmd {
SB_CMD_SET, SB_CMD_VALIDATE, SB_CMD_XVIEW
};
-static char *sbSelCmdNames[] = {
+static CONST char *sbSelCmdNames[] = {
"adjust", "clear", "element", "from", "present", "range", "to",
(char *) NULL
};
@@ -650,7 +650,7 @@ enum sbselCmd {
* Extra for selection of elements
*/
-static char *selElementNames[] = {
+static CONST char *selElementNames[] = {
"none", "buttondown", "buttonup", (char *) NULL, "entry"
};
enum selelement {
@@ -690,7 +690,7 @@ static void EntryLostSelection _ANSI_ARGS_((
static void EventuallyRedraw _ANSI_ARGS_((Entry *entryPtr));
static void EntryScanTo _ANSI_ARGS_((Entry *entryPtr, int y));
static void EntrySetValue _ANSI_ARGS_((Entry *entryPtr,
- char *value));
+ CONST char *value));
static void EntrySelectTo _ANSI_ARGS_((
Entry *entryPtr, int index));
static char * EntryTextVarProc _ANSI_ARGS_((ClientData clientData,
@@ -700,12 +700,13 @@ static void EntryUpdateScrollbar _ANSI_ARGS_((Entry *entryPtr));
static int EntryValidate _ANSI_ARGS_((Entry *entryPtr,
char *cmd));
static int EntryValidateChange _ANSI_ARGS_((Entry *entryPtr,
- char *change, char *new, int index, int type));
+ char *change, CONST char *new, int index,
+ int type));
static void ExpandPercents _ANSI_ARGS_((Entry *entryPtr,
- char *before, char *change, char *new,
+ CONST char *before, char *change, CONST char *new,
int index, int type, Tcl_DString *dsPtr));
static void EntryValueChanged _ANSI_ARGS_((Entry *entryPtr,
- char *newValue));
+ CONST char *newValue));
static void EntryVisibleRange _ANSI_ARGS_((Entry *entryPtr,
double *firstPtr, double *lastPtr));
static int EntryWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
@@ -770,6 +771,7 @@ Tk_EntryObjCmd(clientData, interp, objc, objv)
register Entry *entryPtr;
Tk_OptionTable optionTable;
Tk_Window tkwin;
+ char *tmp;
if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "pathName ?options?");
@@ -807,8 +809,9 @@ Tk_EntryObjCmd(clientData, interp, objc, objv)
(ClientData) entryPtr, EntryCmdDeletedProc);
entryPtr->optionTable = optionTable;
entryPtr->type = TK_ENTRY;
- entryPtr->string = (char *) ckalloc(1);
- entryPtr->string[0] = '\0';
+ tmp = (char *) ckalloc(1);
+ tmp[0] = '\0';
+ entryPtr->string = tmp;
entryPtr->selectFirst = -1;
entryPtr->selectLast = -1;
@@ -984,7 +987,7 @@ EntryWidgetObjCmd(clientData, interp, objc, objv)
Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
goto error;
}
- Tcl_SetResult(interp, entryPtr->string, TCL_STATIC);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), entryPtr->string, -1);
break;
}
@@ -1325,7 +1328,7 @@ DestroyEntry(memPtr)
* stuff.
*/
- ckfree(entryPtr->string);
+ ckfree((char *)entryPtr->string);
if (entryPtr->textVarName != NULL) {
Tcl_UntraceVar(entryPtr->interp, entryPtr->textVarName,
TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
@@ -1339,7 +1342,7 @@ DestroyEntry(memPtr)
}
Tcl_DeleteTimerHandler(entryPtr->insertBlinkHandler);
if (entryPtr->displayString != entryPtr->string) {
- ckfree(entryPtr->displayString);
+ ckfree((char *)entryPtr->displayString);
}
if (entryPtr->type == TK_SPINBOX) {
Spinbox *sbPtr = (Spinbox *) entryPtr;
@@ -1634,7 +1637,7 @@ ConfigureEntry(interp, entryPtr, objc, objv, flags)
*/
if (entryPtr->textVarName != NULL) {
- char *value;
+ CONST char *value;
value = Tcl_GetVar(interp, entryPtr->textVarName, TCL_GLOBAL_ONLY);
if (value == NULL) {
@@ -2081,7 +2084,7 @@ EntryComputeGeometry(entryPtr)
char *p;
if (entryPtr->displayString != entryPtr->string) {
- ckfree(entryPtr->displayString);
+ ckfree((char *)entryPtr->displayString);
entryPtr->displayString = entryPtr->string;
entryPtr->numDisplayBytes = entryPtr->numBytes;
}
@@ -2107,10 +2110,9 @@ EntryComputeGeometry(entryPtr)
size = Tcl_UniCharToUtf(ch, buf);
entryPtr->numDisplayBytes = entryPtr->numChars * size;
- entryPtr->displayString =
- (char *) ckalloc((unsigned) (entryPtr->numDisplayBytes + 1));
+ p = (char *) ckalloc((unsigned) (entryPtr->numDisplayBytes + 1));
+ entryPtr->displayString = p;
- p = entryPtr->displayString;
for (i = entryPtr->numChars; --i >= 0; ) {
p += Tcl_UniCharToUtf(ch, p);
}
@@ -2214,7 +2216,8 @@ InsertChars(entryPtr, index, value)
* string). */
{
int byteIndex, byteCount, oldChars, charsAdded, newByteCount;
- char *new, *string;
+ CONST char *string;
+ char *new;
string = entryPtr->string;
byteIndex = Tcl_UtfAtIndex(string, index) - string;
@@ -2237,7 +2240,7 @@ InsertChars(entryPtr, index, value)
return;
}
- ckfree(string);
+ ckfree((char *)string);
entryPtr->string = new;
/*
@@ -2311,7 +2314,8 @@ DeleteChars(entryPtr, index, count)
int count; /* How many characters to delete. */
{
int byteIndex, byteCount, newByteCount;
- char *new, *string, *todelete;
+ CONST char *string;
+ char *new, *todelete;
if ((index + count) > entryPtr->numChars) {
count = entryPtr->numChars - index;
@@ -2343,7 +2347,7 @@ DeleteChars(entryPtr, index, count)
}
ckfree(todelete);
- ckfree(entryPtr->string);
+ ckfree((char *)entryPtr->string);
entryPtr->string = new;
entryPtr->numChars -= count;
entryPtr->numBytes -= byteCount;
@@ -2423,7 +2427,7 @@ DeleteChars(entryPtr, index, count)
static void
EntryValueChanged(entryPtr, newValue)
Entry *entryPtr; /* Entry whose value just changed. */
- char *newValue; /* If this value is not NULL, we first
+ CONST char *newValue; /* If this value is not NULL, we first
* force the value of the entry to this */
{
if (newValue != NULL) {
@@ -2483,9 +2487,9 @@ EntryValueChanged(entryPtr, newValue)
static void
EntrySetValue(entryPtr, value)
Entry *entryPtr; /* Entry whose value is to be changed. */
- char *value; /* New text to display in entry. */
+ CONST char *value; /* New text to display in entry. */
{
- char *oldSource;
+ CONST char *oldSource;
int code, valueLen, malloced = 0;
if (strcmp(value, entryPtr->string) == 0) {
@@ -2501,9 +2505,9 @@ EntrySetValue(entryPtr, value)
* point to volatile memory, like the value of the -textvar
* which may get freed during validation
*/
- oldSource = (char *) ckalloc((unsigned) (valueLen + 1));
- strcpy(oldSource, value);
- value = oldSource;
+ char *tmp = (char *) ckalloc((unsigned) (valueLen + 1));
+ strcpy(tmp, value);
+ value = tmp;
malloced = 1;
entryPtr->flags |= VALIDATE_VAR;
@@ -2516,19 +2520,20 @@ EntrySetValue(entryPtr, value)
*/
if (entryPtr->flags & VALIDATE_ABORT) {
entryPtr->flags &= ~VALIDATE_ABORT;
- ckfree(value);
+ ckfree((char *)value);
return;
}
}
oldSource = entryPtr->string;
- ckfree(entryPtr->string);
+ ckfree((char *)entryPtr->string);
if (malloced) {
entryPtr->string = value;
} else {
- entryPtr->string = (char *) ckalloc((unsigned) (valueLen + 1));
- strcpy(entryPtr->string, value);
+ char *tmp = (char *) ckalloc((unsigned) (valueLen + 1));
+ strcpy(tmp, value);
+ entryPtr->string = tmp;
}
entryPtr->numBytes = valueLen;
entryPtr->numChars = Tcl_NumUtfChars(value, valueLen);
@@ -2955,7 +2960,8 @@ EntryFetchSelection(clientData, offset, buffer, maxBytes)
{
Entry *entryPtr = (Entry *) clientData;
int byteCount;
- char *string, *selStart, *selEnd;
+ CONST char *string;
+ CONST char *selStart, *selEnd;
if ((entryPtr->selectFirst < 0) || !(entryPtr->exportSelection)) {
return -1;
@@ -3275,7 +3281,7 @@ EntryTextVarProc(clientData, interp, name1, name2, flags)
int flags; /* Information about what happened. */
{
Entry *entryPtr = (Entry *) clientData;
- char *value;
+ CONST char *value;
/*
* If the variable is unset, then immediately recreate it unless
@@ -3392,7 +3398,7 @@ EntryValidateChange(entryPtr, change, new, index, type)
register Entry *entryPtr; /* Entry that needs validation. */
char *change; /* Characters to be added/deleted
* (NULL-terminated string). */
- char *new; /* Potential new value of entry string */
+ CONST char *new; /* Potential new value of entry string */
int index; /* index of insert/delete, -1 otherwise */
int type; /* forced, delete, insert,
* focusin or focusout */
@@ -3526,11 +3532,12 @@ EntryValidateChange(entryPtr, change, new, index, type)
static void
ExpandPercents(entryPtr, before, change, new, index, type, dsPtr)
register Entry *entryPtr; /* Entry that needs validation. */
- register char *before; /* Command containing percent
+ register CONST char *before;
+ /* Command containing percent
* expressions to be replaced. */
char *change; /* Characters to added/deleted
* (NULL-terminated string). */
- char *new; /* Potential new value of entry string */
+ CONST char *new; /* Potential new value of entry string */
int index; /* index of insert/delete */
int type; /* INSERT or DELETE */
Tcl_DString *dsPtr; /* Dynamic string in which to append
@@ -3539,7 +3546,7 @@ ExpandPercents(entryPtr, before, change, new, index, type, dsPtr)
int spaceNeeded, cvtFlags; /* Used to substitute string as proper Tcl
* list element. */
int number, length;
- register char *string;
+ register CONST char *string;
Tcl_UniChar ch;
char numStorage[2*TCL_INTEGER_SPACE];
@@ -3693,6 +3700,7 @@ Tk_SpinboxObjCmd(clientData, interp, objc, objv)
register Spinbox *sbPtr;
Tk_OptionTable optionTable;
Tk_Window tkwin;
+ char *tmp;
if (objc < 2) {
Tcl_WrongNumArgs(interp, 1, objv, "pathName ?options?");
@@ -3731,8 +3739,9 @@ Tk_SpinboxObjCmd(clientData, interp, objc, objv)
(ClientData) sbPtr, EntryCmdDeletedProc);
entryPtr->optionTable = optionTable;
entryPtr->type = TK_SPINBOX;
- entryPtr->string = (char *) ckalloc(1);
- entryPtr->string[0] = '\0';
+ tmp = (char *) ckalloc(1);
+ tmp[0] = '\0';
+ entryPtr->string = tmp;
entryPtr->selectFirst = -1;
entryPtr->selectLast = -1;
@@ -3927,7 +3936,7 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
goto error;
}
- Tcl_SetResult(interp, entryPtr->string, TCL_STATIC);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), entryPtr->string, -1);
break;
}
@@ -3957,7 +3966,8 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
}
elem = GetSpinboxElement(sbPtr, x, y);
if (elem != SEL_NONE) {
- Tcl_SetResult(interp, selElementNames[elem], TCL_VOLATILE);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp),
+ selElementNames[elem], -1);
}
break;
}
@@ -4185,9 +4195,8 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
goto error;
}
if (objc == 3) {
- Tcl_SetResult(interp,
- selElementNames[sbPtr->selElement],
- TCL_VOLATILE);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp),
+ selElementNames[sbPtr->selElement], -1);
} else {
int lastElement = sbPtr->selElement;
@@ -4215,7 +4224,7 @@ SpinboxWidgetObjCmd(clientData, interp, objc, objv)
if (objc == 3) {
EntryValueChanged(entryPtr, Tcl_GetString(objv[2]));
}
- Tcl_SetResult(interp, entryPtr->string, TCL_STATIC);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), entryPtr->string, -1);
break;
}
diff --git a/generic/tkFileFilter.c b/generic/tkFileFilter.c
index b9bebd7..3cbaba9 100644
--- a/generic/tkFileFilter.c
+++ b/generic/tkFileFilter.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFileFilter.c,v 1.4 2000/07/06 03:17:43 mo Exp $
+ * RCS: @(#) $Id: tkFileFilter.c,v 1.4.6.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -17,7 +17,7 @@
static int AddClause _ANSI_ARGS_((
Tcl_Interp * interp, FileFilter * filterPtr,
- char * patternsStr, char * ostypesStr,
+ CONST char * patternsStr, CONST char * ostypesStr,
int isWindows));
static void FreeClauses _ANSI_ARGS_((FileFilter * filterPtr));
static void FreeGlobPatterns _ANSI_ARGS_((
@@ -25,7 +25,7 @@ static void FreeGlobPatterns _ANSI_ARGS_((
static void FreeMacFileTypes _ANSI_ARGS_((
FileFilterClause * clausePtr));
static FileFilter * GetFilter _ANSI_ARGS_((FileFilterList * flistPtr,
- char * name));
+ CONST char * name));
/*
*----------------------------------------------------------------------
@@ -86,8 +86,8 @@ TkGetFileFilters(interp, flistPtr, string, isWindows)
int isWindows; /* True if we are running on Windows. */
{
int listArgc;
- char ** listArgv = NULL;
- char ** typeInfo = NULL;
+ CONST char ** listArgv = NULL;
+ CONST char ** typeInfo = NULL;
int code = TCL_OK;
int i;
@@ -206,16 +206,16 @@ TkFreeFileFilters(flistPtr)
static int AddClause(interp, filterPtr, patternsStr, ostypesStr, isWindows)
Tcl_Interp * interp; /* Interpreter to use for error reporting. */
FileFilter * filterPtr; /* Stores the new filter clause */
- char * patternsStr; /* A TCL list of glob patterns. */
- char * ostypesStr; /* A TCL list of Mac OSType strings. */
+ CONST char * patternsStr; /* A TCL list of glob patterns. */
+ CONST char * ostypesStr; /* A TCL list of Mac OSType strings. */
int isWindows; /* True if we are running on Windows; False
* if we are running on the Mac; Glob
* patterns need to be processed differently
* on these two platforms */
{
- char ** globList = NULL;
+ CONST char ** globList = NULL;
int globCount;
- char ** ostypeList = NULL;
+ CONST char ** ostypeList = NULL;
int ostypeCount;
FileFilterClause * clausePtr;
int i;
@@ -358,7 +358,7 @@ static int AddClause(interp, filterPtr, patternsStr, ostypesStr, isWindows)
static FileFilter * GetFilter(flistPtr, name)
FileFilterList * flistPtr; /* The FileFilterList that contains the
* newly created filter */
- char * name; /* Name of the filter. It is usually displayed
+ CONST char * name; /* Name of the filter. It is usually displayed
* in the "File Types" listbox in the file
* dialogs. */
{
diff --git a/generic/tkFocus.c b/generic/tkFocus.c
index 44756ef..063c4d7 100644
--- a/generic/tkFocus.c
+++ b/generic/tkFocus.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFocus.c,v 1.5 1999/08/10 16:58:37 hobbs Exp $
+ * RCS: @(#) $Id: tkFocus.c,v 1.5.16.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -121,8 +121,9 @@ Tk_FocusObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *focusOptions[] = {"-displayof", "-force", "-lastfor",
- (char *) NULL};
+ static CONST char *focusOptions[] = {
+ "-displayof", "-force", "-lastfor", (char *) NULL
+ };
Tk_Window tkwin = (Tk_Window) clientData;
TkWindow *winPtr = (TkWindow *) clientData;
TkWindow *newPtr, *focusWinPtr, *topLevelPtr;
diff --git a/generic/tkFont.c b/generic/tkFont.c
index 9d7e9ec..c9c0f08 100644
--- a/generic/tkFont.c
+++ b/generic/tkFont.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkFont.c,v 1.12.2.2 2002/01/22 01:12:39 wolfsuit Exp $
+ * RCS: @(#) $Id: tkFont.c,v 1.12.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -168,7 +168,7 @@ static TkStateMap xlfdSetwidthMap[] = {
* when configuring a set of font attributes.
*/
-static char *fontOpt[] = {
+static CONST char *fontOpt[] = {
"-family",
"-size",
"-weight",
@@ -479,7 +479,7 @@ Tk_FontObjCmd(clientData, interp, objc, objv)
int index;
Tk_Window tkwin;
TkFontInfo *fiPtr;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"actual", "configure", "create", "delete",
"families", "measure", "metrics", "names",
NULL
@@ -684,7 +684,7 @@ Tk_FontObjCmd(clientData, interp, objc, objv)
Tk_Font tkfont;
int skip, index, i;
CONST TkFontMetrics *fmPtr;
- static char *switches[] = {
+ static CONST char *switches[] = {
"-ascent", "-descent", "-linespace", "-fixed", NULL
};
diff --git a/generic/tkFrame.c b/generic/tkFrame.c
index 55dfc8f..4d37f0b 100644
--- a/generic/tkFrame.c
+++ b/generic/tkFrame.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: tkFrame.c,v 1.10 2001/09/26 21:36:19 pspjuth Exp $
+ * RCS: @(#) $Id: tkFrame.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "default.h"
@@ -718,7 +718,7 @@ FrameWidgetObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *frameOptions[] = {
+ static CONST char *frameOptions[] = {
"cget", "configure", (char *) NULL
};
enum options {
diff --git a/generic/tkGet.c b/generic/tkGet.c
index dd920be..a3b6677 100644
--- a/generic/tkGet.c
+++ b/generic/tkGet.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGet.c,v 1.6 1999/12/14 06:52:28 hobbs Exp $
+ * RCS: @(#) $Id: tkGet.c,v 1.6.8.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -37,9 +37,12 @@ static Tcl_ThreadDataKey dataKey;
* used by Tk_GetAnchorFromObj and Tk_GetJustifyFromObj.
*/
-static char *anchorStrings[] = {"n", "ne", "e", "se", "s", "sw", "w", "nw",
- "center", (char *) NULL};
-static char *justifyStrings[] = {"left", "right", "center", (char *) NULL};
+static CONST char *anchorStrings[] = {
+ "n", "ne", "e", "se", "s", "sw", "w", "nw", "center", (char *) NULL
+};
+static CONST char *justifyStrings[] = {
+ "left", "right", "center", (char *) NULL
+};
/*
@@ -545,7 +548,7 @@ Tk_GetScreenMM(interp, tkwin, string, doublePtr)
Tk_Window tkwin; /* Window whose screen determines conversion
* from centimeters and other absolute
* units. */
- char *string; /* String describing a screen distance. */
+ CONST char *string; /* String describing a screen distance. */
double *doublePtr; /* Place to store converted result. */
{
char *end;
@@ -621,7 +624,7 @@ Tk_GetPixels(interp, tkwin, string, intPtr)
Tk_Window tkwin; /* Window whose screen determines conversion
* from centimeters and other absolute
* units. */
- char *string; /* String describing a number of pixels. */
+ CONST char *string; /* String describing a number of pixels. */
int *intPtr; /* Place to store converted result. */
{
double d;
diff --git a/generic/tkGrab.c b/generic/tkGrab.c
index 7bc447d..6638e68 100644
--- a/generic/tkGrab.c
+++ b/generic/tkGrab.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrab.c,v 1.6.6.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkGrab.c,v 1.6.6.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -202,10 +202,10 @@ Tk_GrabObjCmd(clientData, interp, objc, objv)
char *arg;
int index;
int len;
- static char *optionStrings[] = { "current", "release",
+ static CONST char *optionStrings[] = { "current", "release",
"set", "status", (char *) NULL };
- static char *flagStrings[] = { "-global", (char *) NULL };
+ static CONST char *flagStrings[] = { "-global", (char *) NULL };
enum options { GRABCMD_CURRENT, GRABCMD_RELEASE,
GRABCMD_SET, GRABCMD_STATUS };
diff --git a/generic/tkGrid.c b/generic/tkGrid.c
index 05f5a00..6449697 100644
--- a/generic/tkGrid.c
+++ b/generic/tkGrid.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkGrid.c,v 1.17 2001/09/30 19:01:58 pspjuth Exp $
+ * RCS: @(#) $Id: tkGrid.c,v 1.17.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -333,7 +333,7 @@ Tk_GridObjCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
Tk_Window tkwin = (Tk_Window) clientData;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"bbox", "columnconfigure", "configure", "forget",
"info", "location", "propagate", "remove",
"rowconfigure", "size", "slaves", (char *) NULL };
@@ -849,7 +849,7 @@ GridRowColumnConfigureCommand(tkwin, interp, objc, objv)
int ok; /* temporary TCL result code */
int i, j;
char *string;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-minsize", "-pad", "-uniform", "-weight", (char *) NULL };
enum options { ROWCOL_MINSIZE, ROWCOL_PAD, ROWCOL_UNIFORM, ROWCOL_WEIGHT };
int index;
@@ -1117,7 +1117,7 @@ GridSlavesCommand(tkwin, interp, objc, objv)
Gridder *slavePtr;
int i, value;
int row = -1, column = -1;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-column", "-row", (char *) NULL };
enum options { SLAVES_COLUMN, SLAVES_ROW };
int index;
@@ -1848,7 +1848,7 @@ ResolveConstraints(masterPtr, slotType, maxOffset)
UniformGroup *old = uniformGroupPtr;
memcpy((VOID *) new, (VOID *) old, oldSize);
if (old != uniformPre) {
- Tcl_Free((char *) old);
+ ckfree((char *) old);
}
uniformGroupPtr = new;
uniformGroupsAlloced += UNIFORM_PREALLOC;
@@ -1888,7 +1888,7 @@ ResolveConstraints(masterPtr, slotType, maxOffset)
}
if (uniformGroupPtr != uniformPre) {
- Tcl_Free((char *) uniformGroupPtr);
+ ckfree((char *) uniformGroupPtr);
}
/*
@@ -2074,7 +2074,7 @@ ResolveConstraints(masterPtr, slotType, maxOffset)
--layoutPtr;
if (layoutPtr != layoutData) {
- Tcl_Free((char *)layoutPtr);
+ ckfree((char *)layoutPtr);
}
return requiredSize;
}
@@ -2254,7 +2254,7 @@ CheckSlotData(masterPtr, slot, slotType, checkOnly)
masterPtr->masterDataPtr->columnPtr;
memcpy((VOID *) new, (VOID *) old, oldSize );
memset((VOID *) (new+numSlot), 0, newSize - oldSize );
- Tcl_Free((char *) old);
+ ckfree((char *) old);
if (slotType == ROW) {
masterPtr->masterDataPtr->rowPtr = new ;
masterPtr->masterDataPtr->rowSpace = newNumSlot ;
@@ -2405,14 +2405,14 @@ DestroyGrid(memPtr)
if (gridPtr->masterDataPtr != NULL) {
if (gridPtr->masterDataPtr->rowPtr != NULL) {
- Tcl_Free((char *) gridPtr->masterDataPtr -> rowPtr);
+ ckfree((char *) gridPtr->masterDataPtr -> rowPtr);
}
if (gridPtr->masterDataPtr->columnPtr != NULL) {
- Tcl_Free((char *) gridPtr->masterDataPtr -> columnPtr);
+ ckfree((char *) gridPtr->masterDataPtr -> columnPtr);
}
- Tcl_Free((char *) gridPtr->masterDataPtr);
+ ckfree((char *) gridPtr->masterDataPtr);
}
- Tcl_Free((char *) gridPtr);
+ ckfree((char *) gridPtr);
}
/*
@@ -2536,7 +2536,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
char *lastWindow; /* use this window to base current
* Row/col on */
int numSkip; /* number of 'x' found */
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-column", "-columnspan", "-in", "-ipadx", "-ipady",
"-padx", "-pady", "-row", "-rowspan", "-sticky",
(char *) NULL };
@@ -2554,7 +2554,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
firstChar = 0;
for (numWindows = i = 0; i < objc; i++) {
prevChar = firstChar;
- string = Tcl_GetStringFromObj(objv[i], &length);
+ string = Tcl_GetStringFromObj(objv[i], (int *) &length);
firstChar = string[0];
if (firstChar == '.') {
diff --git a/generic/tkImage.c b/generic/tkImage.c
index b629816..9a31077 100644
--- a/generic/tkImage.c
+++ b/generic/tkImage.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkImage.c,v 1.12 2001/04/12 12:30:42 dkf Exp $
+ * RCS: @(#) $Id: tkImage.c,v 1.12.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -160,7 +160,7 @@ Tk_ImageObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument strings. */
{
- static char *imageOptions[] = {
+ static CONST char *imageOptions[] = {
"create", "delete", "height", "inuse", "names", "type", "types",
"width", (char *) NULL
};
@@ -368,12 +368,8 @@ Tk_ImageObjCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
masterPtr = (ImageMaster *) Tcl_GetHashValue(hPtr);
- if (masterPtr->typePtr != NULL) {
- for (imagePtr = masterPtr->instancePtr; imagePtr != NULL;
- imagePtr = imagePtr->nextPtr) {
- count = 1;
- break;
- }
+ if (masterPtr->typePtr != NULL && masterPtr->instancePtr != NULL) {
+ count = 1;
}
Tcl_SetBooleanObj(Tcl_GetObjResult(interp), count);
break;
diff --git a/generic/tkImgBmap.c b/generic/tkImgBmap.c
index 8f03e74..a4ad503 100644
--- a/generic/tkImgBmap.c
+++ b/generic/tkImgBmap.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkImgBmap.c,v 1.12 2001/07/14 15:53:53 drh Exp $
+ * RCS: @(#) $Id: tkImgBmap.c,v 1.12.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -498,7 +498,8 @@ TkGetBitmapData(interp, string, fileName, widthPtr, heightPtr,
int *hotXPtr, *hotYPtr; /* Position of hot spot or -1,-1. */
{
int width, height, numBytes, hotX, hotY;
- char *p, *end, *expandedFileName;
+ CONST char *expandedFileName;
+ char *p, *end;
ParseInfo pi;
char *data = NULL;
Tcl_DString buffer;
@@ -761,7 +762,7 @@ ImgBmapCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *bmapOptions[] = {"cget", "configure", (char *) NULL};
+ static CONST char *bmapOptions[] = {"cget", "configure", (char *) NULL};
BitmapMaster *masterPtr = (BitmapMaster *) clientData;
int code, index;
diff --git a/generic/tkImgGIF.c b/generic/tkImgGIF.c
index 108c7ad..089aacb 100644
--- a/generic/tkImgGIF.c
+++ b/generic/tkImgGIF.c
@@ -29,7 +29,7 @@
* | provided "as is" without express or implied warranty. |
* +-------------------------------------------------------------------+
*
- * RCS: @(#) $Id: tkImgGIF.c,v 1.18 2001/09/14 20:35:58 andreas_kupries Exp $
+ * RCS: @(#) $Id: tkImgGIF.c,v 1.18.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
/*
@@ -249,7 +249,7 @@ FileReadGIF(interp, chan, fileName, format, imageHandle, destX, destY,
int bitPixel;
unsigned char colorMap[MAXCOLORMAPSIZE][4];
int transparent = -1;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-index", NULL
};
diff --git a/generic/tkImgPhoto.c b/generic/tkImgPhoto.c
index 2a9d1df..1846990 100644
--- a/generic/tkImgPhoto.c
+++ b/generic/tkImgPhoto.c
@@ -7,6 +7,7 @@
*
* Copyright (c) 1994 The Australian National University.
* Copyright (c) 1994-1997 Sun Microsystems, Inc.
+ * Copyright (c) 2002 Donal K. Fellows
*
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
@@ -15,7 +16,7 @@
* Department of Computer Science,
* Australian National University.
*
- * RCS: @(#) $Id: tkImgPhoto.c,v 1.24 2001/09/14 20:35:58 andreas_kupries Exp $
+ * RCS: @(#) $Id: tkImgPhoto.c,v 1.24.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -563,13 +564,14 @@ ImgPhotoCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
int oldformat = 0;
- static char *photoOptions[] = {
+ static CONST char *photoOptions[] = {
"blank", "cget", "configure", "copy", "data", "get", "put",
- "read", "redither", "write", (char *) NULL
+ "read", "redither", "transparency", "write", (char *) NULL
};
enum options {
PHOTO_BLANK, PHOTO_CGET, PHOTO_CONFIGURE, PHOTO_COPY, PHOTO_DATA,
- PHOTO_GET, PHOTO_PUT, PHOTO_READ, PHOTO_REDITHER, PHOTO_WRITE
+ PHOTO_GET, PHOTO_PUT, PHOTO_READ, PHOTO_REDITHER, PHOTO_TRANS,
+ PHOTO_WRITE
};
PhotoMaster *masterPtr = (PhotoMaster *) clientData;
@@ -578,8 +580,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
int dataWidth, dataHeight;
struct SubcommandOptions options;
int listArgc;
- char **listArgv;
- char **srcArgv;
+ CONST char **listArgv;
+ CONST char **srcArgv;
unsigned char *pixelPtr;
Tk_PhotoImageBlock block;
Tk_Window tkwin;
@@ -607,8 +609,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
return proc(clientData, interp, objc, objv);
}
+
switch ((enum options) index) {
- case PHOTO_BLANK: {
+ case PHOTO_BLANK:
/*
* photo blank command - just call Tk_PhotoBlank.
*/
@@ -620,9 +623,10 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
break;
- }
- case PHOTO_CGET: {
+
+ case PHOTO_CGET: {
char *arg;
+
if (objc != 3) {
Tcl_WrongNumArgs(interp, 2, objv, "option");
return TCL_ERROR;
@@ -643,8 +647,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
Tk_ConfigureValue(interp, Tk_MainWindow(interp), configSpecs,
(char *) masterPtr, Tcl_GetString(objv[2]), 0);
break;
- }
- case PHOTO_CONFIGURE: {
+ }
+
+ case PHOTO_CONFIGURE:
/*
* photo configure command - handle this in the standard way.
*/
@@ -676,39 +681,38 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return TCL_OK;
}
if (objc == 3) {
- char *arg = Tcl_GetStringFromObj(objv[2], (int *) &length);
- if (!strncmp(arg, "-data", length)) {
- Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- "-data {} {} {}", (char *) NULL);
- if (masterPtr->dataString) {
- Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
- masterPtr->dataString);
- } else {
+ char *arg = Tcl_GetStringFromObj(objv[2], (int *) &length);
+ if (!strncmp(arg, "-data", length)) {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- " {}", (char *) NULL);
- }
- return TCL_OK;
- } else if (!strncmp(arg, "-format", length)) {
- Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- "-format {} {} {}", (char *) NULL);
- if (masterPtr->format) {
- Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
- masterPtr->format);
- } else {
+ "-data {} {} {}", (char *) NULL);
+ if (masterPtr->dataString) {
+ Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
+ masterPtr->dataString);
+ } else {
+ Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+ " {}", (char *) NULL);
+ }
+ return TCL_OK;
+ } else if (!strncmp(arg, "-format", length)) {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
- " {}", (char *) NULL);
+ "-format {} {} {}", (char *) NULL);
+ if (masterPtr->format) {
+ Tcl_ListObjAppendElement(interp, Tcl_GetObjResult(interp),
+ masterPtr->format);
+ } else {
+ Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
+ " {}", (char *) NULL);
+ }
+ return TCL_OK;
+ } else {
+ return Tk_ConfigureInfo(interp, Tk_MainWindow(interp),
+ configSpecs, (char *) masterPtr, arg, 0);
}
- return TCL_OK;
- } else {
- return Tk_ConfigureInfo(interp, Tk_MainWindow(interp),
- configSpecs, (char *) masterPtr, arg, 0);
- }
}
return ImgPhotoConfigureMaster(interp, masterPtr, objc-2, objv+2,
TK_CONFIG_ARGV_ONLY);
- break;
- }
- case PHOTO_COPY: {
+
+ case PHOTO_COPY:
/*
* photo copy command - first parse options.
*/
@@ -734,7 +738,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* Check the values given for the -from option.
*/
- if ((srcHandle = Tk_FindPhoto(interp, Tcl_GetString(options.name))) == NULL) {
+ srcHandle = Tk_FindPhoto(interp, Tcl_GetString(options.name));
+ if (srcHandle == NULL) {
Tcl_AppendResult(interp, "image \"",
Tcl_GetString(options.name), "\" doesn't",
" exist or is not a photo image", (char *) NULL);
@@ -753,11 +758,11 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* Fill in default values for unspecified parameters.
*/
- if (((options.options & OPT_FROM) == 0) || (options.fromX2 < 0)) {
+ if (!(options.options & OPT_FROM) || (options.fromX2 < 0)) {
options.fromX2 = block.width;
options.fromY2 = block.height;
}
- if (((options.options & OPT_TO) == 0) || (options.toX2 < 0)) {
+ if (!(options.options & OPT_TO) || (options.toX2 < 0)) {
width = options.fromX2 - options.fromX;
if (options.subsampleX > 0) {
width = (width + options.subsampleX - 1) / options.subsampleX;
@@ -794,7 +799,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
*/
block.pixelPtr += options.fromX * block.pixelSize
- + options.fromY * block.pitch;
+ + options.fromY * block.pitch;
block.width = options.fromX2 - options.fromX;
block.height = options.fromY2 - options.fromY;
Tk_PhotoPutZoomedBlock((Tk_PhotoHandle) masterPtr, &block,
@@ -803,8 +808,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
options.subsampleX, options.subsampleY);
break;
- }
- case PHOTO_DATA: {
+
+ case PHOTO_DATA: {
char *data;
/*
@@ -877,7 +882,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
data = ImgGetPhoto(masterPtr, &block, &options);
- result = ((int (*) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *formatString,
+ result = ((int (*) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *formatString,
Tk_PhotoImageBlock *blockPtr, VOID *dummy))) stringWriteProc)
(interp, options.format, &block, (VOID *) NULL);
if (options.background) {
@@ -889,6 +894,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return result;
break;
}
+
case PHOTO_GET: {
/*
* photo get command - first parse and check parameters.
@@ -921,7 +927,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
Tcl_AppendResult(interp, string, (char *) NULL);
break;
}
- case PHOTO_PUT: {
+
+ case PHOTO_PUT:
/*
* photo put command - first parse the options and colors specified.
*/
@@ -930,7 +937,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
memset((VOID *) &options, 0, sizeof(options));
options.name = NULL;
if (ParseSubcommandOptions(&options, interp, OPT_TO|OPT_FORMAT,
- &index, objc, objv) != TCL_OK) {
+ &index, objc, objv) != TCL_OK) {
return TCL_ERROR;
}
if ((options.name == NULL) || (index < objc)) {
@@ -941,8 +948,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
if (MatchStringFormat(interp, options.name ? objv[2]:NULL,
options.format, &imageFormat, &imageWidth,
&imageHeight, &oldformat) == TCL_OK) {
- Tcl_Obj *format;
- Tcl_Obj *data;
+ Tcl_Obj *format, *data;
+
if (((options.options & OPT_TO) == 0) || (options.toX2 < 0)) {
options.toX2 = options.toX + imageWidth;
options.toY2 = options.toY + imageHeight;
@@ -963,8 +970,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
if ((*imageFormat->stringReadProc)(interp, data,
format, (Tk_PhotoHandle) masterPtr,
- options.toX, options.toY, imageWidth, imageHeight, 0, 0)
- != TCL_OK) {
+ options.toX, options.toY, imageWidth, imageHeight,
+ 0, 0) != TCL_OK) {
return TCL_ERROR;
}
masterPtr->flags |= IMAGE_CHANGED;
@@ -975,8 +982,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
Tcl_ResetResult(interp);
if (Tcl_SplitList(interp, Tcl_GetString(options.name),
- &dataHeight, &srcArgv)
- != TCL_OK) {
+ &dataHeight, &srcArgv) != TCL_OK) {
return TCL_ERROR;
}
tkwin = Tk_MainWindow(interp);
@@ -990,17 +996,14 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
if (y == 0) {
dataWidth = listArgc;
- pixelPtr = (unsigned char *) ckalloc((unsigned)
- dataWidth * dataHeight * 3);
+ pixelPtr = (unsigned char *)
+ ckalloc((unsigned) dataWidth * dataHeight * 3);
block.pixelPtr = pixelPtr;
- } else {
- if (listArgc != dataWidth) {
- Tcl_AppendResult(interp, "all elements of color list must",
- " have the same number of elements",
- (char *) NULL);
- ckfree((char *) listArgv);
- break;
- }
+ } else if (listArgc != dataWidth) {
+ Tcl_AppendResult(interp, "all elements of color list must",
+ " have the same number of elements", (char *) NULL);
+ ckfree((char *) listArgv);
+ break;
}
for (x = 0; x < dataWidth; ++x) {
if (!XParseColor(Tk_Display(tkwin), Tk_Colormap(tkwin),
@@ -1014,8 +1017,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
*pixelPtr++ = color.blue >> 8;
}
ckfree((char *) listArgv);
- if (x < dataWidth)
+ if (x < dataWidth) {
break;
+ }
}
ckfree((char *) srcArgv);
if (y < dataHeight || dataHeight == 0 || dataWidth == 0) {
@@ -1033,7 +1037,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* copy the block in using Tk_PhotoPutBlock.
*/
- if (((options.options & OPT_TO) == 0) || (options.toX2 < 0)) {
+ if (!(options.options & OPT_TO) || (options.toX2 < 0)) {
options.toX2 = options.toX + dataWidth;
options.toY2 = options.toY + dataHeight;
}
@@ -1050,13 +1054,14 @@ ImgPhotoCmd(clientData, interp, objc, objv)
options.toY2 - options.toY);
ckfree((char *) block.pixelPtr);
break;
- }
- case PHOTO_READ: {
+
+ case PHOTO_READ: {
+ Tcl_Obj *format;
+
/*
* photo read command - first parse the options specified.
*/
- Tcl_Obj *format;
index = 2;
memset((VOID *) &options, 0, sizeof(options));
options.name = NULL;
@@ -1067,8 +1072,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
return TCL_ERROR;
}
if ((options.name == NULL) || (index < objc)) {
- Tcl_WrongNumArgs(interp, 2, objv,
- "fileName ?options?");
+ Tcl_WrongNumArgs(interp, 2, objv, "fileName ?options?");
return TCL_ERROR;
}
@@ -1078,7 +1082,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
if (Tcl_IsSafe(interp)) {
Tcl_AppendResult(interp, "can't get image from a file in a",
- " safe interpreter", (char *) NULL);
+ " safe interpreter", (char *) NULL);
return TCL_ERROR;
}
@@ -1103,8 +1107,8 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
if (MatchFileFormat(interp, chan,
- Tcl_GetString(options.name), options.format,
- &imageFormat, &imageWidth, &imageHeight, &oldformat) != TCL_OK) {
+ Tcl_GetString(options.name), options.format, &imageFormat,
+ &imageWidth, &imageHeight, &oldformat) != TCL_OK) {
Tcl_Close(NULL, chan);
return TCL_ERROR;
}
@@ -1156,42 +1160,179 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
return result;
break;
- }
- case PHOTO_REDITHER: {
- if (objc == 2) {
+ }
+
+ case PHOTO_REDITHER:
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Call Dither if any part of the image is not correctly
+ * dithered at present.
+ */
+
+ x = masterPtr->ditherX;
+ y = masterPtr->ditherY;
+ if (masterPtr->ditherX != 0) {
+ Tk_DitherPhoto((Tk_PhotoHandle) masterPtr, x, y,
+ masterPtr->width - x, 1);
+ }
+ if (masterPtr->ditherY < masterPtr->height) {
+ x = 0;
+ Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, 0,
+ masterPtr->ditherY, masterPtr->width,
+ masterPtr->height - masterPtr->ditherY);
+ }
+
+ if (y < masterPtr->height) {
/*
- * Call Dither if any part of the image is not correctly
- * dithered at present.
+ * Tell the core image code that part of the image has changed.
*/
- x = masterPtr->ditherX;
- y = masterPtr->ditherY;
- if (masterPtr->ditherX != 0) {
- Tk_DitherPhoto((Tk_PhotoHandle) masterPtr, x, y, masterPtr->width - x, 1);
+ Tk_ImageChanged(masterPtr->tkMaster, x, y,
+ (masterPtr->width - x), (masterPtr->height - y),
+ masterPtr->width, masterPtr->height);
+ }
+ break;
+
+ case PHOTO_TRANS: {
+ static CONST char *photoTransOptions[] = {
+ "get", "set", (char *) NULL
+ };
+ enum transOptions {
+ PHOTO_TRANS_GET, PHOTO_TRANS_SET
+ };
+
+ if (objc < 3) {
+ Tcl_WrongNumArgs(interp, 2, objv, "option ?arg arg ...?");
+ return TCL_ERROR;
+ }
+ if (Tcl_GetIndexFromObj(interp, objv[2], photoTransOptions, "option",
+ 0, &index) != TCL_OK) {
+ return TCL_ERROR;
+ }
+
+ switch ((enum transOptions) index) {
+ case PHOTO_TRANS_GET: {
+ XRectangle testBox;
+ TkRegion testRegion;
+
+ if (objc != 5) {
+ Tcl_WrongNumArgs(interp, 3, objv, "x y");
+ return TCL_ERROR;
+ }
+ if ((Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK)
+ || (Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK)) {
+ return TCL_ERROR;
+ }
+ if ((x < 0) || (x >= masterPtr->width)
+ || (y < 0) || (y >= masterPtr->height)) {
+ Tcl_AppendResult(interp, Tcl_GetString(objv[0]),
+ " transparency get: coordinates out of range",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ testBox.x = x;
+ testBox.y = y;
+ testBox.width = 1;
+ testBox.height = 1;
+ /* What a way to do a test! */
+ testRegion = TkCreateRegion();
+ TkUnionRectWithRegion(&testBox, testRegion, testRegion);
+ TkIntersectRegion(testRegion, masterPtr->validRegion, testRegion);
+ TkClipBox(testRegion, &testBox);
+ TkDestroyRegion(testRegion);
+
+ Tcl_SetBooleanObj(Tcl_GetObjResult(interp),
+ (testBox.width==0 && testBox.height==0));
+ return TCL_OK;
+ }
+
+ case PHOTO_TRANS_SET: {
+ int transFlag;
+ XRectangle setBox;
+
+ if (objc != 6) {
+ Tcl_WrongNumArgs(interp, 3, objv, "x y boolean");
+ return TCL_ERROR;
}
- if (masterPtr->ditherY < masterPtr->height) {
- x = 0;
- Tk_DitherPhoto((Tk_PhotoHandle)masterPtr, 0, masterPtr->ditherY, masterPtr->width,
- masterPtr->height - masterPtr->ditherY);
+ if ((Tcl_GetIntFromObj(interp, objv[3], &x) != TCL_OK)
+ || (Tcl_GetIntFromObj(interp, objv[4], &y) != TCL_OK)
+ || (Tcl_GetBooleanFromObj(interp, objv[5],
+ &transFlag) != TCL_OK)) {
+ return TCL_ERROR;
+ }
+ if ((x < 0) || (x >= masterPtr->width)
+ || (y < 0) || (y >= masterPtr->height)) {
+ Tcl_AppendResult(interp, Tcl_GetString(objv[0]),
+ " transparency set: coordinates out of range",
+ (char *) NULL);
+ return TCL_ERROR;
}
- if (y < masterPtr->height) {
+ if (transFlag) {
/*
- * Tell the core image code that part of the image has changed.
+ * Make pixel transparent. Do by building a mask for
+ * all the other pixels in the image and setting the
+ * validRegion to the intersection of that with the
+ * old validRegion. There isn't a neater way to do
+ * this given the limited set of operations available
+ * in the platform-independent region operations.
*/
-
- Tk_ImageChanged(masterPtr->tkMaster, x, y,
- (masterPtr->width - x), (masterPtr->height - y),
- masterPtr->width, masterPtr->height);
+ TkRegion setRegion = TkCreateRegion();
+
+ if (y > 0) {
+ setBox.x = 0;
+ setBox.y = 0;
+ setBox.width = masterPtr->width;
+ setBox.height = y;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ if (x > 0) {
+ setBox.x = 0;
+ setBox.y = y;
+ setBox.width = x;
+ setBox.height = 1;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ if (x < masterPtr->width-1) {
+ setBox.x = x+1;
+ setBox.y = y;
+ setBox.width = masterPtr->width-1 - x;
+ setBox.height = 1;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ if (y < masterPtr->height-1) {
+ setBox.x = 0;
+ setBox.y = y+1;
+ setBox.width = masterPtr->width;
+ setBox.height = masterPtr->height-1 - y;
+ TkUnionRectWithRegion(&setBox, setRegion, setRegion);
+ }
+ TkIntersectRegion(masterPtr->validRegion, setRegion,
+ masterPtr->validRegion);
+ TkDestroyRegion(setRegion);
+ } else {
+ /*
+ * Make pixel opaque.
+ */
+ setBox.x = x;
+ setBox.y = y;
+ setBox.width = 1;
+ setBox.height = 1;
+ TkUnionRectWithRegion(&setBox, masterPtr->validRegion,
+ masterPtr->validRegion);
}
+ }
- } else {
- Tcl_WrongNumArgs(interp, 2, objv, (char *) NULL);
- return TCL_ERROR;
}
- break;
- }
- case PHOTO_WRITE: {
+ return TCL_OK;
+ }
+
+ case PHOTO_WRITE: {
char *data;
Tcl_Obj *format;
@@ -1201,7 +1342,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
if (Tcl_IsSafe(interp)) {
Tcl_AppendResult(interp, "can't write image to a file in a",
- " safe interpreter", (char *) NULL);
+ " safe interpreter", (char *) NULL);
return TCL_ERROR;
}
@@ -1235,7 +1376,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
* Fill in default values for unspecified parameters.
*/
- if (((options.options & OPT_FROM) == 0) || (options.fromX2 < 0)) {
+ if (!(options.options & OPT_FROM) || (options.fromX2 < 0)) {
options.fromX2 = masterPtr->width;
options.fromY2 = masterPtr->height;
}
@@ -1247,7 +1388,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
matched = 0;
for (imageFormat = tsdPtr->formatList; imageFormat != NULL;
- imageFormat = imageFormat->nextPtr) {
+ imageFormat = imageFormat->nextPtr) {
if ((options.format == NULL)
|| (strncasecmp(Tcl_GetString(options.format),
imageFormat->name, strlen(imageFormat->name)) == 0)) {
@@ -1258,18 +1399,18 @@ ImgPhotoCmd(clientData, interp, objc, objv)
}
}
if (imageFormat == NULL) {
- oldformat = 1;
- for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL;
- imageFormat = imageFormat->nextPtr) {
- if ((options.format == NULL)
- || (strncasecmp(Tcl_GetString(options.format),
- imageFormat->name, strlen(imageFormat->name)) == 0)) {
- matched = 1;
- if (imageFormat->fileWriteProc != NULL) {
- break;
+ oldformat = 1;
+ for (imageFormat = tsdPtr->oldFormatList; imageFormat != NULL;
+ imageFormat = imageFormat->nextPtr) {
+ if ((options.format == NULL)
+ || (strncasecmp(Tcl_GetString(options.format),
+ imageFormat->name, strlen(imageFormat->name)) == 0)) {
+ matched = 1;
+ if (imageFormat->fileWriteProc != NULL) {
+ break;
+ }
}
}
- }
}
if (imageFormat == NULL) {
if (options.format == NULL) {
@@ -1299,8 +1440,7 @@ ImgPhotoCmd(clientData, interp, objc, objv)
format = (Tcl_Obj *) Tcl_GetString(options.format);
}
result = (*imageFormat->fileWriteProc)(interp,
- Tcl_GetString(options.name),
- format, &block);
+ Tcl_GetString(options.name), format, &block);
if (options.background) {
Tk_FreeColor(options.background);
}
@@ -1308,10 +1448,9 @@ ImgPhotoCmd(clientData, interp, objc, objv)
ckfree(data);
}
return result;
- break;
- }
}
+ }
return TCL_OK;
}
@@ -2534,6 +2673,10 @@ ImgPhotoInstanceSetSize(instancePtr)
(masterPtr->width > 0) ? masterPtr->width: 1,
(masterPtr->height > 0) ? masterPtr->height: 1,
instancePtr->visualInfo.depth);
+ if(!newPixmap) {
+ panic("Fail to create pixmap with Tk_GetPixmap in ImgPhotoInstanceSetSize.\n");
+ return;
+ }
/*
* The following is a gross hack needed to properly support colormaps
diff --git a/generic/tkInt.decls b/generic/tkInt.decls
index 02de437..44d4afe 100644
--- a/generic/tkInt.decls
+++ b/generic/tkInt.decls
@@ -9,7 +9,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: tkInt.decls,v 1.21.2.2 2001/10/17 07:02:06 wolfsuit Exp $
+# RCS: @(#) $Id: tkInt.decls,v 1.21.2.3 2002/02/05 02:25:15 wolfsuit Exp $
library tk
@@ -178,7 +178,8 @@ declare 32 generic {
}
declare 33 generic {
- char * TkGetDefaultScreenName (Tcl_Interp *interp, char *screenName)
+ CONST char * TkGetDefaultScreenName (Tcl_Interp *interp, \
+ CONST char *screenName)
}
declare 34 generic {
@@ -287,7 +288,7 @@ declare 57 generic {
}
declare 58 generic {
- void TkpDisplayWarning (char *msg, char *title)
+ void TkpDisplayWarning (CONST char *msg, CONST char *title)
}
declare 59 generic {
@@ -328,7 +329,7 @@ declare 67 generic {
}
declare 68 generic {
- TkDisplay * TkpOpenDisplay (char *display_name)
+ TkDisplay * TkpOpenDisplay (CONST char *display_name)
}
declare 69 generic {
@@ -556,9 +557,10 @@ declare 119 {mac aqua win} {
TkRegion src, TkRegion dr_return)
}
-declare 120 {mac macosx} {
- void TkGenerateActivateEvents (TkWindow *winPtr, int active)
-}
+# removed duplicate from tkIntPlat table
+#declare 120 {mac macosx} {
+# void TkGenerateActivateEvents (TkWindow *winPtr, int active)
+#}
declare 121 {mac macosx} {
Pixmap TkpCreateNativeBitmap (Display *display, char * source)
@@ -568,48 +570,50 @@ declare 122 {mac macosx} {
void TkpDefineNativeBitmaps (void)
}
-declare 123 {mac macosx} {
- unsigned long TkpGetMS (void)
-}
+# removed duplicate from tkIntPlat table
+#declare 123 {mac macosx} {
+# unsigned long TkpGetMS (void)
+#}
declare 124 {mac macosx} {
Pixmap TkpGetNativeAppBitmap (Display *display, \
CONST char *name, int *width, int *height)
}
-declare 125 {mac macosx} {
- void TkPointerDeadWindow (TkWindow *winPtr)
-}
-
-declare 126 {mac macosx} {
- void TkpSetCapture (TkWindow *winPtr)
-}
-
-declare 127 {mac macosx} {
- void TkpSetCursor (TkpCursor cursor)
-}
-
-declare 128 {mac macosx} {
- void TkpWmSetState (TkWindow *winPtr, int state)
-}
-
-declare 130 {mac macosx} {
- Window TkGetTransientMaster (TkWindow *winPtr)
-}
-
-declare 131 {mac macosx} {
- int TkGenerateButtonEvent (int x, int y, \
- Window window, unsigned int state)
-}
-
-declare 133 {mac macosx} {
- void TkGenWMDestroyEvent (Tk_Window tkwin)
-}
-
-declare 134 {mac macosx} {
- void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
- int width, int height, int flags)
-}
+# removed duplicates from tkIntPlat table
+#declare 125 {mac macosx} {
+# void TkPointerDeadWindow (TkWindow *winPtr)
+#}
+#
+#declare 126 {mac macosx} {
+# void TkpSetCapture (TkWindow *winPtr)
+#}
+#
+#declare 127 {mac macosx} {
+# void TkpSetCursor (TkpCursor cursor)
+#}
+#
+#declare 128 {mac macosx} {
+# void TkpWmSetState (TkWindow *winPtr, int state)
+#}
+#
+#declare 130 {mac macosx} {
+# Window TkGetTransientMaster (TkWindow *winPtr)
+#}
+#
+#declare 131 {mac macosx} {
+# int TkGenerateButtonEvent (int x, int y, \
+# Window window, unsigned int state)
+#}
+#
+#declare 133 {mac macosx} {
+# void TkGenWMDestroyEvent (Tk_Window tkwin)
+#}
+#
+#declare 134 {mac macosx} {
+# void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
+# int width, int height, int flags)
+#}
declare 135 generic {
void TkpDrawHighlightBorder (Tk_Window tkwin, GC fgGC, GC bgGC, \
@@ -637,6 +641,10 @@ declare 140 generic {
TkRegion TkPhotoGetValidRegion (Tk_PhotoHandle handle)
}
+declare 141 generic {
+ TkWindow ** TkWmStackorderToplevel(TkWindow *parentPtr)
+}
+
##############################################################################
# Define the platform specific internal Tcl interface. These functions are
@@ -833,13 +841,14 @@ declare 0 mac {
void TkGenerateActivateEvents (TkWindow *winPtr, int active)
}
-declare 1 mac {
- Pixmap TkpCreateNativeBitmap (Display *display, char * source)
-}
-
-declare 2 mac {
- void TkpDefineNativeBitmaps (void)
-}
+# removed duplicates from tkInt table
+#declare 1 {mac macosx} {
+# Pixmap TkpCreateNativeBitmap (Display *display, char * source)
+#}
+#
+#declare 2 {mac macosx} {
+# void TkpDefineNativeBitmaps (void)
+#}
declare 3 mac {
unsigned long TkpGetMS (void)
@@ -878,10 +887,11 @@ declare 16 mac {
void TkGenWMDestroyEvent (Tk_Window tkwin)
}
-declare 17 mac {
- void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
- int width, int height, int flags)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 17 mac {
+# void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
+# int width, int height, int flags)
+#}
declare 18 mac {
unsigned int TkMacButtonKeyState (void)
@@ -891,9 +901,10 @@ declare 19 mac {
void TkMacClearMenubarActive (void)
}
-declare 20 mac {
- int TkMacConvertEvent (EventRecord *eventPtr)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 20 mac {
+# int TkMacConvertEvent (EventRecord *eventPtr)
+#}
declare 21 mac {
int TkMacDispatchMenuEvent (int menuID, int index)
@@ -903,17 +914,19 @@ declare 22 mac {
void TkMacInstallCursor (int resizeOverride)
}
-declare 23 mac {
- int TkMacConvertTkEvent (EventRecord *eventPtr, Window window)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 23 mac {
+# int TkMacConvertTkEvent (EventRecord *eventPtr, Window window)
+#}
declare 24 mac {
void TkMacHandleTearoffMenu (void)
}
-declare 26 mac {
- void TkMacInvalClipRgns (TkWindow *winPtr)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 26 mac {
+# void TkMacInvalClipRgns (TkWindow *winPtr)
+#}
declare 27 mac {
void TkMacDoHLEvent (EventRecord *theEvent)
@@ -923,9 +936,10 @@ declare 29 mac {
Time TkMacGenerateTime (void)
}
-declare 30 mac {
- GWorldPtr TkMacGetDrawablePort (Drawable drawable)
-}
+# removed duplicate from tkPlat table (tk.decls)
+#declare 30 mac {
+# GWorldPtr TkMacGetDrawablePort (Drawable drawable)
+#}
declare 31 mac {
TkWindow * TkMacGetScrollbarGrowWindow (TkWindow *winPtr)
@@ -943,17 +957,18 @@ declare 34 mac {
void TkMacHandleMenuSelect (long mResult, int optionKeyPressed)
}
-declare 35 mac {
- int TkMacHaveAppearance (void)
-}
-
-declare 36 mac {
- void TkMacInitAppleEvents (Tcl_Interp *interp)
-}
-
-declare 37 mac {
- void TkMacInitMenus (Tcl_Interp *interp)
-}
+# removed duplicates from tkPlat table (tk.decls)
+#declare 35 mac {
+# int TkMacHaveAppearance (void)
+#}
+#
+#declare 36 mac {
+# void TkMacInitAppleEvents (Tcl_Interp *interp)
+#}
+#
+#declare 37 mac {
+# void TkMacInitMenus (Tcl_Interp *interp)
+#}
declare 38 mac {
void TkMacInvalidateWindow (MacDrawable *macWin, int flag)
@@ -1056,6 +1071,10 @@ declare 65 mac {
void TkMacPreprocessMenu (void)
}
+declare 66 mac {
+ int TkpIsWindowFloating (WindowRef window)
+}
+
########################
# Mac OS X specific functions
@@ -1252,6 +1271,27 @@ declare 47 aqua {
Tk_Window TkMacOSXGetCapture (void)
}
+declare 49 aqua {
+ Window TkGetTransientMaster (TkWindow *winPtr)
+}
+
+declare 50 aqua {
+ int TkGenerateButtonEvent (int x, int y, \
+ Window window, unsigned int state)
+}
+
+declare 51 aqua {
+ void TkGenWMDestroyEvent (Tk_Window tkwin)
+}
+
+declare 52 aqua {
+ void TkGenWMConfigureEvent (Tk_Window tkwin, int x, int y, \
+ int width, int height, int flags)
+}
+
+declare 53 aqua {
+ unsigned long TkpGetMS (void)
+}
##############################################################################
@@ -1545,7 +1585,7 @@ declare 61 win {
}
declare 62 win {
- void XSetCommand (Display* d, Window w, char** c, int i)
+ void XSetCommand (Display* d, Window w, CONST char** c, int i)
}
declare 63 win {
diff --git a/generic/tkInt.h b/generic/tkInt.h
index 440c339..4fd3b46 100644
--- a/generic/tkInt.h
+++ b/generic/tkInt.h
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: $Id: tkInt.h,v 1.40 2001/09/26 21:36:19 pspjuth Exp $
+ * RCS: $Id: tkInt.h,v 1.40.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINT
@@ -1035,8 +1035,8 @@ EXTERN int Tk_WinfoObjCmd _ANSI_ARGS_((ClientData clientData,
EXTERN int Tk_WmCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *interp, int argc, char **argv));
-void TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
- int devId, char *buffer, long size));
+EXTERN void TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
+ int devId, CONST char *buffer, long size));
EXTERN void TkEventInit _ANSI_ARGS_((void));
diff --git a/generic/tkIntDecls.h b/generic/tkIntDecls.h
index 98f871e..a410c00 100644
--- a/generic/tkIntDecls.h
+++ b/generic/tkIntDecls.h
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.3 2001/11/11 17:58:53 wolfsuit Exp $
+ * RCS: @(#) $Id: tkIntDecls.h,v 1.13.2.4 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINTDECLS
@@ -141,8 +141,8 @@ EXTERN void TkGetButtPoints _ANSI_ARGS_((double p1[],
EXTERN TkCursor * TkGetCursorByName _ANSI_ARGS_((Tcl_Interp * interp,
Tk_Window tkwin, Tk_Uid string));
/* 33 */
-EXTERN char * TkGetDefaultScreenName _ANSI_ARGS_((
- Tcl_Interp * interp, char * screenName));
+EXTERN CONST char * TkGetDefaultScreenName _ANSI_ARGS_((
+ Tcl_Interp * interp, CONST char * screenName));
/* 34 */
EXTERN TkDisplay * TkGetDisplay _ANSI_ARGS_((Display * display));
/* 35 */
@@ -214,8 +214,8 @@ EXTERN void TkpCloseDisplay _ANSI_ARGS_((TkDisplay * dispPtr));
EXTERN void TkpClaimFocus _ANSI_ARGS_((TkWindow * topLevelPtr,
int force));
/* 58 */
-EXTERN void TkpDisplayWarning _ANSI_ARGS_((char * msg,
- char * title));
+EXTERN void TkpDisplayWarning _ANSI_ARGS_((CONST char * msg,
+ CONST char * title));
/* 59 */
EXTERN void TkpGetAppName _ANSI_ARGS_((Tcl_Interp * interp,
Tcl_DString * name));
@@ -241,7 +241,8 @@ EXTERN Window TkpMakeWindow _ANSI_ARGS_((TkWindow * winPtr,
EXTERN void TkpMenuNotifyToplevelCreate _ANSI_ARGS_((
Tcl_Interp * interp1, char * menuName));
/* 68 */
-EXTERN TkDisplay * TkpOpenDisplay _ANSI_ARGS_((char * display_name));
+EXTERN TkDisplay * TkpOpenDisplay _ANSI_ARGS_((
+ CONST char * display_name));
/* 69 */
EXTERN int TkPointerEvent _ANSI_ARGS_((XEvent * eventPtr,
TkWindow * winPtr));
@@ -469,16 +470,7 @@ EXTERN void TkUnionRectWithRegion _ANSI_ARGS_((XRectangle* rect,
EXTERN void TkUnionRectWithRegion _ANSI_ARGS_((XRectangle* rect,
TkRegion src, TkRegion dr_return));
#endif /* MAC_OSX_TK */
-#ifdef MAC_TCL
-/* 120 */
-EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
- TkWindow * winPtr, int active));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 120 */
-EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
- TkWindow * winPtr, int active));
-#endif /* MAC_OSX_TCL */
+/* Slot 120 is reserved */
#ifdef MAC_TCL
/* 121 */
EXTERN Pixmap TkpCreateNativeBitmap _ANSI_ARGS_((Display * display,
@@ -497,14 +489,7 @@ EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
/* 122 */
EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 123 */
-EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 123 */
-EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
-#endif /* MAC_OSX_TCL */
+/* Slot 123 is reserved */
#ifdef MAC_TCL
/* 124 */
EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display * display,
@@ -515,80 +500,16 @@ EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display * display,
EXTERN Pixmap TkpGetNativeAppBitmap _ANSI_ARGS_((Display * display,
CONST char * name, int * width, int * height));
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 125 */
-EXTERN void TkPointerDeadWindow _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 125 */
-EXTERN void TkPointerDeadWindow _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 126 */
-EXTERN void TkpSetCapture _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 126 */
-EXTERN void TkpSetCapture _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 127 */
-EXTERN void TkpSetCursor _ANSI_ARGS_((TkpCursor cursor));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 127 */
-EXTERN void TkpSetCursor _ANSI_ARGS_((TkpCursor cursor));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 128 */
-EXTERN void TkpWmSetState _ANSI_ARGS_((TkWindow * winPtr,
- int state));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 128 */
-EXTERN void TkpWmSetState _ANSI_ARGS_((TkWindow * winPtr,
- int state));
-#endif /* MAC_OSX_TCL */
+/* Slot 125 is reserved */
+/* Slot 126 is reserved */
+/* Slot 127 is reserved */
+/* Slot 128 is reserved */
/* Slot 129 is reserved */
-#ifdef MAC_TCL
-/* 130 */
-EXTERN Window TkGetTransientMaster _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 130 */
-EXTERN Window TkGetTransientMaster _ANSI_ARGS_((TkWindow * winPtr));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 131 */
-EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
- Window window, unsigned int state));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 131 */
-EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
- Window window, unsigned int state));
-#endif /* MAC_OSX_TCL */
+/* Slot 130 is reserved */
+/* Slot 131 is reserved */
/* Slot 132 is reserved */
-#ifdef MAC_TCL
-/* 133 */
-EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 133 */
-EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-/* 134 */
-EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
- int x, int y, int width, int height,
- int flags));
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-/* 134 */
-EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
- int x, int y, int width, int height,
- int flags));
-#endif /* MAC_OSX_TCL */
+/* Slot 133 is reserved */
+/* Slot 134 is reserved */
/* 135 */
EXTERN void TkpDrawHighlightBorder _ANSI_ARGS_((Tk_Window tkwin,
GC fgGC, GC bgGC, int highlightWidth,
@@ -607,6 +528,9 @@ EXTERN void TkpInitKeymapInfo _ANSI_ARGS_((TkDisplay * dispPtr));
/* 140 */
EXTERN TkRegion TkPhotoGetValidRegion _ANSI_ARGS_((
Tk_PhotoHandle handle));
+/* 141 */
+EXTERN TkWindow ** TkWmStackorderToplevel _ANSI_ARGS_((
+ TkWindow * parentPtr));
typedef struct TkIntStubs {
int magic;
@@ -645,7 +569,7 @@ typedef struct TkIntStubs {
char * (*tkGetBitmapData) _ANSI_ARGS_((Tcl_Interp * interp, char * string, char * fileName, int * widthPtr, int * heightPtr, int * hotXPtr, int * hotYPtr)); /* 30 */
void (*tkGetButtPoints) _ANSI_ARGS_((double p1[], double p2[], double width, int project, double m1[], double m2[])); /* 31 */
TkCursor * (*tkGetCursorByName) _ANSI_ARGS_((Tcl_Interp * interp, Tk_Window tkwin, Tk_Uid string)); /* 32 */
- char * (*tkGetDefaultScreenName) _ANSI_ARGS_((Tcl_Interp * interp, char * screenName)); /* 33 */
+ CONST char * (*tkGetDefaultScreenName) _ANSI_ARGS_((Tcl_Interp * interp, CONST char * screenName)); /* 33 */
TkDisplay * (*tkGetDisplay) _ANSI_ARGS_((Display * display)); /* 34 */
int (*tkGetDisplayOf) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], Tk_Window * tkwinPtr)); /* 35 */
TkWindow * (*tkGetFocusWin) _ANSI_ARGS_((TkWindow * winPtr)); /* 36 */
@@ -670,7 +594,7 @@ typedef struct TkIntStubs {
int (*tkpChangeFocus) _ANSI_ARGS_((TkWindow * winPtr, int force)); /* 55 */
void (*tkpCloseDisplay) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 56 */
void (*tkpClaimFocus) _ANSI_ARGS_((TkWindow * topLevelPtr, int force)); /* 57 */
- void (*tkpDisplayWarning) _ANSI_ARGS_((char * msg, char * title)); /* 58 */
+ void (*tkpDisplayWarning) _ANSI_ARGS_((CONST char * msg, CONST char * title)); /* 58 */
void (*tkpGetAppName) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_DString * name)); /* 59 */
TkWindow * (*tkpGetOtherWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 60 */
TkWindow * (*tkpGetWrapperWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 61 */
@@ -680,7 +604,7 @@ typedef struct TkIntStubs {
void (*tkpMakeMenuWindow) _ANSI_ARGS_((Tk_Window tkwin, int transient)); /* 65 */
Window (*tkpMakeWindow) _ANSI_ARGS_((TkWindow * winPtr, Window parent)); /* 66 */
void (*tkpMenuNotifyToplevelCreate) _ANSI_ARGS_((Tcl_Interp * interp1, char * menuName)); /* 67 */
- TkDisplay * (*tkpOpenDisplay) _ANSI_ARGS_((char * display_name)); /* 68 */
+ TkDisplay * (*tkpOpenDisplay) _ANSI_ARGS_((CONST char * display_name)); /* 68 */
int (*tkPointerEvent) _ANSI_ARGS_((XEvent * eventPtr, TkWindow * winPtr)); /* 69 */
int (*tkPolygonToArea) _ANSI_ARGS_((double * polyPtr, int numPoints, double * rectPtr)); /* 70 */
double (*tkPolygonToPoint) _ANSI_ARGS_((double * polyPtr, int numPoints, double * pointPtr)); /* 71 */
@@ -809,18 +733,7 @@ typedef struct TkIntStubs {
#ifdef MAC_OSX_TK
void (*tkUnionRectWithRegion) _ANSI_ARGS_((XRectangle* rect, TkRegion src, TkRegion dr_return)); /* 119 */
#endif /* MAC_OSX_TK */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved120;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved120;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 120 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 120 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
void *reserved121;
#endif /* UNIX */
@@ -845,18 +758,7 @@ typedef struct TkIntStubs {
#ifdef MAC_OSX_TCL
void (*tkpDefineNativeBitmaps) _ANSI_ARGS_((void)); /* 122 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved123;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved123;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 123 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 123 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
void *reserved124;
#endif /* UNIX */
@@ -869,110 +771,23 @@ typedef struct TkIntStubs {
#ifdef MAC_OSX_TCL
Pixmap (*tkpGetNativeAppBitmap) _ANSI_ARGS_((Display * display, CONST char * name, int * width, int * height)); /* 124 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved125;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved125;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 125 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 125 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved126;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved126;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkpSetCapture) _ANSI_ARGS_((TkWindow * winPtr)); /* 126 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkpSetCapture) _ANSI_ARGS_((TkWindow * winPtr)); /* 126 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved127;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved127;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkpSetCursor) _ANSI_ARGS_((TkpCursor cursor)); /* 127 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkpSetCursor) _ANSI_ARGS_((TkpCursor cursor)); /* 127 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved128;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved128;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkpWmSetState) _ANSI_ARGS_((TkWindow * winPtr, int state)); /* 128 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkpWmSetState) _ANSI_ARGS_((TkWindow * winPtr, int state)); /* 128 */
-#endif /* MAC_OSX_TCL */
void *reserved129;
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
void *reserved130;
-#endif /* UNIX */
-#ifdef __WIN32__
- void *reserved130;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- Window (*tkGetTransientMaster) _ANSI_ARGS_((TkWindow * winPtr)); /* 130 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- Window (*tkGetTransientMaster) _ANSI_ARGS_((TkWindow * winPtr)); /* 130 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved131;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved131;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 131 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 131 */
-#endif /* MAC_OSX_TCL */
void *reserved132;
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved133;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved133;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 133 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 133 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- void *reserved134;
-#endif /* UNIX */
-#ifdef __WIN32__
void *reserved134;
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 134 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 134 */
-#endif /* MAC_OSX_TCL */
void (*tkpDrawHighlightBorder) _ANSI_ARGS_((Tk_Window tkwin, GC fgGC, GC bgGC, int highlightWidth, Drawable drawable)); /* 135 */
void (*tkSetFocusWin) _ANSI_ARGS_((TkWindow * winPtr, int force)); /* 136 */
void (*tkpSetKeycodeAndState) _ANSI_ARGS_((Tk_Window tkwin, KeySym keySym, XEvent * eventPtr)); /* 137 */
KeySym (*tkpGetKeySym) _ANSI_ARGS_((TkDisplay * dispPtr, XEvent * eventPtr)); /* 138 */
void (*tkpInitKeymapInfo) _ANSI_ARGS_((TkDisplay * dispPtr)); /* 139 */
TkRegion (*tkPhotoGetValidRegion) _ANSI_ARGS_((Tk_PhotoHandle handle)); /* 140 */
+ TkWindow ** (*tkWmStackorderToplevel) _ANSI_ARGS_((TkWindow * parentPtr)); /* 141 */
} TkIntStubs;
#ifdef __cplusplus
@@ -1564,18 +1379,7 @@ extern TkIntStubs *tkIntStubsPtr;
(tkIntStubsPtr->tkUnionRectWithRegion) /* 119 */
#endif
#endif /* MAC_OSX_TK */
-#ifdef MAC_TCL
-#ifndef TkGenerateActivateEvents
-#define TkGenerateActivateEvents \
- (tkIntStubsPtr->tkGenerateActivateEvents) /* 120 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenerateActivateEvents
-#define TkGenerateActivateEvents \
- (tkIntStubsPtr->tkGenerateActivateEvents) /* 120 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 120 is reserved */
#ifdef MAC_TCL
#ifndef TkpCreateNativeBitmap
#define TkpCreateNativeBitmap \
@@ -1600,18 +1404,7 @@ extern TkIntStubs *tkIntStubsPtr;
(tkIntStubsPtr->tkpDefineNativeBitmaps) /* 122 */
#endif
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpGetMS
-#define TkpGetMS \
- (tkIntStubsPtr->tkpGetMS) /* 123 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpGetMS
-#define TkpGetMS \
- (tkIntStubsPtr->tkpGetMS) /* 123 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 123 is reserved */
#ifdef MAC_TCL
#ifndef TkpGetNativeAppBitmap
#define TkpGetNativeAppBitmap \
@@ -1624,104 +1417,16 @@ extern TkIntStubs *tkIntStubsPtr;
(tkIntStubsPtr->tkpGetNativeAppBitmap) /* 124 */
#endif
#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkPointerDeadWindow
-#define TkPointerDeadWindow \
- (tkIntStubsPtr->tkPointerDeadWindow) /* 125 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkPointerDeadWindow
-#define TkPointerDeadWindow \
- (tkIntStubsPtr->tkPointerDeadWindow) /* 125 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpSetCapture
-#define TkpSetCapture \
- (tkIntStubsPtr->tkpSetCapture) /* 126 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpSetCapture
-#define TkpSetCapture \
- (tkIntStubsPtr->tkpSetCapture) /* 126 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpSetCursor
-#define TkpSetCursor \
- (tkIntStubsPtr->tkpSetCursor) /* 127 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpSetCursor
-#define TkpSetCursor \
- (tkIntStubsPtr->tkpSetCursor) /* 127 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkpWmSetState
-#define TkpWmSetState \
- (tkIntStubsPtr->tkpWmSetState) /* 128 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkpWmSetState
-#define TkpWmSetState \
- (tkIntStubsPtr->tkpWmSetState) /* 128 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 125 is reserved */
+/* Slot 126 is reserved */
+/* Slot 127 is reserved */
+/* Slot 128 is reserved */
/* Slot 129 is reserved */
-#ifdef MAC_TCL
-#ifndef TkGetTransientMaster
-#define TkGetTransientMaster \
- (tkIntStubsPtr->tkGetTransientMaster) /* 130 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGetTransientMaster
-#define TkGetTransientMaster \
- (tkIntStubsPtr->tkGetTransientMaster) /* 130 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkGenerateButtonEvent
-#define TkGenerateButtonEvent \
- (tkIntStubsPtr->tkGenerateButtonEvent) /* 131 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenerateButtonEvent
-#define TkGenerateButtonEvent \
- (tkIntStubsPtr->tkGenerateButtonEvent) /* 131 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 130 is reserved */
+/* Slot 131 is reserved */
/* Slot 132 is reserved */
-#ifdef MAC_TCL
-#ifndef TkGenWMDestroyEvent
-#define TkGenWMDestroyEvent \
- (tkIntStubsPtr->tkGenWMDestroyEvent) /* 133 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenWMDestroyEvent
-#define TkGenWMDestroyEvent \
- (tkIntStubsPtr->tkGenWMDestroyEvent) /* 133 */
-#endif
-#endif /* MAC_OSX_TCL */
-#ifdef MAC_TCL
-#ifndef TkGenWMConfigureEvent
-#define TkGenWMConfigureEvent \
- (tkIntStubsPtr->tkGenWMConfigureEvent) /* 134 */
-#endif
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
-#ifndef TkGenWMConfigureEvent
-#define TkGenWMConfigureEvent \
- (tkIntStubsPtr->tkGenWMConfigureEvent) /* 134 */
-#endif
-#endif /* MAC_OSX_TCL */
+/* Slot 133 is reserved */
+/* Slot 134 is reserved */
#ifndef TkpDrawHighlightBorder
#define TkpDrawHighlightBorder \
(tkIntStubsPtr->tkpDrawHighlightBorder) /* 135 */
@@ -1746,6 +1451,10 @@ extern TkIntStubs *tkIntStubsPtr;
#define TkPhotoGetValidRegion \
(tkIntStubsPtr->tkPhotoGetValidRegion) /* 140 */
#endif
+#ifndef TkWmStackorderToplevel
+#define TkWmStackorderToplevel \
+ (tkIntStubsPtr->tkWmStackorderToplevel) /* 141 */
+#endif
#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */
diff --git a/generic/tkIntPlatDecls.h b/generic/tkIntPlatDecls.h
index 204b1f3..baa4c6a 100644
--- a/generic/tkIntPlatDecls.h
+++ b/generic/tkIntPlatDecls.h
@@ -9,7 +9,7 @@
* Copyright (c) 1998-1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkIntPlatDecls.h,v 1.9.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINTPLATDECLS
@@ -150,11 +150,8 @@ EXTERN int TkWinGetPlatformId _ANSI_ARGS_((void));
/* 0 */
EXTERN void TkGenerateActivateEvents _ANSI_ARGS_((
TkWindow * winPtr, int active));
-/* 1 */
-EXTERN Pixmap TkpCreateNativeBitmap _ANSI_ARGS_((Display * display,
- char * source));
-/* 2 */
-EXTERN void TkpDefineNativeBitmaps _ANSI_ARGS_((void));
+/* Slot 1 is reserved */
+/* Slot 2 is reserved */
/* 3 */
EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
/* Slot 4 is reserved */
@@ -180,37 +177,28 @@ EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
/* Slot 15 is reserved */
/* 16 */
EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
-/* 17 */
-EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
- int x, int y, int width, int height,
- int flags));
+/* Slot 17 is reserved */
/* 18 */
EXTERN unsigned int TkMacButtonKeyState _ANSI_ARGS_((void));
/* 19 */
EXTERN void TkMacClearMenubarActive _ANSI_ARGS_((void));
-/* 20 */
-EXTERN int TkMacConvertEvent _ANSI_ARGS_((
- EventRecord * eventPtr));
+/* Slot 20 is reserved */
/* 21 */
EXTERN int TkMacDispatchMenuEvent _ANSI_ARGS_((int menuID,
int index));
/* 22 */
EXTERN void TkMacInstallCursor _ANSI_ARGS_((int resizeOverride));
-/* 23 */
-EXTERN int TkMacConvertTkEvent _ANSI_ARGS_((
- EventRecord * eventPtr, Window window));
+/* Slot 23 is reserved */
/* 24 */
EXTERN void TkMacHandleTearoffMenu _ANSI_ARGS_((void));
/* Slot 25 is reserved */
-/* 26 */
-EXTERN void TkMacInvalClipRgns _ANSI_ARGS_((TkWindow * winPtr));
+/* Slot 26 is reserved */
/* 27 */
EXTERN void TkMacDoHLEvent _ANSI_ARGS_((EventRecord * theEvent));
/* Slot 28 is reserved */
/* 29 */
EXTERN Time TkMacGenerateTime _ANSI_ARGS_((void));
-/* 30 */
-EXTERN GWorldPtr TkMacGetDrawablePort _ANSI_ARGS_((Drawable drawable));
+/* Slot 30 is reserved */
/* 31 */
EXTERN TkWindow * TkMacGetScrollbarGrowWindow _ANSI_ARGS_((
TkWindow * winPtr));
@@ -222,13 +210,9 @@ EXTERN int TkMacGrowToplevel _ANSI_ARGS_((WindowRef whichWindow,
/* 34 */
EXTERN void TkMacHandleMenuSelect _ANSI_ARGS_((long mResult,
int optionKeyPressed));
-/* 35 */
-EXTERN int TkMacHaveAppearance _ANSI_ARGS_((void));
-/* 36 */
-EXTERN void TkMacInitAppleEvents _ANSI_ARGS_((
- Tcl_Interp * interp));
-/* 37 */
-EXTERN void TkMacInitMenus _ANSI_ARGS_((Tcl_Interp * interp));
+/* Slot 35 is reserved */
+/* Slot 36 is reserved */
+/* Slot 37 is reserved */
/* 38 */
EXTERN void TkMacInvalidateWindow _ANSI_ARGS_((
MacDrawable * macWin, int flag));
@@ -295,6 +279,8 @@ EXTERN MacDrawable * TkMacContainerId _ANSI_ARGS_((TkWindow * winPtr));
EXTERN MacDrawable * TkMacGetHostToplevel _ANSI_ARGS_((TkWindow * winPtr));
/* 65 */
EXTERN void TkMacPreprocessMenu _ANSI_ARGS_((void));
+/* 66 */
+EXTERN int TkpIsWindowFloating _ANSI_ARGS_((WindowRef window));
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
/* 0 */
@@ -421,6 +407,20 @@ EXTERN void TkMacOSXPreprocessMenu _ANSI_ARGS_((void));
EXTERN int TkpIsWindowFloating _ANSI_ARGS_((WindowRef window));
/* 47 */
EXTERN Tk_Window TkMacOSXGetCapture _ANSI_ARGS_((void));
+/* Slot 48 is reserved */
+/* 49 */
+EXTERN Window TkGetTransientMaster _ANSI_ARGS_((TkWindow * winPtr));
+/* 50 */
+EXTERN int TkGenerateButtonEvent _ANSI_ARGS_((int x, int y,
+ Window window, unsigned int state));
+/* 51 */
+EXTERN void TkGenWMDestroyEvent _ANSI_ARGS_((Tk_Window tkwin));
+/* 52 */
+EXTERN void TkGenWMConfigureEvent _ANSI_ARGS_((Tk_Window tkwin,
+ int x, int y, int width, int height,
+ int flags));
+/* 53 */
+EXTERN unsigned long TkpGetMS _ANSI_ARGS_((void));
#endif /* MAC_OSX_TK */
typedef struct TkIntPlatStubs {
@@ -476,8 +476,8 @@ typedef struct TkIntPlatStubs {
#endif /* __WIN32__ */
#ifdef MAC_TCL
void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 0 */
- Pixmap (*tkpCreateNativeBitmap) _ANSI_ARGS_((Display * display, char * source)); /* 1 */
- void (*tkpDefineNativeBitmaps) _ANSI_ARGS_((void)); /* 2 */
+ void *reserved1;
+ void *reserved2;
unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 3 */
void *reserved4;
void (*tkPointerDeadWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 5 */
@@ -492,27 +492,27 @@ typedef struct TkIntPlatStubs {
int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 14 */
void *reserved15;
void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 16 */
- void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 17 */
+ void *reserved17;
unsigned int (*tkMacButtonKeyState) _ANSI_ARGS_((void)); /* 18 */
void (*tkMacClearMenubarActive) _ANSI_ARGS_((void)); /* 19 */
- int (*tkMacConvertEvent) _ANSI_ARGS_((EventRecord * eventPtr)); /* 20 */
+ void *reserved20;
int (*tkMacDispatchMenuEvent) _ANSI_ARGS_((int menuID, int index)); /* 21 */
void (*tkMacInstallCursor) _ANSI_ARGS_((int resizeOverride)); /* 22 */
- int (*tkMacConvertTkEvent) _ANSI_ARGS_((EventRecord * eventPtr, Window window)); /* 23 */
+ void *reserved23;
void (*tkMacHandleTearoffMenu) _ANSI_ARGS_((void)); /* 24 */
void *reserved25;
- void (*tkMacInvalClipRgns) _ANSI_ARGS_((TkWindow * winPtr)); /* 26 */
+ void *reserved26;
void (*tkMacDoHLEvent) _ANSI_ARGS_((EventRecord * theEvent)); /* 27 */
void *reserved28;
Time (*tkMacGenerateTime) _ANSI_ARGS_((void)); /* 29 */
- GWorldPtr (*tkMacGetDrawablePort) _ANSI_ARGS_((Drawable drawable)); /* 30 */
+ void *reserved30;
TkWindow * (*tkMacGetScrollbarGrowWindow) _ANSI_ARGS_((TkWindow * winPtr)); /* 31 */
Window (*tkMacGetXWindow) _ANSI_ARGS_((WindowRef macWinPtr)); /* 32 */
int (*tkMacGrowToplevel) _ANSI_ARGS_((WindowRef whichWindow, Point start)); /* 33 */
void (*tkMacHandleMenuSelect) _ANSI_ARGS_((long mResult, int optionKeyPressed)); /* 34 */
- int (*tkMacHaveAppearance) _ANSI_ARGS_((void)); /* 35 */
- void (*tkMacInitAppleEvents) _ANSI_ARGS_((Tcl_Interp * interp)); /* 36 */
- void (*tkMacInitMenus) _ANSI_ARGS_((Tcl_Interp * interp)); /* 37 */
+ void *reserved35;
+ void *reserved36;
+ void *reserved37;
void (*tkMacInvalidateWindow) _ANSI_ARGS_((MacDrawable * macWin, int flag)); /* 38 */
int (*tkMacIsCharacterMissing) _ANSI_ARGS_((Tk_Font tkfont, unsigned int searchChar)); /* 39 */
void (*tkMacMakeRealWindowExist) _ANSI_ARGS_((TkWindow * winPtr)); /* 40 */
@@ -541,6 +541,7 @@ typedef struct TkIntPlatStubs {
MacDrawable * (*tkMacContainerId) _ANSI_ARGS_((TkWindow * winPtr)); /* 63 */
MacDrawable * (*tkMacGetHostToplevel) _ANSI_ARGS_((TkWindow * winPtr)); /* 64 */
void (*tkMacPreprocessMenu) _ANSI_ARGS_((void)); /* 65 */
+ int (*tkpIsWindowFloating) _ANSI_ARGS_((WindowRef window)); /* 66 */
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
void (*tkGenerateActivateEvents) _ANSI_ARGS_((TkWindow * winPtr, int active)); /* 0 */
@@ -591,6 +592,12 @@ typedef struct TkIntPlatStubs {
void (*tkMacOSXPreprocessMenu) _ANSI_ARGS_((void)); /* 45 */
int (*tkpIsWindowFloating) _ANSI_ARGS_((WindowRef window)); /* 46 */
Tk_Window (*tkMacOSXGetCapture) _ANSI_ARGS_((void)); /* 47 */
+ void *reserved48;
+ Window (*tkGetTransientMaster) _ANSI_ARGS_((TkWindow * winPtr)); /* 49 */
+ int (*tkGenerateButtonEvent) _ANSI_ARGS_((int x, int y, Window window, unsigned int state)); /* 50 */
+ void (*tkGenWMDestroyEvent) _ANSI_ARGS_((Tk_Window tkwin)); /* 51 */
+ void (*tkGenWMConfigureEvent) _ANSI_ARGS_((Tk_Window tkwin, int x, int y, int width, int height, int flags)); /* 52 */
+ unsigned long (*tkpGetMS) _ANSI_ARGS_((void)); /* 53 */
#endif /* MAC_OSX_TK */
} TkIntPlatStubs;
@@ -786,14 +793,8 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkGenerateActivateEvents \
(tkIntPlatStubsPtr->tkGenerateActivateEvents) /* 0 */
#endif
-#ifndef TkpCreateNativeBitmap
-#define TkpCreateNativeBitmap \
- (tkIntPlatStubsPtr->tkpCreateNativeBitmap) /* 1 */
-#endif
-#ifndef TkpDefineNativeBitmaps
-#define TkpDefineNativeBitmaps \
- (tkIntPlatStubsPtr->tkpDefineNativeBitmaps) /* 2 */
-#endif
+/* Slot 1 is reserved */
+/* Slot 2 is reserved */
#ifndef TkpGetMS
#define TkpGetMS \
(tkIntPlatStubsPtr->tkpGetMS) /* 3 */
@@ -835,10 +836,7 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkGenWMDestroyEvent \
(tkIntPlatStubsPtr->tkGenWMDestroyEvent) /* 16 */
#endif
-#ifndef TkGenWMConfigureEvent
-#define TkGenWMConfigureEvent \
- (tkIntPlatStubsPtr->tkGenWMConfigureEvent) /* 17 */
-#endif
+/* Slot 17 is reserved */
#ifndef TkMacButtonKeyState
#define TkMacButtonKeyState \
(tkIntPlatStubsPtr->tkMacButtonKeyState) /* 18 */
@@ -847,10 +845,7 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacClearMenubarActive \
(tkIntPlatStubsPtr->tkMacClearMenubarActive) /* 19 */
#endif
-#ifndef TkMacConvertEvent
-#define TkMacConvertEvent \
- (tkIntPlatStubsPtr->tkMacConvertEvent) /* 20 */
-#endif
+/* Slot 20 is reserved */
#ifndef TkMacDispatchMenuEvent
#define TkMacDispatchMenuEvent \
(tkIntPlatStubsPtr->tkMacDispatchMenuEvent) /* 21 */
@@ -859,19 +854,13 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacInstallCursor \
(tkIntPlatStubsPtr->tkMacInstallCursor) /* 22 */
#endif
-#ifndef TkMacConvertTkEvent
-#define TkMacConvertTkEvent \
- (tkIntPlatStubsPtr->tkMacConvertTkEvent) /* 23 */
-#endif
+/* Slot 23 is reserved */
#ifndef TkMacHandleTearoffMenu
#define TkMacHandleTearoffMenu \
(tkIntPlatStubsPtr->tkMacHandleTearoffMenu) /* 24 */
#endif
/* Slot 25 is reserved */
-#ifndef TkMacInvalClipRgns
-#define TkMacInvalClipRgns \
- (tkIntPlatStubsPtr->tkMacInvalClipRgns) /* 26 */
-#endif
+/* Slot 26 is reserved */
#ifndef TkMacDoHLEvent
#define TkMacDoHLEvent \
(tkIntPlatStubsPtr->tkMacDoHLEvent) /* 27 */
@@ -881,10 +870,7 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacGenerateTime \
(tkIntPlatStubsPtr->tkMacGenerateTime) /* 29 */
#endif
-#ifndef TkMacGetDrawablePort
-#define TkMacGetDrawablePort \
- (tkIntPlatStubsPtr->tkMacGetDrawablePort) /* 30 */
-#endif
+/* Slot 30 is reserved */
#ifndef TkMacGetScrollbarGrowWindow
#define TkMacGetScrollbarGrowWindow \
(tkIntPlatStubsPtr->tkMacGetScrollbarGrowWindow) /* 31 */
@@ -901,18 +887,9 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacHandleMenuSelect \
(tkIntPlatStubsPtr->tkMacHandleMenuSelect) /* 34 */
#endif
-#ifndef TkMacHaveAppearance
-#define TkMacHaveAppearance \
- (tkIntPlatStubsPtr->tkMacHaveAppearance) /* 35 */
-#endif
-#ifndef TkMacInitAppleEvents
-#define TkMacInitAppleEvents \
- (tkIntPlatStubsPtr->tkMacInitAppleEvents) /* 36 */
-#endif
-#ifndef TkMacInitMenus
-#define TkMacInitMenus \
- (tkIntPlatStubsPtr->tkMacInitMenus) /* 37 */
-#endif
+/* Slot 35 is reserved */
+/* Slot 36 is reserved */
+/* Slot 37 is reserved */
#ifndef TkMacInvalidateWindow
#define TkMacInvalidateWindow \
(tkIntPlatStubsPtr->tkMacInvalidateWindow) /* 38 */
@@ -1016,6 +993,10 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacPreprocessMenu \
(tkIntPlatStubsPtr->tkMacPreprocessMenu) /* 65 */
#endif
+#ifndef TkpIsWindowFloating
+#define TkpIsWindowFloating \
+ (tkIntPlatStubsPtr->tkpIsWindowFloating) /* 66 */
+#endif
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
#ifndef TkGenerateActivateEvents
@@ -1210,6 +1191,27 @@ extern TkIntPlatStubs *tkIntPlatStubsPtr;
#define TkMacOSXGetCapture \
(tkIntPlatStubsPtr->tkMacOSXGetCapture) /* 47 */
#endif
+/* Slot 48 is reserved */
+#ifndef TkGetTransientMaster
+#define TkGetTransientMaster \
+ (tkIntPlatStubsPtr->tkGetTransientMaster) /* 49 */
+#endif
+#ifndef TkGenerateButtonEvent
+#define TkGenerateButtonEvent \
+ (tkIntPlatStubsPtr->tkGenerateButtonEvent) /* 50 */
+#endif
+#ifndef TkGenWMDestroyEvent
+#define TkGenWMDestroyEvent \
+ (tkIntPlatStubsPtr->tkGenWMDestroyEvent) /* 51 */
+#endif
+#ifndef TkGenWMConfigureEvent
+#define TkGenWMConfigureEvent \
+ (tkIntPlatStubsPtr->tkGenWMConfigureEvent) /* 52 */
+#endif
+#ifndef TkpGetMS
+#define TkpGetMS \
+ (tkIntPlatStubsPtr->tkpGetMS) /* 53 */
+#endif
#endif /* MAC_OSX_TK */
#endif /* defined(USE_TK_STUBS) && !defined(USE_TK_STUB_PROCS) */
diff --git a/generic/tkIntXlibDecls.h b/generic/tkIntXlibDecls.h
index 804014e..d9d9f2b 100644
--- a/generic/tkIntXlibDecls.h
+++ b/generic/tkIntXlibDecls.h
@@ -9,7 +9,7 @@
* Copyright (c) 1998-1999 by Scriptics Corporation.
* All rights reserved.
*
- * RCS: @(#) $Id: tkIntXlibDecls.h,v 1.13.8.2 2001/10/17 07:02:07 wolfsuit Exp $
+ * RCS: @(#) $Id: tkIntXlibDecls.h,v 1.13.8.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#ifndef _TKINTXLIBDECLS
@@ -231,7 +231,7 @@ EXTERN Status XSendEvent _ANSI_ARGS_((Display* d, Window w, Bool b,
long l, XEvent* x));
/* 62 */
EXTERN void XSetCommand _ANSI_ARGS_((Display* d, Window w,
- char** c, int i));
+ CONST char** c, int i));
/* 63 */
EXTERN void XSetIconName _ANSI_ARGS_((Display* d, Window w,
_Xconst char* c));
@@ -1006,7 +1006,7 @@ typedef struct TkIntXlibStubs {
void (*xResizeWindow) _ANSI_ARGS_((Display* d, Window w, unsigned int ui1, unsigned int ui2)); /* 59 */
void (*xSelectInput) _ANSI_ARGS_((Display* d, Window w, long l)); /* 60 */
Status (*xSendEvent) _ANSI_ARGS_((Display* d, Window w, Bool b, long l, XEvent* x)); /* 61 */
- void (*xSetCommand) _ANSI_ARGS_((Display* d, Window w, char** c, int i)); /* 62 */
+ void (*xSetCommand) _ANSI_ARGS_((Display* d, Window w, CONST char** c, int i)); /* 62 */
void (*xSetIconName) _ANSI_ARGS_((Display* d, Window w, _Xconst char* c)); /* 63 */
void (*xSetInputFocus) _ANSI_ARGS_((Display* d, Window w, int i, Time t)); /* 64 */
void (*xSetSelectionOwner) _ANSI_ARGS_((Display* d, Atom a, Window w, Time t)); /* 65 */
diff --git a/generic/tkListbox.c b/generic/tkListbox.c
index a939479..82eb5c4 100644
--- a/generic/tkListbox.c
+++ b/generic/tkListbox.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkListbox.c,v 1.22 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkListbox.c,v 1.22.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -321,7 +321,7 @@ static Tk_OptionSpec itemAttrOptionSpecs[] = {
* commands) and map the indexes into the string tables into
* enumerated types used to dispatch the listbox widget command.
*/
-static char *commandNames[] = {
+static CONST char *commandNames[] = {
"activate", "bbox", "cget", "configure", "curselection", "delete", "get",
"index", "insert", "itemcget", "itemconfigure", "nearest", "scan",
"see", "selection", "size", "xview", "yview",
@@ -336,7 +336,7 @@ enum command {
COMMAND_SIZE, COMMAND_XVIEW, COMMAND_YVIEW
};
-static char *selCommandNames[] = {
+static CONST char *selCommandNames[] = {
"anchor", "clear", "includes", "set", (char *) NULL
};
@@ -344,7 +344,7 @@ enum selcommand {
SELECTION_ANCHOR, SELECTION_CLEAR, SELECTION_INCLUDES, SELECTION_SET
};
-static char *scanCommandNames[] = {
+static CONST char *scanCommandNames[] = {
"mark", "dragto", (char *) NULL
};
@@ -352,7 +352,7 @@ enum scancommand {
SCAN_MARK, SCAN_DRAGTO
};
-static char *indexNames[] = {
+static CONST char *indexNames[] = {
"active", "anchor", "end", (char *)NULL
};
@@ -2673,8 +2673,12 @@ ChangeListboxOffset(listPtr, offset)
/*
* Make sure that the new offset is within the allowable range, and
* round it off to an even multiple of xScrollUnit.
+ *
+ * Add half a scroll unit to do entry/text-like synchronization.
+ * [Bug #225025]
*/
+ offset += listPtr->xScrollUnit / 2;
maxOffset = listPtr->maxWidth - (Tk_Width(listPtr->tkwin) -
2*listPtr->inset - 2*listPtr->selBorderWidth)
+ listPtr->xScrollUnit - 1;
diff --git a/generic/tkMain.c b/generic/tkMain.c
index 5f581b8..0dec459 100644
--- a/generic/tkMain.c
+++ b/generic/tkMain.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMain.c,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMain.c,v 1.9.2.2 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include <ctype.h>
@@ -55,11 +55,13 @@ static Tcl_ThreadDataKey dataKey;
*/
#if !defined(__WIN32__) && !defined(_WIN32)
+#if !defined(MAC_TCL)
extern int isatty _ANSI_ARGS_((int fd));
+#else
+#include <unistd.h>
+#endif
extern char * strrchr _ANSI_ARGS_((CONST char *string, int c));
#endif
-extern void TkpDisplayWarning _ANSI_ARGS_((char *msg,
- char *title));
/*
* Forward declarations for procedures defined later in this file.
@@ -97,7 +99,8 @@ Tk_MainEx(argc, argv, appInitProc, interp)
* to execute commands. */
Tcl_Interp *interp;
{
- char *args, *fileName;
+ char *args;
+ CONST char *fileName;
char buf[TCL_INTEGER_SPACE];
int code;
size_t length;
@@ -160,7 +163,7 @@ Tk_MainEx(argc, argv, appInitProc, interp)
* and "argv".
*/
- args = Tcl_Merge(argc-1, argv+1);
+ args = Tcl_Merge(argc-1, (CONST char **)argv+1);
Tcl_ExternalToUtfDString(NULL, args, -1, &argString);
Tcl_SetVar(interp, "argv", Tcl_DStringValue(&argString), TCL_GLOBAL_ONLY);
Tcl_DStringFree(&argString);
@@ -404,12 +407,12 @@ Prompt(interp, partial)
* exists a partial command, so use
* the secondary prompt. */
{
- char *promptCmd;
+ Tcl_Obj *promptCmd;
int code;
Tcl_Channel outChannel, errChannel;
- promptCmd = Tcl_GetVar(interp,
- partial ? "tcl_prompt2" : "tcl_prompt1", TCL_GLOBAL_ONLY);
+ promptCmd = Tcl_GetVar2Ex(interp,
+ partial ? "tcl_prompt2" : "tcl_prompt1", NULL, TCL_GLOBAL_ONLY);
if (promptCmd == NULL) {
defaultPrompt:
if (!partial) {
@@ -426,7 +429,7 @@ defaultPrompt:
}
}
} else {
- code = Tcl_Eval(interp, promptCmd);
+ code = Tcl_EvalObjEx(interp, promptCmd, TCL_EVAL_GLOBAL);
if (code != TCL_OK) {
Tcl_AddErrorInfo(interp,
"\n (script that generates prompt)");
diff --git a/generic/tkMenu.c b/generic/tkMenu.c
index ff50130..ae6f760 100644
--- a/generic/tkMenu.c
+++ b/generic/tkMenu.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: tkMenu.c,v 1.13 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkMenu.c,v 1.13.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
/*
@@ -105,8 +105,10 @@ TCL_DECLARE_MUTEX(menuMutex)
char *tkMenuStateStrings[] = {"active", "normal", "disabled", (char *) NULL};
-static char *menuEntryTypeStrings[] = {"cascade", "checkbutton", "command",
- "radiobutton", "separator", (char *) NULL};
+static CONST char *menuEntryTypeStrings[] = {
+ "cascade", "checkbutton", "command", "radiobutton", "separator",
+ (char *) NULL
+};
/*
* The following table defines the legal values for the -compound option.
@@ -243,7 +245,7 @@ static Tk_OptionSpec *specsArray[] = {
* Menu type strings for use with Tcl_GetIndexFromObj.
*/
-static char *menuTypeStrings[] = {"normal", "tearoff", "menubar",
+static CONST char *menuTypeStrings[] = {"normal", "tearoff", "menubar",
(char *) NULL};
Tk_OptionSpec tkMenuConfigSpecs[] = {
@@ -311,7 +313,7 @@ Tk_OptionSpec tkMenuConfigSpecs[] = {
* along with MenuWidgetObjCmd.
*/
-static char *menuOptions[] = {
+static CONST char *menuOptions[] = {
"activate", "add", "cget", "clone", "configure", "delete", "entrycget",
"entryconfigure", "index", "insert", "invoke", "post", "postcascade",
"type", "unpost", "yposition", (char *) NULL
@@ -463,7 +465,7 @@ MenuCmd(clientData, interp, objc, objv)
int i, index;
int toplevel;
char *windowName;
- static char *typeStringList[] = {"-type", (char *) NULL};
+ static CONST char *typeStringList[] = {"-type", (char *) NULL};
TkMenuOptionTables *optionTablesPtr = (TkMenuOptionTables *) clientData;
if (objc < 2) {
@@ -1012,9 +1014,9 @@ MenuWidgetObjCmd(clientData, interp, objc, objv)
if (menuPtr->entries[index]->type == TEAROFF_ENTRY) {
Tcl_SetResult(interp, "tearoff", TCL_STATIC);
} else {
- Tcl_SetResult(interp,
+ Tcl_SetStringObj(Tcl_GetObjResult(interp),
menuEntryTypeStrings[menuPtr->entries[index]->type],
- TCL_STATIC);
+ -1);
}
break;
}
@@ -1996,7 +1998,7 @@ ConfigureMenuCloneEntries(interp, menuPtr, index, objc, objv)
oldCascadeName = Tcl_GetStringFromObj(oldCascadePtr,
NULL);
cascadeEntryChanged = (strcmp(oldCascadeName, newCascadeName)
- == 0);
+ != 0);
}
if (oldCascadePtr != NULL) {
Tcl_DecrRefCount(oldCascadePtr);
@@ -2467,7 +2469,7 @@ MenuVarProc(clientData, interp, name1, name2, flags)
{
TkMenuEntry *mePtr = (TkMenuEntry *) clientData;
TkMenu *menuPtr;
- char *value;
+ CONST char *value;
char *name = Tcl_GetStringFromObj(mePtr->namePtr, NULL);
char *onValue;
diff --git a/generic/tkMenubutton.c b/generic/tkMenubutton.c
index 28d82a9..18decbc 100644
--- a/generic/tkMenubutton.c
+++ b/generic/tkMenubutton.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMenubutton.c,v 1.8 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkMenubutton.c,v 1.8.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkMenubutton.h"
@@ -155,7 +155,7 @@ static Tk_OptionSpec optionSpecs[] = {
* to dispatch the scale widget command.
*/
-static char *commandNames[] = {
+static CONST char *commandNames[] = {
"cget", "configure", (char *) NULL
};
@@ -627,7 +627,7 @@ ConfigureMenuButton(interp, mbPtr, objc, objv)
* current value.
*/
- char *value;
+ CONST char *value;
value = Tcl_GetVar(interp, mbPtr->textVarName, TCL_GLOBAL_ONLY);
if (value == NULL) {
@@ -872,7 +872,7 @@ MenuButtonTextVarProc(clientData, interp, name1, name2, flags)
int flags; /* Information about what happened. */
{
register TkMenuButton *mbPtr = (TkMenuButton *) clientData;
- char *value;
+ CONST char *value;
/*
* If the variable is unset, then immediately recreate it unless
diff --git a/generic/tkMessage.c b/generic/tkMessage.c
index 1e82ba5..17db4bb 100644
--- a/generic/tkMessage.c
+++ b/generic/tkMessage.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: tkMessage.c,v 1.10 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkMessage.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -313,7 +313,7 @@ MessageWidgetObjCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument strings. */
{
register Message *msgPtr = (Message *) clientData;
- static char *optionStrings[] = { "cget", "configure", (char *) NULL };
+ static CONST char *optionStrings[] = { "cget", "configure", (char *) NULL };
enum options { MESSAGE_CGET, MESSAGE_CONFIGURE };
int index;
int result = TCL_OK;
@@ -479,7 +479,7 @@ ConfigureMessage(interp, msgPtr, objc, objv, flags)
*/
if (msgPtr->textVarName != NULL) {
- char *value;
+ CONST char *value;
value = Tcl_GetVar(interp, msgPtr->textVarName, TCL_GLOBAL_ONLY);
if (value == NULL) {
@@ -852,7 +852,7 @@ MessageTextVarProc(clientData, interp, name1, name2, flags)
int flags; /* Information about what happened. */
{
register Message *msgPtr = (Message *) clientData;
- char *value;
+ CONST char *value;
/*
* If the variable is unset, then immediately recreate it unless
diff --git a/generic/tkOldConfig.c b/generic/tkOldConfig.c
index 61b1258..24effae 100644
--- a/generic/tkOldConfig.c
+++ b/generic/tkOldConfig.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkOldConfig.c,v 1.9 2000/05/17 21:17:21 ericm Exp $
+ * RCS: @(#) $Id: tkOldConfig.c,v 1.9.6.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -707,7 +707,8 @@ FormatConfigInfo(interp, tkwin, specPtr, widgRec)
char *widgRec; /* Pointer to record holding current
* values of info for widget. */
{
- char *argv[6], *result;
+ CONST char *argv[6];
+ char *result;
char buffer[200];
Tcl_FreeProc *freeProc = (Tcl_FreeProc *) NULL;
@@ -735,9 +736,9 @@ FormatConfigInfo(interp, tkwin, specPtr, widgRec)
result = Tcl_Merge(5, argv);
if (freeProc != NULL) {
if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *) free)) {
- ckfree(argv[4]);
+ ckfree((char *)argv[4]);
} else {
- (*freeProc)(argv[4]);
+ (*freeProc)((char *)argv[4]);
}
}
return result;
diff --git a/generic/tkOption.c b/generic/tkOption.c
index d0cb8bc..cbcdca8 100644
--- a/generic/tkOption.c
+++ b/generic/tkOption.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkOption.c,v 1.8 2000/05/30 17:35:19 ericm Exp $
+ * RCS: @(#) $Id: tkOption.c,v 1.8.6.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -262,8 +262,8 @@ void
Tk_AddOption(tkwin, name, value, priority)
Tk_Window tkwin; /* Window token; option will be associated
* with main window for this window. */
- char *name; /* Multi-element name of option. */
- char *value; /* String value for option. */
+ CONST char *name; /* Multi-element name of option. */
+ CONST char *value; /* String value for option. */
int priority; /* Overall priority level to use for
* this option, such as TK_USER_DEFAULT_PRIO
* or TK_INTERACTIVE_PRIO. Must be between
@@ -273,8 +273,8 @@ Tk_AddOption(tkwin, name, value, priority)
register ElArray **arrayPtrPtr;
register Element *elPtr;
Element newEl;
- register char *p;
- char *field;
+ register CONST char *p;
+ CONST char *field;
int count, firstField, length;
#define TMP_SIZE 100
char tmp[TMP_SIZE+1];
@@ -638,7 +638,7 @@ Tk_OptionObjCmd(clientData, interp, objc, objv)
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- static char *optionCmds[] = {
+ static CONST char *optionCmds[] = {
"add", "clear", "get", "readfile", NULL
};
@@ -1091,7 +1091,8 @@ ReadOptionFile(interp, tkwin, fileName, priority)
* or TK_INTERACTIVE_PRIO. Must be between
* 0 and TK_MAX_PRIO. */
{
- char *realName, *buffer;
+ CONST char *realName;
+ char *buffer;
int result, bufferSize;
Tcl_Channel chan;
Tcl_DString newName;
diff --git a/generic/tkPack.c b/generic/tkPack.c
index 106b547..a64b722 100644
--- a/generic/tkPack.c
+++ b/generic/tkPack.c
@@ -10,14 +10,16 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPack.c,v 1.13 2001/09/26 20:25:17 pspjuth Exp $
+ * RCS: @(#) $Id: tkPack.c,v 1.13.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
#include "tkInt.h"
typedef enum {TOP, BOTTOM, LEFT, RIGHT} Side;
-static char *sideNames[] = {"top", "bottom", "left", "right", (char *) NULL };
+static CONST char *sideNames[] = {
+ "top", "bottom", "left", "right", (char *) NULL
+};
/* For each window that the packer cares about (either because
* the window is managed by the packer or because the window
@@ -201,7 +203,7 @@ Tk_PackObjCmd(clientData, interp, objc, objv)
{
Tk_Window tkwin = (Tk_Window) clientData;
char *argv2;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
/* after, append, before and unpack are deprecated */
"after", "append", "before", "unpack",
"configure", "forget", "info", "propagate", "slaves", (char *) NULL };
@@ -1221,7 +1223,7 @@ PackAfter(interp, prevPtr, masterPtr, objc, objv)
packPtr->flags |= OLD_STYLE;
for (index = 0 ; index < optionCount; index++) {
Tcl_Obj *curOptPtr = options[index];
- char *curOpt = Tcl_GetStringFromObj(curOptPtr, &length);
+ char *curOpt = Tcl_GetStringFromObj(curOptPtr, (int *) &length);
c = curOpt[0];
@@ -1550,7 +1552,7 @@ ConfigureSlaves(interp, tkwin, objc, objv)
Tk_Window other, slave, parent, ancestor;
int i, j, numWindows, tmp, positionGiven;
char *string;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-after", "-anchor", "-before", "-expand", "-fill",
"-in", "-ipadx", "-ipady", "-padx", "-pady", "-side", (char *) NULL };
enum options {
diff --git a/generic/tkPlace.c b/generic/tkPlace.c
index 746581a..5cd4c7a 100644
--- a/generic/tkPlace.c
+++ b/generic/tkPlace.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPlace.c,v 1.10 2001/09/26 20:25:17 pspjuth Exp $
+ * RCS: @(#) $Id: tkPlace.c,v 1.10.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -209,8 +209,9 @@ Tk_PlaceObjCmd(clientData, interp, objc, objv)
char *string;
TkDisplay *dispPtr;
Tk_OptionTable optionTable;
- static char *optionStrings[] = { "configure", "forget", "info", "slaves",
- (char *) NULL };
+ static CONST char *optionStrings[] = {
+ "configure", "forget", "info", "slaves", (char *) NULL
+ };
enum options { PLACE_CONFIGURE, PLACE_FORGET, PLACE_INFO, PLACE_SLAVES };
int index;
diff --git a/generic/tkPointer.c b/generic/tkPointer.c
index 90cb8ba..33bc77a 100644
--- a/generic/tkPointer.c
+++ b/generic/tkPointer.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkPointer.c,v 1.4.18.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkPointer.c,v 1.4.18.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -20,7 +20,13 @@
#include "tkWinInt.h"
#endif
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
+#if defined(MAC_TCL)
+#include "tkMacInt.h"
+#define Cursor XCursor
+#endif
+
+# if defined(MAC_OSX_TK)
+#include "tkMacOSXInt.h"
#define Cursor XCursor
#endif
diff --git a/generic/tkScale.c b/generic/tkScale.c
index 1be68ec..a012534 100644
--- a/generic/tkScale.c
+++ b/generic/tkScale.c
@@ -18,7 +18,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkScale.c,v 1.14 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkScale.c,v 1.14.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -147,7 +147,7 @@ static Tk_OptionSpec optionSpecs[] = {
* to dispatch the scale widget command.
*/
-static char *commandNames[] = {
+static CONST char *commandNames[] = {
"cget", "configure", "coords", "get", "identify", "set", (char *) NULL
};
diff --git a/generic/tkSelect.c b/generic/tkSelect.c
index e52187d..c276904 100644
--- a/generic/tkSelect.c
+++ b/generic/tkSelect.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkSelect.c,v 1.7.2.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkSelect.c,v 1.7.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -325,7 +325,7 @@ Tk_DeleteSelHandler(tkwin, selection, target)
*/
((CommandInfo*)selPtr->clientData)->interp = NULL;
- Tcl_EventuallyFree(selPtr->clientData, Tcl_Free);
+ Tcl_EventuallyFree(selPtr->clientData, TCL_DYNAMIC);
}
ckfree((char *) selPtr);
}
@@ -690,8 +690,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
char *selName = NULL, *string;
int count, index;
Tcl_Obj **objs;
- static char *optionStrings[] = { "clear", "get", "handle", "own",
- (char *) NULL };
+ static CONST char *optionStrings[] = {
+ "clear", "get", "handle", "own", (char *) NULL
+ };
enum options { SELECTION_CLEAR, SELECTION_GET, SELECTION_HANDLE,
SELECTION_OWN };
@@ -707,8 +708,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
switch ((enum options) index) {
case SELECTION_CLEAR: {
- static char *clearOptionStrings[] = { "-displayof", "-selection",
- (char *) NULL };
+ static CONST char *clearOptionStrings[] = {
+ "-displayof", "-selection", (char *) NULL
+ };
enum clearOptions { CLEAR_DISPLAYOF, CLEAR_SELECTION };
int clearIndex;
@@ -764,8 +766,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
char *targetName = NULL;
Tcl_DString selBytes;
int result;
- static char *getOptionStrings[] = { "-displayof", "-selection",
- "-type", (char *) NULL };
+ static CONST char *getOptionStrings[] = {
+ "-displayof", "-selection", "-type", (char *) NULL
+ };
enum getOptions { GET_DISPLAYOF, GET_SELECTION, GET_TYPE };
int getIndex;
@@ -837,8 +840,9 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
char *formatName = NULL;
register CommandInfo *cmdInfoPtr;
int cmdLength;
- static char *handleOptionStrings[] = { "-format", "-selection",
- "-type", (char *) NULL };
+ static CONST char *handleOptionStrings[] = {
+ "-format", "-selection", "-type", (char *) NULL
+ };
enum handleOptions { HANDLE_FORMAT, HANDLE_SELECTION,
HANDLE_TYPE };
int handleIndex;
@@ -923,7 +927,7 @@ Tk_SelectionObjCmd(clientData, interp, objc, objv)
register LostCommand *lostPtr;
char *script = NULL;
int cmdLength;
- static char *ownOptionStrings[] = {
+ static CONST char *ownOptionStrings[] = {
"-command", "-displayof", "-selection", (char *) NULL
};
enum ownOptions { OWN_COMMAND, OWN_DISPLAYOF, OWN_SELECTION };
@@ -1122,7 +1126,7 @@ TkSelDeadWindow(winPtr)
*/
((CommandInfo*)selPtr->clientData)->interp = NULL;
- Tcl_EventuallyFree(selPtr->clientData, Tcl_Free);
+ Tcl_EventuallyFree(selPtr->clientData, TCL_DYNAMIC);
}
ckfree((char *) selPtr);
}
@@ -1336,7 +1340,7 @@ HandleTclCommand(clientData, offset, buffer, maxBytes)
Tcl_DString oldResult;
Tcl_Obj *objPtr;
int extraBytes, charOffset, count, numChars;
- char *p;
+ CONST char *p;
/*
* We must also protect the interpreter and the command from being
diff --git a/generic/tkSquare.c b/generic/tkSquare.c
index 1a2704d..ee8d535 100644
--- a/generic/tkSquare.c
+++ b/generic/tkSquare.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: tkSquare.c,v 1.4 2001/08/29 23:22:24 hobbs Exp $
+ * RCS: @(#) $Id: tkSquare.c,v 1.4.2.1 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -104,7 +104,7 @@ static void SquareDisplay _ANSI_ARGS_((ClientData clientData));
static void KeepInWindow _ANSI_ARGS_((Square *squarePtr));
static void SquareObjEventProc _ANSI_ARGS_((ClientData clientData,
XEvent *eventPtr));
-static int SquareWidgetCmd _ANSI_ARGS_((ClientData clientData,
+static int SquareWidgetObjCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *, int objc, Tcl_Obj * CONST objv[]));
/*
@@ -169,7 +169,7 @@ SquareObjCmd(clientData, interp, objc, objv)
squarePtr->display = Tk_Display(tkwin);
squarePtr->interp = interp;
squarePtr->widgetCmd = Tcl_CreateObjCommand(interp,
- Tk_PathName(squarePtr->tkwin), SquareWidgetCmd,
+ Tk_PathName(squarePtr->tkwin), SquareWidgetObjCmd,
(ClientData) squarePtr, SquareDeletedProc);
squarePtr->gc = None;
squarePtr->optionTable = optionTable;
@@ -203,7 +203,7 @@ error:
/*
*--------------------------------------------------------------
*
- * SquareWidgetCmd --
+ * SquareWidgetObjCmd --
*
* This procedure is invoked to process the Tcl command
* that corresponds to a widget managed by this module.
@@ -219,7 +219,7 @@ error:
*/
static int
-SquareWidgetCmd(clientData, interp, objc, objv)
+SquareWidgetObjCmd(clientData, interp, objc, objv)
ClientData clientData; /* Information about square widget. */
Tcl_Interp *interp; /* Current interpreter. */
int objc; /* Number of arguments. */
@@ -227,7 +227,7 @@ SquareWidgetCmd(clientData, interp, objc, objv)
{
Square *squarePtr = (Square *) clientData;
int result = TCL_OK;
- static char *squareOptions[] = {"cget", "configure", (char *) NULL};
+ static CONST char *squareOptions[] = {"cget", "configure", (char *) NULL};
enum {
SQUARE_CGET, SQUARE_CONFIGURE
};
diff --git a/generic/tkStubInit.c b/generic/tkStubInit.c
index 34c7f6e..516f4c9 100644
--- a/generic/tkStubInit.c
+++ b/generic/tkStubInit.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.3 2001/11/11 17:58:53 wolfsuit Exp $
+ * RCS: @(#) $Id: tkStubInit.c,v 1.28.2.4 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -256,18 +256,7 @@ TkIntStubs tkIntStubs = {
#ifdef MAC_OSX_TK
TkUnionRectWithRegion, /* 119 */
#endif /* MAC_OSX_TK */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 120 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 120 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenerateActivateEvents, /* 120 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenerateActivateEvents, /* 120 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 121 */
#endif /* UNIX */
@@ -292,18 +281,7 @@ TkIntStubs tkIntStubs = {
#ifdef MAC_OSX_TCL
TkpDefineNativeBitmaps, /* 122 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 123 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 123 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpGetMS, /* 123 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpGetMS, /* 123 */
-#endif /* MAC_OSX_TCL */
#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 124 */
#endif /* UNIX */
@@ -316,110 +294,23 @@ TkIntStubs tkIntStubs = {
#ifdef MAC_OSX_TCL
TkpGetNativeAppBitmap, /* 124 */
#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 125 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 125 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkPointerDeadWindow, /* 125 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkPointerDeadWindow, /* 125 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 126 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 126 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpSetCapture, /* 126 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpSetCapture, /* 126 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 127 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 127 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpSetCursor, /* 127 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpSetCursor, /* 127 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 128 */
-#endif /* UNIX */
-#ifdef __WIN32__
- NULL, /* 128 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkpWmSetState, /* 128 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkpWmSetState, /* 128 */
-#endif /* MAC_OSX_TCL */
NULL, /* 129 */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 130 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 130 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGetTransientMaster, /* 130 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGetTransientMaster, /* 130 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 131 */
-#endif /* UNIX */
-#ifdef __WIN32__
- NULL, /* 131 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenerateButtonEvent, /* 131 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenerateButtonEvent, /* 131 */
-#endif /* MAC_OSX_TCL */
NULL, /* 132 */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
- NULL, /* 133 */
-#endif /* UNIX */
-#ifdef __WIN32__
NULL, /* 133 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenWMDestroyEvent, /* 133 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenWMDestroyEvent, /* 133 */
-#endif /* MAC_OSX_TCL */
-#if !(defined(__WIN32__) || defined(MAC_TCL) || defined(MAC_OSX_TK))/* UNIX */
NULL, /* 134 */
-#endif /* UNIX */
-#ifdef __WIN32__
- NULL, /* 134 */
-#endif /* __WIN32__ */
-#ifdef MAC_TCL
- TkGenWMConfigureEvent, /* 134 */
-#endif /* MAC_TCL */
-#ifdef MAC_OSX_TCL
- TkGenWMConfigureEvent, /* 134 */
-#endif /* MAC_OSX_TCL */
TkpDrawHighlightBorder, /* 135 */
TkSetFocusWin, /* 136 */
TkpSetKeycodeAndState, /* 137 */
TkpGetKeySym, /* 138 */
TkpInitKeymapInfo, /* 139 */
TkPhotoGetValidRegion, /* 140 */
+ TkWmStackorderToplevel, /* 141 */
};
TkIntPlatStubs tkIntPlatStubs = {
@@ -474,8 +365,8 @@ TkIntPlatStubs tkIntPlatStubs = {
#endif /* __WIN32__ */
#ifdef MAC_TCL
TkGenerateActivateEvents, /* 0 */
- TkpCreateNativeBitmap, /* 1 */
- TkpDefineNativeBitmaps, /* 2 */
+ NULL, /* 1 */
+ NULL, /* 2 */
TkpGetMS, /* 3 */
NULL, /* 4 */
TkPointerDeadWindow, /* 5 */
@@ -490,27 +381,27 @@ TkIntPlatStubs tkIntPlatStubs = {
TkGenerateButtonEvent, /* 14 */
NULL, /* 15 */
TkGenWMDestroyEvent, /* 16 */
- TkGenWMConfigureEvent, /* 17 */
+ NULL, /* 17 */
TkMacButtonKeyState, /* 18 */
TkMacClearMenubarActive, /* 19 */
- TkMacConvertEvent, /* 20 */
+ NULL, /* 20 */
TkMacDispatchMenuEvent, /* 21 */
TkMacInstallCursor, /* 22 */
- TkMacConvertTkEvent, /* 23 */
+ NULL, /* 23 */
TkMacHandleTearoffMenu, /* 24 */
NULL, /* 25 */
- TkMacInvalClipRgns, /* 26 */
+ NULL, /* 26 */
TkMacDoHLEvent, /* 27 */
NULL, /* 28 */
TkMacGenerateTime, /* 29 */
- TkMacGetDrawablePort, /* 30 */
+ NULL, /* 30 */
TkMacGetScrollbarGrowWindow, /* 31 */
TkMacGetXWindow, /* 32 */
TkMacGrowToplevel, /* 33 */
TkMacHandleMenuSelect, /* 34 */
- TkMacHaveAppearance, /* 35 */
- TkMacInitAppleEvents, /* 36 */
- TkMacInitMenus, /* 37 */
+ NULL, /* 35 */
+ NULL, /* 36 */
+ NULL, /* 37 */
TkMacInvalidateWindow, /* 38 */
TkMacIsCharacterMissing, /* 39 */
TkMacMakeRealWindowExist, /* 40 */
@@ -539,6 +430,7 @@ TkIntPlatStubs tkIntPlatStubs = {
TkMacContainerId, /* 63 */
TkMacGetHostToplevel, /* 64 */
TkMacPreprocessMenu, /* 65 */
+ TkpIsWindowFloating, /* 66 */
#endif /* MAC_TCL */
#ifdef MAC_OSX_TK
TkGenerateActivateEvents, /* 0 */
@@ -589,6 +481,12 @@ TkIntPlatStubs tkIntPlatStubs = {
TkMacOSXPreprocessMenu, /* 45 */
TkpIsWindowFloating, /* 46 */
TkMacOSXGetCapture, /* 47 */
+ NULL, /* 48 */
+ TkGetTransientMaster, /* 49 */
+ TkGenerateButtonEvent, /* 50 */
+ TkGenWMDestroyEvent, /* 51 */
+ TkGenWMConfigureEvent, /* 52 */
+ TkpGetMS, /* 53 */
#endif /* MAC_OSX_TK */
};
diff --git a/generic/tkStubLib.c b/generic/tkStubLib.c
index a7d10ac..08d6113 100644
--- a/generic/tkStubLib.c
+++ b/generic/tkStubLib.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkStubLib.c,v 1.6.2.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkStubLib.c,v 1.6.2.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
/*
@@ -18,13 +18,9 @@
* do these includes before we add the stubs defines. This a hack.
*/
-#if defined(MAC_TCL)
-#include "tkMacInt.h"
-#else defined(MAC_OSX_TK)
+#if defined(MAC_OSX_TK)
#include "tkMacOSXInt.h"
-#endif
-#if defined(MAC_TCL) || defined(MAC_OSX_TK)
#include "tkInt.h"
#include "tkPort.h"
#endif /* MAC_TCL */
@@ -46,8 +42,6 @@
#endif
#undef USE_TK_STUB_PROCS
-#if !defined(MAC_TCL) && !defined(MAC_OSX_TK)
-
#include "tkPort.h"
#include "tkInt.h"
@@ -55,7 +49,9 @@
#include "tkWinInt.h"
#endif
-#endif /* !MAC_TCL */
+#ifdef MAC_TCL
+#include "tkMacInt.h"
+#endif
#include "tkDecls.h"
#include "tkIntDecls.h"
diff --git a/generic/tkTest.c b/generic/tkTest.c
index 41976c3..65f9aab 100644
--- a/generic/tkTest.c
+++ b/generic/tkTest.c
@@ -13,7 +13,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTest.c,v 1.15.6.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkTest.c,v 1.15.6.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -631,7 +631,7 @@ TestobjconfigObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *options[] = {"alltypes", "chain1", "chain2",
+ static CONST char *options[] = {"alltypes", "chain1", "chain2",
"configerror", "delete", "info", "internal", "new",
"notenoughparams", "twowindows", (char *) NULL};
enum {
@@ -1354,7 +1354,9 @@ TrivialConfigObjCmd(clientData, interp, objc, objv)
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
int result = TCL_OK;
- static char *options[] = {"cget", "configure", "csave", (char *) NULL};
+ static CONST char *options[] = {
+ "cget", "configure", "csave", (char *) NULL
+ };
enum {
CGET, CONFIGURE, CSAVE
};
@@ -1538,7 +1540,7 @@ TestfontObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
- static char *options[] = {"counts", "subfonts", (char *) NULL};
+ static CONST char *options[] = {"counts", "subfonts", (char *) NULL};
enum option {COUNTS, SUBFONTS};
int index;
Tk_Window tkwin;
diff --git a/generic/tkText.c b/generic/tkText.c
index cd2c64b..f848d21 100644
--- a/generic/tkText.c
+++ b/generic/tkText.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkText.c,v 1.18.4.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkText.c,v 1.18.4.3 2002/02/05 02:25:15 wolfsuit Exp $
*/
#include "default.h"
@@ -42,6 +42,9 @@ static Tk_CustomOption stateOption = {
*/
static Tk_ConfigSpec configSpecs[] = {
+ {TK_CONFIG_BOOLEAN, "-autoseparators", "autoSeparators",
+ "AutoSeparators", DEF_TEXT_AUTO_SEPARATORS,
+ Tk_Offset(TkText, autoSeparators), 0},
{TK_CONFIG_BORDER, "-background", "background", "Background",
DEF_TEXT_BG_COLOR, Tk_Offset(TkText, border), TK_CONFIG_COLOR_ONLY},
{TK_CONFIG_BORDER, "-background", "background", "Background",
@@ -129,6 +132,8 @@ static Tk_ConfigSpec configSpecs[] = {
{TK_CONFIG_STRING, "-takefocus", "takeFocus", "TakeFocus",
DEF_TEXT_TAKE_FOCUS, Tk_Offset(TkText, takeFocus),
TK_CONFIG_NULL_OK},
+ {TK_CONFIG_BOOLEAN, "-undo", "undo", "Undo",
+ DEF_TEXT_UNDO, Tk_Offset(TkText, undo), 0},
{TK_CONFIG_INT, "-width", "width", "Width",
DEF_TEXT_WIDTH, Tk_Offset(TkText, width), 0},
{TK_CONFIG_CUSTOM, "-wrap", "wrap", "Wrap",
@@ -292,6 +297,8 @@ static int TextFetchSelection _ANSI_ARGS_((ClientData clientData,
int offset, char *buffer, int maxBytes));
static int TextSearchCmd _ANSI_ARGS_((TkText *textPtr,
Tcl_Interp *interp, int argc, char **argv));
+static int TextEditCmd _ANSI_ARGS_((TkText *textPtr,
+ Tcl_Interp *interp, int argc, char **argv));
static int TextWidgetCmd _ANSI_ARGS_((ClientData clientData,
Tcl_Interp *interp, int argc, char **argv));
static void TextWorldChanged _ANSI_ARGS_((
@@ -304,6 +311,19 @@ static void DumpLine _ANSI_ARGS_((Tcl_Interp *interp,
static int DumpSegment _ANSI_ARGS_((Tcl_Interp *interp, char *key,
char *value, char * command, TkTextIndex *index,
int what));
+static int TextEditUndo _ANSI_ARGS_((Tcl_Interp * interp,
+ TkText *textPtr));
+static int TextEditRedo _ANSI_ARGS_((Tcl_Interp * interp,
+ TkText *textPtr));
+static void TextGetText _ANSI_ARGS_((TkTextIndex * index1,
+ TkTextIndex * index2, Tcl_DString *dsPtr));
+static void pushStack _ANSI_ARGS_(( TkTextEditAtom ** stack,
+ TkTextEditAtom * elem ));
+
+static TkTextEditAtom * popStack _ANSI_ARGS_((TkTextEditAtom ** stack));
+static void clearStack _ANSI_ARGS_((TkTextEditAtom ** stack));
+static void insertSeparator _ANSI_ARGS_((TkTextEditAtom ** stack));
+static void updateDirtyFlag _ANSI_ARGS_((TkText *textPtr));
/*
* The structure below defines text class behavior by means of procedures
@@ -361,7 +381,14 @@ Tk_TextCmd(clientData, interp, argc, argv)
return TCL_ERROR;
}
+ /*
+ * Create the text widget and initialize everything to zero,
+ * then set the necessary initial (non-NULL) values.
+ */
+
textPtr = (TkText *) ckalloc(sizeof(TkText));
+ memset((VOID *) textPtr, 0, sizeof(TkText));
+
textPtr->tkwin = new;
textPtr->display = Tk_Display(new);
textPtr->interp = interp;
@@ -370,61 +397,24 @@ Tk_TextCmd(clientData, interp, argc, argv)
(ClientData) textPtr, TextCmdDeletedProc);
textPtr->tree = TkBTreeCreate(textPtr);
Tcl_InitHashTable(&textPtr->tagTable, TCL_STRING_KEYS);
- textPtr->numTags = 0;
Tcl_InitHashTable(&textPtr->markTable, TCL_STRING_KEYS);
Tcl_InitHashTable(&textPtr->windowTable, TCL_STRING_KEYS);
Tcl_InitHashTable(&textPtr->imageTable, TCL_STRING_KEYS);
textPtr->state = TK_STATE_NORMAL;
- textPtr->border = NULL;
- textPtr->borderWidth = 0;
- textPtr->padX = 0;
- textPtr->padY = 0;
textPtr->relief = TK_RELIEF_FLAT;
- textPtr->highlightWidth = 0;
- textPtr->highlightBgColorPtr = NULL;
- textPtr->highlightColorPtr = NULL;
textPtr->cursor = None;
- textPtr->fgColor = NULL;
- textPtr->tkfont = NULL;
textPtr->charWidth = 1;
- textPtr->spacing1 = 0;
- textPtr->spacing2 = 0;
- textPtr->spacing3 = 0;
- textPtr->tabOptionString = NULL;
- textPtr->tabArrayPtr = NULL;
textPtr->wrapMode = TEXT_WRAPMODE_CHAR;
- textPtr->width = 0;
- textPtr->height = 0;
- textPtr->setGrid = 0;
textPtr->prevWidth = Tk_Width(new);
textPtr->prevHeight = Tk_Height(new);
TkTextCreateDInfo(textPtr);
TkTextMakeByteIndex(textPtr->tree, 0, 0, &startIndex);
TkTextSetYView(textPtr, &startIndex, 0);
- textPtr->selTagPtr = NULL;
- textPtr->selBorder = NULL;
- textPtr->selBdString = NULL;
- textPtr->selFgColorPtr = NULL;
textPtr->exportSelection = 1;
- textPtr->abortSelections = 0;
- textPtr->insertMarkPtr = NULL;
- textPtr->insertBorder = NULL;
- textPtr->insertWidth = 0;
- textPtr->insertBorderWidth = 0;
- textPtr->insertOnTime = 0;
- textPtr->insertOffTime = 0;
- textPtr->insertBlinkHandler = (Tcl_TimerToken) NULL;
- textPtr->bindingTable = NULL;
- textPtr->currentMarkPtr = NULL;
textPtr->pickEvent.type = LeaveNotify;
- textPtr->pickEvent.xcrossing.x = 0;
- textPtr->pickEvent.xcrossing.y = 0;
- textPtr->numCurTags = 0;
- textPtr->curTagArrayPtr = NULL;
- textPtr->takeFocus = NULL;
- textPtr->xScrollCmd = NULL;
- textPtr->yScrollCmd = NULL;
- textPtr->flags = 0;
+ textPtr->undo = 1;
+ textPtr->isDirtyIncrement = 1;
+ textPtr->autoSeparators = 1;
/*
* Create the "sel" tag and the "current" and "insert" marks.
@@ -484,9 +474,8 @@ TextWidgetCmd(clientData, interp, argc, argv)
char **argv; /* Argument strings. */
{
register TkText *textPtr = (TkText *) clientData;
- int result = TCL_OK;
+ int c, result = TCL_OK;
size_t length;
- int c;
TkTextIndex index1, index2;
if (argc < 2) {
@@ -635,6 +624,8 @@ TextWidgetCmd(clientData, interp, argc, argv)
sprintf(buf, "%d %d %d %d %d", x, y, width, height, base);
Tcl_SetResult(interp, buf, TCL_VOLATILE);
}
+ } else if ((c == 'e') && (strncmp(argv[1], "edit", length) == 0)) {
+ result = TextEditCmd(textPtr, interp, argc, argv);
} else if ((c == 'g') && (strncmp(argv[1], "get", length) == 0)) {
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # args: should be \"",
@@ -654,34 +645,16 @@ TextWidgetCmd(clientData, interp, argc, argv)
result = TCL_ERROR;
goto done;
}
- if (TkTextIndexCmp(&index1, &index2) >= 0) {
- goto done;
- }
- while (1) {
- int offset, last, savedChar;
- TkTextSegment *segPtr;
-
- segPtr = TkTextIndexToSeg(&index1, &offset);
- last = segPtr->size;
- if (index1.linePtr == index2.linePtr) {
- int last2;
-
- if (index2.byteIndex == index1.byteIndex) {
- break;
- }
- last2 = index2.byteIndex - index1.byteIndex + offset;
- if (last2 < last) {
- last = last2;
- }
- }
- if (segPtr->typePtr == &tkTextCharType) {
- savedChar = segPtr->body.chars[last];
- segPtr->body.chars[last] = 0;
- Tcl_AppendResult(interp, segPtr->body.chars + offset,
- (char *) NULL);
- segPtr->body.chars[last] = savedChar;
- }
- TkTextIndexForwBytes(&index1, last-offset, &index1);
+ if (TkTextIndexCmp(&index1, &index2) < 0) {
+ /*
+ * Place the text in a DString and move it to the result. Since
+ * this could in principle be a megabyte or more, we want to do
+ * it efficiently!
+ */
+ Tcl_DString ds;
+ TextGetText(&index1, &index2, &ds);
+ Tcl_DStringResult(interp, &ds);
+ Tcl_DStringFree(&ds);
}
} else if ((c == 'i') && (strncmp(argv[1], "index", length) == 0)
&& (length >= 3)) {
@@ -703,7 +676,7 @@ TextWidgetCmd(clientData, interp, argc, argv)
} else if ((c == 'i') && (strncmp(argv[1], "insert", length) == 0)
&& (length >= 3)) {
int i, j, numTags;
- char **tagNames;
+ CONST char **tagNames;
TkTextTag **oldTagArrayPtr;
if (argc < 4) {
@@ -770,8 +743,8 @@ TextWidgetCmd(clientData, interp, argc, argv)
} else {
Tcl_AppendResult(interp, "bad option \"", argv[1],
"\": must be bbox, cget, compare, configure, debug, delete, ",
- "dlineinfo, dump, get, image, index, insert, mark, scan, ",
- "search, see, tag, window, xview, or yview",
+ "dlineinfo, dump, edit, get, image, index, insert, mark, ",
+ "scan, search, see, tag, window, xview, or yview",
(char *) NULL);
result = TCL_ERROR;
}
@@ -838,6 +811,8 @@ DestroyText(memPtr)
if (textPtr->bindingTable != NULL) {
Tk_DeleteBindingTable(textPtr->bindingTable);
}
+ clearStack(&(textPtr->undoStack));
+ clearStack(&(textPtr->redoStack));
/*
* NOTE: do NOT free up selBorder, selBdString, or selFgColorPtr:
@@ -1208,6 +1183,8 @@ InsertChars(textPtr, indexPtr, string)
{
int lineIndex, resetView, offset;
TkTextIndex newTop;
+ TkTextEditAtom * insertion;
+ char indexBuffer[TK_POS_CHARS];
/*
* Don't allow insertions on the last (dummy) line of the text.
@@ -1236,6 +1213,32 @@ InsertChars(textPtr, indexPtr, string)
}
TkTextChanged(textPtr, indexPtr, indexPtr);
TkBTreeInsertChars(indexPtr, string);
+
+ /*
+ * Push the insertion on the undo stack
+ */
+
+ if ( textPtr->undo ) {
+ if (textPtr->autoSeparators && textPtr->undoStack &&
+ textPtr->undoStack->type != TK_EDIT_INSERT) {
+ insertSeparator(&(textPtr->undoStack));
+ }
+
+ insertion = (TkTextEditAtom *) ckalloc(sizeof(TkTextEditAtom));
+ insertion->type = TK_EDIT_INSERT;
+
+ TkTextPrintIndex(indexPtr,indexBuffer);
+ insertion->index = (char *) ckalloc(strlen(indexBuffer) + 1);
+ strcpy(insertion->index,indexBuffer);
+
+ insertion->string = (char *) ckalloc(strlen(string) + 1);
+ strcpy(insertion->string,string);
+
+ pushStack(&(textPtr->undoStack),insertion);
+ clearStack(&(textPtr->redoStack));
+ }
+ updateDirtyFlag(textPtr);
+
if (resetView) {
TkTextMakeByteIndex(textPtr->tree, lineIndex, 0, &newTop);
TkTextIndexForwBytes(&newTop, offset, &newTop);
@@ -1279,6 +1282,8 @@ DeleteChars(textPtr, index1String, index2String)
{
int line1, line2, line, byteIndex, resetView;
TkTextIndex index1, index2;
+ TkTextEditAtom * deletion;
+ char indexBuffer[TK_POS_CHARS];
/*
* Parse the starting and stopping indices.
@@ -1390,6 +1395,37 @@ DeleteChars(textPtr, index1String, index2String)
byteIndex -= (index2.byteIndex - index1.byteIndex);
}
}
+
+ /*
+ * Push the deletion on the undo stack
+ */
+
+ if (textPtr->undo) {
+ Tcl_DString ds;
+
+ if (textPtr->autoSeparators && (textPtr->undoStack != NULL)
+ && (textPtr->undoStack->type != TK_EDIT_DELETE)) {
+ insertSeparator(&(textPtr->undoStack));
+ }
+
+ deletion = (TkTextEditAtom *) ckalloc(sizeof(TkTextEditAtom));
+ deletion->type = TK_EDIT_DELETE;
+
+ TkTextPrintIndex(&index1, indexBuffer);
+ deletion->index = (char *) ckalloc(strlen(indexBuffer) + 1);
+ strcpy(deletion->index, indexBuffer);
+
+ TextGetText(&index1, &index2, &ds);
+ deletion->string =
+ (char *) ckalloc((unsigned int) Tcl_DStringLength(&ds) + 1);
+ strcpy(deletion->string, Tcl_DStringValue(&ds));
+ Tcl_DStringFree(&ds);
+
+ pushStack(&(textPtr->undoStack), deletion);
+ clearStack(&(textPtr->redoStack));
+ }
+ updateDirtyFlag(textPtr);
+
TkBTreeDeleteChars(&index1, &index2);
if (resetView) {
TkTextMakeByteIndex(textPtr->tree, line, byteIndex, &index1);
@@ -1569,6 +1605,7 @@ TkTextLostSelection(clientData)
ClientData clientData; /* Information about text widget. */
{
register TkText *textPtr = (TkText *) clientData;
+ XEvent event;
#ifdef ALWAYS_SHOW_SELECTION
TkTextIndex start, end;
@@ -1587,6 +1624,21 @@ TkTextLostSelection(clientData)
TkTextRedrawTag(textPtr, &start, &end, textPtr->selTagPtr, 1);
TkBTreeTag(&start, &end, textPtr->selTagPtr, 0);
#endif
+
+ /*
+ * Send an event that the selection changed. This is equivalent to
+ * "event generate $textWidget <<Selection>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Selection");
+ Tk_HandleEvent(&event);
+
textPtr->flags &= ~GOT_SELECTION;
}
@@ -1912,7 +1964,7 @@ TextSearchCmd(textPtr, interp, argc, argv)
i = p - startOfLine;
thisLength = patLength;
} else {
- char *start, *end;
+ CONST char *start, *end;
int match;
match = Tcl_RegExpExec(interp, regexp,
@@ -2073,7 +2125,7 @@ TkTextGetTabs(interp, tkwin, string)
* the text manual entry for details. */
{
int argc, i, count, c;
- char **argv;
+ CONST char **argv;
TkTextTabArray *tabArrayPtr;
TkTextTab *tabPtr;
Tcl_UniChar ch;
@@ -2319,9 +2371,9 @@ DumpLine(interp, textPtr, what, linePtr, startByte, endByte, lineno, command)
offset += segPtr->size, segPtr = segPtr->nextPtr) {
if ((what & TK_DUMP_TEXT) && (segPtr->typePtr == &tkTextCharType) &&
(offset + segPtr->size > startByte)) {
- char savedChar; /* Last char used in the seg */
- int last = segPtr->size; /* Index of savedChar */
- int first = 0; /* Index of first char in seg */
+ char savedChar; /* Last char used in the seg */
+ int last = segPtr->size; /* Index of savedChar */
+ int first = 0; /* Index of first char in seg */
if (offset + segPtr->size > endByte) {
last = endByte - offset;
}
@@ -2406,7 +2458,7 @@ DumpSegment(interp, key, value, command, index, what)
Tcl_AppendElement(interp, buffer);
return TCL_OK;
} else {
- char *argv[4];
+ CONST char *argv[4];
char *list;
int result;
argv[0] = key;
@@ -2419,4 +2471,475 @@ DumpSegment(interp, key, value, command, index, what)
return result;
}
}
+
+/*
+ * pushStack
+ * Push elem on the stack identified by stack.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void pushStack ( stack, elem )
+ TkTextEditAtom ** stack;
+ TkTextEditAtom * elem;
+{
+ elem->next = *stack;
+ *stack = elem;
+}
+
+/*
+ * popStack --
+ * Remove and return the top element from the stack identified by
+ * stack.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static TkTextEditAtom * popStack ( stack )
+ TkTextEditAtom ** stack ;
+{
+ TkTextEditAtom * elem = NULL;
+ if (*stack != NULL ) {
+ elem = *stack;
+ *stack = elem->next;
+ }
+ return elem;
+}
+
+/*
+ * insertSeparator --
+ * insert a separator on the stack, indicating a border for
+ * an undo/redo chunk.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void insertSeparator ( stack )
+ TkTextEditAtom ** stack;
+{
+ TkTextEditAtom * separator;
+
+ if ( *stack != NULL && (*stack)->type != TK_EDIT_SEPARATOR ) {
+ separator = (TkTextEditAtom *) ckalloc(sizeof(TkTextEditAtom));
+ separator->type = TK_EDIT_SEPARATOR;
+ pushStack(stack,separator);
+ }
+}
+
+/*
+ * clearStack --
+ * Clear an entire undo or redo stack and destroy all elements in it.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void clearStack ( stack )
+ TkTextEditAtom ** stack; /* An Undo or Redo stack */
+{
+ TkTextEditAtom * elem;
+
+ while ( (elem = popStack(stack)) ) {
+ if ( elem->type != TK_EDIT_SEPARATOR ) {
+ ckfree(elem->index);
+ ckfree(elem->string);
+ }
+ ckfree((char *)elem);
+ }
+ *stack = NULL;
+}
+
+/*
+ * TextEditUndo --
+ * undo the last change.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static int TextEditUndo (interp,textPtr)
+ Tcl_Interp * interp;
+ TkText * textPtr; /* Overall information about text widget. */
+{
+ TkTextEditAtom * elem;
+ TkTextIndex fromIndex, toIndex;
+ char buffer[TK_POS_CHARS];
+ char viewIndex[TK_POS_CHARS];
+
+ if ( ! textPtr->undo ) {
+ return TCL_OK;
+ }
+
+ /* Turn off the undo feature */
+
+ textPtr->undo = 0;
+
+ /* insert a separator on the redo stack */
+
+ insertSeparator(&(textPtr->redoStack));
+
+ /* Pop and skip the first separator if there is one*/
+
+ elem = popStack(&(textPtr->undoStack));
+
+ if ( elem == NULL ) {
+ textPtr->undo = 1;
+ return TCL_ERROR;
+ }
+
+ if ( ( elem != NULL ) && ( elem->type == TK_EDIT_SEPARATOR ) ) {
+ ckfree((char *) elem);
+ elem = popStack(&(textPtr->undoStack));
+ }
+
+ while ( elem && (elem->type != TK_EDIT_SEPARATOR) ) {
+ switch ( elem->type ) {
+ case TK_EDIT_INSERT:
+ TkTextGetIndex(interp,textPtr,elem->index,&toIndex);
+ strcpy(viewIndex,elem->index);
+ TkTextIndexForwBytes(&toIndex,(int)strlen(elem->string),&toIndex);
+ TkTextPrintIndex(&toIndex,buffer);
+ textPtr->isDirtyIncrement = -1;
+ DeleteChars(textPtr,elem->index,buffer);
+ textPtr->isDirtyIncrement = 1;
+ break;
+ case TK_EDIT_DELETE:
+ TkTextGetIndex(interp,textPtr,elem->index,&fromIndex);
+ textPtr->isDirtyIncrement = -1;
+ InsertChars(textPtr,&fromIndex,elem->string);
+ TkTextIndexForwBytes(&fromIndex,(int)strlen(elem->string),&toIndex);
+ TkTextPrintIndex(&toIndex,viewIndex);
+ textPtr->isDirtyIncrement = 1;
+ break;
+ default:
+ return TCL_ERROR;
+ }
+ pushStack(&(textPtr->redoStack),elem);
+ elem = popStack(&(textPtr->undoStack));
+ }
+
+ /* view the last changed position */
+
+ TkTextGetIndex(interp,textPtr,viewIndex,&toIndex);
+ TkTextSetMark(textPtr, "insert", &toIndex);
+
+ /* insert a separator on the undo stack */
+
+ insertSeparator(&(textPtr->undoStack));
+
+ /* Turn back on the undo feature */
+
+ textPtr->undo = 1;
+
+ return TCL_OK;
+}
+
+/*
+ * TextEditRedo --
+ * redo the last undone change.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static int TextEditRedo (interp,textPtr)
+ Tcl_Interp * interp;
+ TkText * textPtr; /* Overall information about text widget. */
+{
+ TkTextEditAtom *elem;
+ TkTextIndex fromIndex, toIndex;
+ char buffer[TK_POS_CHARS];
+ char viewIndex[TK_POS_CHARS];
+
+ if (!textPtr->undo) {
+ return TCL_OK;
+ }
+
+ /* Turn off the undo feature temporarily */
+
+ textPtr->undo = 0;
+ /* insert a separator on the undo stack */
+
+ insertSeparator(&(textPtr->undoStack));
+
+ /* Pop and skip the first separator if there is one*/
+
+ elem = popStack(&(textPtr->redoStack));
+
+ if ( elem == NULL ) {
+ textPtr->undo = 1;
+ return TCL_ERROR;
+ }
+
+ if ( ( elem != NULL ) && ( elem->type == TK_EDIT_SEPARATOR ) ) {
+ ckfree((char *) elem);
+ elem = popStack(&(textPtr->redoStack));
+ }
+
+ while ( elem && (elem->type != TK_EDIT_SEPARATOR) ) {
+ switch ( elem->type ) {
+ case TK_EDIT_INSERT:
+ TkTextGetIndex(interp, textPtr, elem->index, &fromIndex);
+ InsertChars(textPtr, &fromIndex, elem->string);
+ TkTextIndexForwBytes(&fromIndex, (int) strlen(elem->string),
+ &toIndex);
+ TkTextPrintIndex(&toIndex, viewIndex);
+ break;
+ case TK_EDIT_DELETE:
+ TkTextGetIndex(interp, textPtr, elem->index, &toIndex);
+ strcpy(viewIndex, elem->index);
+ TkTextIndexForwBytes(&toIndex, (int) strlen(elem->string),
+ &toIndex);
+ TkTextPrintIndex(&toIndex, buffer);
+ DeleteChars(textPtr, elem->index, buffer);
+ break;
+ default:
+ return TCL_ERROR;
+ }
+ pushStack(&(textPtr->undoStack), elem);
+ elem = popStack(&(textPtr->redoStack));
+ }
+
+ /* view the last changed position */
+
+ TkTextGetIndex(interp, textPtr, viewIndex, &toIndex);
+ TkTextSetMark(textPtr, "insert", &toIndex);
+
+ /* insert a separator on the undo stack */
+
+ insertSeparator(&(textPtr->undoStack));
+
+ /* Turn back on the undo feature */
+
+ textPtr->undo = 1;
+
+ return TCL_OK;
+}
+
+/*
+ * TextEditCmd --
+ *
+ * Handle the subcommands to "$text edit ...".
+ * See documentation for details.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static int
+TextEditCmd(textPtr, interp, argc, argv)
+ TkText *textPtr; /* Information about text widget. */
+ Tcl_Interp *interp; /* Current interpreter. */
+ int argc; /* Number of arguments. */
+ char **argv; /* Argument strings. */
+{
+ int c, setModified;
+ size_t length;
+
+ if (argc < 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit option ?arg arg ...?\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ c = argv[2][0];
+ length = strlen(argv[2]);
+ if ((c == 'm') && (strncmp(argv[2], "modified", length) == 0)) {
+ if (argc == 3) {
+ Tcl_SetObjResult(interp, Tcl_NewBooleanObj(textPtr->isDirty));
+ } else if (argc != 4) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit modified ?boolean?\"", (char *) NULL);
+ return TCL_ERROR;
+ } else {
+ XEvent event;
+ if (Tcl_GetBoolean(interp, argv[3], &setModified) != TCL_OK) {
+ return TCL_ERROR;
+ }
+ /*
+ * Set or reset the dirty info and trigger a Modified event.
+ */
+
+ if (setModified) {
+ textPtr->isDirty = 1;
+ textPtr->modifiedSet = 1;
+ } else {
+ textPtr->isDirty = 0;
+ textPtr->modifiedSet = 0;
+ }
+
+ /*
+ * Send an event that the text was modified. This is equivalent to
+ * "event generate $textWidget <<Modified>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Modified");
+ Tk_HandleEvent(&event);
+ }
+ } else if ((c == 'r') && (strncmp(argv[2], "redo", length) == 0)
+ && (length >= 3)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit redo\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ if ( TextEditRedo(interp,textPtr) ) {
+ Tcl_AppendResult(interp, "nothing to redo", (char *) NULL);
+ return TCL_ERROR;
+ }
+ } else if ((c == 'r') && (strncmp(argv[2], "reset", length) == 0)
+ && (length >= 3)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit reset\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ clearStack(&(textPtr->undoStack));
+ clearStack(&(textPtr->redoStack));
+ } else if ((c == 's') && (strncmp(argv[2], "separator", length) == 0)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit separator\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ insertSeparator(&(textPtr->undoStack));
+ } else if ((c == 'u') && (strncmp(argv[2], "undo", length) == 0)) {
+ if (argc != 3) {
+ Tcl_AppendResult(interp, "wrong # args: should be \"",
+ argv[0], " edit undo\"", (char *) NULL);
+ return TCL_ERROR;
+ }
+ if ( TextEditUndo(interp,textPtr) ) {
+ Tcl_AppendResult(interp, "nothing to undo",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+ } else {
+ Tcl_AppendResult(interp, "bad edit option \"", argv[2],
+ "\": must be modified, redo, reset, separator or undo",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ return TCL_OK;
+}
+
+/*
+ * TextGetText --
+ * Returns the text from indexPtr1 to indexPtr2, placing that text
+ * in the Tcl_DString given. That DString should be free or uninitialized.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Memory will be allocated for the DString. Remember to free it.
+ */
+
+static void
+TextGetText(indexPtr1,indexPtr2, dsPtr)
+ TkTextIndex *indexPtr1;
+ TkTextIndex *indexPtr2;
+ Tcl_DString *dsPtr;
+{
+ TkTextIndex tmpIndex;
+ Tcl_DStringInit(dsPtr);
+
+ TkTextMakeByteIndex(indexPtr1->tree, TkBTreeLineIndex(indexPtr1->linePtr),
+ indexPtr1->byteIndex, &tmpIndex);
+
+ if (TkTextIndexCmp(indexPtr1, indexPtr2) < 0) {
+ while (1) {
+ int offset, last;
+ TkTextSegment *segPtr;
+
+ segPtr = TkTextIndexToSeg(&tmpIndex, &offset);
+ last = segPtr->size;
+ if (tmpIndex.linePtr == indexPtr2->linePtr) {
+ int last2;
+
+ if (indexPtr2->byteIndex == tmpIndex.byteIndex) {
+ break;
+ }
+ last2 = indexPtr2->byteIndex - tmpIndex.byteIndex + offset;
+ if (last2 < last) {
+ last = last2;
+ }
+ }
+ if (segPtr->typePtr == &tkTextCharType) {
+ Tcl_DStringAppend(dsPtr, segPtr->body.chars + offset,
+ last - offset);
+ }
+ TkTextIndexForwBytes(&tmpIndex, last-offset, &tmpIndex);
+ }
+ }
+}
+
+/*
+ * updateDirtyFlag --
+ * increases the dirtyness of the text widget
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * None.
+ */
+
+static void updateDirtyFlag (textPtr)
+ TkText *textPtr; /* Information about text widget. */
+{
+ int oldDirtyFlag;
+
+ if (textPtr->modifiedSet) {
+ return;
+ }
+ oldDirtyFlag = textPtr->isDirty;
+ textPtr->isDirty += textPtr->isDirtyIncrement;
+ if (textPtr->isDirty == 0 || oldDirtyFlag == 0) {
+ XEvent event;
+ /*
+ * Send an event that the text was modified. This is equivalent to
+ * "event generate $textWidget <<Modified>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Modified");
+ Tk_HandleEvent(&event);
+ }
+}
diff --git a/generic/tkText.h b/generic/tkText.h
index f89c18f..0b65e94 100644
--- a/generic/tkText.h
+++ b/generic/tkText.h
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkText.h,v 1.7 2000/01/06 02:18:58 hobbs Exp $
+ * RCS: @(#) $Id: tkText.h,v 1.7.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#ifndef _TKTEXT
@@ -451,6 +451,25 @@ typedef struct TkTextTabArray {
* BE THE LAST IN THE STRUCTURE. */
} TkTextTabArray;
+/* enum definining the types used in an edit stack */
+
+typedef enum {
+ TK_EDIT_SEPARATOR, /* Marker */
+ TK_EDIT_INSERT, /* The undo is an insert */
+ TK_EDIT_DELETE /* The undo is a delete */
+} TkTextEditType;
+
+/* strcut defining the basic undo/redo stack element */
+
+typedef struct TkTextEditAtom {
+ TkTextEditType type; /* The type that will trigger the
+ * required action*/
+ char * index; /* The starting index of the range */
+ char * string; /* The text to be inserted / deleted */
+ struct TkTextEditAtom * next; /* Pointer to the next element in the
+ * stack */
+} TkTextEditAtom;
+
/*
* A data structure of the following type is kept for each text widget that
* currently exists for this process:
@@ -604,7 +623,7 @@ typedef struct TkText {
/* Pointer to segment for "current" mark,
* or NULL if none. */
XEvent pickEvent; /* The event from which the current character
- * was chosen. Must be saved so that we
+ * was chosen. Must be saved so that we
* can repick after modifications to the
* text. */
int numCurTags; /* Number of tags associated with character
@@ -616,15 +635,43 @@ typedef struct TkText {
* Miscellaneous additional information:
*/
- char *takeFocus; /* Value of -takeFocus option; not used in
+ char *takeFocus; /* Value of -takeFocus option; not used in
* the C code, but used by keyboard traversal
* scripts. Malloc'ed, but may be NULL. */
char *xScrollCmd; /* Prefix of command to issue to update
* horizontal scrollbar when view changes. */
char *yScrollCmd; /* Prefix of command to issue to update
* vertical scrollbar when view changes. */
- int flags; /* Miscellaneous flags; see below for
+ int flags; /* Miscellaneous flags; see below for
* definitions. */
+
+ /*
+ * Information related to the undo/redo functonality
+ */
+
+ TkTextEditAtom * undoStack; /* The undo stack */
+
+ TkTextEditAtom * redoStack; /* The redo stack */
+
+ int undo; /* non zero means the undo/redo behaviour is
+ * enabled */
+
+ int autoSeparators; /* non zero means the separatorss will be
+ * inserted automatically */
+
+ int modifiedSet; /* Flag indicating that the 'dirtynesss' of
+ * the text widget has been expplicitly set.
+ */
+
+ int isDirty; /* Flag indicating the 'dirtynesss' of the text
+ * widget. If the flag is not zero, unsaved
+ * modifications have been applied to the
+ * text widget */
+
+ int isDirtyIncrement; /* Amount with which the isDirty flag is
+ * incremented every edit action
+ */
+
} TkText;
/*
@@ -787,7 +834,7 @@ EXTERN int TkTextDLineInfo _ANSI_ARGS_((TkText *textPtr,
TkTextIndex *indexPtr, int *xPtr, int *yPtr,
int *widthPtr, int *heightPtr, int *basePtr));
EXTERN TkTextTag * TkTextCreateTag _ANSI_ARGS_((TkText *textPtr,
- char *tagName));
+ CONST char *tagName));
EXTERN void TkTextFreeDInfo _ANSI_ARGS_((TkText *textPtr));
EXTERN void TkTextFreeTag _ANSI_ARGS_((TkText *textPtr,
TkTextTag *tagPtr));
diff --git a/generic/tkTextIndex.c b/generic/tkTextIndex.c
index 8376419..f24fe48 100644
--- a/generic/tkTextIndex.c
+++ b/generic/tkTextIndex.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTextIndex.c,v 1.3 1999/04/16 01:51:24 stanton Exp $
+ * RCS: @(#) $Id: tkTextIndex.c,v 1.3.18.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "default.h"
@@ -64,7 +64,7 @@ TkTextMakeByteIndex(tree, lineIndex, byteIndex, indexPtr)
{
TkTextSegment *segPtr;
int index;
- char *p, *start;
+ CONST char *p, *start;
Tcl_UniChar ch;
indexPtr->tree = tree;
@@ -977,7 +977,7 @@ TkTextIndexBackChars(srcPtr, charCount, dstPtr)
{
TkTextSegment *segPtr, *oldPtr;
int lineIndex, segSize;
- char *p, *start, *end;
+ CONST char *p, *start, *end;
if (charCount <= 0) {
TkTextIndexForwChars(srcPtr, -charCount, dstPtr);
diff --git a/generic/tkTextTag.c b/generic/tkTextTag.c
index c126fcc..d043196 100644
--- a/generic/tkTextTag.c
+++ b/generic/tkTextTag.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkTextTag.c,v 1.5 2000/01/06 02:18:59 hobbs Exp $
+ * RCS: @(#) $Id: tkTextTag.c,v 1.5.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "default.h"
@@ -151,7 +151,7 @@ TkTextTagCmd(textPtr, interp, argc, argv)
index2 = index1;
TkTextIndexForwChars(&index2, 1, &index2);
}
-
+
if (tagPtr->affectsDisplay) {
TkTextRedrawTag(textPtr, &index1, &index2, tagPtr, !addTag);
} else {
@@ -159,18 +159,34 @@ TkTextTagCmd(textPtr, interp, argc, argv)
* Still need to trigger enter/leave events on tags that
* have changed.
*/
-
+
TkTextEventuallyRepick(textPtr);
}
TkBTreeTag(&index1, &index2, tagPtr, addTag);
-
+
/*
* If the tag is "sel" then grab the selection if we're supposed
* to export it and don't already have it. Also, invalidate
* partially-completed selection retrievals.
*/
-
+
if (tagPtr == textPtr->selTagPtr) {
+ XEvent event;
+ /*
+ * Send an event that the selection changed.
+ * This is equivalent to
+ * "event generate $textWidget <<Selection>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Selection");
+ Tk_HandleEvent(&event);
+
if (addTag && textPtr->exportSelection
&& !(textPtr->flags & GOT_SELECTION)) {
Tk_OwnSelection(textPtr->tkwin, XA_PRIMARY,
@@ -234,7 +250,7 @@ TkTextTagCmd(textPtr, interp, argc, argv)
command = Tk_GetBinding(interp, textPtr->bindingTable,
(ClientData) tagPtr, argv[4]);
if (command == NULL) {
- char *string = Tcl_GetStringResult(interp);
+ CONST char *string = Tcl_GetStringResult(interp);
/*
* Ignore missing binding errors. This is a special hack
@@ -462,6 +478,25 @@ TkTextTagCmd(textPtr, interp, argc, argv)
TkTextMakeByteIndex(textPtr->tree, TkBTreeNumLines(textPtr->tree),
0, &last),
TkBTreeTag(&first, &last, tagPtr, 0);
+
+ if (tagPtr == textPtr->selTagPtr) {
+ XEvent event;
+ /*
+ * Send an event that the selection changed.
+ * This is equivalent to
+ * "event generate $textWidget <<Selection>>"
+ */
+
+ memset((VOID *) &event, 0, sizeof(event));
+ event.xany.type = VirtualEvent;
+ event.xany.serial = NextRequest(Tk_Display(textPtr->tkwin));
+ event.xany.send_event = False;
+ event.xany.window = Tk_WindowId(textPtr->tkwin);
+ event.xany.display = Tk_Display(textPtr->tkwin);
+ ((XVirtualEvent *) &event)->name = Tk_GetUid("Selection");
+ Tk_HandleEvent(&event);
+ }
+
Tcl_DeleteHashEntry(hPtr);
if (textPtr->bindingTable != NULL) {
Tk_DeleteAllBindings(textPtr->bindingTable,
@@ -769,7 +804,7 @@ TkTextTagCmd(textPtr, interp, argc, argv)
TkTextTag *
TkTextCreateTag(textPtr, tagName)
TkText *textPtr; /* Widget in which tag is being used. */
- char *tagName; /* Name of desired tag. */
+ CONST char *tagName; /* Name of desired tag. */
{
register TkTextTag *tagPtr;
Tcl_HashEntry *hPtr;
diff --git a/generic/tkWindow.c b/generic/tkWindow.c
index f0482e1..0101778 100644
--- a/generic/tkWindow.c
+++ b/generic/tkWindow.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: tkWindow.c,v 1.39.2.2 2001/10/17 07:10:46 wolfsuit Exp $
+ * RCS: @(#) $Id: tkWindow.c,v 1.39.2.3 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -206,7 +206,7 @@ static Tk_Window CreateTopLevelWindow _ANSI_ARGS_((Tcl_Interp *interp,
static void DeleteWindowsExitProc _ANSI_ARGS_((
ClientData clientData));
static TkDisplay * GetScreen _ANSI_ARGS_((Tcl_Interp *interp,
- char *screenName, int *screenPtr));
+ CONST char *screenName, int *screenPtr));
static int Initialize _ANSI_ARGS_((Tcl_Interp *interp));
static int NameWindow _ANSI_ARGS_((Tcl_Interp *interp,
TkWindow *winPtr, TkWindow *parentPtr,
@@ -356,12 +356,12 @@ CreateTopLevelWindow(interp, parent, name, screenName, flags)
static TkDisplay *
GetScreen(interp, screenName, screenPtr)
Tcl_Interp *interp; /* Place to leave error message. */
- char *screenName; /* Name for screen. NULL or empty means
+ CONST char *screenName; /* Name for screen. NULL or empty means
* use DISPLAY envariable. */
int *screenPtr; /* Where to store screen number. */
{
register TkDisplay *dispPtr;
- char *p;
+ CONST char *p;
int screenId;
size_t length;
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
@@ -2209,7 +2209,7 @@ Tk_SetClassProcs(tkwin, procs, instanceData)
Tk_Window
Tk_NameToWindow(interp, pathName, tkwin)
Tcl_Interp *interp; /* Where to report errors. */
- char *pathName; /* Path name of window. */
+ CONST char *pathName; /* Path name of window. */
Tk_Window tkwin; /* Token for window: name is assumed to
* belong to the same main window as tkwin. */
{
@@ -2571,6 +2571,11 @@ OpenIM(dispPtr)
#else
unsigned short i;
XIMStyles *stylePtr;
+ char *modifier_list;
+
+ if ((modifier_list = XSetLocaleModifiers("")) == NULL) {
+ goto error;
+ }
dispPtr->inputMethod = XOpenIM(dispPtr->display, NULL, NULL, NULL);
if (dispPtr->inputMethod == NULL) {
@@ -2825,7 +2830,9 @@ Initialize(interp)
{
char *p;
int argc, code;
- char **argv, *args[20];
+ CONST char **argv;
+ char *args[20];
+ CONST char *argString = NULL;
Tcl_DString class;
ThreadSpecificData *tsdPtr;
@@ -2935,7 +2942,7 @@ Initialize(interp)
* cross interp refcounting and changing the code below.
*/
- p = Tcl_GetStringResult(master);
+ argString = Tcl_GetStringResult(master);
} else {
/*
* If there is an "argv" variable, get its value, extract out
@@ -2943,13 +2950,13 @@ Initialize(interp)
* the arguments that we used.
*/
- p = Tcl_GetVar2(interp, "argv", (char *) NULL, TCL_GLOBAL_ONLY);
+ argString = Tcl_GetVar2(interp, "argv", (char *) NULL, TCL_GLOBAL_ONLY);
}
argv = NULL;
- if (p != NULL) {
+ if (argString != NULL) {
char buffer[TCL_INTEGER_SPACE];
- if (Tcl_SplitList(interp, p, &argc, &argv) != TCL_OK) {
+ if (Tcl_SplitList(interp, argString, &argc, &argv) != TCL_OK) {
argError:
Tcl_AddErrorInfo(interp,
"\n (processing arguments in argv variable)");
diff --git a/library/button.tcl b/library/button.tcl
index c69811a..7f96958 100644
--- a/library/button.tcl
+++ b/library/button.tcl
@@ -4,7 +4,7 @@
# checkbutton, and radiobutton widgets and provides procedures
# that help in implementing those bindings.
#
-# RCS: @(#) $Id: button.tcl,v 1.11.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: button.tcl,v 1.11.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
@@ -506,9 +506,8 @@ proc ::tk::ButtonDown w {
# If this button has a repeatdelay set up, get it going with an after
after cancel $Priv(afterId)
+ set Priv(repeated) 0
if { ![catch {$w cget -repeatdelay} delay] } {
- set delay [$w cget -repeatdelay]
- set Priv(repeated) 0
if {$delay > 0} {
set Priv(afterId) [after $delay [list tk::ButtonAutoInvoke $w]]
}
diff --git a/library/clrpick.tcl b/library/clrpick.tcl
index bb3d6b2..880ca55 100644
--- a/library/clrpick.tcl
+++ b/library/clrpick.tcl
@@ -3,7 +3,7 @@
# Color selection dialog for platforms that do not support a
# standard color selection dialog.
#
-# RCS: @(#) $Id: clrpick.tcl,v 1.13 2001/08/01 16:21:11 dgp Exp $
+# RCS: @(#) $Id: clrpick.tcl,v 1.13.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1996 Sun Microsystems, Inc.
#
@@ -47,11 +47,11 @@ proc ::tk::dialog::color:: {args} {
# Note that the bars may be of any width.
# However, NUM_COLORBARS must be a number that evenly divides 256.
# Such as 256, 128, 64, etc.
- set data(NUM_COLORBARS) 8
+ set data(NUM_COLORBARS) 16
# BARS_WIDTH is the number of pixels wide the color bar portion of the
# canvas is. This number must be a multiple of NUM_COLORBARS
- set data(BARS_WIDTH) 128
+ set data(BARS_WIDTH) 160
# PLGN_WIDTH is the number of pixels wide of the triangular selection
# polygon. This also results in the definition of the padding on the
@@ -340,7 +340,9 @@ proc ::tk::dialog::color::SetRGBValue {w color} {
proc ::tk::dialog::color::XToRgb {w x} {
upvar ::tk::dialog::color::[winfo name $w] data
- return [expr {($x * $data(intensityIncr))/ $data(colorbarWidth)}]
+ set x [expr {($x * $data(intensityIncr))/ $data(colorbarWidth)}]
+ if {$x > 255} { set x 255 }
+ return $x
}
# ::tk::dialog::color::RgbToX
@@ -557,8 +559,8 @@ proc ::tk::dialog::color::MoveSelector {w sel color x delta} {
if { $x < 0 } {
set x 0
- } elseif { $x >= $data(BARS_WIDTH)} {
- set x [expr {$data(BARS_WIDTH) - 1}]
+ } elseif { $x > $data(BARS_WIDTH)} {
+ set x $data(BARS_WIDTH)
}
set diff [expr {$x - $data($color,x)}]
$sel move $data($color,index) $diff 0
diff --git a/library/console.tcl b/library/console.tcl
index cdff803..feb75cc 100644
--- a/library/console.tcl
+++ b/library/console.tcl
@@ -4,7 +4,7 @@
# can be used by non-unix systems that do not have built-in support
# for shells.
#
-# RCS: @(#) $Id: console.tcl,v 1.13.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: console.tcl,v 1.13.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Ajuba Solutions.
@@ -301,6 +301,10 @@ proc ::tk::ConsoleBind {w} {
## We really didn't want the newline insertion
bind Console <Control-Key-o> {}
+ # For the moment, transpose isn't enabled until the console
+ # gets and overhaul of how it handles input -- hobbs
+ bind Console <Control-Key-t> {}
+
# Ignore all Alt, Meta, and Control keypresses unless explicitly bound.
# Otherwise, if a widget binding for one of these is defined, the
@@ -403,10 +407,6 @@ proc ::tk::ConsoleBind {w} {
%W delete insert {insert lineend}
}
}
- bind Console <<Console_Transpose>> {
- ## Transpose current and previous chars
- if {[%W compare insert > promptEnd]} { ::tk::TextTranspose %W }
- }
bind Console <<Console_Clear>> {
## Clear console display
%W delete 1.0 "promptEnd linestart"
@@ -455,7 +455,7 @@ proc ::tk::ConsoleBind {w} {
bind Console <F9> {
eval destroy [winfo child .]
if {[string equal $tcl_platform(platform) "macintosh"]} {
- source -rsrc Console
+ if {[catch {source $tk_library:console.tcl}]} {source -rsrc console}
} else {
source [file join $tk_library console.tcl]
}
@@ -557,9 +557,10 @@ proc ::tk::ConsoleInsert {w s} {
# string - The string to be displayed.
proc ::tk::ConsoleOutput {dest string} {
- .console insert output $string $dest
+ set w .console
+ $w insert output $string $dest
::tk::console::ConstrainBuffer $w $::tk::console::maxLines
- .console see insert
+ $w see insert
}
# ::tk::ConsoleExit --
diff --git a/library/demos/browse b/library/demos/browse
index d3f55e3..8c46b80 100644
--- a/library/demos/browse
+++ b/library/demos/browse
@@ -1,13 +1,13 @@
#!/bin/sh
# the next line restarts using wish \
-exec wish "$0" "$@"
+exec wish "$0" ${1+"$@"}
# browse --
# This script generates a directory browser, which lists the working
# directory and allows you to open files or subdirectories by
# double-clicking.
#
-# RCS: @(#) $Id: browse,v 1.2 1998/09/14 18:23:27 stanton Exp $
+# RCS: @(#) $Id: browse,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
# Create a scrollbar on the right side of the main window and a listbox
# on the left side.
@@ -24,29 +24,35 @@ wm minsize . 1 1
# the file is a regular file then the Mx editor is invoked to display
# the file.
+set browseScript [file join [pwd] $argv0]
proc browse {dir file} {
- global env
+ global env browseScript
if {[string compare $dir "."] != 0} {set file $dir/$file}
- if [file isdirectory $file] {
- exec browse $file &
- } else {
- if [file isfile $file] {
- if [info exists env(EDITOR)] {
+ switch [file type $file] {
+ directory {
+ exec [info nameofexecutable] $browseScript $file &
+ }
+ file {
+ if {[info exists env(EDITOR)]} {
eval exec $env(EDITOR) $file &
} else {
exec xedit $file &
}
- } else {
+ }
+ default {
puts stdout "\"$file\" isn't a directory or regular file"
}
}
}
-# Fill the listbox with a list of all the files in the directory (run
-# the "ls" command to get that information).
+# Fill the listbox with a list of all the files in the directory.
-if $argc>0 {set dir [lindex $argv 0]} else {set dir "."}
-foreach i [exec ls -a $dir] {
+if {$argc>0} {set dir [lindex $argv 0]} else {set dir "."}
+foreach i [lsort [glob * .* *.*]] {
+ if {[file type $i] eq "directory"} {
+ # Safe to do since it is still a directory.
+ append i /
+ }
.list insert end $i
}
@@ -54,3 +60,7 @@ foreach i [exec ls -a $dir] {
bind all <Control-c> {destroy .}
bind .list <Double-Button-1> {foreach i [selection get] {browse $dir $i}}
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/demos/dialog2.tcl b/library/demos/dialog2.tcl
index 0252ee0..40aee75 100644
--- a/library/demos/dialog2.tcl
+++ b/library/demos/dialog2.tcl
@@ -2,7 +2,7 @@
#
# This demonstration script creates a dialog box with a global grab.
#
-# RCS: @(#) $Id: dialog2.tcl,v 1.2 1998/09/14 18:23:27 stanton Exp $
+# RCS: @(#) $Id: dialog2.tcl,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
after idle {
.dialog2.msg configure -wraplength 4i
@@ -10,7 +10,7 @@ after idle {
after 100 {
grab -global .dialog2
}
-set i [tk_dialog .dialog2 "Dialog with local grab" {This dialog box uses a global grab, so it prevents you from interacting with anything on your display until you invoke one of the buttons below. Global grabs are almost always a bad idea; don't use them unless you're truly desperate.} warning 0 OK Cancel {Show Code}]
+set i [tk_dialog .dialog2 "Dialog with global grab" {This dialog box uses a global grab, so it prevents you from interacting with anything on your display until you invoke one of the buttons below. Global grabs are almost always a bad idea; don't use them unless you're truly desperate.} warning 0 OK Cancel {Show Code}]
switch $i {
0 {puts "You pressed OK"}
diff --git a/library/demos/entry3.tcl b/library/demos/entry3.tcl
new file mode 100644
index 0000000..9c81521
--- /dev/null
+++ b/library/demos/entry3.tcl
@@ -0,0 +1,187 @@
+# entry2.tcl --
+#
+# This demonstration script creates several entry widgets whose
+# permitted input is constrained in some way. It also shows off a
+# password entry.
+#
+# RCS: @(#) $Id: entry3.tcl,v 1.1.2.1 2002/02/05 02:25:16 wolfsuit Exp $
+
+if {![info exists widgetDemo]} {
+ error "This script should be run from the \"widget\" demo."
+}
+
+set w .entry3
+catch {destroy $w}
+toplevel $w
+wm title $w "Constrained Entry Demonstration"
+wm iconname $w "entry3"
+positionWindow $w
+
+
+label $w.msg -font $font -wraplength 5i -justify left -text "Four different\
+ entries are displayed below. You can add characters by pointing,\
+ clicking and typing, though each is constrained in what it will\
+ accept. The first only accepts integers or the empty string\
+ (checking when focus leaves it) and will flash to indicate any\
+ problem. The second only accepts strings with fewer than ten\
+ characters and sounds the bell when an attempt to go over the limit\
+ is made. The third accepts US phone numbers, mapping letters to\
+ their digit equivalent and sounding the bell on encountering an\
+ illegal character or if trying to type over a character that is not\
+ a digit. The fourth is a password field that accepts up to eight\
+ characters (silently ignoring further ones), and displaying them as\
+ asterisk characters."
+
+frame $w.buttons
+button $w.buttons.dismiss -text Dismiss -command "destroy $w"
+button $w.buttons.code -text "See Code" -command "showCode $w"
+pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
+
+
+# focusAndFlash --
+# Error handler for entry widgets that forces the focus onto the
+# widget and makes the widget flash by exchanging the foreground and
+# background colours at intervals of 200ms (i.e. at approximately
+# 2.5Hz).
+#
+# Arguments:
+# W - Name of entry widget to flash
+# fg - Initial foreground colour
+# bg - Initial background colour
+# count - Counter to control the number of times flashed
+
+proc focusAndFlash {W fg bg {count 9}} {
+ focus -force $W
+ if {$count<1} {
+ $W configure -foreground $fg -background $bg
+ } else {
+ if {$count%2} {
+ $W configure -foreground $bg -background $fg
+ } else {
+ $W configure -foreground $fg -background $bg
+ }
+ after 200 [list focusAndFlash $W $fg $bg [expr {$count-1}]]
+ }
+}
+
+labelframe $w.l1 -text "Integer Entry"
+entry $w.l1.e -validate focus -vcmd {string is integer %P}
+$w.l1.e configure -invalidcommand \
+ "focusAndFlash %W [$w.l1.e cget -fg] [$w.l1.e cget -bg]"
+pack $w.l1.e -fill x -expand 1 -padx 1m -pady 1m
+
+labelframe $w.l2 -text "Length-Constrained Entry"
+entry $w.l2.e -validate key -invcmd bell -vcmd {expr {[string length %P]<10}}
+pack $w.l2.e -fill x -expand 1 -padx 1m -pady 1m
+
+### PHONE NUMBER ENTRY ###
+# Note that the source to this is quite a bit longer as the behaviour
+# demonstrated is a lot more ambitious than with the others.
+
+# Initial content for the third entry widget
+set entry3content "1-(000)-000-0000"
+# Mapping from alphabetic characters to numbers. This is probably
+# wrong, but it is the only mapping I have; the UK doesn't really go
+# for associating letters with digits for some reason.
+set phoneNumberMap {}
+foreach {chars digit} {abc 2 def 3 ghi 4 jkl 5 mno 6 pqrs 7 tuv 8 wxyz 9} {
+ foreach char [split $chars ""] {
+ lappend phoneNumberMap $char $digit [string toupper $char] $digit
+ }
+}
+
+# validatePhoneChange --
+# Checks that the replacement (mapped to a digit) of the given
+# character in an entry widget at the given position will leave a
+# valid phone number in the widget.
+#
+# W - The entry widget to validate
+# vmode - The widget's validation mode
+# idx - The index where replacement is to occur
+# char - The character (or string, though that will always be
+# refused) to be overwritten at that point.
+
+proc validatePhoneChange {W vmode idx char} {
+ global phoneNumberMap entry3content
+ if {$idx == -1} {return 1}
+ after idle [list $W configure -validate $vmode -invcmd bell]
+ if {
+ !($idx<3 || $idx==6 || $idx==7 || $idx==11 || $idx>15) &&
+ [string match {[0-9A-Za-z]} $char]
+ } then {
+ $W delete $idx
+ $W insert $idx [string map $phoneNumberMap $char]
+ after idle [list phoneSkipRight $W -1]
+ return 1
+ }
+ return 0
+}
+
+# phoneSkipLeft --
+# Skip over fixed characters in a phone-number string when moving left.
+#
+# Arguments:
+# W - The entry widget containing the phone-number.
+
+proc phoneSkipLeft {W} {
+ set idx [$W index insert]
+ if {$idx == 8} {
+ # Skip back two extra characters
+ $W icursor [incr idx -2]
+ } elseif {$idx == 7 || $idx == 12} {
+ # Skip back one extra character
+ $W icursor [incr idx -1]
+ } elseif {$idx <= 3} {
+ # Can't move any further
+ bell
+ return -code break
+ }
+}
+
+# phoneSkipRight --
+# Skip over fixed characters in a phone-number string when moving right.
+#
+# Arguments:
+# W - The entry widget containing the phone-number.
+# add - Offset to add to index before calculation (used by validation.)
+
+proc phoneSkipRight {W {add 0}} {
+ set idx [$W index insert]
+ if {$idx+$add == 5} {
+ # Skip forward two extra characters
+ $W icursor [incr idx 2]
+ } elseif {$idx+$add == 6 || $idx+$add == 10} {
+ # Skip forward one extra character
+ $W icursor [incr idx]
+ } elseif {$idx+$add == 15 && !$add} {
+ # Can't move any further
+ bell
+ return -code break
+ }
+}
+
+labelframe $w.l3 -text "US Phone-Number Entry"
+entry $w.l3.e -validate key -invcmd bell -textvariable entry3content \
+ -vcmd {validatePhoneChange %W %v %i %S}
+# Click to focus goes to the first editable character...
+bind $w.l3.e <FocusIn> {
+ if {"%d" ne "NotifyAncestor"} {
+ %W icursor 3
+ after idle {%W selection clear}
+ }
+}
+bind $w.l3.e <Left> {phoneSkipLeft %W}
+bind $w.l3.e <Right> {phoneSkipRight %W}
+pack $w.l3.e -fill x -expand 1 -padx 1m -pady 1m
+
+labelframe $w.l4 -text "Password Entry"
+entry $w.l4.e -validate key -show "*" -vcmd {expr {[string length %P]<=8}}
+pack $w.l4.e -fill x -expand 1 -padx 1m -pady 1m
+
+lower [frame $w.mid]
+grid $w.l1 $w.l2 -in $w.mid -padx 3m -pady 1m -sticky ew
+grid $w.l3 $w.l4 -in $w.mid -padx 3m -pady 1m -sticky ew
+grid columnconfigure $w.mid {0 1} -uniform 1
+pack $w.msg -side top
+pack $w.buttons -side bottom -fill x -pady 2m
+pack $w.mid -fill both -expand 1
diff --git a/library/demos/hello b/library/demos/hello
index c6bd8c8..270e6f2 100644
--- a/library/demos/hello
+++ b/library/demos/hello
@@ -6,7 +6,7 @@ exec wish "$0" "$@"
# Simple Tk script to create a button that prints "Hello, world".
# Click on the button to terminate the program.
#
-# RCS: @(#) $Id: hello,v 1.2 1998/09/14 18:23:28 stanton Exp $
+# RCS: @(#) $Id: hello,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# The first line below creates the button, and the second line
# asks the packer to shrink-wrap the application's main window
@@ -16,3 +16,7 @@ button .hello -text "Hello, world" -command {
puts stdout "Hello, world"; destroy .
}
pack .hello
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/demos/image2.tcl b/library/demos/image2.tcl
index 6d3be0f..05f6bbc 100644
--- a/library/demos/image2.tcl
+++ b/library/demos/image2.tcl
@@ -3,7 +3,7 @@
# This demonstration script creates a simple collection of widgets
# that allow you to select and view images in a Tk label.
#
-# RCS: @(#) $Id: image2.tcl,v 1.3 2001/08/10 08:33:35 dkf Exp $
+# RCS: @(#) $Id: image2.tcl,v 1.3.2.1 2002/02/05 02:25:16 wolfsuit Exp $
if {![info exists widgetDemo]} {
error "This script should be run from the \"widget\" demo."
@@ -25,6 +25,23 @@ proc loadDir w {
}
}
+# selectAndLoadDir --
+# This procedure pops up a dialog to ask for a directory to load into
+# the listobx and (if the user presses OK) reloads the directory
+# listbox from the directory named in the demo's entry.
+#
+# Arguments:
+# w - Name of the toplevel window of the demo.
+
+proc selectAndLoadDir w {
+ global dirName
+ set dir [tk_chooseDirectory -initialdir $dirName -parent $w -mustexist 1]
+ if {[string length $dir] != 0} {
+ set dirName $dir
+ loadDir $w
+ }
+}
+
# loadImage --
# Given the name of the toplevel window of the demo and the mouse
# position, extracts the directory entry under the mouse and loads
@@ -57,14 +74,18 @@ button $w.buttons.dismiss -text Dismiss -command "destroy $w"
button $w.buttons.code -text "See Code" -command "showCode $w"
pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
-label $w.dirLabel -text "Directory:"
+frame $w.mid
+pack $w.mid -fill both -expand 1
+
+labelframe $w.dir -text "Directory:"
set dirName [file join $tk_library demos images]
-entry $w.dirName -width 30 -textvariable dirName
-bind $w.dirName <Return> "loadDir $w"
-frame $w.spacer1 -height 3m -width 20
-label $w.fileLabel -text "File:"
-frame $w.f
-pack $w.dirLabel $w.dirName $w.spacer1 $w.fileLabel $w.f -side top -anchor w
+entry $w.dir.e -width 30 -textvariable dirName
+button $w.dir.b -pady 0 -padx 2m -text "Select Dir." \
+ -command "selectAndLoadDir $w"
+bind $w.dir.e <Return> "loadDir $w"
+pack $w.dir.e -side left -fill y -padx 2m -pady 2m
+pack $w.dir.b -side left -fill y -padx {0 2m} -pady 2m
+labelframe $w.f -text "File:" -padx 2m -pady 2m
listbox $w.f.list -width 20 -height 10 -yscrollcommand "$w.f.scroll set"
scrollbar $w.f.scroll -command "$w.f.list yview"
@@ -74,7 +95,10 @@ bind $w.f.list <Double-1> "loadImage $w %x %y"
catch {image delete image2a}
image create photo image2a
-frame $w.spacer2 -height 3m -width 20
-label $w.imageLabel -text "Image:"
-label $w.image -image image2a
-pack $w.spacer2 $w.imageLabel $w.image -side top -anchor w
+labelframe $w.image -text "Image:"
+label $w.image.image -image image2a
+pack $w.image.image -padx 2m -pady 2m
+
+grid $w.dir - -sticky w -padx 1m -pady 1m -in $w.mid
+grid $w.f $w.image -sticky nw -padx 1m -pady 1m -in $w.mid
+grid columnconfigure $w.mid 1 -weight 1
diff --git a/library/demos/ixset b/library/demos/ixset
index c5bcfd3..f30bf95 100644
--- a/library/demos/ixset
+++ b/library/demos/ixset
@@ -1,6 +1,6 @@
#!/bin/sh
# the next line restarts using wish \
-exec wish "$0" "$@"
+exec wish "$0" ${1+"$@"}
# ixset --
# A nice interface to "xset" to change X server settings
@@ -9,7 +9,7 @@ exec wish "$0" "$@"
# 91/11/23 : pda@masi.ibp.fr, jt@ratp.fr : design
# 92/08/01 : pda@masi.ibp.fr : cleaning
#
-# RCS: @(#) $Id: ixset,v 1.2 1998/09/14 18:23:29 stanton Exp $
+# RCS: @(#) $Id: ixset,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Button actions
@@ -27,10 +27,15 @@ proc ok {} {
proc cancel {} {
readsettings
dispsettings
+ .buttons.apply configure -state disabled
+ .buttons.cancel configure -state disabled
}
-# apply is just "writesettings"
-
+proc apply {} {
+ writesettings
+ .buttons.apply configure -state disabled
+ .buttons.cancel configure -state disabled
+}
#
# Read current settings
@@ -120,8 +125,8 @@ proc writesettings {} {
set mouseacc [.mouse.hor.acc.entry get]
set mousethr [.mouse.hor.thr.entry get]
- set screentim [.screen.val.le.tim.entry get]
- set screencyc [.screen.val.le.cyc.entry get]
+ set screentim [.screen.tim.entry get]
+ set screencyc [.screen.cyc.entry get]
exec xset \
b $bellvol $bellpit $belldur \
@@ -155,12 +160,12 @@ proc dispsettings {} {
.mouse.hor.thr.entry delete 0 end
.mouse.hor.thr.entry insert 0 $mousethr
- .screen.val.rb.blank [expr "{$screenbla}=={blank} ? {select} : {deselect}"]
- .screen.val.rb.pat [expr "{$screenbla}!={blank} ? {select} : {deselect}"]
- .screen.val.le.tim.entry delete 0 end
- .screen.val.le.tim.entry insert 0 $screentim
- .screen.val.le.cyc.entry delete 0 end
- .screen.val.le.cyc.entry insert 0 $screencyc
+ .screen.blank [expr "{$screenbla}=={blank} ? {select} : {deselect}"]
+ .screen.pat [expr "{$screenbla}!={blank} ? {select} : {deselect}"]
+ .screen.tim.entry delete 0 end
+ .screen.tim.entry insert 0 $screentim
+ .screen.cyc.entry delete 0 end
+ .screen.cyc.entry insert 0 $screencyc
}
@@ -168,12 +173,17 @@ proc dispsettings {} {
# Create all windows, and pack them
#
-proc labelentry {path text length} {
+proc labelentry {path text length {range {}}} {
frame $path
label $path.label -text $text
- entry $path.entry -width $length -relief sunken
- pack $path.label -side left -expand y
- pack $path.entry -side right -expand y
+ if {[llength $range]} {
+ spinbox $path.entry -width $length -relief sunken \
+ -from [lindex $range 0] -to [lindex $range 1]
+ } else {
+ entry $path.entry -width $length -relief sunken
+ }
+ pack $path.label -side left
+ pack $path.entry -side right -expand y -fill x
}
proc createwindows {} {
@@ -182,38 +192,57 @@ proc createwindows {} {
#
frame .buttons
- button .buttons.ok -command "ok" -text "Ok"
- button .buttons.apply -command "writesettings" -text "Apply"
- button .buttons.cancel -command "cancel" -text "Cancel"
- button .buttons.quit -command "quit" -text "Quit"
+ button .buttons.ok -default active -command ok -text "Ok"
+ button .buttons.apply -default normal -command apply -text "Apply" \
+ -state disabled
+ button .buttons.cancel -default normal -command cancel -text "Cancel" \
+ -state disabled
+ button .buttons.quit -default normal -command quit -text "Quit"
pack .buttons.ok .buttons.apply .buttons.cancel .buttons.quit \
-side left -expand yes -pady 5
+ bind . <Return> {.buttons.ok flash; .buttons.ok invoke}
+ bind . <Escape> {.buttons.quit flash; .buttons.quit invoke}
+ bind . <1> {
+ if {![string match .buttons* %W]} {
+ .buttons.apply configure -state normal
+ .buttons.cancel configure -state normal
+ }
+ }
+ bind . <Key> {
+ if {![string match .buttons* %W]} {
+ switch -glob %K {
+ Return - Escape - Tab - *Shift* {}
+ default {
+ .buttons.apply configure -state normal
+ .buttons.cancel configure -state normal
+ }
+ }
+ }
+ }
+
#
# Bell settings
#
- frame .bell -relief raised -borderwidth 2
- label .bell.label -text "Bell Settings"
+ labelframe .bell -text "Bell Settings" -padx 1.5m -pady 1.5m
scale .bell.vol \
-from 0 -to 100 -length 200 -tickinterval 20 \
-label "Volume (%)" -orient horizontal
frame .bell.val
- labelentry .bell.val.pit "Pitch (Hz)" 6
- labelentry .bell.val.dur "Duration (ms)" 6
+ labelentry .bell.val.pit "Pitch (Hz)" 6 {25 20000}
+ labelentry .bell.val.dur "Duration (ms)" 6 {1 10000}
pack .bell.val.pit -side left -padx 5
pack .bell.val.dur -side right -padx 5
- pack .bell.label .bell.vol .bell.val -side top -expand yes
+ pack .bell.vol .bell.val -side top -expand yes
#
# Keyboard settings
#
- frame .kbd -relief raised -borderwidth 2
-
- label .kbd.label -text "Keyboard Repeat Settings"
+ labelframe .kbd -text "Keyboard Repeat Settings" -padx 1.5m -pady 1.5m
frame .kbd.val
checkbutton .kbd.val.onoff \
@@ -223,62 +252,52 @@ proc createwindows {} {
scale .kbd.val.cli \
-from 0 -to 100 -length 200 -tickinterval 20 \
-label "Click Volume (%)" -orient horizontal
- pack .kbd.val.onoff -side left -expand yes -fill both
- pack .kbd.val.cli -side left -expand yes
+ pack .kbd.val.onoff -side left -fill x -expand yes -padx {0 1m}
+ pack .kbd.val.cli -side left -expand yes -fill x -padx {1m 0}
- pack .kbd.label -side top -expand yes
pack .kbd.val -side top -expand yes -pady 2 -fill x
#
# Mouse settings
#
- frame .mouse -relief raised -borderwidth 2
+ labelframe .mouse -text "Mouse Settings" -padx 1.5m -pady 1.5m
- label .mouse.label -text "Mouse Settings"
frame .mouse.hor
- labelentry .mouse.hor.acc "Acceleration" 3
- labelentry .mouse.hor.thr "Threshold (pixels)" 3
+ labelentry .mouse.hor.acc "Acceleration" 5
+ labelentry .mouse.hor.thr "Threshold (pixels)" 3 {1 2000}
- pack .mouse.hor.acc -side left
- pack .mouse.hor.thr -side right
+ pack .mouse.hor.acc -side left -padx {0 1m}
+ pack .mouse.hor.thr -side right -padx {1m 0}
- pack .mouse.label -side top
pack .mouse.hor -side top -expand yes
#
# Screen Saver settings
#
- frame .screen -relief raised -borderwidth 2
+ labelframe .screen -text "Screen-saver Settings" -padx 1.5m -pady 1.5m
- label .screen.label -text "Screen-saver Settings"
- frame .screen.val
-
- frame .screen.val.rb
- radiobutton .screen.val.rb.blank \
+ radiobutton .screen.blank \
-variable screenblank -text "Blank" -relief flat \
- -value "blank" -variable screenbla
- radiobutton .screen.val.rb.pat \
+ -value "blank" -variable screenbla -anchor w
+ radiobutton .screen.pat \
-variable screenblank -text "Pattern" -relief flat \
- -value "noblank" -variable screenbla
- pack .screen.val.rb.blank .screen.val.rb.pat -side top -pady 2 -anchor w
- frame .screen.val.le
- labelentry .screen.val.le.tim "Timeout (s)" 5
- labelentry .screen.val.le.cyc "Cycle (s)" 5
- pack .screen.val.le.tim .screen.val.le.cyc -side top -pady 2 -anchor e
-
- pack .screen.val.rb .screen.val.le -side left
+ -value "noblank" -variable screenbla -anchor w
+ labelentry .screen.tim "Timeout (s)" 5 {1 100000}
+ labelentry .screen.cyc "Cycle (s)" 5 {1 100000}
- pack .screen.label -side top
- pack .screen.val -side top -expand y
+ grid .screen.blank .screen.tim -sticky e
+ grid .screen.pat .screen.cyc -sticky e
+ grid configure .screen.blank .screen.pat -sticky ew
#
# Main window
#
pack .buttons -side top -fill both
- pack .bell .kbd .mouse .screen -side top -fill both -ipady 5 -expand yes
+ pack .bell .kbd .mouse .screen -side top -fill both -expand yes \
+ -padx 1m -pady 1m
#
# Let the user resize our window
@@ -310,3 +329,7 @@ dispsettings
#
# Now, wait for user actions...
#
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/demos/labelframe.tcl b/library/demos/labelframe.tcl
index 89931cf..d81e65a 100644
--- a/library/demos/labelframe.tcl
+++ b/library/demos/labelframe.tcl
@@ -3,7 +3,7 @@
# This demonstration script creates a toplevel window containing
# several labelframe widgets.
#
-# RCS: @(#) $Id: labelframe.tcl,v 1.1 2001/09/26 21:36:19 pspjuth Exp $
+# RCS: @(#) $Id: labelframe.tcl,v 1.1.2.1 2002/02/05 02:25:16 wolfsuit Exp $
if {![info exists widgetDemo]} {
error "This script should be run from the \"widget\" demo."
@@ -19,7 +19,8 @@ positionWindow $w
# Some information
label $w.msg -font $font -wraplength 4i -justify left -text "Labelframes are\
-typically used to group related widgets together."
+ used to group related widgets together. The label may be either \
+ plain text or another widget."
pack $w.msg -side top
# The bottom buttons
@@ -42,7 +43,7 @@ labelframe $w.f -text "Value" -padx 2 -pady 2
grid $w.f -row 0 -column 0 -pady 2m -padx 2m
foreach value {1 2 3 4} {
- radiobutton $w.f.b$value -text $value -width 3 \
+ radiobutton $w.f.b$value -text "This is value $value" \
-variable lfdummy -value $value
pack $w.f.b$value -side top -fill x -pady 2
}
diff --git a/library/demos/menu.tcl b/library/demos/menu.tcl
index ab0217e..5b16259 100644
--- a/library/demos/menu.tcl
+++ b/library/demos/menu.tcl
@@ -3,7 +3,7 @@
# This demonstration script creates a window with a bunch of menus
# and cascaded menus using menubars.
#
-# RCS: @(#) $Id: menu.tcl,v 1.2.24.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: menu.tcl,v 1.2.24.2 2002/02/05 02:25:16 wolfsuit Exp $
if {![info exists widgetDemo]} {
error "This script should be run from the \"widget\" demo."
@@ -133,6 +133,12 @@ menu $m -tearoff 0
foreach i {{An entry} {Another entry} {Does nothing} {Does almost nothing} {Make life meaningful}} {
$m add command -label $i -command [list puts "You invoked \"$i\""]
}
+$m entryconfigure "Does almost nothing" \
+ -bitmap questhead -compound left -command {
+ tk_dialog .compound {Compound Menu Entry} {The menu entry you invoked\
+ displays both a bitmap and a text string. Other than this, it\
+ is just like any other menu entry.} {} 0 OK
+}
set m $w.menu.colors
$w.menu add cascade -label "Colors" -menu $m -underline 1
diff --git a/library/demos/radio.tcl b/library/demos/radio.tcl
index 0788b90..7ad3c5e 100644
--- a/library/demos/radio.tcl
+++ b/library/demos/radio.tcl
@@ -3,7 +3,7 @@
# This demonstration script creates a toplevel window containing
# several radiobutton widgets.
#
-# RCS: @(#) $Id: radio.tcl,v 1.3 2001/09/26 21:36:19 pspjuth Exp $
+# RCS: @(#) $Id: radio.tcl,v 1.3.2.1 2002/02/05 02:25:16 wolfsuit Exp $
if {![info exists widgetDemo]} {
error "This script should be run from the \"widget\" demo."
@@ -15,30 +15,45 @@ toplevel $w
wm title $w "Radiobutton Demonstration"
wm iconname $w "radio"
positionWindow $w
-label $w.msg -font $font -wraplength 5i -justify left -text "Two groups of radiobuttons are displayed below. If you click on a button then the button will become selected exclusively among all the buttons in its group. A Tcl variable is associated with each group to indicate which of the group's buttons is selected. Click the \"See Variables\" button to see the current values of the variables."
+label $w.msg -font $font -wraplength 5i -justify left -text "Three groups of radiobuttons are displayed below. If you click on a button then the button will become selected exclusively among all the buttons in its group. A Tcl variable is associated with each group to indicate which of the group's buttons is selected. Click the \"See Variables\" button to see the current values of the variables."
pack $w.msg -side top
frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text Dismiss -command "destroy $w"
button $w.buttons.code -text "See Code" -command "showCode $w"
-button $w.buttons.vars -text "See Variables" \
- -command "showVars $w.dialog size color"
+button $w.buttons.vars -text "See Variables" \
+ -command "showVars $w.dialog size color align"
pack $w.buttons.dismiss $w.buttons.code $w.buttons.vars -side left -expand 1
-labelframe $w.left -pady 2 -text "Point Size"
-labelframe $w.right -pady 2 -text "Color"
-pack $w.left $w.right -side left -expand yes -pady .5c -padx .5c
+labelframe $w.left -pady 2 -text "Point Size" -padx 2
+labelframe $w.mid -pady 2 -text "Color" -padx 2
+labelframe $w.right -pady 2 -text "Alignment" -padx 2
+pack $w.left $w.mid $w.right -side left -expand yes -pady .5c -padx .5c
-foreach i {10 12 18 24} {
+foreach i {10 12 14 18 24} {
radiobutton $w.left.b$i -text "Point Size $i" -variable size \
-relief flat -value $i
- pack $w.left.b$i -side top -pady 2 -anchor w
+ pack $w.left.b$i -side top -pady 2 -anchor w -fill x
}
-foreach color {Red Green Blue Yellow Orange Purple} {
- set lower [string tolower $color]
- radiobutton $w.right.$lower -text $color -variable color \
- -relief flat -value $lower
- pack $w.right.$lower -side top -pady 2 -anchor w
+foreach c {Red Green Blue Yellow Orange Purple} {
+ set lower [string tolower $c]
+ radiobutton $w.mid.$lower -text $c -variable color \
+ -relief flat -value $lower -anchor w \
+ -command "$w.mid configure -fg \$color"
+ pack $w.mid.$lower -side top -pady 2 -fill x
}
+
+label $w.right.l -text "Label" -bitmap questhead -compound left
+$w.right.l configure -width [winfo reqwidth $w.right.l] -compound top
+$w.right.l configure -height [winfo reqheight $w.right.l]
+foreach a {Top Left Right Bottom} {
+ set lower [string tolower $a]
+ radiobutton $w.right.$lower -text $a -variable align \
+ -relief flat -value $lower -indicatoron 0 -width 7 \
+ -command "$w.right.l configure -compound \$align"
+}
+grid x $w.right.top
+grid $w.right.left $w.right.l $w.right.right
+grid x $w.right.bottom
diff --git a/library/demos/rmt b/library/demos/rmt
index 1ed865b..71530e7 100644
--- a/library/demos/rmt
+++ b/library/demos/rmt
@@ -7,7 +7,7 @@ exec wish "$0" "$@"
# Tk applications. It allows you to select an application and
# then type commands to that application.
#
-# RCS: @(#) $Id: rmt,v 1.2 1998/09/14 18:23:29 stanton Exp $
+# RCS: @(#) $Id: rmt,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
wm title . "Tk Remote Controller"
wm iconname . "Tk Remote"
@@ -32,22 +32,21 @@ set lastCommand ""
# Create menu bar. Arrange to recreate all the information in the
# applications sub-menu whenever it is cascaded to.
-frame .menu -relief raised -bd 2
-pack .menu -side top -fill x
-menubutton .menu.file -text "File" -menu .menu.file.m -underline 0
-menu .menu.file.m
-.menu.file.m add cascade -label "Select Application" \
- -menu .menu.file.m.apps -underline 0
-.menu.file.m add command -label "Quit" -command "destroy ." -underline 0
-menu .menu.file.m.apps -postcommand fillAppsMenu
-pack .menu.file -side left
+. configure -menu [menu .menu]
+menu .menu.file
+menu .menu.file.apps -postcommand fillAppsMenu
+.menu add cascade -label "File" -underline 0 -menu .menu.file
+.menu.file add cascade -label "Select Application" -underline 0 \
+ -menu .menu.file.apps
+.menu.file add command -label "Quit" -command "destroy ." -underline 0
# Create text window and scrollbar.
text .t -relief sunken -bd 2 -yscrollcommand ".s set" -setgrid true
scrollbar .s -command ".t yview"
-pack .s -side right -fill both
-pack .t -side left
+grid .t .s -sticky nsew
+grid rowconfigure . 0 -weight 1
+grid columnconfigure . 0 -weight 1
# Create a binding to forward commands to the target application,
# plus modify many of the built-in bindings so that only information
@@ -123,6 +122,7 @@ proc tkTextInsert {w s} {
$w see insert
}
+.t configure -font {Courier 12}
.t tag configure bold -font {Courier 12 bold}
# The procedure below is used to print out a prompt at the
@@ -193,13 +193,18 @@ proc newApp appName {
# of all the applications that currently exist.
proc fillAppsMenu {} {
- catch {.menu.file.m.apps delete 0 last}
+ set m .menu.file.apps
+ catch {$m delete 0 last}
foreach i [lsort [winfo interps]] {
- .menu.file.m.apps add command -label $i -command [list newApp $i]
+ $m add command -label $i -command [list newApp $i]
}
- .menu.file.m.apps add command -label local -command {newApp local}
+ $m add command -label local -command {newApp local}
}
set app [winfo name .]
prompt
focus .t
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/demos/rolodex b/library/demos/rolodex
index 7b22bad..dd2502b 100644
--- a/library/demos/rolodex
+++ b/library/demos/rolodex
@@ -1,6 +1,6 @@
#!/bin/sh
# the next line restarts using wish \
-exec wish "$0" "$@"
+exec wish "$0" ${1+"$@"}
# rolodex --
# This script was written as an entry in Tom LaStrange's rolodex
@@ -8,12 +8,14 @@ exec wish "$0" "$@"
# feel of a rolodex program, although it's lifeless and doesn't
# actually do the rolodex application.
#
-# RCS: @(#) $Id: rolodex,v 1.2 1998/09/14 18:23:29 stanton Exp $
+# RCS: @(#) $Id: rolodex,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
foreach i [winfo child .] {
catch {destroy $i}
}
+set version 1.2
+
#------------------------------------------
# Phase 0: create the front end.
#------------------------------------------
@@ -23,12 +25,9 @@ pack .frame -side top -fill y -anchor center
set names {{} Name: Address: {} {} {Home Phone:} {Work Phone:} Fax:}
foreach i {1 2 3 4 5 6 7} {
- frame .frame.$i
- pack .frame.$i -side top -pady 2 -anchor e
-
- label .frame.$i.label -text [lindex $names $i] -anchor e
- entry .frame.$i.entry -width 30 -relief sunken
- pack .frame.$i.entry .frame.$i.label -side right
+ label .frame.label$i -text [lindex $names $i] -anchor e
+ entry .frame.entry$i -width 35
+ grid .frame.label$i .frame.entry$i -sticky ew -pady 2 -padx 1
}
frame .buttons
@@ -77,7 +76,7 @@ proc fileAction {} {
proc addAction {} {
global names
foreach i {1 2 3 4 5 6 7} {
- puts stderr [format "%-12s %s" [lindex $names $i] [.frame.$i.entry get]]
+ puts stderr [format "%-12s %s" [lindex $names $i] [.frame.entry$i get]]
}
}
.buttons.add config -command addAction
@@ -88,20 +87,20 @@ proc addAction {} {
proc clearAction {} {
foreach i {1 2 3 4 5 6 7} {
- .frame.$i.entry delete 0 end
+ .frame.entry$i delete 0 end
}
}
.buttons.clear config -command clearAction
proc fillCard {} {
clearAction
- .frame.1.entry insert 0 "John Ousterhout"
- .frame.2.entry insert 0 "CS Division, Department of EECS"
- .frame.3.entry insert 0 "University of California"
- .frame.4.entry insert 0 "Berkeley, CA 94720"
- .frame.5.entry insert 0 "private"
- .frame.6.entry insert 0 "510-642-0865"
- .frame.7.entry insert 0 "510-642-5775"
+ .frame.entry1 insert 0 "John Ousterhout"
+ .frame.entry2 insert 0 "CS Division, Department of EECS"
+ .frame.entry3 insert 0 "University of California"
+ .frame.entry4 insert 0 "Berkeley, CA 94720"
+ .frame.entry5 insert 0 "private"
+ .frame.entry6 insert 0 "510-642-0865"
+ .frame.entry7 insert 0 "510-642-5775"
}
.buttons.search config -command "addAction; fillCard"
@@ -123,7 +122,7 @@ bind . <Control-f> fileAction
.menu.file.m entryconfig 2 -accel Ctrl+Q
bind . <Control-q> {destroy .}
-focus .frame.1.entry
+focus .frame.entry1
#----------------------------------------------------
# Phase 6: help
@@ -145,42 +144,43 @@ proc Help {topic {x 0} {y 0}} {
}
proc getMenuTopic {w x y} {
- return $w.[$w index @[expr $y-[winfo rooty $w]]]
+ return $w.[$w index @[expr {$y-[winfo rooty $w]}]]
}
-bind . <Any-F1> {Help [winfo containing %X %Y] %X %Y}
-bind . <Any-Help> {Help [winfo containing %X %Y] %X %Y}
+event add <<Help>> <F1> <Help>
+bind . <<Help>> {Help [winfo containing %X %Y] %X %Y}
+bind Menu <<Help>> {Help [winfo containing %X %Y] %X %Y}
# Help text and commands follow:
set helpTopics(.menu.file) {This is the "file" menu. It can be used to invoke some overall operations on the rolodex applications, such as loading a file or exiting.}
set helpCmds(.menu.file.m) {getMenuTopic $topic $x $y}
-set helpTopics(.menu.file.m.0) {The "Load" entry in the "File" menu posts a dialog box that you can use to select a rolodex file}
-set helpTopics(.menu.file.m.1) {The "Exit" entry in the "File" menu causes the rolodex application to terminate}
+set helpTopics(.menu.file.m.1) {The "Load" entry in the "File" menu posts a dialog box that you can use to select a rolodex file}
+set helpTopics(.menu.file.m.2) {The "Exit" entry in the "File" menu causes the rolodex application to terminate}
set helpCmds(.menu.file.m.none) {set topic ".menu.file"}
-set helpTopics(.frame.1.entry) {In this field of the rolodex entry you should type the person's name}
-set helpTopics(.frame.2.entry) {In this field of the rolodex entry you should type the first line of the person's address}
-set helpTopics(.frame.3.entry) {In this field of the rolodex entry you should type the second line of the person's address}
-set helpTopics(.frame.4.entry) {In this field of the rolodex entry you should type the third line of the person's address}
-set helpTopics(.frame.5.entry) {In this field of the rolodex entry you should type the person's home phone number, or "private" if the person doesn't want his or her number publicized}
-set helpTopics(.frame.6.entry) {In this field of the rolodex entry you should type the person's work phone number}
-set helpTopics(.frame.7.entry) {In this field of the rolodex entry you should type the phone number for the person's FAX machine}
-
-set helpCmds(.frame.1.label) {set topic .frame.1.entry}
-set helpCmds(.frame.2.label) {set topic .frame.2.entry}
-set helpCmds(.frame.3.label) {set topic .frame.3.entry}
-set helpCmds(.frame.4.label) {set topic .frame.4.entry}
-set helpCmds(.frame.5.label) {set topic .frame.5.entry}
-set helpCmds(.frame.6.label) {set topic .frame.6.entry}
-set helpCmds(.frame.7.label) {set topic .frame.7.entry}
+set helpTopics(.frame.entry1) {In this field of the rolodex entry you should type the person's name}
+set helpTopics(.frame.entry2) {In this field of the rolodex entry you should type the first line of the person's address}
+set helpTopics(.frame.entry3) {In this field of the rolodex entry you should type the second line of the person's address}
+set helpTopics(.frame.entry4) {In this field of the rolodex entry you should type the third line of the person's address}
+set helpTopics(.frame.entry5) {In this field of the rolodex entry you should type the person's home phone number, or "private" if the person doesn't want his or her number publicized}
+set helpTopics(.frame.entry6) {In this field of the rolodex entry you should type the person's work phone number}
+set helpTopics(.frame.entry7) {In this field of the rolodex entry you should type the phone number for the person's FAX machine}
+
+set helpCmds(.frame.label1) {set topic .frame.entry1}
+set helpCmds(.frame.label2) {set topic .frame.entry2}
+set helpCmds(.frame.label3) {set topic .frame.entry3}
+set helpCmds(.frame.label4) {set topic .frame.entry4}
+set helpCmds(.frame.label5) {set topic .frame.entry5}
+set helpCmds(.frame.label6) {set topic .frame.entry6}
+set helpCmds(.frame.label7) {set topic .frame.entry7}
set helpTopics(context) {Unfortunately, this application doesn't support context-sensitive help in the usual way, because when this demo was written Tk didn't have a grab mechanism and this is needed for context-sensitive help. Instead, you can achieve much the same effect by simply moving the mouse over the window you're curious about and pressing the Help or F1 keys. You can do this anytime.}
set helpTopics(help) {This application provides only very crude help. Besides the entries in this menu, you can get help on individual windows by moving the mouse cursor over the window and pressing the Help or F1 keys.}
set helpTopics(window) {This window is a dummy rolodex application created as part of Tom LaStrange's toolkit benchmark. It doesn't really do anything useful except to demonstrate a few features of the Tk toolkit.}
set helpTopics(keys) "The following accelerator keys are defined for this application (in addition to those already available for the entry windows):\n\nCtrl+A:\t\tAdd\nCtrl+C:\t\tClear\nCtrl+D:\t\tDelete\nCtrl+F:\t\tEnter file name\nCtrl+Q:\t\tExit application (quit)\nCtrl+S:\t\tSearch (dummy operation)"
-set helpTopics(version) {This is version 1.0.}
+set helpTopics(version) "This is version $version."
# Entries in "Help" menu
diff --git a/library/demos/spin.tcl b/library/demos/spin.tcl
new file mode 100644
index 0000000..9446e6c
--- /dev/null
+++ b/library/demos/spin.tcl
@@ -0,0 +1,55 @@
+# spin.tcl --
+#
+# This demonstration script creates several spinbox widgets.
+#
+# RCS: @(#) $Id: spin.tcl,v 1.1.2.1 2002/02/05 02:25:16 wolfsuit Exp $
+
+if {![info exists widgetDemo]} {
+ error "This script should be run from the \"widget\" demo."
+}
+
+set w .spin
+catch {destroy $w}
+toplevel $w
+wm title $w "Spinbox Demonstration"
+wm iconname $w "spin"
+positionWindow $w
+
+label $w.msg -font $font -wraplength 5i -justify left -text "Three different\
+ spin-boxes are displayed below. You can add characters by pointing,\
+ clicking and typing. The normal Motif editing characters are\
+ supported, along with many Emacs bindings. For example, Backspace\
+ and Control-h delete the character to the left of the insertion\
+ cursor and Delete and Control-d delete the chararacter to the right\
+ of the insertion cursor. For values that are too large to fit in the\
+ window all at once, you can scan through the value by dragging with\
+ mouse button2 pressed. Note that the first spin-box will only permit\
+ you to type in integers, and the third selects from a list of\
+ Australian cities."
+pack $w.msg -side top
+
+frame $w.buttons
+pack $w.buttons -side bottom -fill x -pady 2m
+button $w.buttons.dismiss -text Dismiss -command "destroy $w"
+button $w.buttons.code -text "See Code" -command "showCode $w"
+pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
+
+set australianCities {
+ Canberra Sydney Melbourne Perth Adelaide Brisbane
+ Hobart Darwin "Alice Springs"
+}
+
+spinbox $w.s1 -from 1 -to 10 -width 10 -validate key \
+ -vcmd {string is integer %P}
+spinbox $w.s2 -from 0 -to 3 -increment .5 -format %05.2f -width 10
+spinbox $w.s3 -values $australianCities -width 10
+
+#entry $w.e1
+#entry $w.e2
+#entry $w.e3
+pack $w.s1 $w.s2 $w.s3 -side top -pady 5 -padx 10 ;#-fill x
+
+#$w.e1 insert 0 "Initial value"
+#$w.e2 insert end "This entry contains a long value, much too long "
+#$w.e2 insert end "to fit in the window at one time, so long in fact "
+#$w.e2 insert end "that you'll have to scan or scroll to see the end."
diff --git a/library/demos/tcolor b/library/demos/tcolor
index 4eeb893..a5cbee4 100644
--- a/library/demos/tcolor
+++ b/library/demos/tcolor
@@ -7,7 +7,7 @@ exec wish "$0" "$@"
# create colors using either the RGB, HSB, or CYM color spaces
# and apply the color to existing applications.
#
-# RCS: @(#) $Id: tcolor,v 1.2 1998/09/14 18:23:30 stanton Exp $
+# RCS: @(#) $Id: tcolor,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
wm title . "Color Editor"
@@ -41,67 +41,70 @@ set updating 0
set autoUpdate 1
set name ""
+if {$tcl_platform(platform) eq "unix"} {
+ option add *Entry.background white
+}
+
# Create the menu bar at the top of the window.
-frame .menu -relief raised -borderwidth 2
-pack .menu -side top -fill x
-menubutton .menu.file -text File -menu .menu.file.m -underline 0
-menu .menu.file.m
-.menu.file.m add radio -label "RGB color space" -variable colorSpace \
+. configure -menu [menu .menu]
+menu .menu.file
+.menu add cascade -menu .menu.file -label File -underline 0
+.menu.file add radio -label "RGB color space" -variable colorSpace \
-value rgb -underline 0 -command {changeColorSpace rgb}
-.menu.file.m add radio -label "CMY color space" -variable colorSpace \
+.menu.file add radio -label "CMY color space" -variable colorSpace \
-value cmy -underline 0 -command {changeColorSpace cmy}
-.menu.file.m add radio -label "HSB color space" -variable colorSpace \
+.menu.file add radio -label "HSB color space" -variable colorSpace \
-value hsb -underline 0 -command {changeColorSpace hsb}
-.menu.file.m add separator
-.menu.file.m add radio -label "Automatic updates" -variable autoUpdate \
+.menu.file add separator
+.menu.file add radio -label "Automatic updates" -variable autoUpdate \
-value 1 -underline 0
-.menu.file.m add radio -label "Manual updates" -variable autoUpdate \
+.menu.file add radio -label "Manual updates" -variable autoUpdate \
-value 0 -underline 0
-.menu.file.m add separator
-.menu.file.m add command -label "Exit program" -underline 0 \
- -command "destroy ."
-pack .menu.file -side left
+.menu.file add separator
+.menu.file add command -label "Exit program" -underline 0 -command {exit}
# Create the command entry window at the bottom of the window, along
# with the update button.
-frame .bot -relief raised -borderwidth 2
-pack .bot -side bottom -fill x
-label .commandLabel -text "Command:"
-entry .command -relief sunken -borderwidth 2 -textvariable command \
+labelframe .command -text "Command:" -padx {1m 0}
+entry .command.e -relief sunken -borderwidth 2 -textvariable command \
-font {Courier 12}
-button .update -text Update -command doUpdate
-pack .commandLabel -in .bot -side left
-pack .update -in .bot -side right -pady .1c -padx .25c
-pack .command -in .bot -expand yes -fill x -ipadx 0.25c
+button .command.update -text Update -command doUpdate
+pack .command.update -side right -pady .1c -padx {.25c 0}
+pack .command.e -expand yes -fill x -ipadx 0.25c
+
# Create the listbox that holds all of the color names in rgb.txt,
# if an rgb.txt file can be found.
-frame .middle -relief raised -borderwidth 2
-pack .middle -side top -fill both
-foreach i {/usr/local/lib/X11/rgb.txt /usr/lib/X11/rgb.txt
- /X11/R5/lib/X11/rgb.txt /X11/R4/lib/rgb/rgb.txt
- /usr/openwin/lib/X11/rgb.txt} {
- if ![file readable $i] {
+grid .command -sticky nsew -row 2 -columnspan 3 -padx 1m -pady {0 1m}
+
+grid columnconfigure . {1 2} -weight 1
+grid rowconfigure . 0 -weight 1
+foreach i {
+ /usr/local/lib/X11/rgb.txt /usr/lib/X11/rgb.txt
+ /X11/R5/lib/X11/rgb.txt /X11/R4/lib/rgb/rgb.txt
+ /usr/openwin/lib/X11/rgb.txt
+} {
+ if {![file readable $i]} {
continue;
}
set f [open $i]
- frame .middle.left
- pack .middle.left -side left -padx .25c -pady .25c
- listbox .names -width 20 -height 12 -yscrollcommand ".scroll set" \
+ labelframe .names -text "Select:" -padx .1c -pady .1c
+ grid .names -row 0 -column 0 -sticky nsew -padx .15c -pady .15c -rowspan 2
+ grid columnconfigure . 0 -weight 1
+ listbox .names.lb -width 20 -height 12 -yscrollcommand ".names.s set" \
-relief sunken -borderwidth 2 -exportselection false
- bind .names <Double-1> {
- tc_loadNamedColor [.names get [.names curselection]]
+ bind .names.lb <Double-1> {
+ tc_loadNamedColor [.names.lb get [.names.lb curselection]]
}
- scrollbar .scroll -orient vertical -command ".names yview" \
+ scrollbar .names.s -orient vertical -command ".names.lb yview" \
-relief sunken -borderwidth 2
- pack .names -in .middle.left -side left
- pack .scroll -in .middle.left -side right -fill y
+ pack .names.lb .names.s -side left -fill y -expand 1
while {[gets $f line] >= 0} {
- if {[llength $line] == 4} {
- .names insert end [lindex $line 3]
+ if {[regexp {^\s*\d+\s+\d+\s+\d+\s+(\S+)$} $line -> col]} {
+ .names.lb insert end $col
}
}
close $f
@@ -111,35 +114,33 @@ foreach i {/usr/local/lib/X11/rgb.txt /usr/lib/X11/rgb.txt
# Create the three scales for editing the color, and the entry for
# typing in a color value.
-frame .middle.middle
-pack .middle.middle -side left -expand yes -fill y
-frame .middle.middle.1
-frame .middle.middle.2
-frame .middle.middle.3
-frame .middle.middle.4
-pack .middle.middle.1 .middle.middle.2 .middle.middle.3 -side top -expand yes
-pack .middle.middle.4 -side top -expand yes -fill x
+frame .adjust
foreach i {1 2 3} {
- label .label$i -textvariable label$i
+ label .adjust.l$i -textvariable label$i -pady 0
+ labelframe .adjust.$i -labelwidget .adjust.l$i -padx 1m -pady 1m
scale .scale$i -from 0 -to 1000 -length 6c -orient horizontal \
-command tc_scaleChanged
- pack .scale$i .label$i -in .middle.middle.$i -side top -anchor w
+ pack .scale$i -in .adjust.$i
+ pack .adjust.$i
}
-label .nameLabel -text "Name:"
-entry .name -relief sunken -borderwidth 2 -textvariable name -width 10 \
+grid .adjust -row 0 -column 1 -sticky nsew -padx .15c -pady .15c
+
+labelframe .name -text "Name:" -padx 1m -pady 1m
+entry .name.e -relief sunken -borderwidth 2 -textvariable name -width 10 \
-font {Courier 12}
-pack .nameLabel -in .middle.middle.4 -side left
-pack .name -in .middle.middle.4 -side right -expand 1 -fill x
-bind .name <Return> {tc_loadNamedColor $name}
+pack .name.e -side right -expand 1 -fill x
+bind .name.e <Return> {tc_loadNamedColor $name}
+grid .name -column 1 -row 1 -sticky nsew -padx .15c -pady .15c
# Create the color display swatch on the right side of the window.
-frame .middle.right
-pack .middle.right -side left -pady .25c -padx .25c -anchor s
-frame .swatch -width 2c -height 5c -background $color
-label .value -textvariable color -width 13 -font {Courier 12}
-pack .swatch -in .middle.right -side top -expand yes -fill both
-pack .value -in .middle.right -side bottom -pady .25c
+labelframe .sample -text "Color:" -padx 1m -pady 1m
+frame .sample.swatch -width 2c -height 5c -background $color
+label .sample.value -textvariable color -width 13 -font {Courier 12}
+pack .sample.swatch -side top -expand yes -fill both
+pack .sample.value -side bottom -pady .25c
+grid .sample -row 0 -column 2 -sticky nsew -padx .15c -pady .15c -rowspan 2
+
# The procedure below is invoked when one of the scales is adjusted.
# It propagates color information from the current scale readings
@@ -147,19 +148,21 @@ pack .value -in .middle.right -side bottom -pady .25c
proc tc_scaleChanged args {
global red green blue colorSpace color updating autoUpdate
- if $updating {
+ if {$updating} {
return
}
- if {$colorSpace == "rgb"} {
- set red [format %.0f [expr [.scale1 get]*65.535]]
- set green [format %.0f [expr [.scale2 get]*65.535]]
- set blue [format %.0f [expr [.scale3 get]*65.535]]
- } else {
- if {$colorSpace == "cmy"} {
+ switch $colorSpace {
+ rgb {
+ set red [format %.0f [expr {[.scale1 get]*65.535}]]
+ set green [format %.0f [expr {[.scale2 get]*65.535}]]
+ set blue [format %.0f [expr {[.scale3 get]*65.535}]]
+ }
+ cmy {
set red [format %.0f [expr {65535 - [.scale1 get]*65.535}]]
set green [format %.0f [expr {65535 - [.scale2 get]*65.535}]]
set blue [format %.0f [expr {65535 - [.scale3 get]*65.535}]]
- } else {
+ }
+ hsb {
set list [hsbToRgb [expr {[.scale1 get]/1000.0}] \
[expr {[.scale2 get]/1000.0}] \
[expr {[.scale3 get]/1000.0}]]
@@ -169,8 +172,8 @@ proc tc_scaleChanged args {
}
}
set color [format "#%04x%04x%04x" $red $green $blue]
- .swatch config -bg $color
- if $autoUpdate doUpdate
+ .sample.swatch config -bg $color
+ if {$autoUpdate} doUpdate
update idletasks
}
@@ -182,16 +185,18 @@ proc tc_scaleChanged args {
proc tc_setScales {} {
global red green blue colorSpace updating
set updating 1
- if {$colorSpace == "rgb"} {
- .scale1 set [format %.0f [expr $red/65.535]]
- .scale2 set [format %.0f [expr $green/65.535]]
- .scale3 set [format %.0f [expr $blue/65.535]]
- } else {
- if {$colorSpace == "cmy"} {
- .scale1 set [format %.0f [expr (65535-$red)/65.535]]
- .scale2 set [format %.0f [expr (65535-$green)/65.535]]
- .scale3 set [format %.0f [expr (65535-$blue)/65.535]]
- } else {
+ switch $colorSpace {
+ rgb {
+ .scale1 set [format %.0f [expr {$red/65.535}]]
+ .scale2 set [format %.0f [expr {$green/65.535}]]
+ .scale3 set [format %.0f [expr {$blue/65.535}]]
+ }
+ cmy {
+ .scale1 set [format %.0f [expr {(65535-$red)/65.535}]]
+ .scale2 set [format %.0f [expr {(65535-$green)/65.535}]]
+ .scale3 set [format %.0f [expr {(65535-$blue)/65.535}]]
+ }
+ hsb {
set list [rgbToHsv $red $green $blue]
.scale1 set [format %.0f [expr {[lindex $list 0] * 1000.0}]]
.scale2 set [format %.0f [expr {[lindex $list 1] * 1000.0}]]
@@ -209,14 +214,14 @@ proc tc_loadNamedColor name {
global red green blue color autoUpdate
if {[string index $name 0] != "#"} {
- set list [winfo rgb .swatch $name]
+ set list [winfo rgb .sample.swatch $name]
set red [lindex $list 0]
set green [lindex $list 1]
set blue [lindex $list 2]
} else {
- case [string length $name] {
- 4 {set format "#%1x%1x%1x"; set shift 12}
- 7 {set format "#%2x%2x%2x"; set shift 8}
+ switch [string length $name] {
+ 4 {set format "#%1x%1x%1x"; set shift 12}
+ 7 {set format "#%2x%2x%2x"; set shift 8}
10 {set format "#%3x%3x%3x"; set shift 4}
13 {set format "#%4x%4x%4x"; set shift 0}
default {error "syntax error in color name \"$name\""}
@@ -224,14 +229,14 @@ proc tc_loadNamedColor name {
if {[scan $name $format red green blue] != 3} {
error "syntax error in color name \"$name\""
}
- set red [expr $red<<$shift]
- set green [expr $green<<$shift]
- set blue [expr $blue<<$shift]
+ set red [expr {$red<<$shift}]
+ set green [expr {$green<<$shift}]
+ set blue [expr {$blue<<$shift}]
}
tc_setScales
set color [format "#%04x%04x%04x" $red $green $blue]
- .swatch config -bg $color
- if $autoUpdate doUpdate
+ .sample.swatch config -bg $color
+ if {$autoUpdate} doUpdate
}
# The procedure below is invoked when a new color space is selected.
@@ -240,26 +245,28 @@ proc tc_loadNamedColor name {
proc changeColorSpace space {
global label1 label2 label3
- if {$space == "rgb"} {
- set label1 Red
- set label2 Green
- set label3 Blue
- tc_setScales
- return
- }
- if {$space == "cmy"} {
- set label1 Cyan
- set label2 Magenta
- set label3 Yellow
- tc_setScales
- return
- }
- if {$space == "hsb"} {
- set label1 Hue
- set label2 Saturation
- set label3 Brightness
- tc_setScales
- return
+ switch $space {
+ rgb {
+ set label1 "Adjust Red:"
+ set label2 "Adjust Green:"
+ set label3 "Adjust Blue:"
+ tc_setScales
+ return
+ }
+ cmy {
+ set label1 "Adjust Cyan:"
+ set label2 "Adjust Magenta:"
+ set label3 "Adjust Yellow:"
+ tc_setScales
+ return
+ }
+ hsb {
+ set label1 "Adjust Hue:"
+ set label2 "Adjust Saturation:"
+ set label3 "Adjust Brightness:"
+ tc_setScales
+ return
+ }
}
}
@@ -271,20 +278,18 @@ proc changeColorSpace space {
proc rgbToHsv {red green blue} {
if {$red > $green} {
- set max $red.0
- set min $green.0
+ set max [expr {double($red)}]
+ set min [expr {double($green)}]
} else {
- set max $green.0
- set min $red.0
+ set max [expr {double($green)}]
+ set min [expr {double($red)}]
}
if {$blue > $max} {
- set max $blue.0
- } else {
- if {$blue < $min} {
- set min $blue.0
- }
+ set max [expr {double($blue)}]
+ } elseif {$blue < $min} {
+ set min [expr {double($blue)}]
}
- set range [expr $max-$min]
+ set range [expr {$max-$min}]
if {$max == 0} {
set sat 0
} else {
@@ -297,16 +302,14 @@ proc rgbToHsv {red green blue} {
set gc [expr {($max - $green)/$range}]
set bc [expr {($max - $blue)/$range}]
if {$red == $max} {
- set hue [expr {.166667*($bc - $gc)}]
+ set hue [expr {($bc - $gc)/6.0}]
+ } elseif {$green == $max} {
+ set hue [expr {(2 + $rc - $bc)/6.0}]
} else {
- if {$green == $max} {
- set hue [expr {.166667*(2 + $rc - $bc)}]
- } else {
- set hue [expr {.166667*(4 + $gc - $rc)}]
- }
+ set hue [expr {(4 + $gc - $rc)/6.0}]
}
if {$hue < 0.0} {
- set hue [expr $hue + 1.0]
+ set hue [expr {$hue + 1.0}]
}
}
return [list $hue $sat [expr {$max/65535}]]
@@ -319,27 +322,28 @@ proc rgbToHsv {red green blue} {
# Computer Graphics" by Foley and Van Dam.
proc hsbToRgb {hue sat value} {
- set v [format %.0f [expr 65535.0*$value]]
+ set v [format %.0f [expr {65535.0*$value}]]
if {$sat == 0} {
return "$v $v $v"
} else {
- set hue [expr $hue*6.0]
+ set hue [expr {$hue*6.0}]
if {$hue >= 6.0} {
set hue 0.0
}
scan $hue. %d i
- set f [expr $hue-$i]
+ set f [expr {$hue-$i}]
set p [format %.0f [expr {65535.0*$value*(1 - $sat)}]]
set q [format %.0f [expr {65535.0*$value*(1 - ($sat*$f))}]]
set t [format %.0f [expr {65535.0*$value*(1 - ($sat*(1 - $f)))}]]
- case $i \
- 0 {return "$v $t $p"} \
- 1 {return "$q $v $p"} \
- 2 {return "$p $v $t"} \
- 3 {return "$p $q $v"} \
- 4 {return "$t $p $v"} \
+ switch $i {
+ 0 {return "$v $t $p"}
+ 1 {return "$q $v $p"}
+ 2 {return "$p $v $t"}
+ 3 {return "$p $q $v"}
+ 4 {return "$t $p $v"}
5 {return "$v $p $q"}
- error "i value $i is out of range"
+ default {error "i value $i is out of range"}
+ }
}
}
@@ -356,3 +360,7 @@ proc doUpdate {} {
}
changeColorSpace hsb
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/demos/text.tcl b/library/demos/text.tcl
index 78a4d56..2237acd 100644
--- a/library/demos/text.tcl
+++ b/library/demos/text.tcl
@@ -3,7 +3,7 @@
# This demonstration script creates a text widget that describes
# the basic editing functions.
#
-# RCS: @(#) $Id: text.tcl,v 1.2 1998/09/14 18:23:30 stanton Exp $
+# RCS: @(#) $Id: text.tcl,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
if {![info exists widgetDemo]} {
error "This script should be run from the \"widget\" demo."
@@ -23,7 +23,7 @@ button $w.buttons.code -text "See Code" -command "showCode $w"
pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
text $w.text -relief sunken -bd 2 -yscrollcommand "$w.scroll set" -setgrid 1 \
- -height 30
+ -height 30 -undo 1 -autosep 1
scrollbar $w.scroll -command "$w.text yview"
pack $w.scroll -side right -fill y
pack $w.text -expand yes -fill both
@@ -66,7 +66,19 @@ the insertion cursor to the end of the line, or it deletes the newline
character if that is the only thing left on the line. Control-o opens
a new line by inserting a newline character to the right of the insertion
cursor. Control-t transposes the two characters on either side of the
-insertion cursor.
+insertion cursor. Control-z undoes the last editing action performed,
+and }
+
+switch $tcl_platform(platform) {
+ "unix" - "macintosh" {
+ $w.text insert end "Control-Shift-z"
+ }
+ "windows" {
+ $w.text insert end "Control-y"
+ }
+}
+
+$w.text insert end { redoes undone edits.
7. Resize the window. This widget has been configured with the "setGrid"
option on, so that if you resize the window it will always resize to an
diff --git a/library/demos/timer b/library/demos/timer
index 5ac504c..44f1d26 100644
--- a/library/demos/timer
+++ b/library/demos/timer
@@ -5,36 +5,43 @@ exec wish "$0" "$@"
# timer --
# This script generates a counter with start and stop buttons.
#
-# RCS: @(#) $Id: timer,v 1.2 1998/09/14 18:23:30 stanton Exp $
+# RCS: @(#) $Id: timer,v 1.2.24.1 2002/02/05 02:25:16 wolfsuit Exp $
-label .counter -text 0.00 -relief raised -width 10
+label .counter -text 0.00 -relief raised -width 10 -padx 2m -pady 1m
button .start -text Start -command {
- if $stopped {
+ if {$stopped} {
set stopped 0
+ set startMoment [clock clicks -milliseconds]
tick
+ .stop configure -state normal
+ .start configure -state disabled
}
}
-button .stop -text Stop -command {set stopped 1}
+button .stop -text Stop -state disabled -command {
+ set stopped 1
+ .stop configure -state disabled
+ .start configure -state normal
+}
pack .counter -side bottom -fill both
pack .start -side left -fill both -expand yes
pack .stop -side right -fill both -expand yes
-set seconds 0
-set hundredths 0
+set startMoment {}
+
set stopped 1
proc tick {} {
- global seconds hundredths stopped
- if $stopped return
+ global startMoment stopped
+ if {$stopped} {return}
after 50 tick
- set hundredths [expr $hundredths+5]
- if {$hundredths >= 100} {
- set hundredths 0
- set seconds [expr $seconds+1]
- }
- .counter config -text [format "%d.%02d" $seconds $hundredths]
+ set elapsedMS [expr {[clock clicks -milliseconds] - $startMoment}]
+ .counter config -text [format "%.2f" [expr {double($elapsedMS)/1000}]]
}
bind . <Control-c> {destroy .}
bind . <Control-q> {destroy .}
focus .
+
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/demos/widget b/library/demos/widget
index d98c7e8..2787244 100644
--- a/library/demos/widget
+++ b/library/demos/widget
@@ -11,11 +11,30 @@ exec wish "$0" "$@"
# ".tcl" files is this directory, which are sourced by this script
# as needed.
#
-# RCS: @(#) $Id: widget,v 1.3.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: widget,v 1.3.2.2 2002/02/05 02:25:16 wolfsuit Exp $
eval destroy [winfo child .]
wm title . "Widget Demonstration"
+if {$tcl_platform(platform) eq "unix"} {
+ # This won't work everywhere, but there's no other way in core Tk
+ # at the moment to display a coloured icon.
+ image create photo TclPowered \
+ -file [file join $tk_library images logo64.gif]
+ wm iconwindow . [toplevel ._iconWindow]
+ pack [label ._iconWindow.i -image TclPowered]
+ wm iconname . "tkWidgetDemo"
+}
+
+array set widgetFont {
+ main {Helvetica 12}
+ bold {Helvetica 12 bold}
+ title {Helvetica 18 bold}
+ status {Helvetica 10}
+ vars {Helvetica 14}
+}
+
set widgetDemo 1
+set font $widgetFont(main)
#----------------------------------------------------------------
# The code below create the main window, consisting of a menu bar
@@ -23,7 +42,6 @@ set widgetDemo 1
# all of the demos as hypertext items.
#----------------------------------------------------------------
-set font {Helvetica 14}
menu .menuBar -tearoff 0
.menuBar add cascade -menu .menuBar.file -label "File" -underline 0
menu .menuBar.file -tearoff 0
@@ -46,9 +64,9 @@ bind . <F1> aboutBox
frame .statusBar
label .statusBar.lab -text " " -relief sunken -bd 1 \
- -font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w
+ -font $widgetFont(status) -anchor w
label .statusBar.foo -width 8 -relief sunken -bd 1 \
- -font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w
+ -font $widgetFont(status) -anchor w
pack .statusBar.lab -side left -padx 2 -expand yes -fill both
pack .statusBar.foo -side left -padx 2
pack .statusBar -side bottom -fill x -pady 2
@@ -57,8 +75,9 @@ frame .textFrame
scrollbar .s -orient vertical -command {.t yview} -highlightthickness 0 \
-takefocus 1
pack .s -in .textFrame -side right -fill y
-text .t -yscrollcommand {.s set} -wrap word -width 60 -height 30 -font $font \
- -setgrid 1 -highlightthickness 0 -padx 4 -pady 2 -takefocus 0
+text .t -yscrollcommand {.s set} -wrap word -width 70 -height 30 \
+ -font $widgetFont(main) -setgrid 1 -highlightthickness 0 \
+ -padx 4 -pady 2 -takefocus 0
pack .t -in .textFrame -expand y -fill both -padx 1
pack .textFrame -expand yes -fill both
@@ -66,7 +85,8 @@ pack .textFrame -expand yes -fill both
# section titles and demo descriptions. Also define the bindings for
# tags.
-.t tag configure title -font {Helvetica 18 bold}
+.t tag configure title -font $widgetFont(title)
+.t tag configure bold -font $widgetFont(bold)
# We put some "space" characters to the left and right of each demo description
# so that the descriptions are highlighted only when the mouse cursor
@@ -120,119 +140,82 @@ set lastLine ""
# Create the text for the text widget.
-.t insert end "Tk Widget Demonstrations\n" title
-.t insert end {
-This application provides a front end for several short scripts that demonstrate what you can do with Tk widgets. Each of the numbered lines below describes a demonstration; you can click on it to invoke the demonstration. Once the demonstration window appears, you can click the "See Code" button to see the Tcl/Tk code that created the demonstration. If you wish, you can edit the code and click the "Rerun Demo" button in the code window to reinvoke the demonstration with the modified code.
+proc addDemoSection {title demos} {
+ .t insert end "\n" {} $title title " \n " demospace
+ set num 0
+ foreach {name description} $demos {
+ .t insert end "[incr num]. $description." [list demo demo-$name]
+ .t insert end " \n " demospace
+ }
+}
+.t insert end "Tk Widget Demonstrations\n" title
+.t insert end "\nThis application provides a front end for several short\
+ scripts that demonstrate what you can do with Tk widgets. Each of\
+ the numbered lines below describes a demonstration; you can click\
+ on it to invoke the demonstration. Once the demonstration window\
+ appears, you can click the " {} "See Code" bold " button to see the\
+ Tcl/Tk code that created the demonstration. If you wish, you can\
+ edit the code and click the " {} "Rerun Demo" bold " button in the\
+ code window to reinvoke the demonstration with the modified code.\n"
+
+addDemoSection "Labels, buttons, checkbuttons, and radiobuttons" {
+ label "Labels (text and bitmaps)"
+ button "Buttons"
+ check "Check-buttons (select any of a group)"
+ radio "Radio-buttons (select one of a group)"
+ puzzle "A 15-puzzle game made out of buttons"
+ icon "Iconic buttons that use bitmaps"
+ image1 "Two labels displaying images"
+ image2 "A simple user interface for viewing images"
+ labelframe "Labelled frames"
+}
+addDemoSection "Listboxes" {
+ states "The 50 states"
+ colors "Colors: change the color scheme for the application"
+ sayings "A collection of famous and infamous sayings"
+}
+addDemoSection "Entries and Spin-boxes" {
+ entry1 "Entries without scrollbars"
+ entry2 "Entries with scrollbars"
+ entry3 "Validated entries and password fields"
+ spin "Spin-boxes"
+ form "Simple Rolodex-like form"
+}
+addDemoSection "Text" {
+ text "Basic editable text"
+ style "Text display styles"
+ bind "Hypertext (tag bindings)"
+ twind "A text widget with embedded windows"
+ search "A search tool built with a text widget"
+}
+addDemoSection "Canvases" {
+ items "The canvas item types"
+ plot "A simple 2-D plot"
+ ctext "Text items in canvases"
+ arrow "An editor for arrowheads on canvas lines"
+ ruler "A ruler with adjustable tab stops"
+ floor "A building floor plan"
+ cscroll "A simple scrollable canvas"
+}
+addDemoSection "Scales" {
+ vscale "Vertical scale"
+ hscale "Horizontal scale"
+}
+addDemoSection "Menus" {
+ menu "Menus and cascades (sub-menus)"
+ menubu "Menu-buttons"
+}
+addDemoSection "Common Dialogs" {
+ msgbox "Message boxes"
+ filebox "File selection dialog"
+ clrpick "Color picker"
+}
+addDemoSection "Miscellaneous" {
+ bitmap "The built-in bitmaps"
+ dialog1 "A dialog box with a local grab"
+ dialog2 "A dialog box with a global grab"
}
-.t insert end "Labels, buttons, checkbuttons, and radiobuttons" title
-.t insert end " \n " {demospace}
-.t insert end "1. Labels (text and bitmaps)." {demo demo-label}
-.t insert end " \n " {demospace}
-.t insert end "2. Buttons." {demo demo-button}
-.t insert end " \n " {demospace}
-.t insert end "3. Checkbuttons (select any of a group)." {demo demo-check}
-.t insert end " \n " {demospace}
-.t insert end "4. Radiobuttons (select one of a group)." {demo demo-radio}
-.t insert end " \n " {demospace}
-.t insert end "5. A 15-puzzle game made out of buttons." {demo demo-puzzle}
-.t insert end " \n " {demospace}
-.t insert end "6. Iconic buttons that use bitmaps." {demo demo-icon}
-.t insert end " \n " {demospace}
-.t insert end "7. Two labels displaying images." {demo demo-image1}
-.t insert end " \n " {demospace}
-.t insert end "8. A simple user interface for viewing images." \
- {demo demo-image2}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Listboxes" title
-.t insert end " \n " {demospace}
-.t insert end "1. 50 states." {demo demo-states}
-.t insert end " \n " {demospace}
-.t insert end "2. Colors: change the color scheme for the application." \
- {demo demo-colors}
-.t insert end " \n " {demospace}
-.t insert end "3. A collection of famous sayings." {demo demo-sayings}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Entries" title
-.t insert end " \n " {demospace}
-.t insert end "1. Without scrollbars." {demo demo-entry1}
-.t insert end " \n " {demospace}
-.t insert end "2. With scrollbars." {demo demo-entry2}
-.t insert end " \n " {demospace}
-.t insert end "3. Simple Rolodex-like form." {demo demo-form}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Text" title
-.t insert end " \n " {demospace}
-.t insert end "1. Basic editable text." {demo demo-text}
-.t insert end " \n " {demospace}
-.t insert end "2. Text display styles." {demo demo-style}
-.t insert end " \n " {demospace}
-.t insert end "3. Hypertext (tag bindings)." {demo demo-bind}
-.t insert end " \n " {demospace}
-.t insert end "4. A text widget with embedded windows." {demo demo-twind}
-.t insert end " \n " {demospace}
-.t insert end "5. A search tool built with a text widget." {demo demo-search}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Canvases" title
-.t insert end " \n " {demospace}
-.t insert end "1. The canvas item types." {demo demo-items}
-.t insert end " \n " {demospace}
-.t insert end "2. A simple 2-D plot." {demo demo-plot}
-.t insert end " \n " {demospace}
-.t insert end "3. Text items in canvases." {demo demo-ctext}
-.t insert end " \n " {demospace}
-.t insert end "4. An editor for arrowheads on canvas lines." {demo demo-arrow}
-.t insert end " \n " {demospace}
-.t insert end "5. A ruler with adjustable tab stops." {demo demo-ruler}
-.t insert end " \n " {demospace}
-.t insert end "6. A building floor plan." {demo demo-floor}
-.t insert end " \n " {demospace}
-.t insert end "7. A simple scrollable canvas." {demo demo-cscroll}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Scales" title
-.t insert end " \n " {demospace}
-.t insert end "1. Vertical scale." {demo demo-vscale}
-.t insert end " \n " {demospace}
-.t insert end "2. Horizontal scale." {demo demo-hscale}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Menus" title
-.t insert end " \n " {demospace}
-.t insert end "1. Menus and cascades." \
- {demo demo-menu}
-.t insert end " \n " {demospace}
-.t insert end "2. Menubuttons"\
- {demo demo-menubu}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Labelframes" title
-.t insert end " \n " {demospace}
-.t insert end "1. Labelframe." \
- {demo demo-labelframe}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Common Dialogs" title
-.t insert end " \n " {demospace}
-.t insert end "1. Message boxes." {demo demo-msgbox}
-.t insert end " \n " {demospace}
-.t insert end "2. File selection dialog." {demo demo-filebox}
-.t insert end " \n " {demospace}
-.t insert end "3. Color picker." {demo demo-clrpick}
-.t insert end " \n " {demospace}
-
-.t insert end \n {} "Miscellaneous" title
-.t insert end " \n " {demospace}
-.t insert end "1. The built-in bitmaps." {demo demo-bitmap}
-.t insert end " \n " {demospace}
-.t insert end "2. A dialog box with a local grab." {demo demo-dialog1}
-.t insert end " \n " {demospace}
-.t insert end "3. A dialog box with a global grab." {demo demo-dialog2}
-.t insert end " \n " {demospace}
.t configure -state disabled
focus .s
@@ -257,11 +240,12 @@ proc positionWindow w {
# args - Any number of names of variables.
proc showVars {w args} {
+ global widgetFont
catch {destroy $w}
toplevel $w
wm title $w "Variable values"
label $w.title -text "Variable values:" -width 20 -anchor center \
- -font {Helvetica 18}
+ -font $widgetFont(vars)
pack $w.title -side top -fill x
set len 1
foreach i $args {
@@ -391,7 +375,15 @@ proc showCode w {
#
proc aboutBox {} {
tk_messageBox -icon info -type ok -title "About Widget Demo" -message \
-"Tk widget demonstration\n\n\
-Copyright (c) 1996-1997 Sun Microsystems, Inc."
+"Tk widget demonstration
+
+Copyright (c) 1996-1997 Sun Microsystems, Inc.
+
+Copyright (c) 1997-2000 Ajuba Solutions, Inc.
+
+Copyright (c) 2001 Donal K. Fellows"
}
+# Local Variables:
+# mode: tcl
+# End:
diff --git a/library/entry.tcl b/library/entry.tcl
index 01d5f37..96ab609 100644
--- a/library/entry.tcl
+++ b/library/entry.tcl
@@ -3,7 +3,7 @@
# This file defines the default bindings for Tk entry widgets and provides
# procedures that help in implementing those bindings.
#
-# RCS: @(#) $Id: entry.tcl,v 1.16.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: entry.tcl,v 1.16.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
@@ -63,7 +63,8 @@ bind Entry <<Clear>> {
%W delete sel.first sel.last
}
bind Entry <<PasteSelection>> {
- if {!$tk::Priv(mouseMoved) || $tk_strictMotif} {
+ if {$tk_strictMotif || ![info exists tk::Priv(mouseMoved)]
+ || !$tk::Priv(mouseMoved)} {
tk::EntryPaste %W %x
}
}
@@ -287,18 +288,12 @@ bind Entry <Meta-Delete> {
bind Entry <2> {
if {!$tk_strictMotif} {
- %W scan mark %x
- set tk::Priv(x) %x
- set tk::Priv(y) %y
- set tk::Priv(mouseMoved) 0
+ ::tk::EntryScanMark %W %x
}
}
bind Entry <B2-Motion> {
if {!$tk_strictMotif} {
- if {abs(%x-$tk::Priv(x)) > 2} {
- set tk::Priv(mouseMoved) 1
- }
- %W scan dragto %x
+ ::tk::EntryScanDrag %W %x
}
}
@@ -550,7 +545,8 @@ proc ::tk::EntryTranspose w {
if {$first < 0} {
return
}
- set new [string index [$w get] [expr {$i-1}]][string index [$w get] $first]
+ set data [$w get]
+ set new [string index $data [expr {$i-1}]][string index $data $first]
$w delete $first $i
$w insert insert $new
EntrySeeInsert $w
@@ -603,6 +599,41 @@ proc ::tk::EntryPreviousWord {w start} {
}
return $pos
}
+
+# ::tk::EntryScanMark --
+#
+# Marks the start of a possible scan drag operation
+#
+# Arguments:
+# w - The entry window from which the text to get
+# x - x location on screen
+
+proc ::tk::EntryScanMark {w x} {
+ $w scan mark $x
+ set ::tk::Priv(x) $x
+ set ::tk::Priv(y) 0 ; # not used
+ set ::tk::Priv(mouseMoved) 0
+}
+
+# ::tk::EntryScanDrag --
+#
+# Marks the start of a possible scan drag operation
+#
+# Arguments:
+# w - The entry window from which the text to get
+# x - x location on screen
+
+proc ::tk::EntryScanDrag {w x} {
+ # Make sure these exist, as some weird situations can trigger the
+ # motion binding without the initial press. [Bug #220269]
+ if {![info exists ::tk::Priv(x)]} { set ::tk::Priv(x) $x }
+ # allow for a delta
+ if {abs($x-$::tk::Priv(x)) > 2} {
+ set ::tk::Priv(mouseMoved) 1
+ }
+ $w scan dragto $x
+}
+
# ::tk::EntryGetSelection --
#
# Returns the selected text of the entry with respect to the -show option.
@@ -614,7 +645,8 @@ proc ::tk::EntryGetSelection {w} {
set entryString [string range [$w get] [$w index sel.first] \
[expr {[$w index sel.last] - 1}]]
if {[string compare [$w cget -show] ""]} {
- regsub -all . $entryString [string index [$w cget -show] 0] entryString
+ return [string repeat [string index [$w cget -show] 0] \
+ [string length $entryString]]
}
return $entryString
}
diff --git a/library/menu.tcl b/library/menu.tcl
index 5fde6ea..010f905 100644
--- a/library/menu.tcl
+++ b/library/menu.tcl
@@ -4,7 +4,7 @@
# It also implements keyboard traversal of menus and implements a few
# other utility procedures related to menus.
#
-# RCS: @(#) $Id: menu.tcl,v 1.13.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: menu.tcl,v 1.13.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
@@ -780,16 +780,13 @@ proc ::tk::MenuNextMenu {menu direction} {
set count -1
set m2 [winfo parent $menu]
if {[string equal [winfo class $m2] "Menu"]} {
+ $menu activate none
+ GenerateMenuSelect $menu
+ tk_menuSetFocus $m2
+
+ $m2 postcascade none
+
if {[string compare [$m2 cget -type] "menubar"]} {
- $menu activate none
- GenerateMenuSelect $menu
- tk_menuSetFocus $m2
-
- # This code unposts any posted submenu in the parent.
-
- set tmp [$m2 index active]
- $m2 activate none
- $m2 activate $tmp
return
}
}
@@ -873,7 +870,9 @@ proc ::tk::MenuNextEntry {menu count} {
incr i -$length
}
if {[catch {$menu entrycget $i -state} state] == 0} {
- if {[string compare $state "disabled"]} {
+ if {$state!="disabled" &&
+ ($i!=0 || [$menu cget -type]!="tearoff"
+ || [$menu type 0]!="tearoff")} {
break
}
}
@@ -885,7 +884,9 @@ proc ::tk::MenuNextEntry {menu count} {
}
$menu activate $i
GenerateMenuSelect $menu
- if {[string equal [$menu type $i] "cascade"]} {
+
+ if {[string equal [$menu type $i] "cascade"] \
+ && [string equal [$menu cget -type] "menubar"]} {
set cascade [$menu entrycget $i -menu]
if {[string compare $cascade ""]} {
# Here we auto-post a cascade. This is necessary when
diff --git a/library/palette.tcl b/library/palette.tcl
index f278268..198aee0 100644
--- a/library/palette.tcl
+++ b/library/palette.tcl
@@ -3,7 +3,7 @@
# This file contains procedures that change the color palette used
# by Tk.
#
-# RCS: @(#) $Id: palette.tcl,v 1.6 2001/08/01 16:21:11 dgp Exp $
+# RCS: @(#) $Id: palette.tcl,v 1.6.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1995-1997 Sun Microsystems, Inc.
#
@@ -40,10 +40,18 @@ proc ::tk_setPalette {args} {
if {![info exists new(background)]} {
error "must specify a background color"
}
+ set bg [winfo rgb . $new(background)]
if {![info exists new(foreground)]} {
- set new(foreground) black
+ # Note that the range of each value in the triple returned by
+ # [winfo rgb] is 0-65535, and your eyes are more sensitive to
+ # green than to red, and more to red than to blue.
+ foreach {r g b} $bg {break}
+ if {$r+1.5*$g+0.5*$b > 100000} {
+ set new(foreground) black
+ } else {
+ set new(foreground) white
+ }
}
- set bg [winfo rgb . $new(background)]
set fg [winfo rgb . $new(foreground)]
set darkerBg [format #%02x%02x%02x [expr {(9*[lindex $bg 0])/2560}] \
[expr {(9*[lindex $bg 1])/2560}] [expr {(9*[lindex $bg 2])/2560}]]
@@ -98,8 +106,11 @@ proc ::tk_setPalette {args} {
# defaults are currently for this platform.
toplevel .___tk_set_palette
wm withdraw .___tk_set_palette
- foreach q {button canvas checkbutton entry frame label listbox \
- menubutton menu message radiobutton scale scrollbar text} {
+ foreach q {
+ button canvas checkbutton entry frame label labelframe
+ listbox menubutton menu message radiobutton scale scrollbar
+ spinbox text
+ } {
$q .___tk_set_palette.$q
}
@@ -150,14 +161,22 @@ proc ::tk_setPalette {args} {
proc ::tk::RecolorTree {w colors} {
upvar $colors c
set result {}
+ set prototype .___tk_set_palette.[string tolower [winfo class $w]]
+ if {![winfo exists $prototype]} {
+ unset prototype
+ }
foreach dbOption [array names c] {
set option -[string tolower $dbOption]
+ set class [string replace $dbOption 0 0 [string toupper \
+ [string index $dbOption 0]]]
if {![catch {$w config $option} value]} {
# if the option database has a preference for this
# dbOption, then use it, otherwise use the defaults
# for the widget.
- set defaultcolor [option get $w $dbOption widgetDefault]
- if {[string match {} $defaultcolor]} {
+ set defaultcolor [option get $w $dbOption $class]
+ if {[string match {} $defaultcolor] || \
+ ([info exists prototype] && \
+ [$prototype cget $option] ne "$defaultcolor")} {
set defaultcolor [winfo rgb . [lindex $value 3]]
} else {
set defaultcolor [winfo rgb . $defaultcolor]
diff --git a/library/spinbox.tcl b/library/spinbox.tcl
index f5577a8..cc4be0d 100644
--- a/library/spinbox.tcl
+++ b/library/spinbox.tcl
@@ -1,9 +1,10 @@
# spinbox.tcl --
#
# This file defines the default bindings for Tk spinbox widgets and provides
-# procedures that help in implementing those bindings.
+# procedures that help in implementing those bindings. The spinbox builds
+# off the entry widget, so it can reuse Entry bindings and procedures.
#
-# RCS: @(#) $Id: spinbox.tcl,v 1.3.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: spinbox.tcl,v 1.3.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
@@ -61,14 +62,15 @@ bind Spinbox <<Paste>> {
}
}
%W insert insert [::tk::GetSelection %W CLIPBOARD]
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntrySeeInsert %W
}
}
bind Spinbox <<Clear>> {
%W delete sel.first sel.last
}
bind Spinbox <<PasteSelection>> {
- if {!$tk::Priv(mouseMoved) || $tk_strictMotif} {
+ if {$tk_strictMotif || ![info exists tk::Priv(mouseMoved)]
+ || !$tk::Priv(mouseMoved)} {
::tk::spinbox::Paste %W %x
}
}
@@ -123,46 +125,46 @@ bind Spinbox <Down> {
}
bind Spinbox <Left> {
- ::tk::spinbox::SetCursor %W [expr {[%W index insert] - 1}]
+ ::tk::EntrySetCursor %W [expr {[%W index insert] - 1}]
}
bind Spinbox <Right> {
- ::tk::spinbox::SetCursor %W [expr {[%W index insert] + 1}]
+ ::tk::EntrySetCursor %W [expr {[%W index insert] + 1}]
}
bind Spinbox <Shift-Left> {
- ::tk::spinbox::KeySelect %W [expr {[%W index insert] - 1}]
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntryKeySelect %W [expr {[%W index insert] - 1}]
+ ::tk::EntrySeeInsert %W
}
bind Spinbox <Shift-Right> {
- ::tk::spinbox::KeySelect %W [expr {[%W index insert] + 1}]
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntryKeySelect %W [expr {[%W index insert] + 1}]
+ ::tk::EntrySeeInsert %W
}
bind Spinbox <Control-Left> {
- ::tk::spinbox::SetCursor %W [::tk::spinbox::PreviousWord %W insert]
+ ::tk::EntrySetCursor %W [::tk::EntryPreviousWord %W insert]
}
bind Spinbox <Control-Right> {
- ::tk::spinbox::SetCursor %W [::tk::spinbox::NextWord %W insert]
+ ::tk::EntrySetCursor %W [::tk::EntryNextWord %W insert]
}
bind Spinbox <Shift-Control-Left> {
- ::tk::spinbox::KeySelect %W [::tk::spinbox::PreviousWord %W insert]
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntryKeySelect %W [::tk::EntryPreviousWord %W insert]
+ ::tk::EntrySeeInsert %W
}
bind Spinbox <Shift-Control-Right> {
- ::tk::spinbox::KeySelect %W [::tk::spinbox::NextWord %W insert]
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntryKeySelect %W [::tk::EntryNextWord %W insert]
+ ::tk::EntrySeeInsert %W
}
bind Spinbox <Home> {
- ::tk::spinbox::SetCursor %W 0
+ ::tk::EntrySetCursor %W 0
}
bind Spinbox <Shift-Home> {
- ::tk::spinbox::KeySelect %W 0
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntryKeySelect %W 0
+ ::tk::EntrySeeInsert %W
}
bind Spinbox <End> {
- ::tk::spinbox::SetCursor %W end
+ ::tk::EntrySetCursor %W end
}
bind Spinbox <Shift-End> {
- ::tk::spinbox::KeySelect %W end
- ::tk::spinbox::SeeInsert %W
+ ::tk::EntryKeySelect %W end
+ ::tk::EntrySeeInsert %W
}
bind Spinbox <Delete> {
@@ -173,7 +175,7 @@ bind Spinbox <Delete> {
}
}
bind Spinbox <BackSpace> {
- ::tk::spinbox::Backspace %W
+ ::tk::EntryBackspace %W
}
bind Spinbox <Control-space> {
@@ -195,7 +197,7 @@ bind Spinbox <Control-backslash> {
%W selection clear
}
bind Spinbox <KeyPress> {
- ::tk::spinbox::Insert %W %A
+ ::tk::EntryInsert %W %A
}
# Ignore all Alt, Meta, and Control keypresses unless explicitly bound.
@@ -219,7 +221,7 @@ if {[string equal $tcl_platform(windowingsystem) "classic"]
# generates the <<Paste>> event, so we don't need to do anything here.
if {[string compare $tcl_platform(platform) "windows"]} {
bind Spinbox <Insert> {
- catch {::tk::spinbox::Insert %W [::tk::GetSelection %W PRIMARY]}
+ catch {::tk::EntryInsert %W [::tk::GetSelection %W PRIMARY]}
}
}
@@ -227,12 +229,12 @@ if {[string compare $tcl_platform(platform) "windows"]} {
bind Spinbox <Control-a> {
if {!$tk_strictMotif} {
- ::tk::spinbox::SetCursor %W 0
+ ::tk::EntrySetCursor %W 0
}
}
bind Spinbox <Control-b> {
if {!$tk_strictMotif} {
- ::tk::spinbox::SetCursor %W [expr {[%W index insert] - 1}]
+ ::tk::EntrySetCursor %W [expr {[%W index insert] - 1}]
}
}
bind Spinbox <Control-d> {
@@ -242,17 +244,17 @@ bind Spinbox <Control-d> {
}
bind Spinbox <Control-e> {
if {!$tk_strictMotif} {
- ::tk::spinbox::SetCursor %W end
+ ::tk::EntrySetCursor %W end
}
}
bind Spinbox <Control-f> {
if {!$tk_strictMotif} {
- ::tk::spinbox::SetCursor %W [expr {[%W index insert] + 1}]
+ ::tk::EntrySetCursor %W [expr {[%W index insert] + 1}]
}
}
bind Spinbox <Control-h> {
if {!$tk_strictMotif} {
- ::tk::spinbox::Backspace %W
+ ::tk::EntryBackspace %W
}
}
bind Spinbox <Control-k> {
@@ -262,32 +264,32 @@ bind Spinbox <Control-k> {
}
bind Spinbox <Control-t> {
if {!$tk_strictMotif} {
- ::tk::spinbox::Transpose %W
+ ::tk::EntryTranspose %W
}
}
bind Spinbox <Meta-b> {
if {!$tk_strictMotif} {
- ::tk::spinbox::SetCursor %W [::tk::spinbox::PreviousWord %W insert]
+ ::tk::EntrySetCursor %W [::tk::EntryPreviousWord %W insert]
}
}
bind Spinbox <Meta-d> {
if {!$tk_strictMotif} {
- %W delete insert [::tk::spinbox::NextWord %W insert]
+ %W delete insert [::tk::EntryNextWord %W insert]
}
}
bind Spinbox <Meta-f> {
if {!$tk_strictMotif} {
- ::tk::spinbox::SetCursor %W [::tk::spinbox::NextWord %W insert]
+ ::tk::EntrySetCursor %W [::tk::EntryNextWord %W insert]
}
}
bind Spinbox <Meta-BackSpace> {
if {!$tk_strictMotif} {
- %W delete [::tk::spinbox::PreviousWord %W insert] insert
+ %W delete [::tk::EntryPreviousWord %W insert] insert
}
}
bind Spinbox <Meta-Delete> {
if {!$tk_strictMotif} {
- %W delete [::tk::spinbox::PreviousWord %W insert] insert
+ %W delete [::tk::EntryPreviousWord %W insert] insert
}
}
@@ -295,18 +297,12 @@ bind Spinbox <Meta-Delete> {
bind Spinbox <2> {
if {!$tk_strictMotif} {
- %W scan mark %x
- set tk::Priv(x) %x
- set tk::Priv(y) %y
- set tk::Priv(mouseMoved) 0
+ ::tk::EntryScanMark %W %x
}
}
bind Spinbox <B2-Motion> {
if {!$tk_strictMotif} {
- if {abs(%x-$tk::Priv(x)) > 2} {
- set tk::Priv(mouseMoved) 1
- }
- %W scan dragto %x
+ ::tk::EntryScanDrag %W %x
}
}
@@ -375,7 +371,7 @@ proc ::tk::spinbox::ButtonDown {w x y} {
$w selection element $Priv(element)
set Priv(repeated) 0
set Priv(relief) [$w cget -$Priv(element)relief]
- after cancel $Priv(afterId)
+ catch {after cancel $Priv(afterId)}
set delay [$w cget -repeatdelay]
if {$delay > 0} {
set Priv(afterId) [after $delay \
@@ -502,7 +498,6 @@ proc ::tk::spinbox::MouseSelect {w x {cursor {}}} {
# x - X position of the mouse.
proc ::tk::spinbox::Paste {w x} {
-
$w icursor [::tk::spinbox::ClosestGap $w $x]
catch {$w insert insert [::tk::GetSelection $w PRIMARY]}
if {[string equal "disabled" [$w cget -state]]} {focus $w}
@@ -563,179 +558,10 @@ proc ::tk::spinbox::AutoScan {w} {
set Priv(afterId) [after 50 [list ::tk::spinbox::AutoScan $w]]
}
-# ::tk::spinbox::KeySelect --
-# This procedure is invoked when stroking out selections using the
-# keyboard. It moves the cursor to a new position, then extends
-# the selection to that position.
-#
-# Arguments:
-# w - The spinbox window.
-# new - A new position for the insertion cursor (the cursor hasn't
-# actually been moved to this position yet).
-
-proc ::tk::spinbox::KeySelect {w new} {
- if {![$w selection present]} {
- $w selection from insert
- $w selection to $new
- } else {
- $w selection adjust $new
- }
- $w icursor $new
-}
-
-# ::tk::spinbox::Insert --
-# Insert a string into an spinbox at the point of the insertion cursor.
-# If there is a selection in the spinbox, and it covers the point of the
-# insertion cursor, then delete the selection before inserting.
-#
-# Arguments:
-# w - The spinbox window in which to insert the string
-# s - The string to insert (usually just a single character)
-
-proc ::tk::spinbox::Insert {w s} {
- if {$s == ""} {
- return
- }
- catch {
- set insert [$w index insert]
- if {([$w index sel.first] <= $insert) \
- && ([$w index sel.last] >= $insert)} {
- $w delete sel.first sel.last
- }
- }
- $w insert insert $s
- ::tk::spinbox::SeeInsert $w
-}
-
-# ::tk::spinbox::Backspace --
-# Backspace over the character just before the insertion cursor.
-# If backspacing would move the cursor off the left edge of the
-# window, reposition the cursor at about the middle of the window.
-#
-# Arguments:
-# w - The spinbox window in which to backspace.
-
-proc ::tk::spinbox::Backspace w {
- if {[$w selection present]} {
- $w delete sel.first sel.last
- } else {
- set x [expr {[$w index insert] - 1}]
- if {$x >= 0} {$w delete $x}
- if {[$w index @0] >= [$w index insert]} {
- set range [$w xview]
- set left [lindex $range 0]
- set right [lindex $range 1]
- $w xview moveto [expr {$left - ($right - $left)/2.0}]
- }
- }
-}
-
-# ::tk::spinbox::SeeInsert --
-# Make sure that the insertion cursor is visible in the spinbox window.
-# If not, adjust the view so that it is.
-#
-# Arguments:
-# w - The spinbox window.
-
-proc ::tk::spinbox::SeeInsert w {
- set c [$w index insert]
- if {($c < [$w index @0]) || ($c > [$w index @[winfo width $w]])} {
- $w xview $c
- }
-}
-
-# ::tk::spinbox::SetCursor -
-# Move the insertion cursor to a given position in an spinbox. Also
-# clears the selection, if there is one in the spinbox, and makes sure
-# that the insertion cursor is visible.
-#
-# Arguments:
-# w - The spinbox window.
-# pos - The desired new position for the cursor in the window.
-
-proc ::tk::spinbox::SetCursor {w pos} {
- $w icursor $pos
- $w selection clear
- ::tk::spinbox::SeeInsert $w
-}
-
-# ::tk::spinbox::Transpose -
-# This procedure implements the "transpose" function for spinbox widgets.
-# It tranposes the characters on either side of the insertion cursor,
-# unless the cursor is at the end of the line. In this case it
-# transposes the two characters to the left of the cursor. In either
-# case, the cursor ends up to the right of the transposed characters.
-#
-# Arguments:
-# w - The spinbox window.
-
-proc ::tk::spinbox::Transpose w {
- set i [$w index insert]
- if {$i < [$w index end]} {
- incr i
- }
- set first [expr {$i-2}]
- if {$first < 0} {
- return
- }
- set data [$w get]
- set new [string index $data [expr {$i-1}]][string index $data $first]
- $w delete $first $i
- $w insert insert $new
- ::tk::spinbox::SeeInsert $w
-}
-
-# ::tk::spinbox::NextWord --
-# Returns the index of the next word position after a given position in the
-# spinbox. The next word is platform dependent and may be either the next
-# end-of-word position or the next start-of-word position after the next
-# end-of-word position.
-#
-# Arguments:
-# w - The spinbox window in which the cursor is to move.
-# start - Position at which to start search.
-
-if {[string equal $tcl_platform(platform) "windows"]} {
- proc ::tk::spinbox::NextWord {w start} {
- set pos [tcl_endOfWord [$w get] [$w index $start]]
- if {$pos >= 0} {
- set pos [tcl_startOfNextWord [$w get] $pos]
- }
- if {$pos < 0} {
- return end
- }
- return $pos
- }
-} else {
- proc ::tk::spinbox::NextWord {w start} {
- set pos [tcl_endOfWord [$w get] [$w index $start]]
- if {$pos < 0} {
- return end
- }
- return $pos
- }
-}
-
-# ::tk::spinbox::PreviousWord --
-#
-# Returns the index of the previous word position before a given
-# position in the spinbox.
-#
-# Arguments:
-# w - The spinbox window in which the cursor is to move.
-# start - Position at which to start search.
-
-proc ::tk::spinbox::PreviousWord {w start} {
- set pos [tcl_startOfPreviousWord [$w get] [$w index $start]]
- if {$pos < 0} {
- return 0
- }
- return $pos
-}
-
# ::tk::spinbox::GetSelection --
#
-# Returns the selected text of the spinbox.
+# Returns the selected text of the spinbox. Differs from entry in that
+# a spinbox has no -show option to obscure contents.
#
# Arguments:
# w - The spinbox window from which the text to get
diff --git a/library/text.tcl b/library/text.tcl
index a008b41..110f87e 100644
--- a/library/text.tcl
+++ b/library/text.tcl
@@ -3,7 +3,7 @@
# This file defines the default bindings for Tk text widgets and provides
# procedures that help in implementing the bindings.
#
-# RCS: @(#) $Id: text.tcl,v 1.17.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: text.tcl,v 1.17.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1997 Sun Microsystems, Inc.
@@ -204,6 +204,7 @@ bind Text <Control-i> {
}
bind Text <Return> {
tk::TextInsert %W \n
+ if {[%W cget -autoseparators]} {%W edit separator}
}
bind Text <Delete> {
if {[string compare [%W tag nextrange sel 1.0 end] ""]} {
@@ -255,7 +256,8 @@ bind Text <<Clear>> {
catch {%W delete sel.first sel.last}
}
bind Text <<PasteSelection>> {
- if {!$tk::Priv(mouseMoved) || $tk_strictMotif} {
+ if {$tk_strictMotif || ![info exists tk::Priv(mouseMoved)]
+ || !$tk::Priv(mouseMoved)} {
tk::TextPaste %W %x %y
}
}
@@ -339,6 +341,18 @@ bind Text <Control-t> {
}
}
+bind Text <<Undo>> {
+ if { ! [ catch { %W edit undo } ] } {
+ %W see insert
+ }
+}
+
+bind Text <<Redo>> {
+ if { ! [ catch { %W edit redo } ] } {
+ %W see insert
+ }
+}
+
if {[string compare $tcl_platform(platform) "windows"]} {
bind Text <Control-v> {
if {!$tk_strictMotif} {
@@ -436,20 +450,12 @@ bind Text <Control-h> {
}
bind Text <2> {
if {!$tk_strictMotif} {
- %W scan mark %x %y
- set tk::Priv(x) %x
- set tk::Priv(y) %y
- set tk::Priv(mouseMoved) 0
+ tk::TextScanMark %W %x %y
}
}
bind Text <B2-Motion> {
if {!$tk_strictMotif} {
- if {(%x != $tk::Priv(x)) || (%y != $tk::Priv(y))} {
- set tk::Priv(mouseMoved) 1
- }
- if {$tk::Priv(mouseMoved)} {
- %W scan dragto %x %y
- }
+ tk::TextScanDrag %W %x %y
}
}
set ::tk::Priv(prevPos) {}
@@ -519,7 +525,11 @@ proc ::tk::TextButton1 {w x y} {
set Priv(pressX) $x
$w mark set insert [TextClosestGap $w $x $y]
$w mark set anchor insert
- if {[string equal [$w cget -state] "normal"]} {focus $w}
+ # Allow focus in any case on Windows, because that will let the
+ # selection be displayed even for state disabled text widgets.
+ if {[string equal $::tcl_platform(platform) "windows"] \
+ || [string equal [$w cget -state] "normal"]} {focus $w}
+ if {[$w cget -autoseparators]} {$w edit separator}
}
# ::tk::TextSelectTo --
@@ -631,6 +641,18 @@ proc ::tk::TextKeyExtend {w index} {
proc ::tk::TextPaste {w x y} {
$w mark set insert [TextClosestGap $w $x $y]
catch {$w insert insert [::tk::GetSelection $w PRIMARY]}
+ catch {
+ set oldSeparator [$w cget -autoseparators]
+ if {$oldSeparator} {
+ $w configure -autoseparators 0
+ $w edit separator
+ }
+ $w insert insert [::tk::GetSelection $w PRIMARY]
+ if {$oldSeparator} {
+ $w edit separator
+ $w configure -autoseparators 1
+ }
+ }
if {[string equal [$w cget -state] "normal"]} {focus $w}
}
@@ -681,6 +703,7 @@ proc ::tk::TextSetCursor {w pos} {
$w mark set insert $pos
$w tag remove sel 1.0 end
$w see insert
+ if {[$w cget -autoseparators]} {$w edit separator}
}
# ::tk::TextKeySelect
@@ -788,14 +811,25 @@ proc ::tk::TextInsert {w s} {
if {[string equal $s ""] || [string equal [$w cget -state] "disabled"]} {
return
}
+ set compound 0
catch {
if {[$w compare sel.first <= insert] \
&& [$w compare sel.last >= insert]} {
+ set oldSeparator [$w cget -autoseparators]
+ if { $oldSeparator } {
+ $w configure -autoseparators 0
+ $w edit separator
+ set compound 1
+ }
$w delete sel.first sel.last
}
}
$w insert insert $s
$w see insert
+ if { $compound && $oldSeparator } {
+ $w edit separator
+ $w configure -autoseparators 1
+ }
}
# ::tk::TextUpDownLine --
@@ -969,12 +1003,19 @@ proc ::tk_textCut w {
proc ::tk_textPaste w {
global tcl_platform
catch {
+ set oldSeparator [$w cget -autoseparators]
+ if { $oldSeparator } {
+ $w configure -autoseparators 0
+ $w edit separator
+ }
if {[string compare $tcl_platform(windowingsystem) "x11"]} {
- catch {
- $w delete sel.first sel.last
- }
+ catch { $w delete sel.first sel.last }
}
$w insert insert [::tk::GetSelection $w CLIPBOARD]
+ if { $oldSeparator } {
+ $w edit separator
+ $w configure -autoseparators 1
+ }
}
}
@@ -1062,3 +1103,41 @@ proc ::tk::TextPrevPos {w start op} {
}
return 0.0
}
+
+# ::tk::TextScanMark --
+#
+# Marks the start of a possible scan drag operation
+#
+# Arguments:
+# w - The text window from which the text to get
+# x - x location on screen
+# y - y location on screen
+
+proc ::tk::TextScanMark {w x y} {
+ $w scan mark $x $y
+ set ::tk::Priv(x) $x
+ set ::tk::Priv(y) $y
+ set ::tk::Priv(mouseMoved) 0
+}
+
+# ::tk::TextScanDrag --
+#
+# Marks the start of a possible scan drag operation
+#
+# Arguments:
+# w - The text window from which the text to get
+# x - x location on screen
+# y - y location on screen
+
+proc ::tk::TextScanDrag {w x y} {
+ # Make sure these exist, as some weird situations can trigger the
+ # motion binding without the initial press. [Bug #220269]
+ if {![info exists ::tk::Priv(x)]} { set ::tk::Priv(x) $x }
+ if {![info exists ::tk::Priv(y)]} { set ::tk::Priv(y) $y }
+ if {($x != $::tk::Priv(x)) || ($y != $::tk::Priv(y))} {
+ set ::tk::Priv(mouseMoved) 1
+ }
+ if {[info exists ::tk::Priv(mouseMoved)] && $::tk::Priv(mouseMoved)} {
+ $w scan dragto $x $y
+ }
+}
diff --git a/library/tk.tcl b/library/tk.tcl
index 12adca6..e8154e8 100644
--- a/library/tk.tcl
+++ b/library/tk.tcl
@@ -3,7 +3,7 @@
# Initialization script normally executed in the interpreter for each
# Tk-based application. Arranges class bindings for widgets.
#
-# RCS: @(#) $Id: tk.tcl,v 1.31.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: tk.tcl,v 1.31.2.2 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1992-1994 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
@@ -262,6 +262,7 @@ proc ::tk::EventMotifBindings {n1 dummy dummy} {
event $op <<Cut>> <Control-Key-w>
event $op <<Copy>> <Meta-Key-w>
event $op <<Paste>> <Control-Key-y>
+ event $op <<Undo>> <Control-underscore>
}
#----------------------------------------------------------------------
@@ -313,6 +314,8 @@ switch $tcl_platform(windowingsystem) {
event add <<Copy>> <Control-Key-c> <Key-F16>
event add <<Paste>> <Control-Key-v> <Key-F18>
event add <<PasteSelection>> <ButtonRelease-2>
+ event add <<Undo>> <Control-Key-z>
+ event add <<Redo>> <Control-Key-Z>
# Some OS's define a goofy (as in, not <Shift-Tab>) keysym
# that is returned when the user presses <Shift-Tab>. In order for
# tab traversal to work, we have to add these keysyms to the
@@ -344,6 +347,8 @@ switch $tcl_platform(windowingsystem) {
event add <<Paste>> <Control-Key-v> <Key-F4>
event add <<PasteSelection>> <ButtonRelease-2>
event add <<Clear>> <Clear>
+ event add <<Undo>> <Control-Key-z>
+ event add <<Redo>> <Control-Key-y>
}
"classic" {
event add <<Cut>> <Control-Key-x> <Key-F2>
@@ -351,6 +356,8 @@ switch $tcl_platform(windowingsystem) {
event add <<Paste>> <Control-Key-v> <Key-F4>
event add <<PasteSelection>> <ButtonRelease-2>
event add <<Clear>> <Clear>
+ event add <<Undo>> <Control-Key-z> <Key-F1>
+ event add <<Redo>> <Control-Key-Z>
}
}
diff --git a/library/tkfbox.tcl b/library/tkfbox.tcl
index 7fce44e..280762d 100644
--- a/library/tkfbox.tcl
+++ b/library/tkfbox.tcl
@@ -11,7 +11,7 @@
# files by clicking on the file icons or by entering a filename
# in the "Filename:" entry.
#
-# RCS: @(#) $Id: tkfbox.tcl,v 1.31 2001/09/17 14:12:18 dkf Exp $
+# RCS: @(#) $Id: tkfbox.tcl,v 1.31.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
@@ -959,12 +959,10 @@ proc ::tk::dialog::file::Config {dataName type argList} {
# like "yes") so we can use it in tests more easily.
if {![string compare $type save]} {
set data(-multiple) 0
+ } elseif {$data(-multiple)} {
+ set data(-multiple) 1
} else {
- if {$data(-multiple)} {
- set data(-multiple) 1
- } else {
- set data(-multiple) 0
- }
+ set data(-multiple) 0
}
}
@@ -1365,6 +1363,29 @@ proc ::tk::dialog::file::SetFilter {w type} {
set data(filter) [lindex $type 1]
$data(typeMenuBtn) config -text [lindex $type 0] -indicatoron 1
+ # If we aren't using a default extension, use the one suppled
+ # by the filter.
+ if {![info exists data(extUsed)]} {
+ if {[string length $data(-defaultextension)]} {
+ set data(extUsed) 1
+ } else {
+ set data(extUsed) 0
+ }
+ }
+
+ if {!$data(extUsed)} {
+ # Get the first extension in the list that matches {^\*\.\w+$}
+ # and remove all * from the filter.
+ set index [lsearch -regexp $data(filter) {^\*\.\w+$}]
+ if {$index >= 0} {
+ set data(-defaultextension) \
+ [string trimleft [lindex $data(filter) $index] "*"]
+ } else {
+ # Couldn't find anything! Reset to a safe default...
+ set data(-defaultextension) ""
+ }
+ }
+
$icons(sbar) set 0.0 0.0
::tk::dialog::file::UpdateWhenIdle $w
diff --git a/library/xmfbox.tcl b/library/xmfbox.tcl
index 545c962..8a188b3 100644
--- a/library/xmfbox.tcl
+++ b/library/xmfbox.tcl
@@ -4,7 +4,7 @@
# Unix platform. This implementation is used only if the
# "::tk_strictMotif" flag is set.
#
-# RCS: @(#) $Id: xmfbox.tcl,v 1.17 2001/08/01 16:21:11 dgp Exp $
+# RCS: @(#) $Id: xmfbox.tcl,v 1.17.2.1 2002/02/05 02:25:16 wolfsuit Exp $
#
# Copyright (c) 1996 Sun Microsystems, Inc.
# Copyright (c) 1998-2000 Scriptics Corporation
@@ -518,7 +518,8 @@ proc ::tk::MotifFDialog_Update {w} {
upvar ::tk::dialog::file::[winfo name $w] data
$data(fEnt) delete 0 end
- $data(fEnt) insert 0 [::tk::dialog::file::JoinFile $data(selectPath) $data(filter)]
+ $data(fEnt) insert 0 \
+ [::tk::dialog::file::JoinFile $data(selectPath) $data(filter)]
$data(sEnt) delete 0 end
$data(sEnt) insert 0 [::tk::dialog::file::JoinFile $data(selectPath) \
$data(selectFile)]
@@ -566,16 +567,19 @@ proc ::tk::MotifFDialog_LoadFiles {w} {
if {[file isdir ./$f]} {
lappend dlist $f
} else {
- if {[string match $data(filter) $f]} {
+ foreach pat $data(filter) {
+ if {[string match $pat $f]} {
if {[string match .* $f]} {
incr top
}
lappend flist $f
+ break
}
+ }
}
}
- eval $data(dList) insert end [lsort -dictionary $dlist]
- eval $data(fList) insert end [lsort -dictionary $flist]
+ eval [list $data(dList) insert end] [lsort -dictionary $dlist]
+ eval [list $data(fList) insert end] [lsort -dictionary $flist]
# The user probably doesn't want to see the . files. We adjust the view
# so that the listbox displays all the non-dot files
diff --git a/mac/MW_TkBuildLibHeader.h b/mac/MW_TkBuildLibHeader.h
new file mode 100644
index 0000000..cbca0c2
--- /dev/null
+++ b/mac/MW_TkBuildLibHeader.h
@@ -0,0 +1,7 @@
+#if __POWERPC__
+#include "MW_TkBuildLibHeaderPPC"
+#elif __CFM68K__
+#include "MW_TkBuildLibHeaderCFM68K"
+#else
+#include "MW_TkBuildLibHeader68K"
+#endif
diff --git a/mac/MW_TkBuildLibHeader.pch b/mac/MW_TkBuildLibHeader.pch
new file mode 100644
index 0000000..727d7b9
--- /dev/null
+++ b/mac/MW_TkBuildLibHeader.pch
@@ -0,0 +1,36 @@
+/*
+ * MW_TkBuildLibHeader.pch --
+ *
+ * This file is the source for a pre-compilied header that gets used
+ * for all files in the Tk projects. This make compilies go a bit
+ * faster. This file is only intended to be used in the MetroWerks
+ * CodeWarrior environment. It essentially acts as a place to set
+ * compiler flags. See MetroWerks documention for more details.
+ *
+ * Copyright (c) 1995-1997 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id$
+ */
+
+/*
+ * To use the compilied header you need to set the "Prefix file" in
+ * the "C/C++ Language" preference panel to point to the created
+ * compilied header. The name of the header depends on the
+ * architecture we are compiling for (see the code below). For
+ * example, for a 68k app the prefix file should be: MW_TclHeader68K.
+ */
+
+#if __POWERPC__
+#pragma precompile_target "MW_TkBuildLibHeaderPPC"
+#elif __CFM68K__
+#pragma precompile_target "MW_TkBuildLibHeaderCFM68K"
+#else
+#pragma precompile_target "MW_TkBuildLibHeader68K"
+#endif
+
+#define BUILD_tk 1
+
+#include "MW_TkHeaderCommon.h"
diff --git a/mac/MW_TkHeader.pch b/mac/MW_TkHeader.pch
index f5dcc1d..d22c200 100644
--- a/mac/MW_TkHeader.pch
+++ b/mac/MW_TkHeader.pch
@@ -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: MW_TkHeader.pch,v 1.3 1998/11/11 17:28:50 jingham Exp $
+ * RCS: @(#) $Id: MW_TkHeader.pch,v 1.3.24.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
/*
@@ -31,29 +31,4 @@
#pragma precompile_target "MW_TkHeader68K"
#endif
-#include "tclMacCommonPch.h"
-
-#ifdef TCL_DEBUG
- #define TK_TEST
-#endif
-
-/*
- * The following defines are for the Xlib.h file to force
- * it to generate prototypes in the way we need it. This is
- * defined here in case X.h & company are ever included before
- * tk.h.
- */
-
-#define NeedFunctionPrototypes 1
-#define NeedWidePrototypes 0
-
-/*
- * Place any includes below that will are needed by the majority of the
- * and is OK to be in any file in the system.
- */
-
-#include <tcl.h>
-#pragma export on
-#include "tk.h"
-#include "tkInt.h"
-#pragma export off
+#include "MW_TkHeaderCommon.h"
diff --git a/mac/MW_TkHeaderCommon.h b/mac/MW_TkHeaderCommon.h
new file mode 100644
index 0000000..ab43eb5
--- /dev/null
+++ b/mac/MW_TkHeaderCommon.h
@@ -0,0 +1,40 @@
+/*
+ * MW_TkHeaderCommon.h --
+ *
+ * Common includes for precompiled headers
+ *
+ * Copyright (c) 1998 by Scriptics Corporation.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id$
+ */
+
+#pragma once
+
+#include "tclMacCommonPch.h"
+
+#ifdef TCL_DEBUG
+ #define TK_TEST
+#endif
+
+/*
+ * The following defines are for the Xlib.h file to force
+ * it to generate prototypes in the way we need it. This is
+ * defined here in case X.h & company are ever included before
+ * tk.h.
+ */
+
+#define NeedFunctionPrototypes 1
+#define NeedWidePrototypes 0
+
+/*
+ * Place any includes below that will are needed by the majority of the
+ * and is OK to be in any file in the system.
+ */
+
+#include "tcl.h"
+
+#include "tk.h"
+#include "tkInt.h"
diff --git a/mac/MW_TkOldImgHeader.h b/mac/MW_TkOldImgHeader.h
index d0b3194..309ca20 100755
--- a/mac/MW_TkOldImgHeader.h
+++ b/mac/MW_TkOldImgHeader.h
@@ -1,3 +1,3 @@
#define USE_OLD_IMAGE
-#include "MW_TkHeader.pch"
+#include "MW_TkBuildLibHeader.pch"
diff --git a/mac/MW_TkOldImgStaticHeader.h b/mac/MW_TkOldImgStaticHeader.h
new file mode 100644
index 0000000..967b763
--- /dev/null
+++ b/mac/MW_TkOldImgStaticHeader.h
@@ -0,0 +1,3 @@
+#define USE_OLD_IMAGE
+
+#include "MW_TkStaticHeader.pch"
diff --git a/mac/MW_TkStaticHeader.h b/mac/MW_TkStaticHeader.h
new file mode 100644
index 0000000..b381c22
--- /dev/null
+++ b/mac/MW_TkStaticHeader.h
@@ -0,0 +1,7 @@
+#if __POWERPC__
+#include "MW_TkStaticHeaderPPC"
+#elif __CFM68K__
+#include "MW_TkStaticHeaderCFM68K"
+#else
+#include "MW_TkStaticHeader68K"
+#endif
diff --git a/mac/MW_TkStaticHeader.pch b/mac/MW_TkStaticHeader.pch
new file mode 100644
index 0000000..e6f7494
--- /dev/null
+++ b/mac/MW_TkStaticHeader.pch
@@ -0,0 +1,36 @@
+/*
+ * MW_TkStaticHeader.pch --
+ *
+ * This file is the source for a pre-compilied header that gets used
+ * for all files in the Tk projects. This make compilies go a bit
+ * faster. This file is only intended to be used in the MetroWerks
+ * CodeWarrior environment. It essentially acts as a place to set
+ * compiler flags. See MetroWerks documention for more details.
+ *
+ * Copyright (c) 1995-1997 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * RCS: @(#) $Id$
+ */
+
+/*
+ * To use the compilied header you need to set the "Prefix file" in
+ * the "C/C++ Language" preference panel to point to the created
+ * compilied header. The name of the header depends on the
+ * architecture we are compiling for (see the code below). For
+ * example, for a 68k app the prefix file should be: MW_TclHeader68K.
+ */
+
+#if __POWERPC__
+#pragma precompile_target "MW_TkStaticHeaderPPC"
+#elif __CFM68K__
+#pragma precompile_target "MW_TkStaticHeaderCFM68K"
+#else
+#pragma precompile_target "MW_TkStaticHeader68K"
+#endif
+
+#define STATIC_BUILD 1
+
+#include "MW_TkHeaderCommon.h"
diff --git a/mac/MW_TkTestHeader.pch b/mac/MW_TkTestHeader.pch
index 5d24749..d122485 100755
--- a/mac/MW_TkTestHeader.pch
+++ b/mac/MW_TkTestHeader.pch
@@ -1,5 +1,5 @@
/*
- * MW_TkHeader.pch --
+ * MW_TkTestHeader.pch --
*
* This file is the source for a pre-compilied header that gets used
* for all files in the Tk projects. This make compilies go a bit
@@ -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: MW_TkTestHeader.pch,v 1.1 2000/02/10 08:45:30 jingham Exp $
+ * RCS: @(#) $Id: MW_TkTestHeader.pch,v 1.1.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
/*
@@ -31,33 +31,12 @@
#pragma precompile_target "MW_TkTestHeader68K"
#endif
-#define TCL_DEBUG 1
-
-/*#define TCL_THREADS 1*/
-
-#include "tclMacCommonPch.h"
-
-#ifdef TCL_DEBUG
- #define TK_TEST
-#endif
+#define BUILD_tk 1
-/*
- * The following defines are for the Xlib.h file to force
- * it to generate prototypes in the way we need it. This is
- * defined here in case X.h & company are ever included before
- * tk.h.
- */
+#define STATIC_BUILD 1
-#define NeedFunctionPrototypes 1
-#define NeedWidePrototypes 0
+#define TCL_DEBUG 1
-/*
- * Place any includes below that will are needed by the majority of the
- * and is OK to be in any file in the system.
- */
+#define TCL_THREADS 1
-#include <tcl.h>
-#pragma export on
-#include "tk.h"
-#include "tkInt.h"
-#pragma export off
+#include "MW_TkHeaderCommon.h"
diff --git a/mac/tclets.r b/mac/tclets.r
index ce68db4..e4553ae 100755
--- a/mac/tclets.r
+++ b/mac/tclets.r
@@ -25,148 +25,148 @@ read 'TEXT' (TK_LIBRARY_RESOURCES+114, "tclshrc", purgeable)
"::mac:tclets.tcl";
data 'icns' (-16455) {
- $"6963 6E73 0000 08F8 6963 7323 0000 0048" /* icns...øics#...H */
- $"0100 02EE 05CE 09EE 13DE 23FF 47CE 86C6" /* ...î.ÎÆî.Þ#ÿG렮 */
- $"4681 22C2 12C4 0888 0410 0220 0140 0080" /* F"Â.Ä.ˆ... .@.€ */
- $"0100 03EE 07CE 0FEE 1FFE 3FFF 7FFE FFFE" /* ...î.Î.î.þ?ÿ.þÿþ */
- $"7FFF 3FFE 1FFC 0FF8 07F0 03E0 01C0 0080" /* .ÿ?þ.ü.ø.ð.à.À.€ */
- $"6963 7334 0000 0088 0000 000F 0000 0000" /* ics4...ˆ........ */
- $"0000 00FC F6D0 FFF0 0000 0FC5 DD00 F6F0" /* ...üöÐÿð...ÅÝ.öð */
- $"0000 FCCD 66F0 F6F0 000F CC6E 66CE F6F0" /* ..üÍfðöð..ÌnfÎöð */
- $"00FC CC6E 67EF F6FF 0FCC CD66 66CC F6F0" /* .üÌngïöÿ.ÌÍffÌöð */
- $"FCCC CDDC 66CC CFA0 0FCC CD6C EDCC CC0F" /* üÌÍÜfÌÏ .ÌÍlíÌÌ. */
- $"00FC CC6C E6CC CCF0 000F CC6C 66CC CF00" /* .üÌlæÌÌð..ÌlfÌÏ. */
- $"0000 FCCC 6CCC F000 0000 0FCC DCCF 0000" /* ..üÌlÌð....ÌÜÏ.. */
- $"0000 00FD DCF0 0000 0000 000F CF00 0000" /* ...ýÜð......Ï... */
- $"0000 0000 F000 0000 6963 7338 0000 0108" /* ....ð...ics8.... */
- $"0000 0000 0000 00FF 0000 0000 0000 0000" /* .......ÿ........ */
- $"0000 0000 0000 FF2B FFEC 7F00 FFFF FF00" /* ......ÿ+ÿì..ÿÿÿ. */
- $"0000 0000 00FF 2BB0 7F7F 0000 FFEC FF00" /* .....ÿ+°....ÿìÿ. */
- $"0000 0000 FF2B 2B7F ECEC FF00 FFEC FF00" /* ....ÿ++.ììÿ.ÿìÿ. */
- $"0000 00FF 2B2B ECFC ECEC 2BFB FFEC FF00" /* ...ÿ++ìüìì+ûÿìÿ. */
- $"0000 FF2B 2B2B ECFC ECC0 FBFF FFEC FFFF" /* ..ÿ+++ìüìÀûÿÿìÿÿ */
- $"00FF 2B2B 2B7F ECEC ECEC 2B2B FFEC FF00" /* .ÿ+++.ìììì++ÿìÿ. */
- $"FF2B 2B2B 2B7F 7FF6 ECEC 2B2B 2BFF FD00" /* ÿ++++..öìì+++ÿý. */
- $"00FF 2B2B 2B7F ECF6 FCF9 2B2B 2B2B 00FF" /* .ÿ+++.ìöüù++++.ÿ */
- $"0000 FF2B 2B2B ECF6 FCEC 2B2B 2B2B FF00" /* ..ÿ+++ìöüì++++ÿ. */
- $"0000 00FF 2B2B ECF6 ECEC 2B2B 2BFF 0000" /* ...ÿ++ìöìì+++ÿ.. */
- $"0000 0000 FF2B 2BF6 EC2B 2B2B FF00 0000" /* ....ÿ++öì+++ÿ... */
- $"0000 0000 00FF 2BF6 F92B 2BFF 0000 0000" /* .....ÿ+öù++ÿ.... */
- $"0000 0000 0000 FFF9 F92B FF00 0000 0000" /* ......ÿùù+ÿ..... */
- $"0000 0000 0000 00FF 2BFF 0000 0000 0000" /* .......ÿ+ÿ...... */
- $"0000 0000 0000 0000 FF00 0000 0000 0000" /* ........ÿ....... */
- $"4943 4E23 0000 0108 0001 0000 0002 8000" /* ICN#..........€. */
- $"0004 78F8 0008 70F8 0010 F0F8 0021 E8F8" /* ..xø..pø..ðø.!èø */
- $"0043 C4F8 0081 FAF8 0107 F1F8 0207 F0F8" /* .CÄø.úø..ñø..ðø */
- $"0407 F7FF 0807 E3FE 1007 E1FC 200E E0F8" /* ..÷ÿ..ãþ..áü .àø */
- $"4002 E074 800E E022 400E E001 200E C002" /* @.àt€.à"@.à. .À. */
- $"1006 E004 0806 C008 0406 E010 0202 C020" /* ..à...À...à...À */
- $"0102 C040 0080 8080 0040 0100 0020 0200" /* ..À@.€€€.@... .. */
+ $"6963 6E73 0000 08F8 6963 7323 0000 0048" /* icns...¯ics#...H */
+ $"0100 02EE 05CE 09EE 13DE 23FF 47CE 86C6" /* ...Ó.‘Ó.Þ#G‘Ü */
+ $"4681 22C2 12C4 0888 0410 0220 0140 0080" /* FÅ"¬.Ÿ.à... .@.Ä */
+ $"0100 03EE 07CE 0FEE 1FFE 3FFF 7FFE FFFE" /* ...Ó.‘.Ó.œ?.œœ */
+ $"7FFF 3FFE 1FFC 0FF8 07F0 03E0 01C0 0080" /* .?œ.¸.¯.•.ý.¿.Ä */
+ $"6963 7334 0000 0088 0000 000F 0000 0000" /* ics4...à........ */
+ $"0000 00FC F6D0 FFF0 0000 0FC5 DD00 F6F0" /* ...¸–­•...‰ð.–• */
+ $"0000 FCCD 66F0 F6F0 000F CC6E 66CE F6F0" /* ..¸Õf•–•..Ãnf‘–• */
+ $"00FC CC6E 67EF F6FF 0FCC CD66 66CC F6F0" /* .¸ÃngÔ–.ÃÕffÖ• */
+ $"FCCC CDDC 66CC CFA0 0FCC CD6C EDCC CC0F" /* ¸ÃÕÐfæÝ.ÃÕlÌÃÃ. */
+ $"00FC CC6C E6CC CCF0 000F CC6C 66CC CF00" /* .¸ÃlÊÃÕ..Ãlfæ. */
+ $"0000 FCCC 6CCC F000 0000 0FCC DCCF 0000" /* ..¸ÃlÕ....ÃЦ.. */
+ $"0000 00FD DCF0 0000 0000 000F CF00 0000" /* ...›Ð•......¦... */
+ $"0000 0000 F000 0000 6963 7338 0000 0108" /* ....•...ics8.... */
+ $"0000 0000 0000 00FF 0000 0000 0000 0000" /* ............... */
+ $"0000 0000 0000 FF2B FFEC 7F00 FFFF FF00" /* ......+Ï... */
+ $"0000 0000 00FF 2BB0 7F7F 0000 FFEC FF00" /* .....+ƒ....Ï. */
+ $"0000 0000 FF2B 2B7F ECEC FF00 FFEC FF00" /* ....++.ÏÏ.Ï. */
+ $"0000 00FF 2B2B ECFC ECEC 2BFB FFEC FF00" /* ...++ϸÏÏ+šÏ. */
+ $"0000 FF2B 2B2B ECFC ECC0 FBFF FFEC FFFF" /* ..+++ϸϿšÏ */
+ $"00FF 2B2B 2B7F ECEC ECEC 2B2B FFEC FF00" /* .+++.ÏÏÏÏ++Ï. */
+ $"FF2B 2B2B 2B7F 7FF6 ECEC 2B2B 2BFF FD00" /* ++++..–ÏÏ+++›. */
+ $"00FF 2B2B 2B7F ECF6 FCF9 2B2B 2B2B 00FF" /* .+++.Ï–¸˜++++. */
+ $"0000 FF2B 2B2B ECF6 FCEC 2B2B 2B2B FF00" /* ..+++Ï–¸Ï++++. */
+ $"0000 00FF 2B2B ECF6 ECEC 2B2B 2BFF 0000" /* ...++Ï–ÏÏ+++.. */
+ $"0000 0000 FF2B 2BF6 EC2B 2B2B FF00 0000" /* ....++–Ï+++... */
+ $"0000 0000 00FF 2BF6 F92B 2BFF 0000 0000" /* .....+–˜++.... */
+ $"0000 0000 0000 FFF9 F92B FF00 0000 0000" /* ......˜˜+..... */
+ $"0000 0000 0000 00FF 2BFF 0000 0000 0000" /* .......+...... */
+ $"0000 0000 0000 0000 FF00 0000 0000 0000" /* ............... */
+ $"4943 4E23 0000 0108 0001 0000 0002 8000" /* ICN#..........Ä. */
+ $"0004 78F8 0008 70F8 0010 F0F8 0021 E8F8" /* ..x¯..p¯..•¯.!˯ */
+ $"0043 C4F8 0081 FAF8 0107 F1F8 0207 F0F8" /* .CŸ¯.Å™¯..Ò¯..•¯ */
+ $"0407 F7FF 0807 E3FE 1007 E1FC 200E E0F8" /* ..—..“œ..·¸ .ý¯ */
+ $"4002 E074 800E E022 400E E001 200E C002" /* @.ýtÄ.ý"@.ý. .¿. */
+ $"1006 E004 0806 C008 0406 E010 0202 C020" /* ..ý...¿...ý...¿ */
+ $"0102 C040 0080 8080 0040 0100 0020 0200" /* ..¿@.ÄÄÄ.@... .. */
$"0010 0400 0008 0800 0004 1000 0002 2000" /* .............. . */
- $"0001 4000 0000 8000 0001 0000 0003 8000" /* ..@...€.......€. */
- $"0007 F8F8 000F F0F8 001F F0F8 003F F8F8" /* ..øø..ðø..ðø.?øø */
- $"007F FCF8 00FF FEF8 01FF FFF8 03FF FFF8" /* ..üø.ÿþø.ÿÿø.ÿÿø */
- $"07FF FFFF 0FFF FFFE 1FFF FFFC 3FFF FFF8" /* .ÿÿÿ.ÿÿþ.ÿÿü?ÿÿø */
- $"7FFF FFFC FFFF FFFE 7FFF FFFF 3FFF FFFE" /* .ÿÿüÿÿÿþ.ÿÿÿ?ÿÿþ */
- $"1FFF FFFC 0FFF FFF8 07FF FFF0 03FF FFE0" /* .ÿÿü.ÿÿø.ÿÿð.ÿÿà */
- $"01FF FFC0 00FF FF80 007F FF00 003F FE00" /* .ÿÿÀ.ÿÿ€..ÿ..?þ. */
- $"001F FC00 000F F800 0007 F000 0003 E000" /* ..ü...ø...ð...à. */
- $"0001 C000 0000 8000 6963 6C34 0000 0208" /* ..À...€.icl4.... */
+ $"0001 4000 0000 8000 0001 0000 0003 8000" /* ..@...Ä.......Ä. */
+ $"0007 F8F8 000F F0F8 001F F0F8 003F F8F8" /* ..¯¯..•¯..•¯.?¯¯ */
+ $"007F FCF8 00FF FEF8 01FF FFF8 03FF FFF8" /* ..¸¯.œ¯.¯.¯ */
+ $"07FF FFFF 0FFF FFFE 1FFF FFFC 3FFF FFF8" /* ..œ.¸?¯ */
+ $"7FFF FFFC FFFF FFFE 7FFF FFFF 3FFF FFFE" /* .¸œ.?œ */
+ $"1FFF FFFC 0FFF FFF8 07FF FFF0 03FF FFE0" /* .¸.¯.•.ý */
+ $"01FF FFC0 00FF FF80 007F FF00 003F FE00" /* .¿.Ä....?œ. */
+ $"001F FC00 000F F800 0007 F000 0003 E000" /* ..¸...¯...•...ý. */
+ $"0001 C000 0000 8000 6963 6C34 0000 0208" /* ..¿...Ä.icl4.... */
$"0000 0000 0000 000F 0000 0000 0000 0000" /* ................ */
- $"0000 0000 0000 00FC F000 0000 0000 0000" /* .......üð....... */
- $"0000 0000 0000 0FCC CFD6 D000 FFFF F000" /* .......ÌÏÖÐ.ÿÿð. */
- $"0000 0000 0000 FCCC C556 0000 F767 F000" /* ......üÌÅV..÷gð. */
- $"0000 0000 000F CCCC 566F 0000 F676 F000" /* ......ÌÌVo..övð. */
- $"0000 0000 00FC CCC5 6F5C F000 F767 F000" /* .....üÌÅo\ð.÷gð. */
- $"0000 0000 0FCC CC66 66CC 0F00 F676 F000" /* .....ÌÌffÌ..övð. */
- $"0000 0000 FCCC CCD5 5666 FCF0 F767 F000" /* ....üÌÌÕVfüð÷gð. */
- $"0000 000F CCCC C656 5667 CCCF F676 F000" /* ....ÌÌÆVVgÌÏövð. */
- $"0000 00FC CCCC C6E5 5566 CCCC F767 F000" /* ...üÌÌÆåUfÌÌ÷gð. */
- $"0000 0FCC CCCC C656 5657 CFFF F676 FFFF" /* ...ÌÌÌÆVVWÏÿövÿÿ */
- $"0000 FCCC CCCC C6E5 565C CCF7 6767 67F0" /* ..üÌÌÌÆåV\Ì÷gggð */
- $"000F CCCC CCCC C655 565C CCCF 7676 7F00" /* ..ÌÌÌÌÆUV\ÌÏvv.. */
- $"00FC CCCC CCCC 7660 556C CCCC F767 F000" /* .üÌÌÌÌv`UlÌÌ÷gð. */
- $"0FCC CCCC CCCC CD5D 567C CCCC CF7F CF00" /* .ÌÌÌÌÌÍ]V|ÌÌÏ.Ï. */
- $"FCCC CCCC CCCC 6660 556C CCCC CCFC CCF0" /* üÌÌÌÌÌf`UlÌÌÌüÌð */
- $"0FCC CCCC CCCC 665C 565C CCCC CCCC CCCF" /* .ÌÌÌÌÌf\V\ÌÌÌÌÌÏ */
- $"00FC CCCC CCCC 6660 E6DC CCCC CCCC CCF0" /* .üÌÌÌÌf`æÜÌÌÌÌÌð */
- $"000F CCCC CCCC C650 656C CCCC CCCC CF00" /* ..ÌÌÌÌÆPelÌÌÌÌÏ. */
- $"0000 FCCC CCCC C6EC 5ECC CCCC CCCC F000" /* ..üÌÌÌÆì^ÌÌÌÌÌð. */
- $"0000 0FCC CCCC C650 566C CCCC CCCF 0000" /* ...ÌÌÌÆPVlÌÌÌÏ.. */
- $"0000 00FC CCCC CC50 D5CC CCCC CCF0 0000" /* ...üÌÌÌPÕÌÌÌÌð.. */
- $"0000 000F CCCC CC50 56CC CCCC CF00 0000" /* ....ÌÌÌPVÌÌÌÏ... */
- $"0000 0000 FCCC CCD0 5CCC CCCC F000 0000" /* ....üÌÌÐ\ÌÌÌð... */
- $"0000 0000 0FCC CCD0 DCCC CCCF 0000 0000" /* .....ÌÌÐÜÌÌÏ.... */
- $"0000 0000 00FC CCD0 DCCC CCF0 0000 0000" /* .....üÌÐÜÌÌð.... */
- $"0000 0000 000F CCD0 DCCC CF00 0000 0000" /* ......ÌÐÜÌÏ..... */
- $"0000 0000 0000 FCC0 CCCC F000 0000 0000" /* ......üÀÌÌð..... */
- $"0000 0000 0000 0FCD CCCF 0000 0000 0000" /* .......ÍÌÏ...... */
- $"0000 0000 0000 00FC CCF0 0000 0000 0000" /* .......üÌð...... */
- $"0000 0000 0000 000F CF00 0000 0000 0000" /* ........Ï....... */
- $"0000 0000 0000 0000 F000 0000 0000 0000" /* ........ð....... */
+ $"0000 0000 0000 00FC F000 0000 0000 0000" /* .......¸•....... */
+ $"0000 0000 0000 0FCC CFD6 D000 FFFF F000" /* .......æ÷­.•. */
+ $"0000 0000 0000 FCCC C556 0000 F767 F000" /* ......¸Ã‰V..—g•. */
+ $"0000 0000 000F CCCC 566F 0000 F676 F000" /* ......ÃÃVo..–v•. */
+ $"0000 0000 00FC CCC5 6F5C F000 F767 F000" /* .....¸Ã‰o\•.—g•. */
+ $"0000 0000 0FCC CC66 66CC 0F00 F676 F000" /* .....ÃÃffÃ..–v•. */
+ $"0000 0000 FCCC CCD5 5666 FCF0 F767 F000" /* ....¸ÃùVf¸•—g•. */
+ $"0000 000F CCCC C656 5667 CCCF F676 F000" /* ....ÃÃVVgæ–v•. */
+ $"0000 00FC CCCC C6E5 5566 CCCC F767 F000" /* ...¸ÃÃÂUfÃ×g•. */
+ $"0000 0FCC CCCC C656 5657 CFFF F676 FFFF" /* ...ÃÃÃVVW¦–v */
+ $"0000 FCCC CCCC C6E5 565C CCF7 6767 67F0" /* ..¸ÃÃÃÂV\×ggg• */
+ $"000F CCCC CCCC C655 565C CCCF 7676 7F00" /* ..ÃÃÃÃUV\ævv.. */
+ $"00FC CCCC CCCC 7660 556C CCCC F767 F000" /* .¸ÃÃÃÃv`UlÃ×g•. */
+ $"0FCC CCCC CCCC CD5D 567C CCCC CF7F CF00" /* .ÃÃÃÃÃÕ]V|Ãæ.¦. */
+ $"FCCC CCCC CCCC 6660 556C CCCC CCFC CCF0" /* ¸ÃÃÃÃÃf`UlÃÃøÕ */
+ $"0FCC CCCC CCCC 665C 565C CCCC CCCC CCCF" /* .ÃÃÃÃÃf\V\ÃÃÃÃæ */
+ $"00FC CCCC CCCC 6660 E6DC CCCC CCCC CCF0" /* .¸ÃÃÃÃf`ÊÐÃÃÃÃÕ */
+ $"000F CCCC CCCC C650 656C CCCC CCCC CF00" /* ..ÃÃÃÃPelÃÃÃæ. */
+ $"0000 FCCC CCCC C6EC 5ECC CCCC CCCC F000" /* ..¸ÃÃÃÏ^ÃÃÃÃÕ. */
+ $"0000 0FCC CCCC C650 566C CCCC CCCF 0000" /* ...ÃÃÃPVlÃÃæ.. */
+ $"0000 00FC CCCC CC50 D5CC CCCC CCF0 0000" /* ...¸ÃÃÃP¹ÃÃÃÕ.. */
+ $"0000 000F CCCC CC50 56CC CCCC CF00 0000" /* ....ÃÃÃPVÃÃæ... */
+ $"0000 0000 FCCC CCD0 5CCC CCCC F000 0000" /* ....¸Ãí\ÃÃÕ... */
+ $"0000 0000 0FCC CCD0 DCCC CCCF 0000 0000" /* .....ÃíÐÃæ.... */
+ $"0000 0000 00FC CCD0 DCCC CCF0 0000 0000" /* .....¸Ã­ÐÃÕ.... */
+ $"0000 0000 000F CCD0 DCCC CF00 0000 0000" /* ......íÐæ..... */
+ $"0000 0000 0000 FCC0 CCCC F000 0000 0000" /* ......¸¿ÃÕ..... */
+ $"0000 0000 0000 0FCD CCCF 0000 0000 0000" /* .......Õæ...... */
+ $"0000 0000 0000 00FC CCF0 0000 0000 0000" /* .......¸Ã•...... */
+ $"0000 0000 0000 000F CF00 0000 0000 0000" /* ........¦....... */
+ $"0000 0000 0000 0000 F000 0000 0000 0000" /* ........•....... */
$"6963 6C38 0000 0408 0000 0000 0000 0000" /* icl8............ */
- $"0000 0000 0000 00FF 0000 0000 0000 0000" /* .......ÿ........ */
+ $"0000 0000 0000 00FF 0000 0000 0000 0000" /* ............... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 0000 FF2B FF00 0000 0000 0000" /* ......ÿ+ÿ....... */
+ $"0000 0000 0000 FF2B FF00 0000 0000 0000" /* ......+....... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 00FF 2B2B 2BFF 7FEC 7F00 0000" /* .....ÿ+++ÿ.ì.... */
- $"FFFF FFFF FF00 0000 0000 0000 0000 0000" /* ÿÿÿÿÿ........... */
- $"0000 0000 FF2B 2B2B 2BB0 B0EC 0000 0000" /* ....ÿ++++°°ì.... */
- $"FFC0 ECC0 FF00 0000 0000 0000 0000 0000" /* ÿÀìÀÿ........... */
- $"0000 00FF 2B2B 2B2B B0EC ECFF 0000 0000" /* ...ÿ++++°ììÿ.... */
- $"FFEC C0EC FF00 0000 0000 0000 0000 0000" /* ÿìÀìÿ........... */
- $"0000 FF2B 2B2B 2BB0 ECFF B02B FF00 0000" /* ..ÿ++++°ìÿ°+ÿ... */
- $"FFC0 ECC0 FF00 0000 0000 0000 0000 0000" /* ÿÀìÀÿ........... */
- $"00FF 2B2B 2B2B ECEC ECEC 2B2B 00FF 0000" /* .ÿ++++ìììì++.ÿ.. */
- $"FFEC C0EC FF00 0000 0000 0000 0000 0000" /* ÿìÀìÿ........... */
- $"FF2B 2B2B 2B2B F9B0 B0EC ECEC FF2B FF00" /* ÿ+++++ù°°ìììÿ+ÿ. */
- $"FFC0 ECC0 FF00 0000 0000 0000 0000 00FF" /* ÿÀìÀÿ..........ÿ */
- $"2B2B 2B2B 2BEC B0EC B0EC ECC0 2B2B 2BFF" /* +++++ì°ì°ììÀ+++ÿ */
- $"FFEC C0EC FF00 0000 0000 0000 0000 FF2B" /* ÿìÀìÿ.........ÿ+ */
- $"2B2B 2B2B 2BEC FCB0 B0B0 ECEC 2B2B 2B2B" /* +++++ìü°°°ìì++++ */
- $"FFC0 ECC0 FF00 0000 0000 0000 00FF 2B2B" /* ÿÀìÀÿ........ÿ++ */
- $"2B2B 2B2B 2BEC B0EC B0EC B0C0 2BFF FFFF" /* +++++ì°ì°ì°À+ÿÿÿ */
- $"FFEC C0EC FFFF FFFF 0000 0000 FF2B 2B2B" /* ÿìÀìÿÿÿÿ....ÿ+++ */
- $"2B2B 2B2B 2BEC FCB0 B0EC B02B 2B2B FFC0" /* +++++ìü°°ì°+++ÿÀ */
- $"ECC0 ECC0 ECC0 FF00 0000 00FF 2B2B 2B2B" /* ìÀìÀìÀÿ....ÿ++++ */
- $"2B2B 2B2B 2BEC B0B0 B0EC B02B 2B2B 2BFF" /* +++++ì°°°ì°++++ÿ */
- $"C0EC C0EC C0FF 0000 0000 FF2B 2B2B 2B2B" /* ÀìÀìÀÿ....ÿ+++++ */
- $"2B2B 2B2B C0EC EC00 B0B0 EC2B 2B2B 2B2B" /* ++++Àìì.°°ì+++++ */
- $"FFC0 ECC0 FF00 0000 00FF 2B2B 2B2B 2B2B" /* ÿÀìÀÿ....ÿ++++++ */
- $"2B2B 2B2B 2BF9 B0F9 B0EC C02B 2B2B 2B2B" /* +++++ù°ù°ìÀ+++++ */
- $"2BFF C0FF 2BFF 0000 FF2B 2B2B 2B2B 2B2B" /* +ÿÀÿ+ÿ..ÿ+++++++ */
- $"2B2B 2B2B ECEC EC00 B0B0 EC2B 2B2B 2B2B" /* ++++ììì.°°ì+++++ */
- $"2B2B FF2B 2B2B FF00 00FF 2B2B 2B2B 2B2B" /* ++ÿ+++ÿ..ÿ++++++ */
- $"2B2B 2B2B ECEC B02B B0EC B02B 2B2B 2B2B" /* ++++ìì°+°ì°+++++ */
- $"2B2B 2B2B 2B2B 2BFF 0000 FF2B 2B2B 2B2B" /* +++++++ÿ..ÿ+++++ */
- $"2B2B 2B2B ECEC EC00 FCEC F92B 2B2B 2B2B" /* ++++ììì.üìù+++++ */
- $"2B2B 2B2B 2B2B FF00 0000 00FF 2B2B 2B2B" /* ++++++ÿ....ÿ++++ */
- $"2B2B 2B2B 2BEC B000 ECB0 EC2B 2B2B 2B2B" /* +++++ì°.ì°ì+++++ */
- $"2B2B 2B2B 2BFF 0000 0000 0000 FF2B 2B2B" /* +++++ÿ......ÿ+++ */
- $"2B2B 2B2B 2BEC FC2B B0FC 2B2B 2B2B 2B2B" /* +++++ìü+°ü++++++ */
- $"2B2B 2B2B FF00 0000 0000 0000 00FF 2B2B" /* ++++ÿ........ÿ++ */
- $"2B2B 2B2B 2BEC B000 B0EC EC2B 2B2B 2B2B" /* +++++ì°.°ìì+++++ */
- $"2B2B 2BFF 0000 0000 0000 0000 0000 FF2B" /* +++ÿ..........ÿ+ */
- $"2B2B 2B2B 2B2B B000 7FB0 2B2B 2B2B 2B2B" /* ++++++°..°++++++ */
- $"2B2B FF00 0000 0000 0000 0000 0000 00FF" /* ++ÿ............ÿ */
- $"2B2B 2B2B 2B2B B000 B0EC 2B2B 2B2B 2B2B" /* ++++++°.°ì++++++ */
- $"2BFF 0000 0000 0000 0000 0000 0000 0000" /* +ÿ.............. */
- $"FF2B 2B2B 2B2B F900 B02B 2B2B 2B2B 2B2B" /* ÿ+++++ù.°+++++++ */
- $"FF00 0000 0000 0000 0000 0000 0000 0000" /* ÿ............... */
- $"00FF 2B2B 2B2B F900 F92B 2B2B 2B2B 2BFF" /* .ÿ++++ù.ù++++++ÿ */
+ $"0000 0000 00FF 2B2B 2BFF 7FEC 7F00 0000" /* .....+++.Ï.... */
+ $"FFFF FFFF FF00 0000 0000 0000 0000 0000" /* ........... */
+ $"0000 0000 FF2B 2B2B 2BB0 B0EC 0000 0000" /* ....++++ƒƒÏ.... */
+ $"FFC0 ECC0 FF00 0000 0000 0000 0000 0000" /* ¿Ï¿........... */
+ $"0000 00FF 2B2B 2B2B B0EC ECFF 0000 0000" /* ...++++ƒÏÏ.... */
+ $"FFEC C0EC FF00 0000 0000 0000 0000 0000" /* Ï¿Ï........... */
+ $"0000 FF2B 2B2B 2BB0 ECFF B02B FF00 0000" /* ..++++ƒÏƒ+... */
+ $"FFC0 ECC0 FF00 0000 0000 0000 0000 0000" /* ¿Ï¿........... */
+ $"00FF 2B2B 2B2B ECEC ECEC 2B2B 00FF 0000" /* .++++ÏÏÏÏ++... */
+ $"FFEC C0EC FF00 0000 0000 0000 0000 0000" /* Ï¿Ï........... */
+ $"FF2B 2B2B 2B2B F9B0 B0EC ECEC FF2B FF00" /* +++++˜ƒƒÏÏÏ+. */
+ $"FFC0 ECC0 FF00 0000 0000 0000 0000 00FF" /* ¿Ï¿.......... */
+ $"2B2B 2B2B 2BEC B0EC B0EC ECC0 2B2B 2BFF" /* +++++σσÏÏ¿+++ */
+ $"FFEC C0EC FF00 0000 0000 0000 0000 FF2B" /* Ï¿Ï.........+ */
+ $"2B2B 2B2B 2BEC FCB0 B0B0 ECEC 2B2B 2B2B" /* +++++ϸƒƒƒÏÏ++++ */
+ $"FFC0 ECC0 FF00 0000 0000 0000 00FF 2B2B" /* ¿Ï¿........++ */
+ $"2B2B 2B2B 2BEC B0EC B0EC B0C0 2BFF FFFF" /* +++++σσσ¿+ */
+ $"FFEC C0EC FFFF FFFF 0000 0000 FF2B 2B2B" /* Ï¿Ï....+++ */
+ $"2B2B 2B2B 2BEC FCB0 B0EC B02B 2B2B FFC0" /* +++++ϸƒƒÏƒ+++¿ */
+ $"ECC0 ECC0 ECC0 FF00 0000 00FF 2B2B 2B2B" /* Ï¿Ï¿Ï¿....++++ */
+ $"2B2B 2B2B 2BEC B0B0 B0EC B02B 2B2B 2BFF" /* +++++σƒƒÏƒ++++ */
+ $"C0EC C0EC C0FF 0000 0000 FF2B 2B2B 2B2B" /* ¿Ï¿Ï¿....+++++ */
+ $"2B2B 2B2B C0EC EC00 B0B0 EC2B 2B2B 2B2B" /* ++++¿ÏÏ.ƒƒÏ+++++ */
+ $"FFC0 ECC0 FF00 0000 00FF 2B2B 2B2B 2B2B" /* ¿Ï¿....++++++ */
+ $"2B2B 2B2B 2BF9 B0F9 B0EC C02B 2B2B 2B2B" /* +++++˜ƒ˜ƒÏ¿+++++ */
+ $"2BFF C0FF 2BFF 0000 FF2B 2B2B 2B2B 2B2B" /* +¿+..+++++++ */
+ $"2B2B 2B2B ECEC EC00 B0B0 EC2B 2B2B 2B2B" /* ++++ÏÏÏ.ƒƒÏ+++++ */
+ $"2B2B FF2B 2B2B FF00 00FF 2B2B 2B2B 2B2B" /* +++++..++++++ */
+ $"2B2B 2B2B ECEC B02B B0EC B02B 2B2B 2B2B" /* ++++Ïσ+ƒÏƒ+++++ */
+ $"2B2B 2B2B 2B2B 2BFF 0000 FF2B 2B2B 2B2B" /* +++++++..+++++ */
+ $"2B2B 2B2B ECEC EC00 FCEC F92B 2B2B 2B2B" /* ++++ÏÏÏ.¸Ï˜+++++ */
+ $"2B2B 2B2B 2B2B FF00 0000 00FF 2B2B 2B2B" /* ++++++....++++ */
+ $"2B2B 2B2B 2BEC B000 ECB0 EC2B 2B2B 2B2B" /* +++++σ.σÏ+++++ */
+ $"2B2B 2B2B 2BFF 0000 0000 0000 FF2B 2B2B" /* +++++......+++ */
+ $"2B2B 2B2B 2BEC FC2B B0FC 2B2B 2B2B 2B2B" /* +++++ϸ+ƒ¸++++++ */
+ $"2B2B 2B2B FF00 0000 0000 0000 00FF 2B2B" /* ++++........++ */
+ $"2B2B 2B2B 2BEC B000 B0EC EC2B 2B2B 2B2B" /* +++++σ.ƒÏÏ+++++ */
+ $"2B2B 2BFF 0000 0000 0000 0000 0000 FF2B" /* +++..........+ */
+ $"2B2B 2B2B 2B2B B000 7FB0 2B2B 2B2B 2B2B" /* ++++++ƒ..ƒ++++++ */
+ $"2B2B FF00 0000 0000 0000 0000 0000 00FF" /* ++............ */
+ $"2B2B 2B2B 2B2B B000 B0EC 2B2B 2B2B 2B2B" /* ++++++ƒ.ƒÏ++++++ */
+ $"2BFF 0000 0000 0000 0000 0000 0000 0000" /* +.............. */
+ $"FF2B 2B2B 2B2B F900 B02B 2B2B 2B2B 2B2B" /* +++++˜.ƒ+++++++ */
+ $"FF00 0000 0000 0000 0000 0000 0000 0000" /* ............... */
+ $"00FF 2B2B 2B2B F900 F92B 2B2B 2B2B 2BFF" /* .++++˜.˜++++++ */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 FF2B 2B2B F900 F92B 2B2B 2B2B FF00" /* ..ÿ+++ù.ù+++++ÿ. */
+ $"0000 FF2B 2B2B F900 F92B 2B2B 2B2B FF00" /* ..+++˜.˜+++++. */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 00FF 2B2B F900 F92B 2B2B 2BFF 0000" /* ...ÿ++ù.ù++++ÿ.. */
+ $"0000 00FF 2B2B F900 F92B 2B2B 2BFF 0000" /* ...++˜.˜++++.. */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 FF2B 2B00 2B2B 2B2B FF00 0000" /* ....ÿ++.++++ÿ... */
+ $"0000 0000 FF2B 2B00 2B2B 2B2B FF00 0000" /* ....++.++++... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 00FF 2BF9 2B2B 2BFF 0000 0000" /* .....ÿ+ù+++ÿ.... */
+ $"0000 0000 00FF 2BF9 2B2B 2BFF 0000 0000" /* .....+˜+++.... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 0000 FF2B 2B2B FF00 0000 0000" /* ......ÿ+++ÿ..... */
+ $"0000 0000 0000 FF2B 2B2B FF00 0000 0000" /* ......+++..... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 0000 00FF 2BFF 0000 0000 0000" /* .......ÿ+ÿ...... */
+ $"0000 0000 0000 00FF 2BFF 0000 0000 0000" /* .......+...... */
$"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
- $"0000 0000 0000 0000 FF00 0000 0000 0000" /* ........ÿ....... */
+ $"0000 0000 0000 0000 FF00 0000 0000 0000" /* ............... */
$"0000 0000 0000 0000" /* ........ */
};
diff --git a/mac/tkMac.h b/mac/tkMac.h
index e23e424..2ee756d 100644
--- a/mac/tkMac.h
+++ b/mac/tkMac.h
@@ -8,23 +8,27 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMac.h,v 1.7 1999/05/22 06:32:05 jingham Exp $
+ * RCS: @(#) $Id: tkMac.h,v 1.7.16.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#ifndef _TKMAC
#define _TKMAC
+#ifndef _TK
+#include <tk.h>
+#endif
+
+#ifndef _TKINT
+#include "tkInt.h"
+#endif
+
#include <Windows.h>
#include <QDOffscreen.h>
-#include "tkInt.h"
-/*
- * "export" is a MetroWerks specific pragma. It flags the linker that
- * any symbols that are defined when this pragma is on will be exported
- * to shared libraries that link with this library.
- */
-
-#pragma export on
+#ifdef BUILD_tk
+# undef TCL_STORAGE_CLASS
+# define TCL_STORAGE_CLASS DLLEXPORT
+#endif
/*
* This variable is exported and can be used by extensions. It is the
@@ -44,13 +48,9 @@ typedef int (Tk_MacEmbedMakeContainerExistProc) (Tk_Window window);
typedef void (Tk_MacEmbedGetClipProc) (Tk_Window window, RgnHandle rgn);
typedef void (Tk_MacEmbedGetOffsetInParentProc) (Tk_Window window, Point *ulCorner);
-/*
- * These functions are currently in tkMacInt.h. They are just copied over here
- * so they can be exported.
- */
-
#include "tkPlatDecls.h"
-#pragma export reset
+# undef TCL_STORAGE_CLASS
+# define TCL_STORAGE_CLASS DLLIMPORT
#endif /* _TKMAC */
diff --git a/mac/tkMacAppInit.c b/mac/tkMacAppInit.c
index 670e8fa..73e592d 100644
--- a/mac/tkMacAppInit.c
+++ b/mac/tkMacAppInit.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacAppInit.c,v 1.12 2000/02/10 08:53:06 jingham Exp $
+ * RCS: @(#) $Id: tkMacAppInit.c,v 1.12.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include <Gestalt.h>
@@ -52,12 +52,6 @@ extern char * __ttyname _ANSI_ARGS_((long fildes));
short SIOUXHandleOneEvent _ANSI_ARGS_((EventRecord *event));
/*
- * Prototypes for functions from the tkConsole.c file.
- */
-
-EXTERN void TkConsolePrint _ANSI_ARGS_((Tcl_Interp *interp,
- int devId, char *buffer, long size));
-/*
* Forward declarations for procedures defined later in this file:
*/
diff --git a/mac/tkMacAppearanceStubs.c b/mac/tkMacAppearanceStubs.c
index 0c44864..0fd0fee 100755
--- a/mac/tkMacAppearanceStubs.c
+++ b/mac/tkMacAppearanceStubs.c
@@ -23,7 +23,6 @@
* them in shell calls.
*/
-#pragma export on
pascal OSStatus
MoveWindowStructure(
WindowPtr window,
@@ -103,4 +102,3 @@ IsValidWindowPtr(GrafPtr grafPort)
return true;
}
-#pragma export reset
diff --git a/mac/tkMacApplication.r b/mac/tkMacApplication.r
index f6bdf89..a9bcc33 100644
--- a/mac/tkMacApplication.r
+++ b/mac/tkMacApplication.r
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacApplication.r,v 1.4 2000/02/10 08:48:00 jingham Exp $
+ * RCS: @(#) $Id: tkMacApplication.r,v 1.4.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include <Types.r>
@@ -35,24 +35,24 @@
#if (TK_RELEASE_LEVEL == 2)
# define MINOR_VERSION (TK_MINOR_VERSION * 16) + TK_RELEASE_SERIAL
+# define RELEASE_CODE 0x00
#else
# define MINOR_VERSION TK_MINOR_VERSION * 16
+# define RELEASE_CODE TK_RELEASE_SERIAL
#endif
-#define RELEASE_CODE 0x00
-
resource 'vers' (1) {
TK_MAJOR_VERSION, MINOR_VERSION,
- RELEASE_LEVEL, 0x00, verUS,
+ RELEASE_LEVEL, RELEASE_CODE, verUS,
TK_PATCH_LEVEL,
- TK_PATCH_LEVEL ", by Ray Johnson & Jim Ingham" "\n" "© 1993-1997 Sun Microsystems" "\n" "1998-2000 Scriptics Inc."
+ TK_PATCH_LEVEL ", by Ray Johnson & Jim Ingham" "\n" "© 2001 Tcl Core Team"
};
resource 'vers' (2) {
TK_MAJOR_VERSION, MINOR_VERSION,
- RELEASE_LEVEL, 0x00, verUS,
+ RELEASE_LEVEL, RELEASE_CODE, verUS,
TK_PATCH_LEVEL,
- "Wish " TK_PATCH_LEVEL " © 1993-1999"
+ "Wish " TK_PATCH_LEVEL " © 1993-2001"
};
#define TK_APP_RESOURCES 128
@@ -94,7 +94,7 @@ resource 'FREF' (TK_APP_RESOURCES+1, purgeable)
type TK_APP_CREATOR as 'STR ';
resource TK_APP_CREATOR (0, purgeable) {
- "Wish " TK_PATCH_LEVEL " © 1996"
+ "Wish " TK_PATCH_LEVEL " © 1993-2001"
};
/*
@@ -277,4 +277,41 @@ data 'ics4' (TK_APP_RESOURCES, "Tk App", purgeable) {
$"0000 000F CF00 0000 0000 0000 F000 0000"
};
+/*
+ * The following resource is used when creating the 'env' variable in
+ * the Macintosh environment. The creation mechanisim looks for the
+ * 'STR#' resource named "Tcl Environment Variables" rather than a
+ * specific resource number. (In other words, feel free to change the
+ * resource id if it conflicts with your application.) Each string in
+ * the resource must be of the form "KEYWORD=SOME STRING". See Tcl
+ * documentation for futher information about the env variable.
+ */
+
+/* A good example of something you may want to set is:
+ * "TCL_LIBRARY=My disk:etc."
+ */
+
+resource 'STR#' (128, "Tcl Environment Variables") {
+ {
+ /*
+ "SCHEDULE_NAME=Agent Controller Schedule",
+ "SCHEDULE_PATH=Lozoya:System Folder:Tcl Lib:Tcl-Scheduler"
+ */
+ };
+};
+
+data 'alis' (1000, "Library Folder") {
+ $"0000 0000 00BA 0002 0001 012F 0000 0000" /* .....†...../.... */
+ $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
+ $"0000 0000 0000 985C FB00 4244 0000 0000" /* ......ò\š.BD.... */
+ $"0002 1328 5375 7070 6F72 7420 4C69 6272" /* ...(Support Libr */
+ $"6172 6965 7329 0000 0000 0000 0000 0000" /* aries).......... */
+ $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
+ $"0000 0000 0000 0000 0000 0000 0000 0000" /* ................ */
+ $"0000 0076 8504 B617 A796 003D 0027 025B" /* ...vÖ..ßñ.=.'.[ */
+ $"01E4 0001 0001 0000 0000 0000 0000 0000" /* .”.............. */
+ $"0000 0000 0000 0000 0001 2F00 0002 0015" /* ........../..... */
+ $"2F3A 2853 7570 706F 7274 204C 6962 7261" /* /:(Support Libra */
+ $"7269 6573 2900 FFFF 0000" /* ries)... */
+};
diff --git a/mac/tkMacButton.c b/mac/tkMacButton.c
index d308ddd..f50d2f1 100644
--- a/mac/tkMacButton.c
+++ b/mac/tkMacButton.c
@@ -9,12 +9,13 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacButton.c,v 1.14 2000/11/22 01:49:38 ericm Exp $
+ * RCS: @(#) $Id: tkMacButton.c,v 1.14.4.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "tkButton.h"
#include "tkMacInt.h"
#include <Controls.h>
+#include <ControlDefinitions.h>
#include <LowMem.h>
#include <Appearance.h>
@@ -552,10 +553,16 @@ void
TkpComputeButtonGeometry(
TkButton *butPtr) /* Button whose geometry may have changed. */
{
- int width, height, avgWidth, haveImage = 0;
+ int width, height, avgWidth, haveImage = 0, haveText = 0;
int txtWidth, txtHeight;
Tk_FontMetrics fm;
+ width = 0;
+ height = 0;
+ txtWidth = 0;
+ txtHeight = 0;
+ avgWidth = 0;
+
/*
* First figure out the size of the contents of the button.
*/
@@ -569,12 +576,6 @@ TkpComputeButtonGeometry(
haveImage = 1;
}
- width = 0;
- height = 0;
- txtWidth = 0;
- txtHeight = 0;
- avgWidth = 0;
-
if (haveImage == 0 || butPtr->compound != COMPOUND_NONE) {
Tk_FreeTextLayout(butPtr->textLayout);
butPtr->textLayout = Tk_ComputeTextLayout(butPtr->tkfont,
diff --git a/mac/tkMacCursor.c b/mac/tkMacCursor.c
index f03f207..7d6bf1c 100644
--- a/mac/tkMacCursor.c
+++ b/mac/tkMacCursor.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacCursor.c,v 1.5 1999/04/16 01:51:30 stanton Exp $
+ * RCS: @(#) $Id: tkMacCursor.c,v 1.5.18.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -80,7 +80,7 @@ static int gTkOwnsCursor = true; /* A boolean indicating whether
*/
static void FindCursorByName _ANSI_ARGS_ ((TkMacCursor *macCursorPtr,
- char *string));
+ CONST char *string));
/*
*----------------------------------------------------------------------
@@ -105,7 +105,7 @@ static void FindCursorByName _ANSI_ARGS_ ((TkMacCursor *macCursorPtr,
void
FindCursorByName(
TkMacCursor *macCursorPtr,
- char *string)
+ CONST char *string)
{
Handle resource;
Str255 curName;
@@ -200,7 +200,7 @@ TkGetCursorByName(
FindCursorByName(macCursorPtr, string);
if (macCursorPtr->macCursor == NULL) {
- char **argv;
+ CONST char **argv;
int argc, err;
/*
diff --git a/mac/tkMacDefault.h b/mac/tkMacDefault.h
index 269bff2..7e13596 100644
--- a/mac/tkMacDefault.h
+++ b/mac/tkMacDefault.h
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacDefault.h,v 1.11 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkMacDefault.h,v 1.11.2.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#ifndef _TKMACDEFAULT
@@ -433,6 +433,7 @@
* Defaults for texts:
*/
+#define DEF_TEXT_AUTO_SEPARATORS "1"
#define DEF_TEXT_BG_COLOR NORMAL_BG
#define DEF_TEXT_BG_MONO WHITE
#define DEF_TEXT_BORDER_WIDTH "0"
@@ -467,6 +468,7 @@
#define DEF_TEXT_STATE "normal"
#define DEF_TEXT_TABS ""
#define DEF_TEXT_TAKE_FOCUS (char *) NULL
+#define DEF_TEXT_UNDO "0"
#define DEF_TEXT_WIDTH "80"
#define DEF_TEXT_WRAP "char"
#define DEF_TEXT_XSCROLL_COMMAND ""
diff --git a/mac/tkMacDialog.c b/mac/tkMacDialog.c
index 629860c..2b28b53 100644
--- a/mac/tkMacDialog.c
+++ b/mac/tkMacDialog.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacDialog.c,v 1.6 2000/04/23 03:47:24 jingham Exp $
+ * RCS: @(#) $Id: tkMacDialog.c,v 1.6.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include <Gestalt.h>
@@ -141,7 +141,7 @@ Tk_ChooseColorObjCmd(
OSErr err;
static inited = 0;
static RGBColor in;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-initialcolor", "-parent", "-title", NULL
};
enum options {
@@ -228,7 +228,7 @@ Tk_ChooseColorObjCmd(
cpinfo.theColor.color.rgb.green = in.green;
cpinfo.theColor.color.rgb.blue = in.blue;
cpinfo.dstProfile = 0L;
- cpinfo.flags = CanModifyPalette | CanAnimatePalette;
+ cpinfo.flags = kColorPickerCanModifyPalette | kColorPickerCanAnimatePalette;
cpinfo.placeWhere = kDeepestColorScreen;
cpinfo.pickerType = 0L;
cpinfo.eventProc = NULL;
@@ -304,7 +304,7 @@ Tk_GetOpenFileObjCmd(
Str255 message, title;
AEDesc initialDesc = {typeNull, NULL};
FSSpec dirSpec;
- static char *openOptionStrings[] = {
+ static CONST char *openOptionStrings[] = {
"-defaultextension", "-filetypes",
"-initialdir", "-initialfile",
"-message", "-multiple",
@@ -453,12 +453,12 @@ Tk_GetSaveFileObjCmd(
FSSpec dirSpec;
Str255 title, message;
OpenFileData ofd;
- static char *saveOptionStrings[] = {
- "-defaultextension", "-initialdir", "-initialfile",
+ static CONST char *saveOptionStrings[] = {
+ "-defaultextension", "-filetypes", "-initialdir", "-initialfile",
"-message", "-parent", "-title", NULL
};
enum saveOptions {
- SAVE_DEFAULT, SAVE_INITDIR, SAVE_INITFILE,
+ SAVE_DEFAULT, SAVE_TYPES, SAVE_INITDIR, SAVE_INITFILE,
SAVE_MESSAGE, SAVE_PARENT, SAVE_TITLE
};
@@ -493,6 +493,8 @@ Tk_GetSaveFileObjCmd(
switch (index) {
case SAVE_DEFAULT:
break;
+ case SAVE_TYPES:
+ break;
case SAVE_INITDIR:
choice = Tcl_GetStringFromObj(objv[i + 1], NULL);
if (HandleInitialDirectory(interp, choice, &dirSpec,
@@ -593,7 +595,7 @@ Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
Str255 message, title;
int srcRead, dstWrote;
OpenFileData ofd;
- static char *chooseOptionStrings[] = {
+ static CONST char *chooseOptionStrings[] = {
"-initialdir", "-message", "-mustexist", "-parent", "-title", NULL
};
enum chooseOptions {
@@ -712,7 +714,7 @@ HandleInitialDirectory (
Tcl_AppendResult(interp, "bad directory \"", initialDir, "\"", NULL);
return TCL_ERROR;
}
- err = FSpGetDirectoryID(dirSpec, &dirID, &isDirectory);
+ err = FSpGetDirectoryIDTcl(dirSpec, &dirID, &isDirectory);
if ((err != noErr) || !isDirectory) {
Tcl_AppendResult(interp, "bad directory \"", initialDir, "\"", NULL);
return TCL_ERROR;
@@ -1055,10 +1057,18 @@ OpenEventProc(
if (callBackSelector == kNavCBPopupMenuSelect) {
chosenItem = (NavMenuItemSpec *) callBackParams->eventData.eventDataParms.param;
ofd->curType = chosenItem->menuType;
- } else if (callBackSelector == kNavCBAdjustRect || callBackSelector & otherEvent != 0) {
+ } else if ( callBackSelector & otherEvent != 0) {
while (Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT|TCL_WINDOW_EVENTS)) {
/* Empty Body */
}
+ } else if (callBackSelector == kNavCBEvent) {
+ if (callBackParams->eventData.eventDataParms.event->what == updateEvt) {
+ if (TkMacConvertEvent( callBackParams->eventData.eventDataParms.event)) {
+ while (Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT|TCL_WINDOW_EVENTS)) {
+ /* Empty Body */
+ }
+ }
+ }
}
}
@@ -1121,7 +1131,7 @@ StdGetFile(
if (isOpen == OPEN_FILE) {
if (ofd != NULL && ofd->usePopup) {
CustomGetFile(openFilter, (short) -1, NULL, &reply, OPEN_BOX,
- mypoint, openHook, NULL, NULL, NULL, (void*) &ofd);
+ mypoint, openHook, NULL, NULL, NULL, (void*) ofd);
} else {
StandardGetFile(NULL, -1, NULL, &reply);
}
@@ -1213,7 +1223,7 @@ OpenHookProc(
if (ofdPtr->usePopup) {
GetDialogItem(theDialog, ofdPtr->popupItem,
&ignore, &handle, &rect);
- newType = GetCtlValue((ControlRef) handle) - 1;
+ newType = GetControlValue((ControlRef) handle) - 1;
if (ofdPtr->curType != newType) {
if (newType<0 || newType>ofdPtr->fl.numFilters) {
/*
diff --git a/mac/tkMacFont.c b/mac/tkMacFont.c
index 200ed4f..ab167b8 100644
--- a/mac/tkMacFont.c
+++ b/mac/tkMacFont.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacFont.c,v 1.5 1999/12/07 03:04:51 hobbs Exp $
+ * RCS: @(#) $Id: tkMacFont.c,v 1.5.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include <Windows.h>
@@ -257,7 +257,7 @@ static void ReleaseFont(MacFont *fontPtr);
static void ReleaseSubFont(SubFont *subFontPtr);
static int SeenName(CONST char *name, Tcl_DString *dsPtr);
-static char * BreakLine(FontFamily *familyPtr, int flags,
+static CONST char * BreakLine(FontFamily *familyPtr, int flags,
CONST char *source, int numBytes, int *widthPtr);
static int GetFamilyNum(CONST char *faceName, short *familyPtr);
static int GetFamilyOrAliasNum(CONST char *faceName,
@@ -326,7 +326,7 @@ TkpFontPkgInit(mainPtr)
*/
fontMenu = NewMenu('FT', "\px");
- AddResMenu(fontMenu, 'FONT');
+ AppendResMenu(fontMenu, 'FONT');
numFonts = CountMItems(fontMenu);
tmpFontNameMap = (FontNameMap *) ckalloc(sizeof(FontNameMap) * numFonts);
@@ -761,7 +761,7 @@ Tk_MeasureChars(
int widthLeft;
FontFamily *thisFamilyPtr;
Tcl_UniChar ch;
- char *rest;
+ CONST char *rest;
/*
* How many chars will fit in the space allotted?
@@ -835,7 +835,7 @@ Tk_MeasureChars(
*---------------------------------------------------------------------------
*/
-static char *
+static CONST char *
BreakLine(
FontFamily *familyPtr, /* FontFamily that describes the font values
* that are already selected into the graphics
diff --git a/mac/tkMacInit.c b/mac/tkMacInit.c
index 2fb26e5..2fed200 100644
--- a/mac/tkMacInit.c
+++ b/mac/tkMacInit.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacInit.c,v 1.3.18.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacInit.c,v 1.3.18.2 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include <Resources.h>
@@ -54,36 +54,51 @@ int
TkpInit(
Tcl_Interp *interp) /* Interp to initialize. */
{
- char *libDir, *tempPath;
- Tcl_DString path;
+ CONST char *libDir, *tempPath;
+ Tcl_DString path, ds;
int result;
- /*
- * The following does not work with
- * safe interps because file exists is restricted.
- * to be fixed using [interp issafe] like in Unix & Windows.
- */
- static char initCmd[] =
- "if [file exists $tk_library:tk.tcl] {\n\
- source $tk_library:tk.tcl\n\
- source $tk_library:button.tcl\n\
- source $tk_library:entry.tcl\n\
- source $tk_library:listbox.tcl\n\
- source $tk_library:menu.tcl\n\
- source $tk_library:scale.tcl\n\
- source $tk_library:scrlbar.tcl\n\
- source $tk_library:text.tcl\n\
- source $tk_library:comdlg.tcl\n\
- source $tk_library:msgbox.tcl\n\
- } else {\n\
- set msg \"can't find tk resource or $tk_library:tk.tcl;\"\n\
- append msg \" perhaps you need to\\ninstall Tk or set your \"\n\
- append msg \"TK_LIBRARY environment variable?\"\n\
- error $msg\n\
- }";
+ static char initCmd[] = "if {[info proc tkInit]==\"\"} {\n\
+proc tkInit {} {\n\
+proc sourcePath {file} {\n\
+ global tk_library\n\
+ if {[catch {uplevel #0 [list source [file join $tk_library $file.tcl]]}] == 0} {\n\
+ return\n\
+ }\n\
+ if {[catch {uplevel #0 [list source -rsrc $file]}] == 0} {\n\
+ return\n\
+ }\n\
+ rename sourcePath {}\n\
+ set msg \"Can't find $file resource or a usable $file.tcl file\"\n\
+ append msg \" perhaps you need to install Tk or set your\"\n\
+ append msg \" TK_LIBRARY environment variable?\"\n\
+ error $msg\n\
+}\n\
+sourcePath tk\n\
+sourcePath button\n\
+sourcePath dialog\n\
+sourcePath entry\n\
+sourcePath focus\n\
+sourcePath listbox\n\
+sourcePath menu\n\
+sourcePath optMenu\n\
+sourcePath palette\n\
+sourcePath scale\n\
+sourcePath scrlbar\n\
+sourcePath tearoff\n\
+sourcePath text\n\
+sourcePath bgerror\n\
+sourcePath msgbox\n\
+sourcePath comdlg\n\
+sourcePath spinbox\n\
+rename sourcePath {}\n\
+rename tkInit {}\n\
+} }\n\
+tkInit";
Tcl_SetVar2(interp, "tcl_platform", "windowingsystem", "classic", TCL_GLOBAL_ONLY);
Tcl_DStringInit(&path);
+ Tcl_DStringInit(&ds);
/*
* The tk_library path can be found in several places. Here is the order
@@ -95,21 +110,23 @@ TkpInit(
libDir = Tcl_GetVar(interp, "tk_library", TCL_GLOBAL_ONLY);
if (libDir == NULL) {
- libDir = Tcl_GetVar2(interp, "env", "TK_LIBRARY", TCL_GLOBAL_ONLY);
+ libDir = TclGetEnv("TK_LIBRARY", &ds);
}
- if (libDir == NULL) {
- tempPath = Tcl_GetVar2(interp, "env", "EXT_FOLDER", TCL_GLOBAL_ONLY);
- if (tempPath != NULL) {
+ if ((libDir == NULL) || (libDir[0] == '\0')) {
+ tempPath = TclGetEnv("EXT_FOLDER", &ds);
+ if ((tempPath != NULL) && (tempPath[0] != '\0')) {
Tcl_DString libPath;
+ CONST char *argv[3];
- Tcl_JoinPath(1, &tempPath, &path);
-
+ argv[0] = tempPath;
+ argv[1] = "Tool Command Language";
Tcl_DStringInit(&libPath);
- Tcl_DStringAppend(&libPath, ":Tool Command Language:tk", -1);
+ Tcl_DStringAppend(&libPath, "tk", -1);
Tcl_DStringAppend(&libPath, TK_VERSION, -1);
- Tcl_JoinPath(1, &libPath.string, &path);
+ argv[2] = Tcl_DStringValue(&libPath);
+ Tcl_JoinPath(3, argv, &path);
Tcl_DStringFree(&libPath);
- libDir = path.string;
+ libDir = Tcl_DStringValue(&path);
}
}
if (libDir == NULL) {
@@ -121,31 +138,9 @@ TkpInit(
*/
Tcl_SetVar(interp, "tk_library", libDir, TCL_GLOBAL_ONLY);
Tcl_DStringFree(&path);
+ Tcl_DStringFree(&ds);
- /*
- * Source the needed Tk libraries from the resource
- * fork of the application.
- */
- result = Tcl_MacEvalResource(interp, "tk", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "button", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "entry", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "listbox", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "menu", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "scale", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "scrollbar", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "text", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "dialog", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "focus", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "optionMenu", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "palette", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "tearoff", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "tkerror", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "comdlg", 0, NULL);
- result |= Tcl_MacEvalResource(interp, "msgbox", 0, NULL);
-
- if (result != TCL_OK) {
result = Tcl_Eval(interp, initCmd);
- }
return result;
}
@@ -175,7 +170,8 @@ TkpGetAppName(
Tcl_DString *namePtr) /* A previously initialized Tcl_DString. */
{
int argc;
- char **argv = NULL, *name, *p;
+ CONST char **argv = NULL, *name, *p;
+ int nameLength = -1;
Handle h = NULL;
h = GetNamedResource('STR ', "\pTk App Name");
@@ -194,16 +190,17 @@ TkpGetAppName(
name = argv[argc-1];
p = strrchr(name, '.');
if (p != NULL) {
- *p = '\0';
+ nameLength = p - name;
}
} else {
name = NULL;
}
}
- if ((name == NULL) || (*name == 0)) {
+ if ((name == NULL) || (*name == 0) || (nameLength == 0)) {
name = "tk";
+ nameLength = -1;
}
- Tcl_DStringAppend(namePtr, name, -1);
+ Tcl_DStringAppend(namePtr, name, nameLength);
if (argv != NULL) {
ckfree((char *)argv);
}
@@ -228,8 +225,8 @@ TkpGetAppName(
void
TkpDisplayWarning(
- char *msg, /* Message to be displayed. */
- char *title) /* Title of warning. */
+ CONST char *msg, /* Message to be displayed. */
+ CONST char *title) /* Title of warning. */
{
Tcl_DString ds;
Tcl_DStringInit(&ds);
diff --git a/mac/tkMacInt.h b/mac/tkMacInt.h
index 3a96f15..29a23ab 100644
--- a/mac/tkMacInt.h
+++ b/mac/tkMacInt.h
@@ -8,15 +8,27 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacInt.h,v 1.9 2000/02/10 08:55:18 jingham Exp $
+ * RCS: @(#) $Id: tkMacInt.h,v 1.9.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#ifndef _TKMACINT
#define _TKMACINT
+#ifndef _TKINT
#include "tkInt.h"
+#endif
+
+/*
+ * Include platform specific public interfaces.
+ */
+#ifndef _TKMAC
#include "tkMac.h"
+#endif
+
+#ifndef _TKPORT
+#include "tkPort.h"
+#endif
#include <AppleEvents.h>
#include <Windows.h>
@@ -73,7 +85,7 @@ typedef struct TkMacWindowList {
* embedding where Tk does not control the top-level. It contains
* various functions that are needed by Mac specific routines, like
* TkMacGetDrawablePort. The definitions of the function types
- * are in tclMac.h.
+ * are in tkMac.h.
*/
typedef struct {
@@ -206,8 +218,16 @@ typedef TkMenuDefProcPtr TkMenuDefUPP;
#include "tkIntPlatDecls.h"
-/* FIXME - This has to go in the tkInt.decls!!! */
+#ifdef BUILD_tk
+#undef TCL_STORAGE_CLASS
+#define TCL_STORAGE_CLASS DLLEXPORT
+#endif
+
+/*
+ * mac specific procedures exported from the DLL
+ */
-int TkpIsWindowFloating _ANSI_ARGS_((WindowRef window));
+#undef TCL_STORAGE_CLASS
+#define TCL_STORAGE_CLASS DLLIMPORT
#endif /* _TKMACINT */
diff --git a/mac/tkMacKeyboard.c b/mac/tkMacKeyboard.c
index 9039625..8c1bcc7 100644
--- a/mac/tkMacKeyboard.c
+++ b/mac/tkMacKeyboard.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacKeyboard.c,v 1.6 2000/04/17 02:16:58 jingham Exp $
+ * RCS: @(#) $Id: tkMacKeyboard.c,v 1.6.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -247,7 +247,8 @@ TkpGetString(
len = 0;
}
}
- return Tcl_ExternalToUtfDString(NULL, string, len, dsPtr);
+ Tcl_ExternalToUtfDString(NULL, string, len, dsPtr);
+ return Tcl_DStringValue(dsPtr);
}
/*
diff --git a/mac/tkMacLibrary.r b/mac/tkMacLibrary.r
index 9b2153f..4cab553 100644
--- a/mac/tkMacLibrary.r
+++ b/mac/tkMacLibrary.r
@@ -10,17 +10,9 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacLibrary.r,v 1.5 2000/02/10 08:48:09 jingham Exp $
+ * RCS: @(#) $Id: tkMacLibrary.r,v 1.5.8.1 2002/02/05 02:25:16 wolfsuit Exp $
*/
-/*
- * New style DLOG templates have an extra field for the positioning
- * options for the Dialog Box. We will not use this, for now, so we
- * turn it off here.
- */
-
-#define DLOG_RezTemplateVersion 0
-
#include <Types.r>
#include <SysTypes.r>
#include <AEUserTermTypes.r>
@@ -44,27 +36,28 @@
#if (TK_RELEASE_LEVEL == 2)
# define MINOR_VERSION (TK_MINOR_VERSION * 16) + TK_RELEASE_SERIAL
+# define RELEASE_CODE 0x00
#else
# define MINOR_VERSION TK_MINOR_VERSION * 16
+# define RELEASE_CODE TK_RELEASE_SERIAL
#endif
#define RELEASE_CODE 0x00
resource 'vers' (1) {
TK_MAJOR_VERSION, MINOR_VERSION,
- RELEASE_LEVEL, 0x00, verUS,
+ RELEASE_LEVEL, RELEASE_CODE, verUS,
TK_PATCH_LEVEL,
- TK_PATCH_LEVEL ",by Ray Johnson & Jim Ingham" "\n" "© 1993-1997 Sun Microsystems" "\n" "1998-2000 Scriptics Inc."
+ TK_PATCH_LEVEL ", by Ray Johnson & Jim Ingham" "\n" "© 2001 Tcl Core Team"
};
resource 'vers' (2) {
TK_MAJOR_VERSION, MINOR_VERSION,
- RELEASE_LEVEL, 0x00, verUS,
+ RELEASE_LEVEL, RELEASE_CODE, verUS,
TK_PATCH_LEVEL,
- "Tk Library " TK_PATCH_LEVEL " © 1993-1999"
+ "Tk Library " TK_PATCH_LEVEL " © 1993-2001"
};
-#define TK_LIBRARY_RESOURCES 3000
/*
* The -16397 string will be displayed by Finder when a user
* tries to open the shared library. The string should
@@ -78,431 +71,3 @@ resource 'STR ' (-16397, purgeable) {
"To work properly, it should be placed in the Tool Command Language folder "
"within the Extensions folder."
};
-
-
-/*
- * We now load the Tk library into the resource fork of the library.
- */
-
-read 'TEXT' (TK_LIBRARY_RESOURCES+1, "tk", purgeable)
- "::library:tk.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+2, "button", purgeable)
- "::library:button.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+3, "dialog", purgeable)
- "::library:dialog.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+4, "entry", purgeable)
- "::library:entry.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+5, "focus", purgeable)
- "::library:focus.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+6, "listbox", purgeable)
- "::library:listbox.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+7, "menu", purgeable)
- "::library:menu.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+8, "optionMenu", purgeable)
- "::library:optMenu.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+9, "palette", purgeable)
- "::library:palette.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+10, "scale", purgeable)
- "::library:scale.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+11, "scrollbar", purgeable)
- "::library:scrlbar.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+12, "tearoff", purgeable)
- "::library:tearoff.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+13, "text", purgeable)
- "::library:text.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+14, "tkerror", purgeable)
- "::library:bgerror.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+15, "Console", purgeable)
- "::library:console.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+16, "msgbox", purgeable, preload)
- "::library:msgbox.tcl";
-read 'TEXT' (TK_LIBRARY_RESOURCES+17, "comdlg", purgeable, preload)
- "::library:comdlg.tcl";
-
-/*
- * The following two resources define the default "About Box" for Mac Tk.
- * This dialog appears if the "About Tk..." menu item is selected from
- * the Apple menu. This dialog may be overridden by defining a Tcl procedure
- * with the name of "tkAboutDialog". If this procedure is defined the
- * default dialog will not be shown and the Tcl procedure is expected to
- * create and manage an About Dialog box.
- */
-
-data 'DLOG' (128, "Default About Box", purgeable) {
- $"0055 006B 00F3 0196 0001 0100 0100 0000"
- $"0000 0081 0000 280A"
-};
-
-resource 'DITL' (129, "About Box", purgeable) {
- {
- {128, 128, 148, 186}, Button {enabled, "Ok"},
- { 14, 108, 117, 298}, StaticText {disabled,
- "Wish - Windowing Shell" "\n" "based on Tcl "
- TCL_PATCH_LEVEL " & Tk " TK_PATCH_LEVEL "\n\n" "Jim Ingham & Ray Johnson"
- "Scriptics Inc." "\n" "jingham@cygnus.com"},
- { 11, 24, 111, 92}, Picture {enabled, 128}
- }
-};
-
-data 'PICT' (128, purgeable) {
- $"13A4 0000 0000 0064 0044 0011 02FF 0C00"
- $"FFFE 0000 0048 0000 0048 0000 0000 0000"
- $"0064 0044 0000 0000 0001 000A 0000 0000"
- $"0064 0044 0099 8044 0000 0000 0064 0044"
- $"0000 0000 0000 0000 0048 0000 0048 0000"
- $"0000 0008 0001 0008 0000 0000 0108 00D8"
- $"0000 0000 0001 5A5A 8000 00FF 3736 FF00"
- $"FF00 FF00 3535 FF00 FF00 CC00 3434 FF00"
- $"FF00 9900 3333 FF00 FF00 6600 3736 FF00"
- $"FF00 3300 3535 FF00 FF00 0000 3434 FF00"
- $"CC00 FF00 3333 FF00 CC00 CC00 3736 FF00"
- $"CC00 9900 3535 FF00 CC00 6600 FAFA FF00"
- $"CC00 3300 3333 FF00 CC00 0000 3130 FF00"
- $"9900 FF00 2F2F FF00 9900 CC00 FAFA FF00"
- $"9900 9900 F9F9 FF00 9900 6600 3130 FF00"
- $"9900 3300 2F2F FF00 9900 0000 2E2E FF00"
- $"6600 FF00 F9F9 FF00 6600 CC00 3130 FF00"
- $"6600 9900 2F2F FF00 6600 6600 2E2E FF00"
- $"6600 3300 2D2D FF00 6600 0000 3130 FF00"
- $"3300 FF00 2F2F FF00 3300 CC00 2E2E FF00"
- $"3300 9900 2D2D FF00 3300 6600 3130 FF00"
- $"3300 3300 2F2F FF00 3300 0000 2E2E FF00"
- $"0000 FF00 2D2D FF00 0000 CC00 3130 FF00"
- $"0000 9900 2F2F FF00 0000 6600 2E2E FF00"
- $"0000 3300 2DF8 FF00 0000 0000 2B2A CC00"
- $"FF00 FF00 2929 CC00 FF00 CC00 2828 CC00"
- $"FF00 9900 27F8 CC00 FF00 6600 2B2A CC00"
- $"FF00 3300 2929 CC00 FF00 0000 2828 CC00"
- $"CC00 FF00 2727 CC00 CC00 CC00 2B2A CC00"
- $"CC00 9900 2929 CC00 CC00 6600 2828 CC00"
- $"CC00 3300 2727 CC00 CC00 0000 2B2A CC00"
- $"9900 FF00 2929 CC00 9900 CC00 2828 CC00"
- $"9900 9900 2727 CC00 9900 6600 DBDB CC00"
- $"9900 3300 4747 CC00 9900 0000 4646 CC00"
- $"6600 FF00 4545 CC00 6600 CC00 DBDB CC00"
- $"6600 9900 4747 CC00 6600 6600 4646 CC00"
- $"6600 3300 4545 CC00 6600 0000 DBDB CC00"
- $"3300 FF00 4747 CC00 3300 CC00 4646 CC00"
- $"3300 9900 4545 CC00 3300 6600 DBDB CC00"
- $"3300 3300 4141 CC00 3300 0000 4040 CC00"
- $"0000 FF00 3F3F CC00 0000 CC00 4342 CC00"
- $"0000 9900 4141 CC00 0000 6600 4040 CC00"
- $"0000 3300 3F3F CC00 0000 0000 4342 9900"
- $"FF00 FF00 4141 9900 FF00 CC00 4040 9900"
- $"FF00 9900 3F3F 9900 FF00 6600 4342 9900"
- $"FF00 3300 4141 9900 FF00 0000 4040 9900"
- $"CC00 FF00 3F3F 9900 CC00 CC00 4342 9900"
- $"CC00 9900 4141 9900 CC00 6600 4040 9900"
- $"CC00 3300 3F3F 9900 CC00 0000 4342 9900"
- $"9900 FF00 4141 9900 9900 CC00 4040 9900"
- $"9900 9900 3F3F 9900 9900 6600 3D3C 9900"
- $"9900 3300 3B3B 9900 9900 0000 3A3A 9900"
- $"6600 FF00 3939 9900 6600 CC00 3D3C 9900"
- $"6600 9900 3B3B 9900 6600 6600 3A3A 9900"
- $"6600 3300 3939 9900 6600 0000 3D3C 9900"
- $"3300 FF00 3B3B 9900 3300 CC00 3A3A 9900"
- $"3300 9900 3939 9900 3300 6600 3D3C 9900"
- $"3300 3300 3B3B 9900 3300 0000 3A3A 9900"
- $"0000 FF00 3939 9900 0000 CC00 3D3C 9900"
- $"0000 9900 3B3B 9900 0000 6600 3A3A 9900"
- $"0000 3300 3939 9900 0000 0000 3D3C 6600"
- $"FF00 FF00 3B3B 6600 FF00 CC00 3A3A 6600"
- $"FF00 9900 3939 6600 FF00 6600 3D3C 6600"
- $"FF00 3300 3B3B 6600 FF00 0000 3A3A 6600"
- $"CC00 FF00 3939 6600 CC00 CC00 3736 6600"
- $"CC00 9900 3535 6600 CC00 6600 3434 6600"
- $"CC00 3300 3333 6600 CC00 0000 3736 6600"
- $"9900 FF00 3535 6600 9900 CC00 3434 6600"
- $"9900 9900 3333 6600 9900 6600 3736 6600"
- $"9900 3300 3535 6600 9900 0000 3434 6600"
- $"6600 FF00 3333 6600 6600 CC00 3736 6600"
- $"6600 9900 3535 6600 6600 6600 3434 6600"
- $"6600 3300 3333 6600 6600 0000 3736 6600"
- $"3300 FF00 3535 6600 3300 CC00 3434 6600"
- $"3300 9900 3333 6600 3300 6600 3736 6600"
- $"3300 3300 3535 6600 3300 0000 3434 6600"
- $"0000 FF00 3333 6600 0000 CC00 3130 6600"
- $"0000 9900 2F2F 6600 0000 6600 2E2E 6600"
- $"0000 3300 F9F9 6600 0000 0000 3130 3300"
- $"FF00 FF00 2F2F 3300 FF00 CC00 2E2E 3300"
- $"FF00 9900 F9F9 3300 FF00 6600 3130 3300"
- $"FF00 3300 2F2F 3300 FF00 0000 2E2E 3300"
- $"CC00 FF00 2D2D 3300 CC00 CC00 3130 3300"
- $"CC00 9900 2F2F 3300 CC00 6600 2E2E 3300"
- $"CC00 3300 2D2D 3300 CC00 0000 3130 3300"
- $"9900 FF00 2F2F 3300 9900 CC00 2E2E 3300"
- $"9900 9900 2D2D 3300 9900 6600 3130 3300"
- $"9900 3300 2F2F 3300 9900 0000 2E2E 3300"
- $"6600 FF00 2DF8 3300 6600 CC00 2B2A 3300"
- $"6600 9900 2929 3300 6600 6600 2828 3300"
- $"6600 3300 27F8 3300 6600 0000 2B2A 3300"
- $"3300 FF00 2929 3300 3300 CC00 2828 3300"
- $"3300 9900 2727 3300 3300 6600 2B2A 3300"
- $"3300 3300 2929 3300 3300 0000 2828 3300"
- $"0000 FF00 2727 3300 0000 CC00 2B2A 3300"
- $"0000 9900 2929 3300 0000 6600 2828 3300"
- $"0000 3300 2727 3300 0000 0000 4948 0000"
- $"FF00 FF00 4747 0000 FF00 CC00 4646 0000"
- $"FF00 9900 4545 0000 FF00 6600 4948 0000"
- $"FF00 3300 4747 0000 FF00 0000 4646 0000"
- $"CC00 FF00 4545 0000 CC00 CC00 4948 0000"
- $"CC00 9900 4747 0000 CC00 6600 4646 0000"
- $"CC00 3300 4545 0000 CC00 0000 4342 0000"
- $"9900 FF00 4141 0000 9900 CC00 4040 0000"
- $"9900 9900 3F3F 0000 9900 6600 4342 0000"
- $"9900 3300 4141 0000 9900 0000 4040 0000"
- $"6600 FF00 3F3F 0000 6600 CC00 4342 0000"
- $"6600 9900 4141 0000 6600 6600 4040 0000"
- $"6600 3300 3F3F 0000 6600 0000 4342 0000"
- $"3300 FF00 4141 0000 3300 CC00 4040 0000"
- $"3300 9900 3F3F 0000 3300 6600 4342 0000"
- $"3300 3300 4141 0000 3300 0000 4040 0000"
- $"0000 FF00 3F3F 0000 0000 CC00 4342 0000"
- $"0000 9900 4141 0000 0000 6600 4040 0000"
- $"0000 3300 3F3F EE00 0000 0000 3D3C DD00"
- $"0000 0000 3B3B BB00 0000 0000 3A3A AA00"
- $"0000 0000 3939 8800 0000 0000 3D3C 7700"
- $"0000 0000 3B3B 5500 0000 0000 3A3A 4400"
- $"0000 0000 3939 2200 0000 0000 3D3C 1100"
- $"0000 0000 3B3B 0000 EE00 0000 3A3A 0000"
- $"DD00 0000 3939 0000 BB00 0000 3D3C 0000"
- $"AA00 0000 3B3B 0000 8800 0000 3A3A 0000"
- $"7700 0000 3939 0000 5500 0000 3D3C 0000"
- $"4400 0000 3B3B 0000 2200 0000 3A3A 0000"
- $"1100 0000 3939 0000 0000 EE00 3D3C 0000"
- $"0000 DD00 3B3B 0000 0000 BB00 3A3A 0000"
- $"0000 AA00 3939 0000 0000 8800 3D3C 0000"
- $"0000 7700 3B3B 0000 0000 5500 3A3A 0000"
- $"0000 4400 3939 0000 0000 2200 3736 0000"
- $"0000 1100 3535 EE00 EE00 EE00 3434 DD00"
- $"DD00 DD00 3333 BB00 BB00 BB00 3736 AA00"
- $"AA00 AA00 3535 8800 8800 8800 3434 7700"
- $"7700 7700 3333 5500 5500 5500 3736 4400"
- $"4400 4400 3535 2200 2200 2200 3434 1100"
- $"1100 1100 3333 0000 0000 0000 0000 0000"
- $"0064 0044 0000 0000 0064 0044 0000 000A"
- $"0000 0000 0064 0044 02BD 0013 E800 01F5"
- $"F6FE 07FE 0E02 3232 33FD 3900 0EE6 001D"
- $"FC00 01F5 F5FE 0700 08FE 0E02 3232 33FE"
- $"3900 3AFC 40F2 4102 4033 07E9 0017 0100"
- $"0EFC 40DC 4102 390E F5F5 0002 F5F5 F6FE"
- $"0702 0E07 0016 0100 32D5 4104 4039 0E32"
- $"33FD 3900 3AFC 40FC 4101 3200 0801 000E"
- $"C141 010E 0008 0100 0EC1 4101 0800 0801"
- $"000E C141 0107 0008 0100 0EC1 4101 0700"
- $"0901 0007 C241 0240 F500 0E01 0007 E841"
- $"0147 47DD 4102 4000 0012 0100 07F0 4100"
- $"47FA 4101 3B3B DD41 0240 0000 1901 0007"
- $"F141 0C47 3B0B 3B47 4141 4711 0505 3B47"
- $"DF41 023A 0000 1701 00F6 F041 010B 0BFE"
- $"4105 473B 0505 113B DE41 0239 0000 1A02"
- $"00F5 40F3 410C 473B 053B 4741 4741 0B0B"
- $"3B47 47DE 4102 3900 0018 0200 F540 F341"
- $"0247 110B FE41 0447 1105 4147 DC41 0233"
- $"0000 1B02 0000 40F3 4103 4711 1147 FE41"
- $"0205 3547 F741 FD47 E941 0232 0000 1E02"
- $"0000 40F2 4106 113B 4741 4735 0BF7 4106"
- $"4741 390E 0E40 47EA 4102 0E00 0021 0200"
- $"0040 F241 0711 3B47 4141 0B35 47F9 4102"
- $"4740 07FE 0002 F640 47EB 4102 0E00 0023"
- $"0200 0040 F341 0847 3541 4147 3B05 4147"
- $"FA41 0947 3AF6 00F5 4F55 F50E 47EB 4102"
- $"0700 0022 0200 003A F341 0147 3BFE 4101"
- $"0B0B F941 0547 3AF5 0055 C8FE CE01 5640"
- $"EB41 0207 0000 1F02 0000 39F0 4104 4741"
- $"053B 47FB 4104 4740 F5F5 A4FC CE01 C85D"
- $"EB41 02F6 0000 1F02 0000 39F0 4104 473B"
- $"0541 47FC 4104 4740 07F6 C8FA CE00 64EC"
- $"4103 40F5 0000 1C02 0000 39F0 4102 4711"
- $"0BFA 4103 4708 2AC8 FACE 0164 D8EC 4100"
- $"40FE 0025 0200 0039 EF41 020B 3B47 FC41"
- $"0347 0FF5 A4FB CE02 C887 D8FC 41FE 47FC"
- $"4100 47F9 4100 3AFE 0028 0200 0039 EF41"
- $"020B 3B47 FD41 0347 3900 A4FA CE00 ABFA"
- $"4109 3B11 3B41 4147 3B0B 3B47 FA41 0039"
- $"FE00 2402 0000 33F1 4102 4741 0BFA 4101"
- $"0779 F9CE 0064 FA41 0235 050B FD41 010B"
- $"0BF9 4100 39FE 0028 0200 0032 F141 0247"
- $"3B0B FC41 0247 39F6 F9CE 0187 D8FB 4103"
- $"4741 050B FE41 0247 110B F941 0039 FE00"
- $"2C02 0000 32F1 4102 473B 11FB 4101 0879"
- $"FACE 05AA 4041 4147 47FE 410A 4741 0511"
- $"4741 4147 3511 47FA 4100 32FE 002F 0200"
- $"000E F141 0347 3B11 47FE 4103 4740 F6C8"
- $"FACE 0564 D841 4039 39FE 4104 473B 053B"
- $"47FE 4102 3541 47FA 4100 0EFE 0027 0200"
- $"000E F141 0347 3B3B 47FE 4102 470F 79FA"
- $"CE0C 8741 4032 F500 003A 4741 473B 05F2"
- $"4100 0EFE 0027 0200 000E F141 0347 3B3B"
- $"47FD 4101 0EA4 FACE 01AB AAFE C808 7900"
- $"3947 4147 110B 47F3 4100 07FE 001C 0200"
- $"000E EA41 0240 2BC8 F5CE 0881 0033 4741"
- $"410B 3B47 F341 0007 FE00 1A02 0000 08EB"
- $"4102 473A 55F4 CE06 5D00 3947 4741 0BF1"
- $"4100 F6FE 001C 0200 0007 EB41 0247 3979"
- $"F4CE 0739 0039 4747 3511 47F3 4101 40F5"
- $"FE00 1C02 0000 07EB 4102 4739 A4F5 CE08"
- $"AB0E 0040 4741 1141 47F3 4100 40FD 001B"
- $"0200 0007 EB41 0247 39A4 F5CE 0787 0707"
- $"4147 4111 47F2 4100 40FD 001B 0200 0007"
- $"EB41 0247 39C8 F5CE 0763 F532 4747 3B3B"
- $"47F2 4100 3AFD 001A 0300 00F6 40EC 4102"
- $"4739 C8F5 CE05 39F5 4047 413B F041 0039"
- $"FD00 1C03 0000 F540 EB41 0140 C8FD CE01"
- $"C8A4 FCCE 03AB 080E 47ED 4100 39FD 001A"
- $"FE00 0040 EB41 0040 FCCE 01A4 C8FC CE03"
- $"FA07 4047 ED41 0032 FD00 1AFE 0000 40EA"
- $"4100 AAFE CE02 87F9 C8FC CE02 560F 47EC"
- $"4100 32FD 0019 FE00 0040 EA41 00AB FECE"
- $"0264 56C8 FDCE 01C8 32EA 4100 0EFD 001B"
- $"FE00 0040 ED41 030E 4047 87FE CE01 4055"
- $"FCCE 01FA 40EA 4100 08FD 001A FE00 003A"
- $"ED41 0807 0740 FBCE CEAB 3979 FDCE 00AB"
- $"E841 0007 FD00 1CFE 0000 3AED 4108 0700"
- $"F6A4 CECE 8733 79FD CE02 4147 47EA 4100"
- $"07FD 001E FE00 0039 ED41 0807 2AA4 C8CE"
- $"CE88 0E9D FECE 0364 1C39 39EB 4101 40F5"
- $"FD00 1CFE 0000 39ED 4101 074F FDCE 0264"
- $"F7A4 FECE 03AB 80F6 07EB 4100 40FC 001C"
- $"FE00 0039 ED41 0108 79FE CE03 AB40 2BA4"
- $"FCCE 02F7 0E47 EC41 0040 FC00 1CFE 0000"
- $"39ED 4101 0879 FECE 03AB 40F6 C8FC CE02"
- $"F615 47EC 4100 40FC 001E FE00 003A EE41"
- $"0247 0E79 FECE 03AB 40F5 C8FD CE03 A4F5"
- $"3A47 EC41 0040 FC00 1EFE 0000 3AEE 4102"
- $"470E 56FE CE03 FB3A F6C8 FDCE 0280 F540"
- $"EB41 0140 F5FD 001E FE00 0040 EE41 0947"
- $"0F56 CECE C888 39F6 C8FD CE02 5601 40EB"
- $"4101 40F5 FD00 1CFE 0000 40EE 4109 4739"
- $"32CE CEC8 8839 2AC8 FDCE 0156 07E9 4100"
- $"F6FD 001B FE00 0040 EE41 0847 3A32 CECE"
- $"C864 152A FCCE 0132 07E9 4100 07FD 001A"
- $"FE00 0040 ED41 0740 32AB CEC8 6439 4EFC"
- $"CE01 3A07 E941 0007 FD00 1D03 0000 F540"
- $"ED41 0740 0EAB CECE 640F 4EFD CE03 AB40"
- $"0840 EA41 0007 FD00 1B03 0000 F540 EC41"
- $"060F 81CE CE64 334E FDCE 02AB 400E E941"
- $"000E FD00 1C02 0000 F6EC 4107 4715 FACE"
- $"CE64 334E FDCE 0387 0F0E 47EA 4100 0EFD"
- $"001C 0200 0007 EC41 0747 16F9 CEC8 6433"
- $"4EFD CE03 6308 4047 EA41 000E FD00 1A02"
- $"0000 07EB 4106 40F9 CEC8 6439 4EFD CE02"
- $"3940 47E9 4100 32FD 001B 0200 0007 EA41"
- $"0539 CECE 8839 F6FE CE04 AB41 4139 40EA"
- $"4100 32FD 001C 0200 0007 EB41 0E47 3AC8"
- $"CE88 39F6 C8CE CE64 15F6 F540 EA41 0033"
- $"FD00 1A02 0000 07EA 410C 40A4 CE87 392A"
- $"C8CE AB41 40F8 F6E9 4100 39FD 001B 0200"
- $"000E EB41 0D47 41AB C887 39F5 C8CE ABAB"
- $"CEA4 07E9 4100 39FD 001C 0200 000E ED41"
- $"0947 3939 4787 C8AB 40F5 C8FD CE01 A40E"
- $"E941 0039 FD00 1D02 0000 0EED 4109 473A"
- $"0007 80CE AB40 F5C8 FDCE 0255 0E47 EA41"
- $"0039 FD00 1B02 0000 0EEB 4107 0779 C8CE"
- $"CE40 F6A4 FDCE 022B 3947 EA41 003A FD00"
- $"1C02 0000 0EEC 4102 4739 79FE CE02 6407"
- $"A4FE CE02 A407 40E9 4100 40FD 001A 0200"
- $"0032 EA41 0632 A4CE CE88 0879 FECE 02F9"
- $"0F47 E941 0040 FD00 1A02 0000 32EB 4107"
- $"4740 F7C8 CE87 0E79 FECE 0132 40E8 4100"
- $"40FD 0019 0200 0033 EA41 0B47 40F8 C8AB"
- $"0E55 CECE 8015 47E8 4100 40FD 0017 0200"
- $"0033 E941 0847 40F9 A439 4FCE CE5D E641"
- $"0140 F5FE 0014 0200 0039 E841 0647 64FB"
- $"392B C8AB E441 00F6 FE00 1102 0000 39E5"
- $"4103 40F6 8764 E441 0007 FE00 1E02 0000"
- $"39EB 4102 3A0E 0EFD 4102 0740 47F6 4104"
- $"400F 0839 47F4 4100 07FE 0027 0200 0039"
- $"FB41 0147 47F2 4102 0800 40FE 4102 0839"
- $"47FC 4101 4747 FC41 0339 0039 47F4 4100"
- $"07FE 0029 0200 0039 FB41 0140 39F3 4109"
- $"470E F540 4141 470E 3347 FC41 0139 3AFD"
- $"4104 4739 0039 47F4 4100 08FE 0036 0200"
- $"003A FC41 0347 0E00 40FC 4102 4741 40FC"
- $"4109 470E F540 4141 4733 0E47 FE41 0447"
- $"4000 0E47 FE41 0447 3900 3941 FE40 F741"
- $"000E FE00 3A02 0000 3AFD 410E 4740 0700"
- $"0E40 4741 4147 390E 390E 40FE 4108 470E"
- $"F540 4141 4739 0EFC 4103 0F00 0739 FE41"
- $"0747 3900 3940 080F 39F7 4100 0EFE 0035"
- $"0200 0040 FB41 020E 0040 FE41 0D47 4000"
- $"3941 0032 4741 4147 0EF5 40FE 4101 4008"
- $"FC41 023A 000E FD41 0547 3900 3939 33F5"
- $"4100 0EFE 0039 0200 0040 FC41 0347 0E00"
- $"40FE 4106 4732 0040 4139 40FE 4103 470E"
- $"F540 FD41 0108 40FE 4104 4740 000E 47FE"
- $"4106 4739 0007 F540 47F6 4100 32FE 003A"
- $"0200 0040 FC41 0C47 0E00 4047 4141 470E"
- $"0040 4747 FD41 0347 0EF5 40FE 410A 470E"
- $"3947 4141 4740 000E 47FE 4107 4739 000E"
- $"0007 4147 F741 0032 FE00 3802 0000 40FC"
- $"4102 470E 00FD 4106 4739 003A 4740 39FE"
- $"4102 470E F5FD 410A 4733 3347 4141 4740"
- $"000E 47FE 4106 4739 0039 3900 0EF6 4100"
- $"33FE 003A 0200 F540 FC41 0447 3200 0E39"
- $"FD41 0B0E 0E40 333A 4741 413A 07F5 39FE"
- $"4102 473A 0EFD 410F 40F5 0733 4041 4140"
- $"0E00 0E40 0700 0E40 F841 0039 FE00 2902"
- $"00F5 40FA 4101 3939 FB41 023A 3A40 FD41"
- $"FD40 FD41 0240 0E40 FD41 0240 3940 FD41"
- $"FA40 F741 0039 FE00 2A01 00F6 F941 0147"
- $"47FB 4101 4747 FB41 0147 47FB 4101 3940"
- $"FD41 0147 47FB 4100 47FE 4100 47F6 4100"
- $"39FE 000D 0100 07E1 4100 40E4 4100 3AFE"
- $"0009 0100 07C3 4100 3AFE 0009 0100 07C3"
- $"4100 40FE 0009 0100 07C3 4100 40FE 0009"
- $"0100 07C3 4100 40FE 000A 0100 0EC3 4103"
- $"40F5 0000 0901 000E C241 02F6 0000 0901"
- $"000E C241 0207 0000 0901 000E C241 0207"
- $"0000 1101 000E ED41 FE40 003A F940 E241"
- $"0207 0000 2B01 0032 F941 FE40 FE39 0632"
- $"0E0E 0707 F6F5 F800 02F5 F5F6 FB07 FB0E"
- $"0332 3233 33FB 3901 3A3A FB40 0207 0000"
- $"0E0A 000E 3939 320E 0E07 07F6 F5C8 0002"
- $"BD00 00FF"
-};
-
-/*
- * Here is the custom file open dialog. This dialog is used instead of
- * the default file dialog if the -filetypes flag is specified.
- */
-
-#define DLOG_RezTemplateVersion 0
-
-resource 'DLOG' (130, purgeable) {
- {0, 0, 195, 344}, dBoxProc, invisible, noGoAway, 0,
- 130, ""
-};
-
-resource 'DITL' (130, "File Open Box", purgeable) {
- {
- {135, 252, 155, 332}, Button {enabled, "Open"},
- {104, 252, 124, 332}, Button {enabled, "Cancel"},
- { 0, 0, 0, 0}, HelpItem {disabled, HMScanhdlg {130}},
- { 8, 235, 24, 337}, UserItem {enabled},
- { 32, 252, 52, 332}, Button {enabled, "Eject"},
- { 60, 252, 80, 332}, Button {enabled, "Desktop"},
- { 29, 12, 159, 230}, UserItem {enabled},
- { 6, 12, 25, 230}, UserItem {enabled},
- { 91, 251, 92, 333}, Picture {disabled, 11},
- {168, 20, 187, 300}, Control {enabled, 131}
- }
-};
-
-resource 'CNTL' (131, "File Types menu", purgeable) {
- {168, 20, 187, 300},
- popupTitleLeftJust,
- visible,
- 80,
- 132,
- popupMenuCDEFProc,
- 0,
- "File Type:"
-};
-
-
-resource 'MENU' (132, preload) {
- 132,
- textMenuProc,
- 0xFFFF, enabled, "", {}
-};
diff --git a/mac/tkMacMDEF.r b/mac/tkMacMDEF.r
index d6cbf50..d5294d8 100644
--- a/mac/tkMacMDEF.r
+++ b/mac/tkMacMDEF.r
@@ -15,7 +15,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacMDEF.r,v 1.2 1998/09/14 18:23:37 stanton Exp $
+ * RCS: @(#) $Id: tkMacMDEF.r,v 1.2.24.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <Types.r>
@@ -27,19 +27,19 @@
*/
data 'MDEF' (591, preload) {
- $"600A 0000 4D44 4546 024F 0000 4EFA 0004" /* `...MDEF.O..Nú.. */
- $"4E75 4E56 FFEE 48E7 1830 362E 0018 246E" /* NuNVÿîHç.06...$n */
- $"0008 267C 4D44 4546 594F 2EB8 0B54 201F" /* ..&|MDEFYO.¸.T . */
- $"2D40 FFEE 554F 3EB8 0A0A 301F 3D40 FFF2" /* -@ÿîUO>¸..0.=@ÿò */
- $"554F 3EB8 0A0C 301F 3D40 FFF4 0C78 FFFF" /* UO>¸..0.=@ÿô.xÿÿ */
- $"0B5C 6612 2078 0B5C 2050 2D68 0006 FFF6" /* .\f. x.\ P-h..ÿö */
- $"2D68 000A FFFA 0C43 0001 6602 3812 3F03" /* -h..ÿú.C..f.8.?. */
- $"2F2E 0014 2F2E 0010 2F2E 000C 2F0A 486E" /* /.../.../.../.Hn */
- $"FFEE 4E93 2F2E FFEE 21DF 0B54 3F2E FFF2" /* ÿîN“/.ÿî!ß.T?.ÿò */
- $"31DF 0A0A 3F2E FFF4 31DF 0A0C 0C43 0001" /* 1ß..?.ÿô1ß...C.. */
- $"662A B852 6726 0C78 FFFF 0B5C 671E 2078" /* f*¸Rg&.xÿÿ.\g. x */
- $"0B5C 2050 216E FFF6 0006 216E FFFA 000A" /* .\ P!nÿö..!nÿú.. */
- $"21EE FFF6 09FA 21EE FFFA 09FE 4CDF 0C18" /* !îÿöÆú!îÿúÆþLß.. */
- $"4E5E 205F 4FEF 0012 4ED0 846D 6169 6E00" /* N^ _Oï..NЄmain. */
- $"0000" /* .. */
+ $"600A 0000 4D44 4546 024F 0000 4EFA 0004" /* `...MDEF.O..N™.. */
+ $"4E75 48E7 1030 4FEF FFEE 266F 0022 247C" /* NuHÁ.0OÔÓ&o."$| */
+ $"4D44 4546 594F 2EB8 0B54 2E9F 554F 3EB8" /* MDEFYO.½.T.üUO>½ */
+ $"0A0A 3F5F 0004 554F 3EB8 0A0C 3F5F 0006" /* ..?_..UO>½..?_.. */
+ $"3038 0B5C 48C0 0C80 FFFF FFFF 6612 2078" /* 08.\H¿.Äf. x */
+ $"0B5C 2050 2F68 0006 0008 2F68 000A 000C" /* .\ P/h..../h.... */
+ $"302F 0032 48C0 0C80 0000 0001 6602 3613" /* 0/.2H¿.Ä....f.6. */
+ $"3F2F 0032 2F2F 0030 2F2F 0030 2F2F 0030" /* ?/.2//.0//.0//.0 */
+ $"2F0B 486F 0012 4E92 2F17 21DF 0B54 3F2F" /* /.Ho..Ní/.!þ.T?/ */
+ $"0004 31DF 0A0A 3F2F 0006 31DF 0A0C 302F" /* ..1þ..?/..1þ..0/ */
+ $"0032 48C0 0C80 0000 0001 6638 3013 48C0" /* .2H¿.Ä....f80.H¿ */
+ $"3203 48C1 B280 672C 3038 0B5C 48C0 0C80" /* 2.H¡¾Äg,08.\H¿.Ä */
+ $"FFFF FFFF 671E 2078 0B5C 2050 216F 0008" /* g. x.\ P!o.. */
+ $"0006 216F 000C 000A 21EF 0008 09FA 21EF" /* ..!o....!Ô..™!Ô */
+ $"000C 09FE 4FEF 0012 4CDF 0C08 4E74 0012" /* ..œOÔ..Lþ..Nt.. */
};
diff --git a/mac/tkMacMenu.c b/mac/tkMacMenu.c
index 44897c9..898057d 100644
--- a/mac/tkMacMenu.c
+++ b/mac/tkMacMenu.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacMenu.c,v 1.20 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkMacMenu.c,v 1.20.2.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkMacInt.h"
@@ -178,7 +178,7 @@ static char *currentMenuBarName;
static Tk_Window currentMenuBarOwner;
/* Which window owns the current menu bar. */
static char elipsisString[TCL_UTF_MAX + 1];
- /* The UTF representation of the elipsis (ƒ)
+ /* The UTF representation of the elipsis (Š)
* character. */
static int helpItemCount; /* The number of items in the help menu.
* -1 means that the help menu is
@@ -529,7 +529,7 @@ TkpNewMenu(
(length > 230) ? 230 : length);
itemText[0] = (length > 230) ? 230 : length;
macMenuHdl = NewMenu(menuID, itemText);
-#ifdef GENERATINGCFM
+#if GENERATINGCFM
{
Handle mdefProc = FixMDEF();
if ((mdefProc != NULL)) {
@@ -687,7 +687,7 @@ TkpDestroyMenuEntry(
* Given a menu entry, gives back the text that should go in it.
* Separators should be done by the caller, as they have to be
* handled specially. This is primarily used to do a substitution
- * between "..." and "ƒ".
+ * between "..." and "Š".
*
* Results:
* itemText points to the new text for the item.
@@ -752,10 +752,10 @@ GetEntryText(
* We try the following special mac characters. If none of them
* are present, just use the check mark.
* '' - Check mark character (\022)
- * '¥' - Mac Bullet character (\245)
+ * '€' - Mac Bullet character (\245)
* '' - Filled diamond (\023)
* '×' - Hollow diamond (\327)
- * 'Ñ' = Mac Long dash ("em dash") (\321)
+ * '‹' = Mac Long dash ("em dash") (\321)
* '-' = short dash (minus, "en dash");
*
* Results:
@@ -1223,7 +1223,7 @@ ReconfigureMacintoshMenu(
ReconfigureIndividualMenu(menuPtr, macMenuHdl, 0);
if (menuPtr->menuFlags & MENU_APPLE_MENU) {
- AddResMenu(macMenuHdl, 'DRVR');
+ AppendResMenu(macMenuHdl, 'DRVR');
}
if ((*macMenuHdl)->menuID == currentHelpMenuID) {
@@ -4462,10 +4462,16 @@ TkpMenuNotifyToplevelCreate(
*----------------------------------------------------------------------
*/
+#if __MWERKS__ != 0x2400
+#define MDEF_PROC_OFFSET 0x24
+#else
+#define MDEF_PROC_OFFSET 0x20
+#endif
+
static Handle
FixMDEF(void)
{
-#ifdef GENERATINGCFM
+#if GENERATINGCFM
Handle MDEFHandle = GetResource('MDEF', 591);
Handle SICNHandle = GetResource('SICN', SICN_RESOURCE_NUMBER);
if ((MDEFHandle != NULL) && (SICNHandle != NULL)) {
@@ -4474,7 +4480,7 @@ FixMDEF(void)
if (menuDefProc == NULL) {
menuDefProc = TkNewMenuDefProc(MenuDefProc);
}
- memmove((void *) (((long) (*MDEFHandle)) + 0x24), &menuDefProc, 4);
+ memmove((void *) (((long) (*MDEFHandle)) + MDEF_PROC_OFFSET), &menuDefProc, 4);
return MDEFHandle;
} else {
return NULL;
@@ -4531,7 +4537,7 @@ TkpMenuInit(void)
}
FixMDEF();
- Tcl_ExternalToUtf(NULL, NULL, "\311", /* É */
+ Tcl_ExternalToUtf(NULL, NULL, "\311", /* Š */
-1, 0, NULL, elipsisString,
TCL_UTF_MAX + 1, NULL, NULL, NULL);
}
diff --git a/mac/tkMacMenus.c b/mac/tkMacMenus.c
index f83e49d..5ed36c2 100644
--- a/mac/tkMacMenus.c
+++ b/mac/tkMacMenus.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacMenus.c,v 1.6 2000/04/23 03:47:32 jingham Exp $
+ * RCS: @(#) $Id: tkMacMenus.c,v 1.6.8.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tcl.h"
@@ -106,7 +106,7 @@ TkMacHandleMenuSelect(
break;
}
default:
- GetItem(tkAppleMenu, theItem, name);
+ GetMenuItemText(tkAppleMenu, theItem, name);
HiliteMenu(0);
OpenDeskAcc(name);
return;
@@ -193,9 +193,9 @@ TkMacInitMenus(
panic("memory - menus");
}
InsertMenu(tkAppleMenu, 0);
- AppendMenu(tkAppleMenu, "\pAbout Tcl & TkÉ");
+ AppendMenu(tkAppleMenu, "\pAbout Tcl & TkŠ");
AppendMenu(tkAppleMenu, "\p(-");
- AddResMenu(tkAppleMenu, 'DRVR');
+ AppendResMenu(tkAppleMenu, 'DRVR');
if (TkMacUseMenuID(kFileMenu) != TCL_OK) {
panic("Menu ID %d is already in use!", kFileMenu);
@@ -205,7 +205,7 @@ TkMacInitMenus(
panic("memory - menus");
}
InsertMenu(tkFileMenu, 0);
- AppendMenu(tkFileMenu, "\pSourceÉ");
+ AppendMenu(tkFileMenu, "\pSourceŠ");
AppendMenu(tkFileMenu, "\pClose/W");
AppendMenu(tkFileMenu, "\p(-");
AppendMenu(tkFileMenu, "\pQuit/Q");
@@ -330,7 +330,7 @@ static void
SourceDialog()
{
int result;
- char *path;
+ CONST char *path;
char openCmd[] = "tk_getOpenFile -filetypes {\
{{TCL Scripts} {.tcl} TEXT} {{Text Files} {} TEXT}}";
diff --git a/mac/tkMacPort.h b/mac/tkMacPort.h
index 027fa06..01dd629 100644
--- a/mac/tkMacPort.h
+++ b/mac/tkMacPort.h
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacPort.h,v 1.10 2001/09/21 21:22:09 hobbs Exp $
+ * RCS: @(#) $Id: tkMacPort.h,v 1.10.2.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#ifndef _TKMACPORT
@@ -71,14 +71,14 @@ extern int errno;
*/
#ifndef panic /* In a stubs-aware setting, this could confuse the #define */
-extern void panic _ANSI_ARGS_(TCL_VARARGS(char *, string));
+EXTERN void panic _ANSI_ARGS_(TCL_VARARGS(char *, string));
#endif
#ifndef strcasecmp
-extern int strcasecmp _ANSI_ARGS_((CONST char *s1,
+EXTERN int strcasecmp _ANSI_ARGS_((CONST char *s1,
CONST char *s2));
#endif
#ifndef strncasecmp
-extern int strncasecmp _ANSI_ARGS_((CONST char *s1,
+EXTERN int strncasecmp _ANSI_ARGS_((CONST char *s1,
CONST char *s2, size_t n));
#endif
/*
@@ -150,4 +150,13 @@ extern int strncasecmp _ANSI_ARGS_((CONST char *s1,
#define MENU_TEXT_PIXEL 51
#define APPEARANCE_PIXEL 52
+/*
+ * The following declaration is used to get access to a private Tcl interface
+ * that is needed for portability reasons.
+ */
+
+#ifndef _TCLINT
+#include <tclInt.h>
+#endif
+
#endif /* _TKMACPORT */
diff --git a/mac/tkMacProjects.sea.hqx b/mac/tkMacProjects.sea.hqx
index 636b81e..403eda6 100644
--- a/mac/tkMacProjects.sea.hqx
+++ b/mac/tkMacProjects.sea.hqx
@@ -1,2831 +1,3816 @@
(This file must be converted with BinHex 4.0)
-:"R4V,R0PB3""8&"-BA9cG#!!N!184`!"IKP2"P0dG@CQ5A3J+'-T-6Nj0bda16N
-i)%&XB@4ND@iJ8hPcG'9YFb`J5@jM,L`JD(4dF$S[,hH3!bjKE'&NC'PZFhPc,Q0
-[E5p6G(9QCNPd,`d+'J!&%!!!P%F!N!0b!!%!N!0bDX)0TD95CA0PFRCPC+@P!+@
-3"!%!!$)!3,3GFADdal54!*!0!JZY!*!$b!!+S6X!!*0r!!0dD`!!Cam!6J!-!B!
-"[32Jrj!%!`Irq2r``d!!!)!!N!HPN!3"!!!k!!#dSHP!Y-Hd63#3!h)!!!`X!*!
-$FJ!+`RX!!(Il!!!,"J#3"!m!9'YI684&4Ll2J!!!Pla069"b3eG*43%!N!q!!*!
-(3X(9'+Z8*4V%k,RjqPBfia[i2FQDKNZqEYHXj+mV(5(peD#H41%aAD,#1TQ0bi3
-2%rLMG+q)*#lh1BkA"l)f)X*J9p95Lp`l[*Bf",H1Vm4#N!!SL06f00NCmhKJ$Ba
-c2Ej!2h2M(`SXrbX1AZ(rS@X)D(rUH(J6"2V'q264,*C1Z5H`K(X",hSVrQ++`AM
-RrckP%+9&%X6@Qir$`"4#1fF[FHh4"pJZZ%0lPMe(MQD)Kqqa"qSfMpil',fR+VY
-N,Kd50A&LA59F`00TU[pZ*B'MfT!!bM#iD`8U!$ErmBpZLe8@23eM`0qEhIBUEHY
-+P8DYl2#NV[e)qBik*SE4Q@+8mf5NakK#2B(9f9bidTD-*ll`"cq`kJ*EB81CQ[f
-rCZm,6QHfc`QD4Z481#cVPKarC@"%kZMR%M'c(mqI2C@YlIZCNl8P*!8*A(4e,X[
-*N9*#5afck"p"L!%L1)iCY[ES[DrH+9Z*bN*,IdCSl#PL%K+EbCdhk*Q8G*L#c[f
-##d3ii)"Q$fX`%UjL%Q3-$11fbBmKl9(aV0M6+,1$,-Q+%CS0+S`1J1!$YCIF#-%
-)lcRr(+3jPcGQ!5RhN[Zd`r(AFC+0@VSd@hX2TFKFiJUZ"eja`eL0TY@hRNMY*iJ
-hCYI951NChDLb%C!!3$%`9)U0J"AGLJkbYf&!'rRG6*(l-!V$MYlkVU[a"b+C%Ue
-NFC`&b5)!%dZQA!Q`&4TC0G45HDQ1RI3KhCdIEKIVe9I$jmrK)hc5*--F9!&62TK
--BTmPC#U3!'%Fc#CZ3f"#c8eR9i9j'PQQhacY5RT[8IC2fC[j-JS@cAfpi9fQ,l"
-l%d#5b68r,@FFc!UTS%X"T84khS5-PX*[Fr6ccDq29l"FEUBaYShNKrLN9a9MBhm
-(eZ'cqa"EjPm-UG**Vf8[NPL[A5)Yjm5a9ENXR@2ciB@Fe5X(hGbKN4IY6Lcb+P0
-JJi**0-@N8VDNRXG1GIJ2*Y*&XmY,FGNMD68VE!9@5,2p&SSbUiAEDCRLXB-GD!H
-Mim'SE-&+#4,mFGh-A&lYCdHHR,KfHHGj*B53!-aH`JqfJR+C*TkdX20Fa`IS8K[
-Nml[+LHKp[5PTKI4"5H5IRJKTkl&)VRa%9#%rb5f%H6'rjq'bDUmMV&pLhU'cch9
-SCLE@Sld$["rj85`Me`EKMXlfqQ'6I$B+0XFMaJdVVf#,G"EIJ`pB`*6h1+U4ppM
-'@'DJSIckHR%a)0bDYa@mHpi5[J5qr@pRDVM*(*Q2kMp,5!X-C8)I(f6A8Y(Y$R*
-H&LE1Q!pi*40bp[Rl`"VEE(IDl8e!DAqG%cKEm`Fi-k8VikfiY)rI)b[@@Mk'GQ-
-TNI"jX'03Y'Rlj@"KSX6*1XPYe*'jA)Q6T#D(YVKbX,&&mbVLUHY@FbCkK5RMlCY
-6GING[1'Dp&!&@kRpl[rkHm&r8#,NV&BLI6[ZqMT2*B)kJj!!U'MRTHB2&(I4iBl
-C(rRLh*2P2RkEk+SM@VB$@N*VjVh&kI`HDkd4i@em-0hS`QJD[LlX)@)(`qKZ"ZL
-HS3TQII([0j8@F(0arlkEHDRQ44*2b5i'-mY9UKVcC-!!(a96YIUZf62rj0p!YGV
-HQ3J8`QQqr8lrX#!0m4+rH'PDI5Gj`jfRejC*119C&Mm4d2BqN!$$G0H)#9`rEM-
-VVFI#RSN[D5G#DjcJM(D@k$bA*,Y"jr1QBakfGiIZ[#%"BkR&XpaA"bYkKiD9"jQ
-rPBfXPCfk32#2KJac9"ddkbJ)mUMIrQhTJ@EF$EG59,,T-G[c!VG2(Jr'kE5`YM&
-@3iX26SDHpkVYYXH1IRl#)EH[N9bG$-$*eZ&M'QjFNIlPR%jr[)98&)0#G'GDE0c
-3jZLm-`5dYV*$`p1&p#d!dqPmhTT@+DTG&mmcriY5+0lh0+3q5#9#fY`Y!EGDFm+
-(k-$8N!#`(VGL(ZeIY0c"L"leFdl2C*3@%AN*Kh%DHP8h6!V8V')'kVLY2P4a3#X
-L)keAqr)0&)D(-c,PFcr``%B"T9`l[1rj,a'X&mrFMF!Cj*+J&HR4(8Gi"HkY49S
-246*hhB#JY%c24*@LlGKlCpIE9q13!2Vh!D26*ar85+Tp0%,E[RKV$CHZZ-d0EVp
-Z#df"AVZ`XTqaM,pEP#YPj+84b6aH)4`ilcCN6SNhJ@BbH2a4)1Vj1E)6&6CEf+0
-bRqS*@)cc0Z&V0Klq'-E1"#BM1R`&iU(DEZhfqPriM&F,ING3pa#AP1031IBqbaf
-0pc2I15ah",!K-e"RlX*fq+bICe((EaqBj8ERiF&MP4p`b[da!aTrZq-[,XRe9pr
-mQCL*"G&%amJM16JVA)HM6!ckG68%N8F9h9V2#d%f%(5cI0[G"`!Yl#bQkN6IYSJ
-hZLhjqN)(#(d@1CIch4M*!a*[6jXCcbA*(PbLEe&lk+D&a5E([J0h&lS"eCqcbhF
--em(haGe1#(XBRi"-M5r[pP4%@&#e+LSQS+`5m(FPRFe`6kPR6I$2l[lh6P%Z622
-8VQSNQXBA2a24RSm&l2LhVqb)lZ)cYrp%kEj9HKM2%J8H8'f`h@+C!jM&`j5C"kQ
-@Fj)he(l5AmpEiIMMM3PfReAm,B)rM#qKGPJEamNhfS'c&hJPA-dm3Iq60PYD3[Y
-LG5NJ'E-M!04@APGKjI@4$l96rZ3fb%&"3S,2F6F[4h1,GdAMaP[,!*QR+5HPhME
-ZPH9ZT@45B9+dRGM$5D%'SLEk#aHL#@%l-'VIm"ZF0[!6QLm(&A#ErC[03LM&3lF
--(Fl`rLb25@XmHirqXjf++`m(hXN`B5$2MKDjRm94L0ppk5lp[EI,,(&5dX-Ub1H
-[aqcS#2Qe5ZUkT5+BhXZ0$&fV'Q&R0jJ8'+qYfS'2)0!X-4-B%kE&!d4#NV%)6Nd
-QheMGam2DM4blK+30N4G&D8N(dkab1RSh%VhT`MUXjHjcdE*6'KD1@)Xm0VaJUF!
-Yc%5f[ZPI0%V-HL9S0lNC)&V&NSb1)32%BbN9q5XE0cm&"@&ll-TA!4%"d-iaeUa
-9UTX1#Mi`GDFN"j,"b`,GDH[0@h,Piq5B*9i9MEL`)e2TNajNQqj4c5BbrAcBY2!
-PbX3%dJ`hN!![4CAljKdl,)J,028!N@$m$&M'!GTQQ"@bJH1!L5a#,r`pb"GU2q,
-JRVZlmEFcfBB5-"CaqlP[l81aIipQePKSU#P!"[0"$3[I,bdM!4C!d0FSbX+#$Jp
-m&4JAqEa#6l"("a*0Tk0Y2*lp4qrqJe1H6aCcU[klcR2eIDXfm2h6A+cNr$#3!+5
-@f4!C*I%pVd@Y5p"&rP$JkkVX5djI6)YLeD25BX'`T#l`k!pf(-2#6S2-URrVkQL
-[2#5EI[+,-R3paU9l6cUG'S0DF`K2'3h#lY`EpV5Y2(,U$&&+!@8Y@5bU,-"VmaF
-0R"'Z!r#C%)Gi5%lj4PDNiK5B`&RbJ5mDQ*XSIID)DQ'PqP0AfE8'cXNGjhpmQ5S
-)2b%I`$f!k8&Fi'1ApMbF$!fqG39HjPZq`91I9,b05qB+5JT&piq0la(23%eP`BC
-K-I44r&aARH3!bESr[@l@K!IPML6Q$b2ZILiM4Z-KI89UdSfGFIj5$r@DMCP(%ZP
-Z%BXkE#`[HVXY*2A)+KB+l4&I(r[BNEaG)B%d9UHN[)hZf)E"*hZ245TTd&9jUP'
-QcBmh62&[rB-aPN1,i)rrEKN['RHD1$b1jkk[4b4)eDGd9kMBeEl!`1i4iZ(Cp0,
-[Ul"Z#@4rD*1HrMcTMBT93DeHDG"L6[*bKG#0YbE3Cb9N9*Z+BCD*UYh`Xq,Rcli
-FJ+@3"!%!!$i!!,5KkFDdal4%!*!$b!!!8S%!N!0b!!kfh`!&0@-!!%Ac!*!%$`"
-8DdaTBR*KFQPPFbl2J!!!Pla069"b3eG*43%!N!q!!*!(3X(8Yk2#U8L`459b456
-C'Gh$$IN[Fa9EQH9PKN+"TqQCSpV[M8P1V`PhU3))[Tr,,-DmRHEhJGJ(q+F9"$@
-ii)'b!JCZa@RDHeQpS0(6PNc2+981abEC+aDJqM+pT3`b`bU8%ARPGSXB9[!J(1"
-&%bC0)CH'FlKd!ajTpFFIK!X+VTaC[h(V-EPhkbke@X+kBpb*h9&KlhGf2S$j4V,
-D&Zke@GL"1U,qP#896i)ThkK6qBTMSm6lFcCCF(ba(0@&`L*hhY&4QTbb0S3S0Y%
-5,D&4'@cHapD54'+(d&$iG-l4N!"3qY"R`K'UYZmLK"Yr9rpGLp65[-b3!-P%,Im
-MZd4@9Cqr-8rmCKf9(padPUqHQF$5*m"H`VV$()8&VfcYP"R-)0l'05lfh!-!('i
-6#16edbA$l-Y`56a`a9U+f4Y9d@,C!NP5BQ3NI(KbF8&GZUQ2`i)f6Vcip$cXP5i
-J@KI(LFdUU+Sq,PS$(jS8ZD"3EBS`Z`Z$,N,P+(Y-kDEfkjEiNE%AcLUE@%9JDK0
-eZ1kPf$%&[Sh1Cc8N1#1'9)5YJU$14G6q0j,aB2k)3R&*(1HK#LQ5@NQa8"KBf)Z
-4A$91ZT[UeNqrSm'pVI-9TIaV1T`p'`p#mcCpYSJRRAmbMi)!+&PjBBbI#6Y($+3
-erREU$EQ!8R,pdRYab0rr"`4L[QDTm)h9!QN'XhMUlb9G!1'mY@ihC+6`#jR1(!p
-Mj2&$2!Q8',REl5UD@!`-TFl!0rB"''aQ(3XT5,8'aNM0R#EYrHUXV%0l`5"BaKF
-hD!kR*m(VTi58Ia-55h1S@4ccmXSeqHZq#9'[i(X)-d,1MZ#pcdV43S+am5)ZBD8
-319e*NKR`apda!R0B21UXY4lL,#Yl8jGMR5[1$(F1#D61&C-&B-`Ck'MXRY$f#2P
-JmU9FY45"#pa&K3dIAa!0Z&ZNmr[@+-C)Rp3QKrc8#84(h'eZaJq4DpYjZd'+3($
-RqS'LF@TB2fcAhG0FTpRhHC!!!PhmlXrYM-VD@,e$Zc9!%%JZ5G,+aZM#mFF"LDY
-6+ph-EA3,cPlr-bjf4D1Y4TrXAji+ZJ`D4Ik@+Nh3PdRFYT9FLXaNeA$$`1B-!+5
-F,Ka!)4kHplDcJ0)pNjZKb[phBZH23Eq-bceYa#p(CDlk9+NP4#8,BK`EbA$*6P0
-SDDfpb$`(rc,UCkEG%"#JDUIR8BTQ#UbZ(HmFbk9maQARa"EL&8l,M@[kBbjjNTr
-arN%ZaM9MTpmI!)kJh1qSDBLLUb3Kk8a63VCmGVI96`+`8JVDjcE&L$UZSY9*4)%
-`,&DIa1GPG'V1E$#lBINc`kElL%"r#G9U"XaiHf4iM"EhZB53!#UFZCZ5)$bVCMB
-PC&fBH%,f)`6!Skacq!*h`M@@`M@kMaiV24%Af16!bV,hRA44INA34hI2fqeTH4A
-k!G(YlpL2(I*iKi9P*1Ce%)ES@ZKeRbU6lj6p2NlfleN04SqRA4jqNr1U58'19ka
-fS9bUVD$IeD$,FUj1+"8$Z-(SEX`q1#'p-5$SI@Iilh!T[V4TAE*HSfh$`B1Q9qS
-435FA)MH%di[l[khMBTB3T@jb5L%ZBdK-N!$XRN!c[a09XXj1Ldq@Cl"FpGBEPi0
-$5M91jq'MU-0E46bY8C+E*RMVb1@iQ4U$cZ#UqRh*i-lq[bbB@99BYQM1#X64-a*
-XCj&FC8HE`IB01lC-&4'J-HRX5CKB$T'3!+'dEYj269P5'h&`!Q-ql8NrI-RRN!#
-9K)h$bZb[`MV04RTh0QS-HT(qPHG4%1BA3j26crC,b,d%M6llEM8T++Nie&p[!AP
-fQTNMmhDIB2X6Df`)&EUQFSU"P![[5MpPSQ!`M+QVe(F$X*f'&I%L8QJXbd&GXVm
-&)EMjV'93i,48H[NF0iSJH$)4hpBDDAjJI9Nrh2N2&c4%r)K(ZrPmT(cprq6F'kB
-hqQNCP'R8+V"32CV,bpXm'3USb$R9d3d9MJ0r58Ll*Q9#rk%GFTh,$aQ(@qMKX!5
-4f)%`)bPmmjH"0Lr,SiYHCHmVedB"($@FGK%IGlEeVimeY5VKYZfp%XN*46rh9@G
-8hL1m#V@2D2i*33aT1-Re2(ke1Up9"e"KdQ&VhDN68"i1`h+QLBieXe-*VDEG+Zc
-HYVLZX*5M@(0k5FFYB-"'#Uk*K9"5iEiQJab%ZS(rMBIJ`d%H[T%b8NkQ)e"Jhc[
-$SlK(d3(V$L'ZiDMe!0"b*i8dBGa44M3,h3PLRERb9542&i@J@q(SEd3YleAGF6-
-*SLV8jHB'HUVm3jeC`Z`Z,0@A+9+4HS@5Y3jPTPAF250kEV25S[je%TD0H-ANYqf
-SR2GBYI"*&0qKV$&BpM#$[F6K*DM@MP6Nd`(T+5XL3-`@l2'J8Br9"DMX+mZ6UPC
-@"jR'm500EDK'hdllLY8VS%VBPlf(CJ(eARYRQ"DlbHmCP+(Sak*$9m,Qk[5S[e$
-qm8`*8GL&AbR2lGa2&ZS+VcS%0X5*Hm%ZaDZ[2KI['59[i-'bT1L5E&2hK+q6&PJ
-3TYq1l4q*hfLD9M5UYdF!Y4#p9P$ci$d"pr%EJbG3FqU5MPf3!"bm3&XDe(mmRa@
-lb-'Q545+r$AE!4X5PGhT$8B$imYX,@E5#Eq3!%)Lhp#TmlXfTJReRrJ!0'*H&X!
-63VVY2HbKj`a&bSHXJkFbXpY!YapMie[[0H#frRAjRe,`fV1J&@Q`pfAe2bm3%`%
-QRVIQ2c3caF)mZK2&GEkZZrDaN5+V%)1qFfb+$Tr!qQkZ+4mNEIpDJ*JkQidP6M'
-SF3JA,hC@iUqSH6LX"eYaH6mck0JGNqCFiF[q0X*-Gcp6(&AFX+e#qr@pbfkdYr-
-b#TEfk1,RGchPeCLHXl!Q0(E+L!6STLK`CG9DUq6M`lMh`+q#@SN4QhY1P[2C#"6
-LrJi1aQCbjMU``9*qKD(0QA0+YAD,B%Cr1E@fmq4Dj8'S$a0'KS!iqcC26!dbE1#
-Df$NXFJpBXGDer3rm"ApSJq8)FR&-pZ`FD(Z*NqS&99hc"'9%`0DILJYV1m5M,!e
-eqQ6F'hh'SJ*JNG$A8lFSJ!I%ACZ`[Zh0I5+KZ-G#N!",!Urhm+rqi28$$%Bcep&
-Xcfm@,H`KH!S1d&Ccr85-N!$k4TcA[f5&LqPGHp-2ec%Ne8,h+c'S+NGU1RpRfbQ
-%b'GT43ME0$5"Th[+KT*H)F+1Gi(BYdjcHSpFTZX1'DB*Sm&U(IA00q(`6ekQAZ,
-[HCq%,+QNGf8EmXj&I13[Re6jEe9HN!#kFN()L2VR9,@!0)!H0D[,k19hmmTmIU&
-!MCNR5`l$dqa1UIK&1Xca6(3edVl)HMj4Q5Vf&T8)km6qK%3H'SZ&Cl*#"#HI1'G
-jZ[G9,E`&Ih!hQV,lq,5YL!Xir)9d(bf,30l*RD2AaY'3!)d)H"-'VL5b-[fA5Ed
-ldceKNNFJ-im3L$RDZ[I-(+63p[j&0,0$TEeKlX3EU`J#ejaMljp[De&+FX1H1c9
-,3F$iBkE-mrZjTAbi4N"dhX0dbG)9,FFGDCGIXNmT6$G%m2F9FDikQ3PGl(Tk6[`
-"BYE))E-pT*RkUMG"UI5YqP-Ip2'Ajc8d&N5rX'N6J0H(cFS8Z8#24N(Da9Q6Sj6
-J'V,%#&fJdFUBJjEYZNJi``0XR$`F2I1UBqU2YYEA9KE&V!LXJL"C!ADJQFG*Qrm
-e2C)b%eU21P@M*',EpYN6ibA8BekE0XB%cd1[ppbNcMMeP*`94U*`Kf'SlY2cE-[
-J3Rh4q`R4-cPl8+CeHU(L[2$KIfq8ZpBl0SkULF'2[CX9j3XJ`)3%`(92('ImJTN
-3aJEEbj'-TATLHjpHH%GI8*i3LRa2-kR"Td*GMakpZ9`VZaEbra8"J94pkjDIjN@
-4(GRFa)Ma8iXUGQf6SP-I6&hm&ejFpSeNa4d+NMJ0e40fMSKEE8)E@#'1T%@&$Sl
-e)dpMFh[$@(ik$q)m5T`PAlTCcP+TDCi%jFXST2#$Vj*+#0i1r8+JR)`UP61%I(,
-+03eGGmC9eABYK94mZ2A093cp1"U650hb![)MqABZPUeSCZjDDLYL)4Tb[qYHSIi
-b#05)FCdM$GQ`m*Jp9m3A48+-S!Ri5Q5ITq!%4lV[&PbJkKSLN3q9kQX+Uia8"fB
-(Q6M2$lKI!*X6LPFK9rT'&Zlj-f4a)ma5"qV*"mTa4)a5*N[p+@*Uf45%CZ"r&C0
-pZl565pEGFTX#`X"adrLAb"GEK4@IBmj!IeLX#R@)`*bdJY`TZU9ikTQ9T!QNRb"
-L33J69H#T@G+!lhSb(jDJJ,@D"Mi)['GK1L68+HX15ClR)93GA,30d4N"D2f-'*b
-HGB%h-C3hlfFATeT&-MJ9Q*c4i9qr$Fp0AqJ64(E`lh6Afq6Zp(@[*&XF"cKDp3T
-,Ym0NPPdVhKecR44)N!#SHYE`i8D-)-f0im,U2rK8*[e5'G52CT*ZqL-LZ[PkA6d
-dZV!$4fEcH88GJDdVL88QXp&l8rX1H1$,b'L0qYfI19m$f5DXb3l35'`@1[TfS@f
-pI)QGMIjB'4hSCRMNXhYPIpj`h1b'ef5e1Q#@TP[GejHDCJ+,''Li*2IV&$81*PM
-pKBT9P$[66N9XiX$+Peb4*iQ8,42DmpNf"Fi3dYSiLjL+iEcYA[ArBiAF3ZGjJmM
-j*+H3!)D4&#9rVXR`RX9DjrI$M+dZYiH$dq1ihjjI&-hP1JS-21%Tjk$3HV&SqkU
-AhRkZ*qSUCT-kF6HcmRbhGU2%arp+%Mk8"HE)dcfUfE!Jha(D1R92BYf*j$ZL-J+
-HT&5ZNd+S%3-EjTR3jR`qiJ!kb[DpGYRaRQp,((S#Jj2S5Z2SK[K48hSY2@@29JT
-I-qGMm[[E#QA(ek&1%k!eqqca6P3q%`3D!6hpMleBbmHK-UB10aV1((9Q`-1QTZD
-EpL'k%0!2QC3'XGfBDjeQ*T'*L$$0`cElfeXXF!*`D16EDJ-9ke%a&c@$H8U%4N(
-FEfN4SUcXrq822MBMZTCb%lA$"MNG,'-hM5&Gp'Tb@PaE@lS8arB3$JCAFiqGYc@
-8L3fX04QiQ%GPU!),rc*%Hb+1!RE-FZ!GEk&lmfdCi5RDD%qa"%6pkA'"Y85pTFN
-K-KqH-rm*0M`I,p%"!QDY-'AL8IfdL&KiD9d,"V!CXQFCq(X)@G`"[kG!6*aT,iF
-#,9"F6$5-P()(m1'--C4FkTljeZ-MJD%mSq@pMhY`'G8!0mL*USCA%3KK9LL)95%
-U#!2bqmHU2lqA&"0YF4C#@BD4NeDG&FaQ8m%mA'bLcCHlPfK+3@&%KCrc!*1j$fi
-CTDYQU3LM8`NB+-BS)qXXkj0@k!XBKNHAM#56)[1,Mp#J6Xl,0#3Mli&'T`Hcp43
-9BpX8d0++SI8R*k5G*Z!)SHkkL-Y0)%6-PY-$*8DRl4%INFJ3"k19)lLH+UUc[cG
-'$#0RHh5)Z+A%&)SV`DFAkaGA$Yi)[K"+KLY2d4f3!+6U6E3(0Vp5X@Mq!2rfb)'
-PKL3@KI*+JGLkD&1G69J@BZ+[+m3YT$["Dk3)qcPZKH(c!J8JA*Y(km@3!2k6$h[
-e8AH9Z9U'P!FCQdTh`$VN`GQ@JrScIf8Id,kdj")AcaQPN!!NJkd,aIde-rk`mk3
-Namh+`hGKbb"mlJ6GZX0rMPKc#Fp1HAj2f'V(PJ9lHUHmH1$D`r(PcKpBl2p0)p%
-P4UiL228Z0L4D'`MLdZl#@RQ6SP[XUml@($lG(l"Hm*V#(@-IYLj0YRZRIT(m%T'
-42@UPdr66#bQZK!YE(EbDZ(lCI%[(fdHME!AqqiCX'qE!PX5$hRJ-Z1rbdM@j!G)
-FaJ6&UHNM%,aep@0LkmqlCa4Kbp2C!"PpBS(!3T8Zd%Zj'X5jaQd9EVB3DfA4p"E
-'ANfJ%52@i"2Zi+LRdDN1'eA0X)IXNd`cG8#+dNYF(fi1[!pra36d0Xq#-aPh4*5
-J@@P!rH,Cb*!!9"-k+@irJpG"i*PS(P"G@9T*c[DrFV'b&T2Z--9RAk9f"4QhpD1
-,)&fGAe'P!YqHdNrYS#"$TQbekk4D5,@BDXdMSXVP4h6#Y-HrNTL-Y*KD3q+TSe9
-L(VR#b`qqiqE"F'hDbUUkXU(I4%lFpC!!UNrUa0a(T*aF#+K,8[dmU#G(aVLmQ5r
-ZE9C"hqjcjD1[-b'[Z`hccqciZ)0A66RS!),G3Vm&`-L$94Ul,f4!i(I`E'CjDeI
-PpVe0"jrAiG-X`*,j,9NYhJ#C6!A,UmH2X81&UCXTrR%f(1)lR88%&#46MfLj&U4
-#1pAeN!"[VT1Rf6fZrNF6G9CG9MJ6ccY$,H5-&Kaj9HP0ik&m1"UhM0p)3jrB[PA
-B3(PJjUTfphMY+%MEIAU2G`+aehf*RjrpJpVFH-*DPL&eGIIF6mQCI'E!AET,[2A
-p`dlQ1G'dP+"K4$Z"+8mi[DX)biqD)j!!qa%fh@k#l9Q$5HN)dM-`JJYMXr"f!33
-@EDqRVMhdeJa9!,U(d#'H($*VCR5#Va*a2-*M[3+D[MZ`34##3,Q)Yq6jJ'&BA-N
-J,'5ClRqlr1L2&PI4k*&Y,cDbjM!@GN+eH$eVB+GM$kBEVRSiZ#hMF[J&eCFhAe#
-X#Q+kl8[a!jkLF#q-451eDXYDC5Xrhj2NUqURCmI8H2Zr3&%q'5qNJ,UR%H'@i@l
-CR-mSiebN)0cMA+$&5'1,D&&d9!C[A$jP[ad9,rJG90Q$'C')43DG5[jal9X*N!"
-qF6U*Xj!!Ym6@a$PNLFec4@TJca&A25E$h0VUNQ4r82-+&2XFQ-q(*88iGlrUldf
-X1)@A%Zei$FR9DP%`JYD[!kY6k%Y8p*lVU1b%Z&0iSj+'"'U941mQA8-L(&`cX22
-lF$J9RS@"ZL'X``U*ECQ1i5Xkj2kUJeihdC+*iX$9LjHH@$Y&c0q(QkRh!TbSb9r
-0%mPVp5h-if#"-q[KISpUPp3H+TZ4YU80K-ND*U6BZ1Rj52,a'DZ+U@e$Ch-$N!!
-Mp2mKHl+ZA@"4i3X4[c3bU8[[C&q91`0h(5aAE0)Z4H,"Q4cf)*RkqQ)HhU[qD&C
-b)GP6#*KX9VZeMV2e2I0cUjAh#KBf#0mJA5p"jBfM41eiQN,kiUfe*TERTGaei4[
-"QQ'Li"kdU'-[CJ)N@b10)VjEX9-TIrh!bKi(fLmI@,'l83,8e0lPEY)T9bE`E&Z
-N&+JLU1N2$E#bT(!aAlKcHGp,`XF""ldB%K'2f8jdiP0(f#Z!)$Jdf)@2T`9G[6S
-*C'$mJ[[0$H%D9i)&lH$fR)V*aaGP&1'Dbd(f[@hQhQfDkkeMAP9GUfK+PrB(+Rr
-RIPT*2bk6*fc34336q5Z5!dcZKBj*D3jjDe1IrTBZ6,"80FFT(`-'CI,4+BQhihF
-I2GMRBbVFcYX#j@lJ%LkR`-Kh*X,LX4(0Pf@%(kEbY"1A`A@Th@6%L+`i5!%GVir
-G2&*J-FF+HrYZ["(C%cJM'i$bl5ba@YLZ'2e(2ci-qq+pA9C!C`JCVHhj5HdjZmR
-dc54ikjpKb+0FFr,jTB(%3qbLC8J&ed+T*CP+6(SYXj2EYP8F'N)X6lbHV+)J$*I
-PcYbL2&U@h#Bqc2F"HAX$Ra@"+6-dHA-jZ9HBV1+VV!$J,"1(NLe$3Ke1dAE`(!B
-E%fi0KcV3FM"aJkRK$(l(2DS&d+2lB!4%ChM6'a`'8*ckX,HDI!cIa-VQH44SN[[
-,IA&N31`)DRk@0T5J&pFV`6%DbRil(,BM4IH9X@kBrip+NF,I0$"qb(J$Ah(8(I'
-rr#M06F$r1q-YfE&35FB4#)J`m&*hFHh!L4-(Ne)X!'4pMaMk4ZMY3[ZUZh2M-TR
-IerrHUJY1e-2)l!l0"@8!lj+V'IjL@(ESl@"A8mh*3M9E&3HKZKri'5SqS'mYr-T
-%Dr,0,+mFJlT22l&jNr'Ra%$bp2rEda1%Q8c1lemC&YCUKPRU*"X5aUXMq*dNaV$
-8P##VZVGCdM'IEGVjAppc*#i,jZ+3!1G,Cm2UZ[&Rif3LZi2Lml"cR`r9-RJkHiS
-)3I`3([k2,QYiIk8pfV1Z6KKHSrad3@SP9H+#kJ1GKfI3YKL5)C2p0V5e'V4NUH1
--l"A8Ef3T4cp)F#d6UrJTSQ3JZ#Q*LbG2(43X%X(-XYrH+H-cP8@SLmr(EF6J'Em
-DBVqY01D$b@Ged'8NT'*6+94d,"lZ#Y-hD%PKF'j4kD$HkLNm)r&jbZa90PPKY&l
-NNhjd3T3!DqF'!,#%%CVT$kR[YPk@8N'&`[qa,EYZeA#QV9l(ejUC,%FVJh2`RkU
-%8p1M6LdHrJ5($"6LIRY(XB@926LG"Mp$QGi@h'!G2$EdCU+GhmI0-0P!rV&#jRA
-pV`qmTPdC[Nbc5K49NiD85$6)0j!!EEBh3h3+U-PGSVk!h&)J0(&JUBI1@Z9S6jh
-FDQJPf6-BCXBfPAi,I[SFARE9`0VejFfBEl1*fVAqkZ!j*-YH`f-aDdJ"!GH-FBV
-3[B"`"#k+ik$mQqPSL[(FG2LEH21EF)2Za*k3!25lQ&lFJ29A*CmR,J$Ed%h+2q6
-p6!H9p0q486Y"A*JqP6QcbJP-5a'&Y9HNY8E5G%R*I&REF6i(f9jcLp"UYYAZq!-
-H5PMDZahAZpIkSp'4(cVJ1f(UC1`H9QL-Ibf#@#*,S2Z0!p!EMQ[MJTi#,*8VLp-
-'C25%D$b%@9mC`DBXCVN@(VF`34NKpr8XGmZ#8-(Yr*P1BpEdP@!JmkBMklmXG'5
-6Zq%LNF$#YUm,k,IV-8BVl,ATV&8dP8&+!Y0rma5(U+!J'qKl4GlXf"RpF&r&c@2
-jAYQFdhbGSU!m88HJ8LBKf0!SX&lR5@qeY-l$AH$()&R%BLL'M0Rjk83"r+iTdUH
-B59bHiq5$*K6AjK''Ya@Q0%3ii%[HYTFE!4P)f0*2HK4$j@Ym(NRGB$U1#&PPA-F
-i[+NGUZ)#qG)-"Z1@16S,*%CXrXjB4i[TNPeihA#(r"!Y4"h'hXeK4qpYK-j6fmC
-pABXb$))l"+ii89X3TCTfRm4m@l3F'$0IV%a6D+5h2YMi3DmC*k1aiF"pkj8)q*V
-N"V&,K%jE2D`CJXHBQ1EFH-1diCJ$HIDDRR#EUB11D3A!p4BKKJhBGBAY$6iIBPV
-PNB*hcj6Y3"D,c3jh[+0p$qrEa5#e08mCcLGSf0iZ6M4IRk80#*Z-DT3UBhG#3hf
-FeCIbUTDjAIRLLL@PqIi!F(rHP54(qmbpqFLITDE#+4qAR+AJU!$i$cFF-cUJ))r
-lCUJ,(P`XNqbSSKYa3H%i&@#NF4)iMC!!r+%iLUDT%j)0%G%PAjLl2eCDd+Y)Y62
-9mN39MHaY%fGUe4i6B)k,&$@bGSbaC6kk5BG1ElI'BQUBk+RRP6DJ6[fN'j'&&YJ
-r3#4iFTDbSlfFeph!HTJhZRH#TL`2M95%VAbaF#B@G,h[%Ua,k*I00!BY6,f[)iT
-!C69D*rTbr1rhJ[BFhZ)h+i#C0KEX*%Cf6dkD`CZc4)ZNKkQKDN"AB!LZ-XY[2qX
-G!!jM*lr0eXpq-9GXdQUa*IhHQR3QQF*fC8ZRX'**Y%q*+(13!"5'C4JR!%Ld1J5
-`3*Z@E@pVl$jb$dZeITDpccHAYT`[$)EM91eQaP00DA5`pfRSX9cFJ8K)6eliHbc
-bci@m##`ar5-3%*08D%2Na[kEi$*6jfkNKe@*m20fhqUVmZXh1HmiSCC1mZ4Q0mK
-lA5URQ3j"iSYjGcRb&LMb@'Qf2C!!8FTEK)1'[N!ME&ILPdGc(@AMTB10'i5FCV[
--rMFQ92%$4Ve+f!4bGV@8'Fk9"I,m+X1HSllD'aU89ElDr1J'%cHA+@(D6*!!q5@
-+AVUdRpV-(,&#r)+R2&c,Z@@A*42FZKU,9&a$"8l'3S+ij"(p)"-dq*[bV0Kh2$J
-GFL5`DJc*Fq-1NCVbTcK02a)LRcK"5$NY)NE5-VUd(MkBV9QI31KAc,X331Gqic2
-IH0cYE`0GHUA`5GrS+EIbH%@kDY@brh$@(1Tm*cVa"'G1YlkCe![(5cNNljfjG2R
-N`L5#+QqH[`MbX2kDbqXB8DH2hl`,ddSL8+@9!2$1GSYf8H-Vk$[,pMa3HB(Y"$I
-380EC0VPPaKkHeY2cTf#MR#QVcQr[VX"DfQ,Lb[4+XS1[Tae,I#PXpjDRb$[CIG(
-DmCBm0CIYeGY4VQ`Sc*[X,&VrE3[i#Yh2KTakRl"VAXGP@(HJ6e!R!2UbZP*TT(1
-QhT8-36i@H@S%E9!rE4'1T!`j0Ulia,Ma!EY-5Q*60L,+3P5%l9$6J+h),`+&2%3
-SXQm-ijNIbl+RCe!9iNFdpQB*P%8``kfpl#j8ipbDqKaf[qcFY#Va6I9rA)mQUC6
-GP!ZLBk4V2ANYpA%iSpaV&*Y@ZpDM-HmJh6e+M,m'&Nik5k634bR'aMrk`e2kJD9
-pEP([Xm6E1V"h&Q9%$3ic033R95"#8DK#5Bm#3BV5T#N%$ekih5l6a6rJ@RhQmjY
-,'1T(DZGa'Udm[HEXP,9TNDaa@S(kL0-Uk3IT+HTd#Kbq56ZC6Z%ZXhC!ZJZ4ai3
-kI6pek&hfSH8EQa&QllJ,hU3GFEL0k#G5BDZf#8ibiYRGH50kKS1VhcI(U9G&L`S
-V"2EdpT@h#`dTkB(EjcCm![P00"lXR("3&f'H0"''i8CQV8[@"f'GCKk$Q!pZ@Za
-+2mpl3qQ+Bfm6eZV9kp%")2ebh,&ip@%F*Zd&F`AL3h'F8krMZcq2SThr4!pIe!!
-jENb99S(3r2A5VX0I`b+fZL&65K5GAhIG%'4rI1rlECR8MY6NSZIKNKKQ,A40!,@
-Pf#"S(DdXjkidpJV92Q)"GrSU[LZj-%r"N4(N)j2G,h0SDmd6#UKQ8-34)Y0rA#2
-,HL1eqdp)L)-Ck2@jZLalf0SjDCI6-'b!8H+9KAIS!*GKZIAYbi,E+9LEaX9R63$
-"#Gd!DE1FcYdQV(jU*bfPhk'6afIJ,Hm[GV&@N!!eX[Y'C`!KT23#4aSPGQce@c8
-'!*F1V*U@pj,p$iaeaq"eNE#*j05U"bJIY+Hf#8VS*16XLj,*p0ZYI5p1%d4kc#6
-VUaQ-[HZ*Ar*4B&a&@3GPADQV,!FPIdD2EL'J-,66L#U"#jq!cqp'@'GJ1CE4bcV
-q"lMbT%2Z3aNQAmj"6&UkL9TLQ@,IH"am(A")"RaNC[@B(J!)M,MCbJ'LV3l`aR1
-k(QA14YQK+,r2lij,Z)S`f+$!kmHmbI4UZ03i1a!4*Gh*,r)b5@!LBSBZT`AbI'I
-f4,p1le@(dBPkf4IZ!+9H#*Pm`+fM4XZ-bPjhl6*F(D[2K,R$c4[r$jEpqJ[VDG3
-N"j1S15ZUPmlXSrd+5T0PEPrAmbI!1CPHi5SNHb`*Pm4SBF%"*[aM,HS+0aEJ(*r
-)DbhE'Jj"+D$ZT5&p&5,dc,feP`dTQR'%ckNS8qXSPGdC(M10T!jViN8dZ@c1!%D
-A'MN%EiG82F`8S9L)8lNmm*6(1XFC+*Y($XBS2MT59Ef+BC5HrrcPr8a"ALPi&([
-[)!@mYD8K5E-1pp)eJFH968dhMHYR*!C6L"4Eqd'GSJSS23'pN!#3!2AR!j)ZmSK
-AU[[4U6TAIS8ab5eQ5&Kmeki%!60hd5f6RFHi!r2kJPqAlG+*M!jhB9Z%Qe5h*r6
-Ebcp`DVH&4cck)NDPAkbfPERDRE(DHfES8l2(RiF05NcX[+KH8")8!8@VU5l@piI
-d)qr'q$L9dU5!(B$V!i*+@+IYm&aU)E*b1ND"%@hX"[XC&h5Dd`M'NSEQVVG%&+%
-0clJQlj(Al,alP00K2V1rmA6[6M&9lc[dC,FF5#"c%,4DR$&[C1AAP-Sc,3f!B3X
-G%QZ9+c#@YD3QN!"`ILdXYDc[2r4mZ(ii9QBm0UH6T3LplYEqECNJM39+@IQ8+,b
--B6cRA%F'#khZa+C9`&VkA-`i8bSf2%F0b,`4!pm[@0F-J0HR%kdJmp[V0R&Kc*0
-r*qp8j5)!cTc@L#C$PN4Qe*JIB,d0AeC8BmcbRXThIdiTLKLlC)Ypq3V#*jUM-HD
-pN!!LmQaNbZ@+kjab6B89**Vi`9qX00RK[6"2E[Df*[b"e$dkfLkB&'UlVj'T#rG
--aCC)QIjec%0%bF(X(Vhb0)cI+P$BHh(qrm[$H-@k,$3AhGMf*d"STbN(qP!!"k(
-*)B$[3VT)1!Y@BcVk!NkrT5i,@2!U80'rhFM%e(bG,Nm2M4fL)*&)%'r`X(92Qj0
-pJ*8pNKjGC5HbqA[)*HISekVQNPMK9V#Tfi8Hia`(4(K$@`%)$Q0Sm$&VNGB*S,U
-$c2%ZB-)Dd,U&Qq2-#*1Gd[0*%[""Z5ZLb*ZjBjZ%LQfD6A6`*Y*RX55f8JEk*ZS
-HAIKFUT&39q!IdkF5d8A*p2#-eLC#EMH3!&9I-,F04aLP6j62dN6SI"ii[2*ZZdm
-+LPa$8Z4fH$60+LQp1KYhiaKqB%1B!"L4,YkVR*)0-Z(X@eB)5ZF6Y50FN!"KXje
-ZIqfp!64DMQ5Eb8qQZ%&&fpik3ZQbN!"Dm@")eM[[XEi6Q,N"5(djA6*p@)3NhD$
-CiEBQ#2jNJ`d&ak$U!e6`UDQSbb2,0hKF@5-Y@(!"BcX6acK0c95*X!l3EY%j5Jq
-R[e@ap4$+6dV5m3,GG,,XD2"U(@5[a*'$0clQ86,XPQrC3(Bm!+#6!*0,)'T@bh)
-keKk[cBSV0ZS()KAXI&Y3I&kM'cd5E&)9i2Ieb3C6Ec@p5cEK1!"PEQ%Jf+4+jl$
-X)IVH(%Y1&FcH-Xqa!0clTC*1"Cjc'GYIebA`pZTN!Yh6#8*(MmS'2"L#2VjC"2d
-re69a"9fJ-rK'm50%3FHC39'A#qj!a[F5,MCrTNJUM+`ei8-22c&aEj6(kKRe159
-'3SDqF#khrAAhm[M,jGfBD20Yj%@aRkUQd9k%4r3M"*&QF*6fr,bX9'q*CT98ScM
-P0*bc1%jcdi*B3'cq[UZ$S1dQ@$)CdiGRXM-eM4j`qUkVGd)DLSYL6M`'Dm5TYhE
-,X%I`LZBKBfcF0T!!jBjIR3lD8*0Xhm9JceG1Yhq`2!qmp34"$jAEjbHYJ8S`+Ma
-R1C5HE%AI)`$kN!$eb`39GqIEY9a$2Mf1$k3P,6#U54(pZl5V-0$8ZkM'9jRpfd5
-&h'jk+LM%'ae58QJQ"hcFCfb+i$UfS0l9Jrh(P2#Vpp0A8TNVLjrlS&CcNR@QS%8
-+1eGQ4!4'lAU$+dH'-cDeclQ*&C@4qqP'r364eLLY&Z[bS%HcRpClSG!ZaZab*Yq
-M"bB%@0QXErN`Da%&l,!9VS$*#jH5)@cESDAa"4!cL9hbk-kD'afG[e"T1Z0,-ef
-[ic94`Y1*QMl5N59V4R`5A@XJLZNT%kbZM5TVfSqbF3GG5%AlB`4P3MT`K52$G`N
-b[E-DS+JjdUk1qT@VjmLU3CX,4U8YLCc@DDB02+lm0`)a&a`6(MDAFkiG8mm%54,
-Qhr(H4draah0H[V*@YZ1@`HS9%3PMq$LeqD1df1mJ1L#'9SHP+E1m&H,Al`1HKE#
-qQPLkY'V3e)Xj#j%B9Ebacbcp-QdVLAH3!%@UXL,3el`KXj,TQJbfV!"m2JUl,)Z
-(p"prj0LkbEGKB3G3&HMECGFKDM@2&EIP6Ae[e,EY-UBTZj,4-"BNXX-M5Qak9hk
-fRb0MaJe([I")l8N9IhqI2h0Z@Z,qNPA+*l,[d!K*X"X&9DE,Eq2keMJlN8ZccUT
-ejX-qXL`2Z@-e5a0lM5Jq2$a$3YqR0c!)i@0a$VkGp9D"EIlb"3D(D!Y@G+GE'qf
-U9p5TSR+iqLA,kD9`d54UhVUp6E+53-+Vpl$%L#P8VG30,a0Ce-)"IkpBh0Rl-*-
-K`b13!+hRZPiX0@MYQmqdL%mQ'!3LS!@Q*0DI*kI(laiY!5(,)4U2mNUG*V14,+C
-D0dMTRHLFDkpS85HVMipMee4R%AqUbf(k)IdYi#R53b8LH(V@#"r)dLdrbddlUIr
-qjc(59jJR0Dkc4KQ-9T!!4rpj)3AK4'[#dMQC#f3M-`4B[mHR,9VP4DJqN!!+r9Q
-lfPq0(`dIb38,!-2dda8YSRLJVLZliQF#eLJZdQJU2"(CdQe`8&&3N52N"!Cd9C9
-f"3"fHPKDA$&9Sh2QChIe@[p+!CULCS4hZ*6&&QHiJQlNMc1XLUkRfprcRYB852d
-lE0F0AG+2k4D8FaFB4ekLaR19kN!066THbYJ,hQKqBbZ%jj'q*b!"k@*Vaqii'he
-RIrP3V(D%Mq5eZ4HT,0a(M*DcU(XJ1h[J#lrj&fej$Q6CCI&56r5m2Cr!1XVqaj'
-Ph1F$Sp1#H'#cP)!2Jh%hqaE8mKm"rF'$D#28)L&[Hr`+U@F0pe39[JPlA*k0SJ9
-4"M2#,mbKlra649))fd+8!%PUp)GH"iRH6YAG'cK8+@-kZd9F6``-311JrYd0@cI
-*BiUGVlAJpi"%1r&h9f9q#8N%MXcFD5`q$`*bCi3(1"*e)TPddq8rFSI!%9c415b
-E[ZS*m,TJUEm)cYI,lM3F)#CUqdRI*&2h%YRh@`P%J!#)PB`P!e4R5R+3!"%(EmH
-BN!!0FUBSDkkh5qq1JE')[ed@@b%B#+3i2F!MKjFi+d(JiIThpDR1qrU$G[r)VA%
-NQe4BIp%0j@8`(ZB"`'K19@YXak3iH3L%N@2pMfCZTU(HrUZ)F9RVh32$9$iQrFQ
-11LALae8amd$`j2rB3CNETS5SLkE$Q0ZS[k0XQ&$dj%c9TV%rTU3'!@[qpJ((N!#
-R@B@*c'3lP,&'YBV84'*5X4%r0JBMG59rX[L'9'k2rb`0aiYHXlZ*!!L[BpqK@MZ
-ZIXfJ*$#p4d*%fB[TpF0"5h(r*#&G3l#qAbrGA`kk-e-$+"p0fqUPS#IHYQKGDVZ
-9IabId!H-6bbG9'd9m6IK@KS*Bd3a$)&!4I)rMcHYlaUZM'`42#LRXJ1LGfj0c!0
-SIcEDY(0"dcFkl,bH1m1@mHj`!Q-*24j,6+cXeRkPVhYQ6U!fZ"9B+E4I+%ECcpr
-+c"h,i#Jf-lNfKHdZ"emdY&B!#)U@ehCZ1jV414l%mBKEdPr&1A*r*[6*0QbeD2,
-3j1j*,CS%a&rLNI21lY#hSd4hTYI0F8T)bMbmIdfAR4XZ'r`'4NNbSXDZD$443je
-"Jb03MDF1iSBQlmdj`"DTkN!iCXVp[SX8'5mV-9I0-lBLJml*b[kMph-HD%%dM3d
-cRY2&4,1rffS*R1aMb4R'"RIPQpG,[*ff%ZVLqhrKYjp[Q"[V4rakI-l8XIMiURN
-h!bAHAQPa@GhAC``(5Sa'IhiGd%BQ3rS`!U-h&V$T@pqV`k%CVf9VVBZ61[mNQ+6
-Uh5r1hUmc,Z+0ikN51f",bf2c2ZTZj@D&4GVcX[!RKmQpp1jcXm$'+$p#mAM6&VQ
-X9i13!2`B8-2eib52BBLIfJSH3Ljm[9A!SrJrCKR)JD3ALNq*e,%9k,9Tc+,)-CE
-[5m6L0+AIj'm!ZY88KSN84qM@e%VChbIc$D2GU"@-l*!!afeV6--EELj3GRhhh1M
-GVF9S*aiplTGQ,2[2H&l1Rc+Z"M8GXI#qM#4Sm53ri3SEE4ZG5(,F5f%KPFdNR5e
-UpjRHS@DfK$B'S2$,U$R4-[0PV[k)9i9D",&qiYq5N!"q#(i2ZNC([,d`9lbaiD&
-!EX5Lb#X%lMdF!5Ni#f,8319SrZ'Lla!VKkRGD2e6G6diK(jQ@D%UVfJqE!hQ&5%
-#cX[5dF@[jbJa8DXDeel9dBPCANSqV$[dK3YlbE`liI'(FXLZ@Vl9a2X4pff%9%P
-AaQU(-fMCAqYm5)RYBB24JYA+-aSj(!C-HY3)VQ'ZL--&(4(EjN5QhS16h-X%NGc
-0$NCdKG34GN1LCkHmr5!f6A-'rB3XSJZSh-P!F9J6A0U!8lfLQ)klAkXaM,G%S`q
-k3qer-b[+cGZJX#`E$",X(hSPbrdSbERkE"6b[@9,IMa5d6IX[p!03`fMVCmQFhk
-)YCppTDK*SV(Q[-,&bjB`d6[b45$2h5(,U"Mlj#&55NCBbS$k6J4H@@j-Y25TX!6
-AJi#$4JN!9d#6#C6N@-SH4EhhrFjdfDGdHP4(FI,Np',TV)R%J+V(aRI&$4c('h+
-2PJCGBQX[`fPmA9Y5FaRfq3THSK0*$)E6ReVJT(FF+TIl!'46IH6#pd9a$DRA#BL
-H2qqm(3SB5"SPN3HQYjUb)1&)k4Z+LPT)l(1rX9FNELU'b3)I2a['-48A-ZdH#XT
-T"Pr([4B@f@NqPb+#pU)F+Ze6$K"8AaRRC&J8hCjfBT5HU6m8&'--)MQkLkJfk)"
-4E5YJR`6G6!+"f#pa43bAH!6rE6NfTbA%"DJcRqNl8i5LXjH%Eer2Lb$-rD0R`UU
-eNF**br2*i"@)-m2L4F6dCfJb!J1DfI0Q#5jEQpBPM0AXD6Qf6kTj$caPFh,m-88
-qD(X'T2B1*F[6l+[e$0HcKFil82K"(,5i@#q,MQp!MJ"dBaGCfiRj4pk'!12P+4h
-krh,il,i(RkVPUM4L2GdVKDB6IPGe8A0ea+U!+q0c`$EX'D*p"Ul2GQ*9N!#L*9N
-ifY",5S1V&BUq6@m3"82Emb6L"f!`d$`p6NlY53L98XF+"N-V1*KDKXNZXPP,A(U
-C"D@paCBDcL1!pl1%MDR2P#RXrm"JaQLm$KlZ6T2*L4+9Ec8b-&p#05"&Fk2qU!T
-1MdNh*a+4QA2)D4-Y1[C"r!6VM%bde@9[a@8NPB`[BVH01Ha6EP@mTN%A5P%jKc&
-bL0e0++k+4+H@`MKHPR3fPPc1*2e(3KSSa`M8mfRIjr[$aMRJjb1Y##`1kLU@[Ar
-[fTTA%b[l#kG3G33[QpC&2k-8j(2M4mASlG5"bAC$3#aYdD'FTj!!jM@RVe([dmN
-VL5Llckk4B*k@RE9[%hdILm#4hY9H,G('%UcKY*!!M"%[&jdHN!!f-2dQZQa9E0C
-qmXA9Tpa&f(q`cENhM&k'i+2A&@Zl9c%mCk+A#FES["XP#$p@!2rK4&ZC#-lQ%#j
-eLcI@%8JA*&bQ99pUQ38%`5EHYX#JA"5,B0Ep)IEI#HjINla#mB-B9V(IDDeS(Y8
-$!P!Qc%%qa'-dr@K($A8Bi9%)6Zr-8#FY"RT3iINZ'-S9MkS14AjiIHa"NQ`M4U+
-LZe`3k1XYXr3hp'Gp-TJh)K1JQK4UQ9VK8,h6-ZhIm+r8Zcr39Jpd*5Ki3Q5!A-j
-caHFiDF#1k!)IX+PLl#G$MM(3dj!!9KpjX5qj6+Z1J'a6-r1e9&G#kKQX4US!B#B
-P@"a&f0i-48D4eP$MMbe#V-'NDcQ@(YAIkQ$rCXhXCVPK9ISl,@X#Nm$G@bj$hSN
-KQ-cC0kHXbfV&bhUU4"%2fd,8jhC-@XF52eAlC&LZiXQ6d-[4DHQ6iL!!PKK"2CF
-D&eNbZ)KS[DDP8I4A0GjEVAVB%`jES18HqcY[f*X[I'`j9Bj,Rc9"kUEaM4K+Kik
-Y'ILNMPEF"(d&$mXrKfH'kpD%pPMDGP'b(hA!CPR$dI-lb89cGS-&,-+aC-DpM6r
-9JC`kFj'T$kC@8@'f&K)BQD#*rUD0D'r2X$V$V-Kc')ALKTQYp(R2P(b63H(PmD2
-p(JIbZ[48@E,r1&JZlB`A88H01QVQ-FrUYQbQeM3,qF,C0@12CbjcK895AEX4INU
-N1Ma*#PTZd%jdm",T2m&V1UeTb!"#ra%fJCGPN`Yf$D2iVEe6[(U%&@)55+j"`5(
-1ZcdbXfb-``rCTI3N&f1XQkIcjPBA+IMpNim4ZfmJ0HekB4+"Z-qBNNr3j82ii`6
-[+T!!FdQG,E5CKA0UG[Br"R[i&DbI8JA%eeBAc#5C`E6%YXe[r3!IHTdjGcq,&Hj
-rZr5)Hc(G`#$QU8LCDG5(q(RpeN,5KY*fUhi-6%la60)a@X1YFrb85#K+'i#LHM-
-ZklD(S8frPD-HCVEUT`GGQ,QlSEQ($Y##XGK@30i3LC!!!m80adB340mkDX)NSYE
-X*4H!H&5-S)#6`CAlJHD*NP1[k,RJr93h-T2@YJ*'!6Y$L3$h(`T"k$*4qqQ[bVS
-p[+F`RUkb,[SQpBY1JHHSY89Nq-(b["*Z[,#2@B+h,KI@"Q,qd#F%,`Y[LQ8CHm-
-*P[9Rf2Cq(K553p38-T,ib[UiiEIhCZPpBIpcKpDcBm-Z+FN5aI+0cD8XbZ@%(QA
-V@FYfE4fP4ZIl*+Z1B(rd5)54$RLlq0$MlK'PD-&RU%Z60+3#Xmbb1#YNHD1e+M%
-TT*SlkXSf&eC0A5c#P0djBFET4I*GL4M#[m64S*m3&#i*f0Ibl5IN`)!bA3@62mJ
-bhM02mCZ`(e$ba0PXlD-$JqfC'hT8@i3dmlTX#QLiGC0I#UiUTpBa-NkIa6Ecalj
-P!f'29`RHe46*LhmmUR@E$IBJDq2Zpd8&3a5J!"kajbfLq!A#R63(N3-BhdY(&)S
-P9ID4+i1"0L,m6CeR'c$8+ebE[Sp)kSiM"mCd$KJK`#4%S4i+`b!UXIV9a8Ua6)m
-c[N+0)DL4N!$`)r82K3UG`1IC843dPkq9NcF1F2DH&FkbDK&F!8fA@152Q`H2)2A
-2THd$&0KTUT5dmp+Y,+Z$i#MVbf[ARrlIp*3+#KLe'pI@I'c,&p&KIMfh*5ehE!S
-UNMYm@JDKk%Z4hG&c#18PciSf#VXiiU"&qm,9cI@cCRUT5l3Pr,j[,4pj19ZEB@b
-`EVf2Yj!!TYi8+4fbi)3TTRUfFH!p%IYqXCT`#l*3Lkd+m`(B(9rUYdLaCP$i0Mb
-2q6",,Q"fjmLEeb1*Ej)*%P6$epNZ[qkZ9Ce9T(qAHY01VX9Z6LLFC%Rf$G3ZL6c
-`,0rcA'E@biCNI+,ZKa+*aGrdT9AAJ('j%j9#F4+X+Ph[K#2+"-4U$"eU1$UB3dT
-1[0a'dQB!M"[5"r[iDTlQplj2E*PFJj@DPRBP[V5fL)CP6jr&Y1[BiQqjL`JK'am
-25$0MMYF%1&KA[69m5j!!iCLUpP&ZGqU2dk53!(IGB`ehc[)ifN*l1d)AjVQ0&D2
-qN!!#D6lpLTDVGXQ*%,rD'r,LSThV#CEQ*k-c2D@P#dS+m+$ZV@CjBBh!Gb*HGBP
-iJd*a592YB)&-VD'43pmK`Yk#1cElZeET9ZN*p"N`f16N,B+5`-P%G&Mh%P8bh+b
-N08jp6AbZqf5)*klk-Sj61KfjJb-!AcC@qL!!*(`aP'GZDNIhHZ![p`I1Fa!0eRX
-RI1)'c-T3+&VjQT60C%I*pBEG2AR!9E*&Q#3N0II5R`(2&J4QBJK0QSbY2X1k"(c
-@$6$"C,3kY-[KpT*V,UHXHi3I-q1i)$5Xm-*bXh$T0"2id`D1r(#%$IrHLU4QPm*
-LJ'rrVNR'23B"hYhDh`BGL06qmUHCC+M'j#`2+@HkC!8!C481PaE)!p8d,-Bd(fC
-)+GM)H%9UCEX*ZpFe%*!!4KNpNbZ"CC&`MXT1d&AUqMaMB#K'L1Df(Cr5&2Y*NlA
-PBb&e'mQB$YLKpp@Y'FjTm[94*(Z#hb!L,BbDHLrj(q,I6("6+*Uli6qP4K4Y#%Y
-M"+*LpABA$Ze[4HRJcPbd4+%GcA!(CEA)YRV%S,VAMI2qM!16*(Pe'hrh,#'PEMJ
-hIUN'EKILq@c`iAYXMNBTpjP!b-MQBQJjcSb0d)8ZE*V8T3*EeCT![h3Tl@`JhND
-A,4&bmj6mJH5Ckk[YSfmMAL3&-G[[YDMZkXl@-TXA22'+%Z*[I3UI4*MZG*U`'5&
-%pJG2b%)4Cc'"%)-5(FA!+aMb4M$Q1lHeUC1UMYI+a!@4j@m5[Ckr!(Q54LfLAH'
-RVVa#"8D!E@4Lm`$9#b,,4k[U931&6Hi+9R3V$J%m")d&)6JS(`R4K@e1jKeJ(@c
-8D@!4kG8($HPrJQla5m+qC8%-hqDGXJl31ZEVq@l-akPSh$,NYahGFr0K4&ecmmM
-3$i9YDh4h2m@R(c[j8YQkT,#lkR0Dm5L!E3Y33ecDF,BSB4"4aRVq2!)Qji8QQ8K
-%1D&XVGb5fAj4fpf(A@2U-m`VE@lF`Ik)H&ZZ!$FHk"If4m@fafMi)`MB5$al03-
-XlLMrp2MXKbjE%)AMa@%Tf&Jb31)-lP[[KYDXCM(!PNVrFN0T&mXlaZ,f9ASZfj1
-Ql&d$&E3f8#6BIF-%G"b@q(8L2TkQ!IqfM9b1%[bHUqiAN!#bXPG8K'C0[H8MZKj
-BL0Bk%,5,ZY0h#8JmI5)T2+#1"lpS2V42JdK"G)-0h"mJrJGK13J(6k40b`ALK&e
-Ki`hj*r+I+#D#99iiITh,8mrdERpJ[C0Aa,,d*jdE9Ak'8JF0SB[VRT[`PGkNR@b
-IpD+(V``[*m`V,q&3XS#GbYrNp4&S%%#0"lJ#4'ELJ9#LNThj0LK6m"rP6Fb!e+9
-#NI0p'6Xh'`pA,86C[6I`T$ri&#dTF81X&j`MTEiPHkP8QIeP@Sjl+Q#RM,QNPep
-IBL8"kX)paie*S)6m%B"lUKGU-8`@qeLk[*e6r"bpPZAP%"Rp3APSrVkpm3&G[cj
-al8m"hGr4,aR580'*TLq6F&)3kDqB2(1Tk'QAYhUN*rEjddZI5f$KhpJ1Y*EV8K0
-6i2ic8ZCm&J`8$6QTZJ#MPZU'4jkr(dYI@51JS8flAYK*++ZGc0FHJ)1fGh-mVVf
-Z80EZHPQUJ1'*FS6(rilVe@"[f%eP4mG2r8!'!r5*kmRMF1[fe[+V"[PIGJC8P%@
-LmSk!r02Q!3p`H$X'dPi6keYZ5jH0hVaq+Q4lL4cRJBfI*DI2MF4Ec@)CiEj9)i!
-pXr4bXhD"@P&`8"4VG$RX,CX4jG(YC2YM@#0SX,d!@E)e+`"&f,Q[Ka,Rm2-`(KU
-Vj+)c$r"Hh9BGDqqa&,akZrXMSYqcVFl%ZUH[RhU&"8+M,&GG8T!!S-"Ia5Y0q5M
-V@RD'JQL2(&9BFfbdVlB$pB+PQ6L*pLXl"NDLCZ3U`i`PTJ`SPF(KAk(qm)S(8!B
-c@1kUVf(-kb-,Zb#)*H+42kZS)iPp(Mi%,3e)m-(8ip--3XA5V[UAMc(qfML`p@*
-G@VD0p-e%9%51j`fpP$S6!aYKfF6p)E+e,,@4'TLBl5bTVm,#)R*pm0L&FX[SNK-
-)dDQlUk$V6p+@)-AD6Mr'4"X1k0M6eMBq13NMABPRN!$U3lF,+4JiTTqj8mCMPQa
-k%L)B`E(SZda8$!VY&IDCSp6kMVY(dG`b@faVQheBEVeN3e)+liSJlY@V$hh5))f
-(Qrm#[Q2[HJ@cLdpQRfHda@4m0hPr+3ce1P8kdmYRKC4qj`DZY,Yk8jT,%FaG4H4
-kD@,Sc!92+EqaM8kS"EBfNm&Vl%b3!-SG2[qM(FV5S3$ecqMQmM(#5IR%5P-!Km&
-F9-I0jST`[E-YEXCNSiIEBQ&)q!C$J,`2Uk`'Ufi[9#ImCf%,ZSl6FIN5)&T$ZIH
-+"XiL`Dee!BrG-jT4d"(4mZ!pG`EGZ&&659`fi`L!ce+`FLc%hj06Q4I8aZR1(Q5
-@iq[HPca*Q1lZ@`*4$kJTLmVE!m@5@L#IAe@T),FABX3pD1T!JF&e%i!YL#M)i#D
-3!"hVfUp"biJ6'DNArP-'GiE`"!3G(5,icdI2BjdM['6qBfZd(#('-pTaUQ6#H`"
-f8V!M-RDlJ[Vhd5HV1@khdf,K*BGIleAH&KCbRqZT1fDKrc#'E)d-lQDTEZME(SN
-DLlm6VEU5d`1pm!LCQSG$)!E!c%EL5,1)#41BcXPV,1&M3PX3r+*aB$e!pR@%3*i
-FBbp30Vm$JDjkLQq8`hEjhI161$)-(Ep!553E3lYK%%d)qdBd1h"&Le9eC*!!c##
-3!2dD1--P#A&b93JFJYIbhT!!bDFjNYaK8#E[rDi-qkHDK`8!DGE!DJVBE'B)DGm
-,$QX!XemNdcK#X!66249X32&,Ap#)[R&%Qqaap!U*QYA-#1QMQ'h89KqQFUXXl80
-'F9h@MR8K'j!!UTSPPE6M'4)KBh"@Ea$DMleLk@k5B!V2I,h5rF4Z96Si(apZA'm
-Q@FPA3LRTh9,qC*pjU(++61#qhYqmI4*)Rc*A[D+C&Ge&DiDML"I14,flJKd+$B"
-bfS,+,6em5KBlU8"a*0`[,)AX1q3FL+F%18P(P'-)-jQ13eH((hm8T1YZc0%06I'
-"FfmRI"SI25',eJLB3I$p+dCUr%#8fF*KBA(m(B@BiK)fJ`[fI@+Cf1fj$eFl8cD
-BrE$qij3+Aip*!DBVlKhJ`JV*U89S-DRMmKcASMJ6lp&k3C!$(aBj8P9H93m3e)k
-0M0Q-fa+8&EplUBm)!8hH9ded"6Kc,UXRmH1,GhTP2!TN2H3@meG'HdKC*diEQ0V
-L-'r1Llkjd,jVl5!+TfB@k[-1D!h!(,+heqT#`N("cI9Q(Yj'Qr+DNM9*E!qV&UB
-HaL09@$e,MK!'*@djZ09-IrRiPQSM$L%9c@L8jK2!NF'!9b"BeUhCaS$2%-a4iZ(
-V$GaR[S41`ZZ3!0cb%,Sk)YkCCC`*$frSPjX)'J1(')Hj"Jb+*YEB*H0kZN9Hl*b
-LF@[YkJ"SaJ0lL2`&&HRJX'UN1KikT"F%mIabTJr$rpP(dS%k*&+qfc@j%h+ajBr
-KdJlrm+@@Lc!qHNY14LU*i$+UJ+61p5kNG#rIFDm2Lb&Fkr&18iTaG`0,N!$rlY%
-1-k$10hrpY%Ia(q0)YjiBbNCEM4F4m)ibX%EhN!!dfk+YCKLCd1m-eUaJpCidKh+
-1(Ib"k24elTpZ4CJ)h+LpqQ9mEIN(6,8p2E!M`R8@fZfikF1T$0ff'0QRe$LL3,J
-,42!d&XSCI@c+IFj$32*Y&8jp[&H),Ip@9kfP4e1+Q&)ZG8H,I'34'l81V5A3JDI
-Mf),&$%ZrA@IT5S#E3h8d+S2iC+jIA'"e'$P&mj!!r#F-c"k*4k!PMrC3HZhHKVl
-3dq1F$QcN0fd(lVkIh&,+$03H9+3jX!)4m#q8b9YMVB(ZX8ZPU"GJ*PbdDHk++QA
-*6+JiZcaP)M&6AdCr+3hj43EJAd`%CE+F5#&5C9Z'bpX859b-1q)1KmX0rUA$f`[
-`QmA-B*Q+A"k1jQ*cIeJ6$[j3rmde-$DjC-UX9ChNP#R5,C,U%E$*%Z[q%-k6aMa
-QZ3G`(SCC31G0-[VTjeXC2Z$$IKUcFE6(Z6'5C3qII*ZFKK&KbqcINrBrcRA'4'G
-MAc-pc[Fp$@aHf[5RP0pY%4RDk50mUbaAGBN326h(*&qIJk"@MaE0CYLC"r9m'1H
-)q)SCC+KHfVl9FVbf@%pM%+jlCq&FH&`rcjb1QZ[q,fF&lE9b49)[4e6AU9"Y%Le
-k6&[*5qaYh[8S*IG8D[$TY-[41A`Cki(L*-e@F([ZCEKQ&Q&#$Hd2)M)mT!-$amb
-c3T&$rb`haEZ9lR3GFVJ%YPT1k6XY5p93!dNr8F&$5q8bK3NE1pa4P"D)6JUdQ3r
-*U8$,44F[PeCp@Tbi[bjahQA`Dc#f*,9UIF,TN[X!ZY'$fN-Z+P3f)UjNGKTVd,*
-h(X1bGKLl1NQerK4@2Sm3GSN,C13VE'5mKU)8AZI5ce6@8@0YMiGq$#MDYVq[Q+"
-QS%I,H2@9Q@3"a3G[iM'4&CTQ8CS&(jDbDA2j0PP-Fe!1C42#4--JY3h3eb9)*#+
-&J9hN98MJXS0Qeaa(qaC&8lJQNXM*`@DU(58N![`,Nd60cHH`hH%cL6[d4Mi2#(j
-jC#R6eSFHE)BpbjZ,#,mPf$JZPje'paRFUDqLpBGCXbFG"pDUd#@jjhd**LV,Hml
-85PUk)c!J5@1NmF"DhZNq[!Ydl`clV+p%QHi+CS0DPJFS6hc1'JGV`c[Zl#+"3NJ
-BSX1l9A0$8`m2p6#r)$F!#"Ie4"D5$XIc,$i145V%pS)#fe[JhUBRQTr5`cZN[c4
-,km&c!BR"rl5XJkEjLP!CqAc)X63(3P1IT)YD32Di2Mk-hmq&0qfcHAG1(M,-k`T
-U668'*3D@i6J'IcrMcfk!YiUrq8)LEBU9%`p#HS6PYYH5hQfa`U*d"bECXjREdJ'
-eLeQ+a2#55YBAER%H9fMAbJ)3B#RpiX+ldCBqf($KCF#[[LhRIK9"@S@,Ih$Yr#!
-med1!F`*$@E(1[N"X,#b)BPG+i%G(h4qBc,kZFmS+Bbe-G)*VmlAQJ++m+mG&UJc
-"Yrh`NJMFGZq*!ZJ8T5N-m0e)Kr`8r"Tb"p8e$5eXKm&a4fU+&bhVYbr34UTmRlY
-PY1c-D5m*D0cTfr&6Z1!ACHh!TC!%!3!!1`!!Y+*0,l6(Y$N!!!`X!!#8&`#3!h)
-!#rdE!!6ch3!!36F!N!32!&4V8fKPE'ac,Xq!!!#A[%e08(*$9dP&!3#3$i!!N!G
-#`G5Sqi9-%,@BZR@54N8NM!9-FUm6IAGbGl$lD#@N&-KaMXTX&$qR*1aL0Eki*J(
-[-NAT+89T'DEqB5V"LMLfB41#JP+5MN6CbqrpSk@[$#k3!!`i[jPYU9VIR0h1)d1
-T63Vd3h+qTlZB,9M#[GE-KYX#(A1G42Z*AY'@XQ2QLBkj$aZjh!afQF2J2@@5`DI
-AVbcBfE@EG9SSXQBZZ8QRNJlX`CBe"V5**XHXDIDAZF(CerC2[&fk$#)r!jY[&jQ
-Sp(YiUR3lD44V()RLLd5,V'#B4"2--RLY$kBD2%M[(9liTBk#T,[U143FT!(0fMJ
-C*&hT$"DLK"eCBqmE@r!c6+`Fe[FZ9YiG"1ea$H0fB@68hpmaj(HTTZJXXS63mVr
-(*0ed`XY4@hl,!%aiC5p,U)0c3D+NU*MJG[$QZ$ih%UdmBqMVBmcN3p31-Gc3jRT
-&JCpi2CS8'&P--Yf+GGR2!Je(k03-')ALArEfk**i0I2U4bRU1lkYdMrILeS`G+k
-I3pL"V#l`8(,q4K+pV&akchm`L*8fKTSJ10`0*Q2c-*U(99HB5HN)b-D&U)AYhrU
-aED5IaPA`m9K*F2CX2XJD$*+dL+3I)$6C))GT@HPM'p-SmZ(p2(4cFZIqkf&-BFS
--R'QUKL4IGC'p8aA6$lG,h+rR1GCZC45Sj*CEj!5-3j(!46-AGT&AkB4$aK'qkcY
-Nr1%piV1a8Y@3!2-PZaQ#9"IH-a'XXEI9,VN4ckhkhhEm*mQdreH!4crlA3%XmEc
-@BrHKpJkP(AKPF`6`[MGDdaZI22cNH!+,NNYHLfTM0f4ebDfS"9U"i)4RVN)biTV
-,ApPT&U,%@!b*C3qDEBjP!E&6#8kep#5jfb(DH-jJ$'#K16,ebD3*-Ad0Pa2KZJm
-*E#N1Y)@X"8cS6#dHD2VFI4$*FY%kX2f2(K3[9FQ)bh$@'4l&!i6r@,q*KA1eUpi
-G#p049QbZ'@q,(5LXbL588'QVKIIdiEb,D)Pd&4VhHClf[VV!dfL"cLhr@Dmr3r#
-#-V0FIFlC#%l9rFjqHq1M0H(AL%AjN!",kId1dJGcKV'&+CaKiVHXGTETelr6`Kj
-!I%iZF+`b`NZPb01&Hl'mXG+(C*TYlED55'l*'+0B8Sb69IG#$[IRC&j$@CL*lh+
-M9&mC1mK8`(cf28C(HI"qTFE1L%[!K#!XeN[2"C@99Qi'j*UCSiFYKHLjTQ365lb
-@iC-+B)HJ%lA#Ak'F81Q5VVYi2)ecj&)3D6fAf*1K'1Ip)fd9p4$dT898L[bY"DT
-Rc!9GiN52+r1rRh5A0$Ha#r4!ch&1P0j@haacFad8U'#BmMTJHjM`h),1cRaqa1l
-b[jc#+E8c3-,EeDThmfJP9'(U3PUXRJp)P9$,2fDqB-2N&`MZ1F*2h"T[SBHYcp`
-*@'Xc[*AMh4P)pX&MXm0hq08Da&VjPGkAfX2S"`RMm+k0H)#IpI4X1k&Pd#&J&J8
-2V!1qEX+LN4,lJq42K-!eER4jHlKF0HKPSV!#mhaKR*PR(92K$X99$RD4KTrQ#eq
-0QaHPd'*[TkH044HAV408f$IdIm8[%6BNQ5X1@jf@2&-"Y@aBRHiVj%C#i-%[c$[
-NeDD2$C1UMrK")fd,HZY4PGl0p&Am6JF,RA*@F*-R)'kTke'T(L%DJ))R4)f-Nj0
-8#0U0&pe,lkVR`k(I0dmURS0ll(EMbdGc0(6Ye`#$R3kr#Qm(ckkb"X-V[EPI&R0
-63C)aj,QPU09eldcIrR5(aZRfek#kH$qfEZ[3@qF4j`pZ4(MNpG%+(M3Ki+,l0c*
-L%'#@VfE2S*ULhf8(8Ec#ZlZ8ka9Q)DHQmi8jNI4-&21(@`Yl!#0U`fqd1E4c9UT
-)K(lC'!Sj-EF33b3[j-0%H*UXRdKc*a1$Ne$d@YM[Ec1km0Dp0ccJaZRK'Upb),E
-iTlZkS#lQBN*Tm-!mb3kJQIk,5)k,'DM-2ML`XC9"8m4jZe2+CUb)BdhidI1C0Cr
-kIZM*C5cMNp*BGe(pqhZjZZDppJ#H5"3eBF+)PI&Pp1El)HH,C3'5KdMJFTM8Via
-e331K&JG+dPViL0E,'RK(d&A2rD1f&@M$lb,SL2qF*(FfC18I5J&AFp,(pR@ImK@
-MA$T0#SZMa0)ifEX[$!#,liHUdPGR&k#KicL`ZMYlQUC`K%ep'0Z)mM-4PXNX2Kc
-+F+9K8Th5YKYVT#MmCM,Aj,VbTXqpdNQUXFXGX4Cfj6Eq$%dINM!lc459VB9RU4V
-MVYL[BX1*GHJ1HQdA`1XerT!!me-`T'%&A-#1Vb8jcm@,f$3S"d8+kD*3[BhY1*r
-GDF!D#`VMH$%4G3K@C"iAFTU!(''h*I'KiqGNliVm'c,3S"RdiBXf$LkSU"jJ")#
-`rR+kZ#Nf"jYE3-lq+GqP6YUDEH#Yq8h32Lk(`)UYE9A9SE),C2DcSREp*HU,fA,
-UM#'X)UZeKVT!,d8CC)LD%ir+mfBc`m`XCSQ1-PR(&Z-qXSS*@pDf"cd[da(DjA"
-aTpVHb[FN4R6i55R&%HLFm0-'eT&1GAb&5j,BjF6*JJa-5I!hf*fSQ3NAZ"'!R+J
-f"4('V'*`14-&bp$Im2R)f9MDJMQ3!*5!FL22"pDN0,EQ$5#XRB'm*[jj5YLN6ET
-CEYLPp-dm2AGeCPiQi55*V%'4m"`E6S!!HSi[0,fIjHV@5EMI[9'Cr*j%(3qedSG
-A9rV0DA6C!Diq2JS8DPYe[6Y("hjq3@FfVhIfM32pjdTrK3`Y5RbGk)ErK)6185F
-1IT!!00%a4kA%&9MS%eCN-rIFePPXZ!4XiM,(6#$$%[[U"P#HMhU9r#MJ12l0JEj
-#qaY+r9CL"5HEEDI!ph$I6$hXb'paL(J#FHq-5c!cZ*@bpQSkI(P-ePNLBQGj*XK
-GpL)q[UKlX!X4SSeVd016FH*a*@M*l+92l!HhF"+0L2HG$')c'(1BX!i#@DaQCEi
-Q1F4@1R*,iRMS8EYIZKQC&LPV5@k6B!$qQ#pd1`2Kk'j"60ZN'dRdSQ")[*aSA"j
-&LdaQhZM@0dFVrqJp[J`2q(!Lcl-@cMPeD)X+"#(lHk@b+(A,mB)#$,-"AeKhe5G
-j#[Q4%MCp[dd6H"PN**'6Y5m@2MJF4VbII"XF8J&q22l5d+f)C1%84lhSCXq*aI&
-RCkU8"Z2m8,3[m9#jdK@TSDekQKKB8C!!&R)r@RKi@Up-SpBCCLaQH4)2),DB!X4
-04PSfiT)+c,il024ATYL1BHYDcKj1jec*Th&#q62k@CcVlE'BiJDjJ$lMKq,B%iK
-T6SX*S2Df@"e1%&N5UIdKjC2)AjdIKiqI@(QjdCR!pDA'4@@3!1KD(TRi,H%50lT
-@&a0-T'#Prhc#A9e-V3*$5H3m5N9k(B(rQ"q6SLfc)pM%ELqp0-T)-epLf2br$cr
-Nfc(%L&6Y`'hDK(j2r$-a@f`INp$FHJAYk`#r2,!!*R0[DDEVQZ,GL22Xd"X26RT
-PUQ!1mIPQqfdMlQelrj*-L4r68Gkfq6r&++TZk#(-22TArJ)26ELNElhlA0i[URk
-GFAU!rJ&N8eC[CV0(-#00@,emUe*BPJi)K2NUd9lq`4)frXV-"*iQaj32TKhq!H+
-!2lT3CdCVhAkp'NEJfNaeiCa,AJNke),IZB+4Za3KPD"+qj&pRabSZE&$U1G%[[m
-jU5"ff#Q14AR2Fh%QXKFZ*iI(Q$1*G!h'1@Va+KrqZ'R"HGUDlDl+&2G8Aaa[h)-
-`Kd-AL,`IpV[4NI+#f-@3!1)0')a(29-kD4r'`*e$h&6X*$@HjaY0XI(ieKYQEN+
-B&*+*r8!+-U-c24J*d"q&NJ,C86im@k02![Z[H5a6ePBU1%T*+4'0Zi"PBBXrlEA
-EGJekM4'BD[N5`%S%1MEAeFa[pScK%pk(KjFGUrkC*Q*F#""lAU(Ip20+!-%Eh3c
-UKL(MZ&acU5&S&51Gr9TcZKGAMr6`Fp%E&`pX+c0%)@X$(DTX&RBqi49)KejJd2r
-D1[T@+D%-9PH2"TTZPlbD5p25Mfqa1r&b+#8bY')1E"(k4NUM'`fchaN*Z%ad0%0
-&q5P[90QI6YVELliD9&QQ1[I9#,%)$'RL5QX-%[5JH1a+@I"-@)ai3h`USADj**)
-b"fBH(YqD#V`Sipc`d"*'cjAGbfkdJ(M,'d*Gjr"GHdUP)#$3e(N4@+JM2$EqMMK
-8q4,fH-el+qjA-8dm`I3cVRBH8mYA(S"Id6&XG4@q#XcbSZ)UqR6LFG9h-fkE,0C
-1RefHX$ch-Mq9U&)0LZG6XSbZ)A59Ui!&&NJK0J8X8mXq2DpKACQa'DXqb28RL++
-ZCTkXVEXE4m)9(%6[,9i"L5kS'!qdmhcQ291HV,MZHlQGk3Lq+RfGj41prrLZr2P
-SZ`,2GdN,3[,8lBjj4&6R!0rZ!eSp@H[lSb6UVXJU!*1N)Gic1dhfTNAiQm@DAH+
-P[96)pc2c[p-%Z*,3p'a%HQ&8VE1PR'662`N`e2AV@JFFZS`DU`IrAPj,[4"%V"6
-C@3QLb5mZ!#HAfJI+'`5CBldEb@Vm(XCpAHJF6AU2$*fNrhcT[8hD(P21@SqALK(
-I4aY)X1D&)M*@4%I2HL*@TDK31fHKGZ!"d,hiKfHqik[G'ZJTHCZe*jMeYZl1lqD
-3!"GRUG(+cpTQ2#p*F!&SSCdr6!ZdfZq,0MS[ZB5dr4JDM!rk88jARbGjl5NI%dj
-60J640jqCiPJ412H*$E@hR'q(iqUfX,D4kE,M@D@&d%3l5IErIR,-c[#V#q`@'V(
-AHd6GLN1mSfcI685Tdb`8GXpRG(me*%`1!Rb)UV%HZQa%c-Q,ST6jrQqXN!$F9q@
-,E`$%a",@6SNl'DqEIA0%,YPM8TL$KRX3UIT+IRH2m8HQPiaZ4XQ)ee6a'*!!ClJ
-a`ZZ&9A-UB(UX$*8EhAm5*mmp3+j`5LiS3KC+$K$$ARb1kc`9@*b1&jX19Yr-GjB
-C&49%k92f-4CB,D&d-'R"A@AFC3`4P(&Cc4qB9,5-V8i4!db`"p5Acb3Q03*bTk@
-VG4G9D[cdmB&q"CkQR(kJ,Ppa`jr,VYk(G3fS&(0YJhM4ef5fF8%iT*%&AaTQ-R%
-QV)PT`1'6j33V5&-D%i6QfUZBkTmelh-3#-!%A89C*4[UDK,VGqJ2N6Lam4!Bk-B
-*RAq'P14YF+m-H0q5Xh2'B'9EJbN)qjhT(2G*p9R-bHbTe%6EalI4M'98K&ViP"L
-rN!"U'D$`jRK$G0$JVlYec6d*KI1FXVlBrGjr*%)S62M0pQ4CPMIqQfjD-)lTjTl
-P(SZSeKc4kQYK+dlX'R@,TE@QXJb$!&IR,*UBlU,4dIJD[$`kNUpBTBI0aS@+G+A
-@$8H2N9XGRYKF#K[[e,"8S2),A1j[!K5'(XVTF2%BLjfa2m,CHrdbPe+@eb`[bI(
-GcQp%'2Ick-SkLMF1-*'+NaQ'A6ZjC(D9GJhf3CiCkHAF5&4Qeih,'q'e1P1KT+R
-&Q$a#e(MBfR$KVRmC"%%4@c2FTr-CQpRc'58JeXDViU)4RV0I!0)21"el!FNM0m5
-5l&rH%m*ej)"cakk)bFqFINi#HUPHh493)5-14BSX+0T6&D4k3,))Y#Y)rf4KKI'
-GX'RM0K@&G*)cVi#9X1r,2C&MH'9d%i5SH2G*6JCL[[iXpI#HULXHfZh2iq#eL(b
-H&X5S#J-Q45a,A4G8GG(D!#edp-Gp+AAa@r$,@Y@lhRc%RpNH!hCb3(9Z0#Dee2%
-jb+c@*GLGj%+Bbl0QEHPES(4EmLb#81RGd#fRkAp$DT-)8(Dl!r8"4'I)MlE*bmD
-(H(@cJ6N2RZ[A!1U)1XDD3P@i*$#e02893Z"J,'M"X"INbL4FLe1-i,'LX-"4$q4
-KT5KIH`DCDB!pMQI%48m(!f$$NHpm"Q@I5IX3P0E0f+HS2-%@X0Q0*blGeqec4L"
-Z5q5Gll1EhH+`X'[kemp`M)q1mTEQB#HX&a-"hE,LRVQkVXH+jG"VVYFrVD--[kT
-X2FBZVJFYK6TYl9hj3CpPH2D2L*,6fi@S)TGl-K#r8kQL&B[jZpk$hR%k-cK6af1
-'4l3b8LqYYHUAl,6p%%"kjlY`c*IEkKQZekd2')QGf3k#K-XVH6*2NejB`#(65C8
-6h"#[X,0LXJDLX8@Uc*X[$QX(LlD[V925jj*a9jdHqr4b)5jVBG6JpHda)4cqmG#
-)pXDTL0Fc&Qb2c9@Z,hmm5IXChe&%A"Yj'84m61cQVD-CqiKPr292r4+PpQr,+Ki
-[L2P+Z[U'6LhGDXGP+)GA#5H)`lMicY8j14[MU[m*m-M+H1N8HK`TaDVjB[*IF+r
-AVXilXJNc2&%%&[B1&X)XQQ'+p*1"2V`CpGLE[Yr68@r5E3ApYc3(C3H98(SPmQ%
-be*R0MG-F#cCra*pf%BQ5QeY'+QbRrdZHdS[U2&9bBAj-m4CH"K%9T%JDE5-mX4B
-ljMj)C"H)%@*9q9E-*f1CZB38F6&cfUkS!J1kAXCBF85,B&$rP4N)"V#YJ%aa-IH
-r()"UJi$E()KVh5N"A+P!05)bSXA4lKf'S9%J49j+AmR[425DrApjMH[BAHTaPBK
-BC!@'5,pAaTj'LU$eZE[+!Y4mek-0[hR0hr`hF1F)10Cb&!1T3)R04%fGZa@8A(`
-)A,!'GFQ60kKUhF93QJqA[#fCL,G)B-UUX5H5+6Eeqbl5$a3Idlc'3A`Qrr22-Ej
-kqh"mT(Tc)QFV$LRTPRC-FaThiZ9`kh'A,pFG(12iS!0kVQT5kTLNB3`6a"EhRe,
-AHD81Z,#m++-JLhG3$2@2'[QP@peY-Yr(U08XLI92L'B$Tl0EPT'8T(,Zk+S%5(M
-D%*KD,kB`i%fU[p2Q,A3[0-3fEceQTU21)Zh4JR39c0`6q**$82F,6"'#EjSQ-&B
-NAaSa@jkkILl*54Q3!$jBAm8CPJ3VHeprXP#6(QHD-CUGrh`X9MhfKZ(`dhl8Iml
-HGpeE9E&DdlCZl9$ASH9*eRj85qJfPk"p!UCh3X#2X+rf"rDmi4H-A$"X3`RY'h(
-ik$DI",a9PH5MBSeCXJ5(NBCm"&b44m!,d(FrrZk9j-AH+fp30P)h9"BLCC`!p["
-f6afEaR#*L+jHmka3Gk#jK6ql#GG9c2,Qr-RSh#3FTi(iT@61TkqHAj!$-BL*Rkp
-"L1dN28`afd!hEhVmVp[(eU1%3XHmY5-P`a1eZDLX1[q0F2[bfj(hFXjk9N*ALf"
-'XB)q&(2Yc+EV(kA9CEhq+Ed4Q@YVZF515mKq3A--23NIZ4AV`M6krNqBhC[E)Nk
-cF``lLE[5B$N63*49!L&f6S`&JL@e3IfK4Il&A4#8*35DGDYE'l9RiDF##cidZTS
-9!YFbd9U(8NjdbQd`,k6pqeD("`YPLdlY-&-ma(kii+C#m@(rM-H40PiYlDa+cNa
-JFafDQ2[40B@laFh2-2!VI*,00JqU*YBCUC!!f2d2[f60d2HY1Q-$!K+F)2B5F`$
-m0H)EqQK`eBKa9"!C(iMV#[Ti"C9-Vd%XYCHcd84Y8T-eJcY#5lEkY'2fTlX,jP`
-Y)r3BVkD%'%NM,MSqim$M!!T*dkET#9dMb'JehVEDE@efJlc#Ga&EcVS1UIL4pYQ
-B'['%drPGL,'e!X2[p'6lIrb,KcPj6V&&pfUc3QeaMRI[)j!!%*qDDfU-'iEfiHZ
-P4'`64pd[A"'MrIqXQlPiZiGYDaTX2`i)pXX#6pe#lRQ'@10,cBXI2(SmMQiYjFl
-%l3lf6BU!PCZj0ihEXQd+eYk%qTGGl*&4cr0m5`(D8k5ZAf2`BK#l83F6*p39k+Y
-HpqAk8F"-&!pE[#60!NNZbQC8bC!!MNM++G)LFb-E4P9h&%[kG#2X!-TNAhUL6Ib
-!*`eU)1JJPIaLMH('ZF8ll$E+E%AmZJ)TIk4ZJ3DDlE+J3H3U6@**4Bmq8jPb"F&
-Yfl[jhSZBZfL#'XIp4NLS8*5r-*S%4eN%mMDqDm&R1L@EMdLMe-m&9VLPKBp59+E
-mf)B`STc"5,0Xe0*@5(Lb3p&kQ$I-6K2'!XhDQC2(NSDTaR@1,M@Hih,#BAU!M$"
-0i,--U[@S-DL5J&m2Pa5K02(P6!fTcfKK2@K&k240dDhk,"K+6%K"&"c*j&6[QG3
-@[M!3!H`bJNTPUpJS2'[mIf"L*!@%Fp"#Lf[kM&fY4cqUP+mkTe5"afU+dbk)[Rp
-Mb6#@+Zml+361T&R%S'a'hZ`M1$jB6p)!HZib#bUpLI-PT&16pY&Y,"L'SqKjDE"
-ZLmQ5iDKCYAklajiCIFqNIlM+KkFCpB`m``fT4$Y04BC,*Yc1CDRI,2KiR"p,B+!
-dHBNe*M31U1!"e1#[!9'$d9pKUPY`Aj&%JH$YfNCZH#pCV,242PGZTGG%IM4cHNb
-@9I+i!e)J'0[KNPjl+kTh@'SYlKl$HN%j4N9IJ6mUHUbpp1CPQ)*h-BNdd%C-L5G
-dAa$cpH6M8)rmlK@TAGk+8BP$38CME%G*a#kKKML6q4r@2ZF3"cKJS39KTkl!m1*
-J,P8ZEj)[d`NNc&Vf6[8*VNd46+GNd)Ub[XITf*+J'PTGKU*60ZJB`*ribD'X8p)
-(Y*P!VU#ej$B$5TY,!Fd!#(!P3jLpl3[adJ0+lAKr,IRkBhD"JV*cAe`J,VBPkc"
-dcrm+c,Mq4f&`X0YBaA@0Kerr0+MF%0FTCr4e"E9!+Hd'@GB4MkKl(rlDZcFY"h8
-0MmNNPq5r'Hj)eTeZjIGQpkUArK84qlDLLJQH@lilABVXY%8Q`&@blK'EA1PI*CP
-kVYBBjP48KcEB0Dd3DFUR*p+[eeNKjcY5Qq9bA&rD!`ET`+Bl0D0d2k-$1pLrT2(
-Yh52X2Xq9Qjk5fLP6mLU#*V8G9d5c[DVP(HhH[160jBXijR!e'*)pKY2YN!$5&(Z
-Sp`h66i@!DPlXj8#lC12&%*iZL"4C4dde6)4bS4N`N!#Sj[X02%Pm9X@BKM0EJdM
-&b,pI#'5LpEcZRR8$M'AZ4+@K&EDK6[pSRZBL$e6C3iiSjp"c2bEZi[VJ9N-FfMk
-480#L!2r86J#'r(QHP"*hMH,$H3amTRKZTQ-mU,UKS")+2GI@pYJALj!!mi6@hV*
-5YMfI'V[U5`@C(l*`&-8--#qLSjdJU`c-8EAilPc0!dSQQ`0"[G8%'TLrV3J[9a4
-1592im-916fN+GTADhLCI9VQ3!'M42d9pBp-dI+*j8i2@9I'fVQcr%#HH0Lf)D',
-MJEHBB%MC(P$mCcEVVK&CRrkpLL)eL-(-HY+rZ1fF4Fc32F!qTQcdeFpfGe!cS$I
-H9%F3%lja2k@1F!U,2Z3'4YMjl2eRTR"!P33&L)'S3%TQUqHQ53%*4@r9NF(8pM$
-UF0D!d4)HI49QRfNXM)8D(!NrG,*TEIq2PkicE+SbC0E9jTk$TUd&QeMR2rJY4dZ
--ld4dQc91HFm*b16!SIBpGd!Hr",#Vir9CEJXVZDQ"Pj+"!M1D$h"0CPL[k29Hle
-"PM+0HVTX&qiVPf13!$4*(4QV(9)Y+(IE`#Ac`[SK@`NaI)lADD1[HpG+%J!2jr$
-SVqD61F84(fk0dcBBrGQ)"b6@cmPm#N`dCmYd4'k1![(qfPX-RilFVcr+#0j0A,2
-'28NeD-3H,h(krd!fl41khJ@l'iq-KaPC!T`r`K9ri!,mYf!Rj2QYIUKUaA#@0E6
-b"j26CjTQJfGZ*VSEhMP+8DJLrl9bN!"h5`ll[RpKUi+LJmhH8XP[pEBr`JjhhhT
-GjmST5kV!dG(F3T8C$ZH'Ac%)DR`Af%9e*Fm&kY"TBh1),)3%4L*8X"mP@GImPDQ
-l(d$)aVe8$1bCQl"r*3`(U&b(-+Q`'2,S3HALN!$H-aLYJ"X+f5P"`l-bDkIZjPX
-C&X%5K@J6%M@bLMZkpq)",,,HQ@dBmXqdN`66[T[aGpHhXN89i@G-&YRV8GL$T$V
-56h)(Tm"a21$eGpY-UV`@aXE)3S*lrC8cNEU[8!!HBjm02!([rYjfZ`RRSA+GBD,
-"NiRhP[2[MZ[P3#F"c2"DLd5Vcl&4DTNBp5"i61MUY0F4#dI%AQVY2SQp6SAbbQP
-*&pm(cV[i9Nfj"iGI-[9kL+1MbJ$p"LdIA0Sa"VN,USpPqlG825[MJRD[ED1cGBq
-DqaI,"d3A1UqfFFMS#CI%G-1`Y9jC2bP,"!8`X@$!M92[$**ac6L#)dGV4KaK,IZ
-)TFqJE,lZ5*!!amPhEcBKH**10[25&@$[ppmP+44Nb,Kdq*!!0d2%*-MX*1ar'r)
-[j5Jm'64'hQ+",lZ&p`ejNXJ"c%VZbG))&qR3d6-qF(,3V+JBGScB1,3N0&lK[RM
-jX%6TULCf(YITT9S"RDf9!c,[9QTYfZQ,2(k[$X)b%jRLQ#p)ZGFbbDZVMAYEGF"
-Ram2B#eFTf8jLaaSXZ4D-JS)k)dJ0S2S!mEAXPSaF,3'a01r2Vmc,l@1CU%2P23!
-1LRpq`m'qq1[q,VqB,UJCP5lpYlj8`2QJ#FA*mh6Ub%41MApZ@kS%TDPMjEjdT@D
-jh1Z!AmBdiF@fbAD&mFm$Z3mMrjS@SI4l[(l[AR![1JD64qLP9p[EB$%RdU-)h#N
-P$C5(RT+Ac9@kH2'+p0IkI!+hPD3e%GPTlV1E)U3Zi,1`[IVH-NY&qX@eA,I#Ymk
-S"Z5QV!jl"eS)GYjc%@R-4V6BTrbq[8Z%S2DiH[66CX,@5C%!Q698M190@f(qqmi
-lG(bG&Vr#V,XTCYYiPQRYAKmFc(46BDJ59a5&I@5i"JNpKQ0$cmV)6+rJ$ad*9VG
-!FGPi-T,9d3B'&drYqL#+KdH"p6SPVq5FLFQkImQm"Zab"!LENaQ(A%Fm0N,*)HF
-)aS(4Fm1"&H2&X4"2,BaJJ6HmD9p(4c)@+,c3[*cd),'"!m&)p!lAGf*j@YaRl8r
-6pbpUETZ''T29GALJQcFFIR*G"Ad5UHBBZK@1XAdhaDUmb@C'8RbVK6$[N3hFT[H
-Q9,R&q6m-11aA+M9mK(!e"j(03DI`J8BN(UCpfKI3+pBH+-#ij,Ja@qa"V2qm')+
-bL&QJiU'eRS`k5YiS'l[,G-(B40a""'8q-e&fU8#1KJhkiUc+rSF[[A06l5rb3E"
-U&K+Va(0MB#68+JLcQYLiY6mf4jm6SNH,8"28M6[r"1pS(NASM&JP!TIi!mbEBh#
-`)S,#mr[M3kKpLA)LmF&F@[k#B*9"+H*5dPRSl`EKlYIi0X&@qNDLE@i#1)lk&#c
-EZjAXrLapGPl3dZ-cC%[RUrNLN4MAA)ql8b4"Yfr4dJ$Jbp$Ej"PrQfbkT%+bPHJ
-aZ%Rf-MYC%(53!'Vd9h@URQM69'X,NVZTKCZ"q&jh9aX9-[1hCpUk",G[cBkNrU$
-j*5'hlN4CGbHK@9GrT&69AYlE-13i&-"c5rJEE&kY'MH!C1'VqFr,heaC4GP*HFq
-G+QpTRQH43@GaH3Hq6B(D)+j1-!8C(a6!ZqS%&DD[&kN8H0[[cIcUG%[P6G66(BY
-d#XBh!kFr9!&GAI'fq0`EDh(pZZHF&$@,JmFC!kj5F0cLe'Pd&D(-XQBYMN[81SM
-61pKRY4ar94VrrMm$&1L!!aLq&VVl4Xip0YEJI"jH[+"Q@8MBqGlZEV8)'a41r[M
-'NML*!Nj!KHfNfZ$q@@%UickI9[(!X@cFjJl3Y[fYYj9rNEUUdaielQddD&d[G'3
-CZ8VMIlkP&-)qI-A5c1C`*GdJ1al+&LIB-R4PQl'J[0NXrKSXmrdHdNA#PU5Abae
-9+X[+%@!"j1Njai8QR$BjUi6Ji-rmj#Lkm1VHNC%LN5e$+CFh1GYNC(D1`,T'dA$
-BkeL+CC%jA'+l)I"LP-*ZX@a3i3%K-cCD-T2`IeeZ0KK4`L9&(j&0$c@U8&Sa*6V
-qL68JRr&epbld5GN%eYaZ@E8M2V$BcfbRjIa5K(TmF*fp1P25BdKdHca#rhiJR3(
-!@eQKc[!J26'CAJQd0VG%J*pI)3p4UKFT("TLC@R)fQB&5T)T6+GRRmJmC(XHS-3
-@-q+0P!El(QPkpI`3P@hCB'$+34"(ZIU,&*URe1KJCAN)!$DkeM'bH,YG,Zi)"R!
-8SVaLkYXd+d3MSl%#HMGjIfE4fI%G&d)jb+[6G1`2,MUD(8,C@VMhV0`A4m1bEjF
-6`G2Pfm$JBGC083XS0LN!3aYU#V&MYN*NAaT4!YUDbYAh*4`()&K#+hq8!KYac9P
-Z0kqf0`,#qq3AU[CQXZ2a,6Dh6)+9Uf2!(+!HGP9QcT-SYrX3e[)`!!b)YfaLGBl
-fe21h'kGacjaBkLFl&hYm!Kb64(NA,,p#jMG20!LH4CD2k9YUN5,C8ker`9f`bq(
-"'&[m6HJ(%Nh)c5L8NY(0P$b-'h,j1!!PiKMT9MR3`44eGi1ZaiAG@k6Ai+FmBI,
-*N!#[Qp1'LY*Q52"8)4HlJYpUi4McfZlElFNq(QK"IIB%*2l4h&L1#+ReT)qh#rM
-&8!4!G(TeUA2AX0KcXKK!2#Z8Ehff*bN#p!Fqir#"3"cfaflP!YH5@0+8L`@f2r+
-AG(2B1YHp2"Vc*V8HUlpCU(@a(@1`J#ab2R#Jb'"JXDU!akBDqX(Sa3e0ClZ6KJS
-T)L"%k!c8K[Il1'e$JeTNb)+c-LiDFM82NeQ6J2*erj%PF'U3!&`SpQ8i!B&1Akf
-#rCFb+bhJGR*mVIXlhQe,lGhaZM4&(30lT'EqpP&A+(U$Bp-aTAEL'aHD9D68BDU
-*G3hiUR`5'eDSm%4AP%EbQYKD"C8f%8@aX6UI,(r-B9R+d9[Z)kNQGI1,CUG4lZJ
-4G0`-`!AVCG4S,I4U9@!rF`CTl+N,dAED+#@[eHEZq!pN!S6k,&C8rIS"[2Em$(M
-6$VfSebaGc-#GCf&,AmNj,2SDV4(ZAMV`el`Q$66b2DYc'-r!!S)X6HiANP&cH8B
-cMH#I`2dKfNiXS*F*pPjK0c'QHL#d&U"%*PU-ITd6i48K*Z6N-D2Q'2L%dVqTeDG
-1(D)GB)[!#lZ2@D6L")GMr1alUGX8L`,4HP"K25GpdD4q%-+l+TN0(&mH9rEY#XG
-Qpa5X"DMPUPM*AIda-pd[K2hiQjXCKVLcS%)jC(`-VMb)Kadm"$HYKd5)5BHbG0H
-P'6K%Fj5c`C5pR-"1cI)[[HLL9h[1RUV3TDJl#Y4SE+"d306BQhiLf0[#X$#)*J(
-i!$L4i%5)&*1iRM',@[[XTqa!`QCpEai!VmQHc$1#)`JKQYJF5+VM`A6BqXE)*aV
-R*T,*05#[@!$1X'fch@TBe3@dCd+CB'KK#MCE4!V*8QV6p,%h9'&`C`0S"2Cc@B`
-k#S`9Q#B+r3$FCr-6"+`p(G*9Y5lCKKlp'pA(8S6q6q9(j6N5ca3&6)KA1S*0GI0
-'I&0BdaCf1CPpqF9D#R21EZ6`X`2(-j*QP5LlMJeHlB!KC[HGAFB(iNB'Z-i$*'K
-9XfIR"E5+KPd!bRVA&m[A%A&AH)!MM+e*HpTbVe8'c6R01F+LLfMcr"q0Nh'%qcA
-RP5i`dUVSehXEXG@A"5ehakbhLa$NXqT@24jSe6d1Ji5UpbEUE@LSBc[SM9p%cVT
-%-6m0T(`1*KZ+R$G1FQ4f`dZMlU(V0l`62(H!+$[keXL5mr,TFk,$,q6r1Tr'rEm
-%h5@cLZ*BDDRcT+3[P6,C6F0I$#SGEqDDFT!!bDfd9HGI%IC`DNT629p)65+p`S,
--rY"mj%T#a+,,5-)8bCNP#8`*0,MZ$iH*H6!5)XSA*mZCB(dUGPXC(SPP4pbU@re
-L()JHqQ*!4R[1emVhe6q4Z2qC"b"2kEQGq*MS$4-J4'b8IXp58U8bT`X1q0!rE2M
-LqkGpf3pZf$rhQ`96KN8P-)5HSqVY&+"`qRh6qkbLXhA@P#@k`XYbcD!5aE@'i#'
-ci!0k5ZhJVqj)L)QekL$1D&0-Kl(@Z#YdR)#Vkpk)eG@acG3j*f[R!CD@MYG&LF9
-EF,a2MH+JJ%@#Yhff-%INPXX&8BRq()UQJCH$dl(*Gp[hf"(HM[KU04Xd49eAm8H
-Qr@2RK'Q[9&,`#Y4[2$@ZFb+Fr&UqK1%9(5I)lD!Pa`leK[!+FSM6&NVlhFIH'!P
-P+Di#9+YAfG'')T0@ZNK#QV`+F!0m$8a-Ue9K&2!*[KDb(3r@Ze*ed$BRG%hYHb#
-NYqSdPNDmLRbf1i#klQ'P1FU3!)(D'fbb9F$U)0!bZkID4B&2&c%5!6IHd`8HlPM
-CD@r1`B3*2SLhf6ih0`-1XSS%1[XEVU#U,p8(1aD"HGE*4IB[c*!!V-(ZE%#i5Hp
-kcp6`N@d@Va0@3![cNJh5T[3L@8Rp19NdqhMDMRM%L4d+%+-VmeYYXQiIJkLV!I1
-f,1FIM1G2)%F'1Z[jl,G$!"SMpI!5@-Hcf21DiM,KpZYi3M4hJcF*&i,q`d%a-'p
-kCC!!`Yi[0kpDNrBa!Er962a#RXT!aCMUkG8"[BjSrL4R!'+G!jAi9DRd1Laem6U
-Y9j!!N[kLa20l$6XVmj()Le#e"L#9qTk'!d6l-cpH@'[F+e3TiPGH51bLle$DR,S
-,DR9JefcCq34lV09ZB065M-[LH9GG)qQl[E('"lVi+Z,9,NTeKmMMh,C&pT9*52V
-S1iZ(`crj'Z+IP+AhD,QkqDUk643'"1mjQQ['p,Ekb!)(U,p4hHY4[qT(,&q-XD*
-%YDk2QXeDT$J9[R0a'BDVr2b6fPa+#$rGTdSCjr&4BP2)X-S[Q#[T@l38DkiBKR@
-BK[B9+&,R!VG$eDUX!0(UmQ!%d!Zcq&9(P@%4CbJ`$!MleeVk4d5c9VE[kT-0i(S
-eF$3mRc3-@"F&KF!If'$B5-LbXcR(+LR`%ZLVfm8B4(jF3mUrYUJL"Z,5DR#l5-T
-h,)hGVlBd1J@+j1T-8[Kj"cXdiGaEeZiaU)@8rUk)mJYVMcP[3I0DCSVeK@elXIJ
-"[Hdq'iLd2mjTdP+0p+2@##Fj98rI46r(rqIUr0raM"JfR'HF52)ikA(9aL%JHm5
-+(pIV(YjS3RRDYCqprdNhAM*9[ecj0k*YMqGlB'1'D"5A%3aD[BFXUTeKPVA0Ei1
-PX1)J`!@M`b`qGZ+qAJZ6*P&BJmjE&brkaKP6LcH)1T&I14hR2E)a(-p8&X@AIX$
-mTh%USFf'H%&"aT4PRMHGI'rB1TRI-pqHDV5ZP,c!SYNkYG1BQrHe(-&-1dh5+m+
-IFD!e+NhaYZFd9ClSa0,D6(1%$B%qNL,[1ZrX$8%**V'llkpK-dlr,iAGU#N%BVa
-PXPCG+1e8V[0DT'rb[dQECm##5kD0Rlh1A'jY'2INkpJIk5(-CVqLZL[GL-i$cG"
-,dJ%`hAA*T62)KU`DlV,9mVb,lj*(-d4m@ZGJ-MjA&l6BL[8H`*FYYe3fMH3lA(h
-b+JqLDTA-Jlldm9-CpHUaMmjP4-$SZR@GfEN"V+[eJMTCNVT[M6c'&BH21#RKTB6
-`*HND&Z)JFU+VaU+Z6kf13D-rRMb*((!YJPj@RBJkC1U`l`Th'B8dmZHcFL!)1'q
-l2j!!Si[R+A)f4rC%JA'VdjhfhYpV[VQ&hCZ8l"H9kJ0YGZCp+FNp(!H5Z6BQj5B
-0I5iHm14-B3k9KbBGQpX)ZI5p0!3,h#f*peRI-3MXVRh629X&aE01LX-'NkK&)kD
-aXh2QbM96&RJP0B6hCfMVD&B&LpaZAMXbeKc!Xr#2HkqSh2C#eHQ4&q)GXLlK!q9
-%@%$r)4E(eVbF,p#aZ3HCIUi1U2lR*Zem9,J6GF'8@EGlKhXEmr!@19IkSh0MeXb
-DU*+MT[VNP@3D(4LVc(&a6DG')+F!XaQ4@mZ+2dc(RXLSep@j4Ae*C91(#4%B"2L
-DL2mArl6Mp9IKX$INYT&RRkNa&8VKHha5PHQ9kVphKjUbXT[CE)J*AkdTq*AA6U!
-4-'0H)m)k6-6X',0SEIU,e3S8YZRNDJCRLlTeS#UP#@lmX)ahJ90X@35D@rK@iLB
-jbVFE23#EIc3pXGB!PeM)TG9kCie"21(EpCkC6bYq94$mUE5X0LAAqV,CGhH@%-b
-d+,PApq4c!P"!@458L-cEYM3IrQ+XbBDR4EKR`DjZXKF-3JGV!4D%b9Uca(`bi`9
-'!3X*A+SKDlY3[M2P`lfhU!dAQYQaNCj,*G$mCPh@8$ZCQ[(mq&B5EKh%XbKkI@3
-BM8K)1)bM+N'*%GT%,16UXhM+RdXK2-K%pNM[*(TE*Q#A5$e22mJ%*iH,VFc2U!a
-i[V84K0Ge'0e,&SB0$KL'YX)j@E4%1IMH1+MAHHcF(Ab2LAVCIk$R6GJ!G)mjbcd
-JpEFYH`B1d(!fM22UXPeS6pIX%P,,9ALJS(b!L@hRV9'4*VK5Ibdq"-m3e0I6laP
-1dlB(2QiH,XZ%2LM50b1BFJ&kh83P(24-IbEN%0+6[IIafT`,e-00FmM`m5B'Ja,
-qMheC[Mh6Pd"TJ!i4KFjM@+J,V#6CN!!50&!l6kAFTKJRY)BLdPLG'`d3ZY%2r%*
-N+SRAbeINa1Fb"5UqN!#LJRbP3DRe#H#%hS`YQ#9hNA3ET#"dPjLabk%pP%$keaB
-V'N2mP@[(*3hV)BarE)UJ&5Nl3d$@60%kK@D(e1f$GjSmi$1fEQdiPMMGFINam0j
-S`hX(GXKp0kDk#*iLRAbfA#q2F1ah1A0T[5[(cTk4*N5l#j+&Z)PJ&BASeeYpFd6
-r6(Sm%3#R#jP("@,Sj,fVQ!MZhbf9Q95MCL)bhClEF"E"Ik3*P6H4)kp5SM80lm%
-d[Gi(pMT$9jeld-66mSq1Ci0DKN(Q-BKeH@cXB%2[p3mK'FcmkAf56K)p@BYe9X3
-1'+FC9IrLSLKAA[*Sj(CRBk0jEGk&HXJkZXbiVQ*Y2GBpLjT*GJdHLZ9%HKdl60A
-A[V[3Y[h&DlL'K095fTeQ2+ZcR2,0h'IPI9F1FQ+PH,!%5Z9'0Fpm(1J5[Hql6il
-PcaZB*&`Q`*!!bDmVC6E4B!9B2VkiCaLMTdcAY`JVf#86@Z!aj&SC6bhd%V0$N`"
-'K&YLmlQHJ*mEcVI,c@G#5E$N$lH"3`0N%j!!9[Vk'j!!K"aE$a!jBf2qJAUJQ*r
-YC`JK1ZELfbD1,M4U2SRRJ0D3!&U'1%pl,(d%DIK@35*dp[Nl6dP-@q%J**jlMGS
-9,qaDe*e&1jpe4@L#EaIT'ISj'a'[mFXa65P0h"L'ZU3[Sqi"GV@24Bc@fDI`KaY
-1i@"iTV&1&%6%IV-F$)d))RX%[aBi4E1B2lk8[&cBe!$2ji`@CKlSa+&05qE-,,R
-lL`+ScbVDZEiG!DRS34m8Bd"3-'X*U3Rkj2D+2GSKD$HU'LYrT6fD`A1eQE&38Je
-!86R4I448-*&(&3+Zh,+LfFZ$ihXU%Q6)Tp)BIX-RA5-@E)D*&B,I[)([lZ%'jG,
-I(#3BE$QIiMr#-ArL2*U0U&j2BFT)E**d%(MeC+S2RFaQ9%jB+9jI2dUMMD"`Z5[
-F,05X%*40*lC1[Y6IG(%JbXe2cm&%I+T,M!J*$V1M6`XhaqTNEIGLfM+LB95ib6k
-p3@#b)e$36cDqQcKcV0PRJmCUf!VcX*9%l0#5mTA@@!kl-4",)q[1Hd'8epqaj0c
-ZX"Sp+HHr9E(mJ@0(p5S5r0f9Ik[(UP#aH`'!f,AIcbid8%p9&hTE(2aIHD'l%Rh
-T,m6@SQYH&bUA'6bV9X6ZF21PjR)ChT2*RE,4ldZXTl!`9d'qK&)9N!"F8,60[lG
-+TZ1-mbebE![N@p!CC$2c3I@1('25VCqPiH1-9H$!'TpP&!)#5kfpmX)6+chL"pf
-1qR,NRi191FSVV$i@KVl"MB8-'Q!Fa4I2I*MiV0YZ)cT@bGpQK!j(,N8hY#RdNED
-'L@(Sl)QB(b"@2!M[8FK!@q1*J,Yp`1&K0F6hPUG84ph$l)CH0@CG65GZcL1)ZYP
-f(q-,jM-l0a-LX2VG5*Idilepaj%6de9JfUUmPr9&2$DNI+aG5T**YEerN@Tb+QZ
-"*ENJY#B*8+3B*@5IrK"BKM$29!YU`!MZfmdl'&8pGZ8JA%@j6fLjLh)")%3M4Y(
-e'k94lE)GZZ4pN!$CRmqr-3&rpDc)B,6$053L#`ZC09CM[590iKj%14&B8pCCpNR
-'56'JjMM$N!"-59N*9B&,j56,d28VBKYBaX1IZ5RpZN&65hk*-bZ-L%!(1mKr0ea
-C5$),YNR@&(Y`q&C%U'l!`a&XUNHQ0(%+dX6NJT3(-$`PCXQ-'LpSrLH3!21qmlp
-6dI*1U9jp(P--V0&4M`!S2ZjacHk6q@h-fm6[bRFa-m5Ci*`!La+%4&,Rq1`(0)L
-pHk+M6,*6"4d[R-*bBT!!aMH`0&mC5R*Tr0Ze@dYA$X39MaS@PF,(6,!Mp"UhG-%
-IilN@4-8FH2lVP$VR$di#p9Zh'll$FCD*aJpFN9jhpKG'Kh0U'Yk!Zh#3!1,r+Bc
-XUd2b'8Gc9$K`8N%8RImPViFkPZm&!43ITb#!2IdI--SGK4(k6ZTc58l4kPD9I5l
-VdV@"D*VNJqYVjaYU[VeVTf&TKJ`(Z09S2)j2'If)NZ+l"f@kNIH6dB4FTA*cYZE
-e5CN[L@d5'hXc68T$Zf6YN!!XDIfZN!!R#iL1AJj3NlAr&TGG4BTdrqZhlMf"h04
-Al'6cXSI2V@,lLX"-Zd85k"Gd0*hYhQ1iRP,VXf1$$lSHZX)5T(!j96HQ#&$c'Li
-04USJFKQlIEp#plFEKKh)5p4Ya!0q0X"@$'GP4MK0-eK+5UTTJd-jFLr%CUpKZES
-XhIl!#cBl@SKMf"64"$SBk6c@NlBXSZk"jmlEZP&H-N9ZiNmeLrIBD%$fb"Z)4`-
-F`X&m'PFiV"KAG29N,TAXQR$%6L$jN!"KV"jkaqL3!!ZhrQi#,Ircfq+R(*!!h`(
-0Rp5K,99)MRciaQSmF$0%ZD#FH+hKUMMT,6Yk(epf4JGC0I4$IAAkba5S`2Y*@rJ
-,VHD*2HTeP[I%@"60[+[pljBH*iJcp&5cXTh2USUiaXPXmJ22TL'0`$9EB9DHjp!
-mckaT*ed8medpm)K)lD8U$"Ee2$1FTJp2GN2K#a&JVQrTS"1S'DZ@`[*@["qD,N"
-Z&PmarB'jP)kkkfK@Jb*MGqAZpGG'Ef(dc9N!+fXZf[*JaCrJ0VV6aR&)C"iG&3l
-BPG5E68$!R3SCBiEmiq"59p$"5)A1mP@U&kVI5dIdf5l$jJJjFK+FYkLS1&6b)2%
-I`FB60jrr3E2i[lfE2%j@9aH+iD$mNH[FCXEDCF"V)@CR24aD"R+Kc12K0"f&a,R
-[Id`3D[9`-)(j-)IEhTEl!fQ!`rF$iGT+rR+ZDN9NqHUbZLf,lY6lGGXi%,I!fEK
-lb"eXqNAB*I%8@lM9$,BNFH*`F(V,mep-MUNIIV!`bHS9rq16'%[5clEQlp&jSGd
-G"-[TEVf#iaHP6XS"RYd!L$,*RK51@59MPMHIFf(K%2+'#1Y-`J5b"pBMhI9FGL1
-h"F`FRUMdp&d(f1%14+1q0)LIaIQ!NG#A#@B)TcCm#3YV3i9#-B6'fL65YDcbPVK
-90NmcXh#RkH%Jh'0XmHpkC#,h0+f)1cb`+`S*C+4Qa!E6h3Ca@HfEd3l8@d2`HhM
-LGQT2iIGrVRJ6Ik#J@9(#aY9V-YcQ,S@[Q*(%Y1SkFZB2*q6ZZp44e+#($-[8P23
-SFdKR0a(X6Kj8l5TL4C+QI$j-50SmP@rHEZ"(2Z8+AIR-J1mpl)QR'D0JY4[C!S*
-FMTappT+UpSZJDCAB)R`G[YGDDSR1QrhS#V`Y131fJH2&+J%&VUH6C$dMJNAeD&I
-%jeaHiMU$+K2e4`Sb8&X`Xp+(hQqP`abp[ZK0Lm%(jDRb(-'d$-1HS"Yif@G*Pkl
-9P*dJA,Gj8l8NEASch#Tp!LG4lb,Xcml)ZZAC9Y%6e'DZVq)Y8LCEP04+kV,83-Z
-*@f(BVFmLc`IJLGK@LQ,E)Aad))fBkha,#2e(l0@T4&UiC!P9fTd'iA!RhQK1"9K
-2AZFe''FfUSH-c*Yd-E)4*5+98"PISZ`45@)'EMX1eY9j-l1@ERE*CAjh!fU(JE@
-E,BURQpcJNPP%X!pVlTf,9iM)"!MRHcVDT@hFh[ff`FE@a0IrZ)FH4$h$ra$elMH
-Sda9BI$1XlU&8l8#I!+ka`Clf[V`CQ+c%LeKjP`VDjRBE*UE+)Bi-+hJBAVD-Pb9
-X1FfqQP@2KE&CKEUeXfLTcL!3(X@8(E$D[I0b0,G41H-EFr4BeV43',j,qp#*F,"
-$)Q5pi'ifY,#VEXT4!2belTL$D$+m[8L!Xm[HQ%Q*la22(-DG8aPq#Rhdkl!lqrX
-JYI5K3h#2m&!1)B[Tr-&Ne(5kJ"eDBrDG@Mm+ZE`Rq5BmVm3rCX+JJm$2BCUJUf`
-AcdMD0TDlT*q$AD&3Y5+Jf2cRFEa2L[LXSqR5p`pIKX'#LlPeMTXI+U1RNML)48!
-9QALY!h@,9[!k,A%l'6I5e11LG32Q'SaE8$`ikaNJ$[-AZe1amS,JIS5DL)P5lFL
-SChfE0!$,!Qb-1pEi33bDE5R4Y-K6@e%lQ&)X&*f[eTppcPQ*MjPF2P(!VNk1(p2
-+8)R%EIB@H5cc*Y+$BA`rFIpZVR%6ceHdKlCNRVY9-03(P[!NR6@KY[qhlfFHe)-
-iRId4CeDShe)HqS)@jFbE3&lS%hFV8[%Ha3D0+FhES68+%mC3PAR6IVQBlkN*2aI
-h-X1r(*1hrF*jpph,q9SU0@$iS5%"4"Vp@QGZmU4"9iHD'jN*0#qMBjhE1CUFKNY
-39)NDK'[4XKF4jTBSZMLRcBbb9IS3FE`XKaSET*U4U*(lMpZZS)h')cDeq(S8MC6
-e26+)JXN6J2c`14P#2&ITc+Tb$bjVdfU4D9YqQLrq2a,YFh(@a*c10V#P4fk-6iq
-3!)m%5M,pS@9@PqpTTUhXfqd-(RI(S5m!H'G#%GYaQ0iTPmr)%&pqdjd$R)'+FB%
-%e01ACIUcq,d`'A"S9K@GAkkeE5b$#jPKF%A3((G*P26IEH1`C5'j(YP1Fir,U9E
-#rD[(0#XmNJdQ`RIG9$Bp+HG*GZU`'GbQFcRjBRYqX`ShMRH4TJ(p(JQQ!*+D64H
-BjP0Lp"dUkRk+*AMMXjTp$Qq[cUlVc*CXrbJ[+[1"X*!!c)l+Z)DidI%Ekk-R@Kl
-5fP[G$!pjaa'hi)Ii[dFkp)lm!r9c63f'$96a(,"l-48'p5rM!1Cbm[3AYERILLj
-T9KK[a`S-V,'h))3+GDVVqRQmR)iFEGA'JV#'TXeK9GkCC91,'YU@)%`TRiKaI#k
-5p5k9J$G"8FiX2p-6UqC'LYZS!I"[`"F)'4!!R!GSQk1+JF"ql6dQ9EG$J$k6QL!
--Yq`VUMXLaKhF)RNaE(4@4RHCqZI4kk)*T'*m,p$V)E)VTZ-($h*KZL)RET&&8jR
-1D64Bm3(Z@j1FBX5TG(cVC4IfNak"4)0&3IeBkG0kLRi`9Ml`DFQqGIbX`'YpT#m
-ebX+pdi0'1[ZV$"q[(ZB2bT5M8f2qM-pY,LZd8(@3!1Vm6p$[f+h,+Brq#CDN(NC
-bEhA%J6EPl220+dbcc*!!XF*a@)ia6'@HQ$mdPQ-cQ"eLGjXAe1mFPqQ+X+V#r&b
-h*a+2G0NK(L3QjA8fIF4H[klH,E#&)f!S`KhVDm!k!%IVRa4`!9'a-TBpb"q)B@J
-M%j*`Y[4#G(+[PAieDa0kHdSXcIl368&r(Tijmd31[JdAANA`@V5(2@c()mpN9rJ
--S5JGJX5Vk6*q,bAVSb$$BcZ$6V3MBeM5P0Gp2eFdBFMSRb+M[)Ab$fi)dY1k+!*
-"!DRAfhim@,H`jfhb)TCMG9*-fCHBUF06CpL1'2,Rb5`4Y%,6Z8`2fQbU(4'aClV
-"@0e8*$[Q,NDkbqpXMZEPkCre35pb'jm$1a&5rXJa0+IN6kLIPQd6)J!*BET,9a&
-Jll$P5&BUj+SJ"j!!"+)DIrJ8+hY(F$q59[mUaJRIkMK4-cUmI@V8qQfa!rF%$'4
-a-)KU@hRk-`eRYG'JZdSKpE#kA[ePVPc0Tl1*RpfhZpFIDTV#Df$eaL`i+G+5I$@
-VG&mQcHpUQMKHIm@L@T)6DM9BVJ2Q4b4HMhcTa$`jJG'R1+3hq8QRb*ef"0Sb$Z4
-9RUKrACi!&@kr2([BEFKSm&KPZRK'[CUb)9T#AG%&N@lX"pa'-%kl!Q'ED(3hY!+
-qYE'-4E$32'YJMp[!F2&MIJ2(mPTG1(Did!d19-0*G%6%H%A)U-LQYCD'jZr5bhR
-V`Xcq(KZqb"QVR1-6FZ40UF,kD2,q$S2p@fER$B#X)@2aH)fA$dBj$UlaF5cJYfc
-YrqFLhr[i4)[eIFMhUdUe4Z6ji4M,QYM!a@0EB%BM*MR#Zrl5'cjSKqhMLJH)%lr
-%2A99@XZTL2%hUN@NYS9I26I@EarH["NLK13dIp8`DbrX&L5d9+NSkY1fIf`b*I&
-)I"hLIk"NPqV3fr,5DEC@R6$LDGl"XeTclR[mKa!A#`cKdfK`4i#8XC+a@Q"0(MD
-GN!"#P-JDV&$,bebIqDaN*9L%I[c%XkK1-q*1'*Nc0GP-BrN@bJX+#88IZU%@e9N
-!TC!%!3!!-!"!!*!+8S%!N!Gb!!!(K2q3"!#3#PbI!!!"!!!"HG`!!AMF!!!%23#
-3mh`!!3#3"@N!B`"p!*m%!Np,!*!(23"J!21)A&4SCA*P)'Pc)'j[G#"PEQpeCfJ
+:%A4V6@&M8(*[DQ9MG(-ZFf9K!%&38%aKGA0d)3!!!52U!!'Se@H#8h4eCQC*G#!
+SBbNa16Nh,6%j16JJ3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z,#"SG(4`1Lm[Gj!$,Q&
+XB@4ND@jcHA-ZBfpY,e0dG@CQ5A3[$3SD!!83!!%MkJ#3!h)!!3#3!h+8r!fPT9*
+PFf9bGQ9NTD8!TC!%!3!!1!"%Y[&1mlEa6e`!N!d)iZ3!N!21!#T'#!!")a`!!Ld
+q)%*eD@aN!!#6j`"h!!-"K3)M!F$rN!3$([rirr$,4!!!J!#3"k@3"!%!!$8!4,3
+GFA1i)pb9!*!$FJ!")Y-!N!0b!!836`!!!5F!+N3L!!%KV!!',6iJG'X!!&%D!(d
+!%!(C!IS"`2q3"!)HrrMrm-Y!!!#!!*!(TC!%!3!!1J#!Y+(T3,G0'[)!N!21!!!
+0p`#3!mi!#TmI!!#ULJ!!$()!N!32!&4VAde%48BZci!!!%#b68e3FN0A588"!2q
+3"!#3#S"`!*!'3X(8V`#MIfe6h,C[6F[BU8PkVQmm&A9!cS#KIR"DLBeM9H,PPS9
+d$9l$pX31ecFM`r`D9A%EPU'2`AfrXQc3kZLVbRrdF`ZFFdJTQa6FP4TP[+DkdKd
+$UL5rmEZA21frG`99bH&Rc3X-)&5'bmT3#bhE*GM,D2h8md6[acq`JM[fj)P2i,b
+Y9q)BrZ)45'D(mZBINfb*PEL)kXC15Kp82)Z+R-6-jSbG'A-$6RfjrM#H1rHJCSe
+1j(-'6DT5f06B4Vm$i0PlE02VVDF&!LJh3&Sd9X*IL,`M,S$%&3!R14*QPjmC2V+
+m2*P29-k0@f9H$S,11pmb9fIRC04*pH!2-@"KccLRSaH4,+4akTVqJI1S"PjAcPV
+0bIaF`3)KVU!82phDS5TPm+A8Q%X60rCDlEV-FFe!(*@qJqT)kNSc&J%4HBC[cD5
+Vr)rTBlQE$ebD(mj&pSj0U,CN+EVk,Z6p@HH16KJ0hZi&!kjeL#6T#aPmcX`3Y+6
+58Z*[I5@`QYfrLE&m&qY9$hK4!)mj`hf0,d-)ie'bEXSLlc1Y)NRqF"TrMPUl%(r
+AHkhjeZ'&EZ2dA3R[%c%3PGfjAUP0G2"i'@C$U*Ic[QXZK"JSp8bMk1[$JXNi0""
+cDX*5%bQI,D1dPb`Ck-D98a$T@*rK$(Q6(6EMa`3(m96#MAGDTF--MKp0'hVr19!
+ZI!4-(ae#[H8MJDIAr'bKe'D#dmkNrJXr`(@EJ6MD6ZAHddVS`b*a"4#XXVSX9CD
+Z(['rf0c9bH2VP%%Y*lQY'b(jMJl4Gc8"L9KLJK`,B5k`J&DPNE*DXaY#k!kbj@H
+k66eAAkIG`@@JVC-Hc&Q&l'MKiT'R92,*G%Y&NfYrR*kD1$EJKBHZCS$S85YG',h
+b8KS#'8+QilL&1XNF*b"9-jH'bfmMYfamFTc542UAX)!ST@!`3-bBS6blR80FNMV
+#,LkDp(N'bDX9CKU@L0ZmNTUD#h'SfElJIEcBkF9c(QdZ@CQ9Fki,+@,AN!#XY+!
+T14FHXHKa"N%#p@9,6Db2La"Dl@J,)'lA,'im%S@KYNR02k)"G!2[#JcSfbd8,"L
+"h4[D$FRV&A"N%UT"l2j0i',-iB+EapaR&p#,l!@MI1d[E2XKK5@#P$(j,b+!RZI
+Eej+'!d#+JZV@$`,GN!!@H1mS@-PU&[p9h61Q%VR$,HB)&hX9DShiq@%Cf`6@1+M
+C*Cd#qKD-"*hiV[$plpikJ"2d4fH*f+V0VHPc-Y1`E)Z*!Tl8dlDkb62Se8dJLqp
+"3V8A4&G%b'c*fQ&q"bU5m'4JFD14D,R5k8'k#e(`ZhX@JCb9pYXIRF$U9JdV5e6
+F))XC*rZIG5)i3eXlXLchH+-1(i-H66q*jim$@@(CF22+dK6UFkPVi0VfIUaaViR
+J5MYYdr%d&4F`5cVU2lYm*)ZrjN'dA@1pUZF!L!XiZcqGI"JX&V1@AXlC[dLR3Na
+Xf4N'!2[8q*X1qJM1hFBU6SYSPKbN%'ZN-KfC2m"hDBN05hH3!2FcQe+(SYX6[cf
+l6PCTdeJVQQb84!Nl1"GE-Ym85"Q4KLUmhHSA@0L'%Di`p$f6,I[R`P#$3U3IZqj
+KBcTe5f#b2$CUa4f0QSR$fN4*hC5D$3VXXRGe%RN`mA#A*lQ5K44I$H@*'cNMd8!
+23F"$5J4D,SYqJB4*-YV'rpb$6Nh64@`i)RDE9Ieer59VU)$BA#%!SlFd"PFNY1(
+ie[$kGB"V-!FD[02GAYbJQ*J6NA+m'48"U,IEEZ0T+P2F&NSh*B(-S6k9$m%iY(j
+8LVTMMSFE$lc)9(LG5Z9Z%"C0mFL[d!m*19lF%54bIDf`deAZkL0#+,1[KSpBK9T
+i*-kK0*NRe'LlTDE`34LeIdHT0IQ,LK"jY&dd1JDGR8QpPUp+2i3YXN8JdrKkG2P
+UAde4N5p9"d`1FQ+q,X@qd,erqe33I3XSpr"N5)rRJ1M6AY%*fNc1p!Q`QGT)rc'
+Hp6TrL%,F@4Paq3I2Ee6AK*mT+mCMG+@p98MR-U,M`raQIdp("*(8bJ0amqV,qF9
+[2&!adUa)d,V'2TqmBC&!e'8K3CP)+-i#YV3jCmTr8k&,[GakD'$KqI)E!"clSd)
+",d)er(VYBT*)+fF'0[bq#R8e@)aGlprLGZQJ$C4XrfY!QmhCS2MF-0Bcl`-V$9H
+p9$G6fA&0-"i*E%4m6'i+Fmp29N`K5#m4r!Xa1&TLA6PZR&UAcHkYFjk%2GiqJT[
+M+XBB[q*U)Ik*BY&(NM*5Kjbq@r)#[3+,ZZ+Z6iR6E,HSBQJZ&!1CXmeU3kY0T+2
+3#22B)#BPN!$QQ3V(JN#d[P-T!kke&*hLkm`54)*Vr$,&&PmcD1eI+AJb56*h$)@
+9L,dl)*2kHjfZb2P#T`B4c3HFDG+L"&`BQ-cQ@)'2)TG%Gj0JT"L)*#dJ4RXA64F
+*m[,eIIrdDdT8IT6T4C+U!+e3IFGjU965@RZAbRU58C!![a0ZfE+3!!I@TrdhM6!
+ie",%ieflZ"*Z16I*-$fJiVqSaZl3VeIh5K[2###Cj+$ALj,G3e`'(AdJ18MSU!H
+QRqJTiNLAaPPpqZ!NEY1Cd+NGiHE'&ip-Cap"mfb)c-'R"(50VjjU(B*VATqX8KD
+`N!!1FB+UCq$@&6+FLbMLK9`ch+C*l#DBQJ0M9VRfP+*FSeF&DMdjXDr3mLUcJ0K
+IV5VrPY&e*d2pF#*b$fRIc'[5b,pmMlijArmjd)l4+)AlJ3BQ%439K58RCNM8M[*
+KN!!AYC3jINkY1+%eqc41HpdN3NjbG("$U2'NBRV@2ZbSfHcm`AZ8`BDl3k4'9+C
+)GUrYTU$p)'R-#C'ZGEL&bT0M`"$F6jP)fUjZ*drD`F3ff*[1rEcm4a2pD%$M!#H
+XB)SDJbL($XP%4STHp&5K(T0BYSL*KVd%DGcqD,k&rI`'1NH)UiYP(M`B@lT'Z3)
+mQ@SlU-C,ja@GDcS-9rkCU51-FF9,e)QlBA9X$H-RFYBrN!#E%lZ)pTN+EdQ4EVq
+d-`SAlDX8Q+Xp-$C#cP%'a%)c)FjKb)0-i$bLI6k!)6,G[,NU,#IbfVlK'@*C@Pi
+V%D-$Gr`TG20(Rc4Di%S`h,8qi'fZ&@%b)(ci!d)m6K4C[IK-9CjT9qjU,NNCZ45
+UMP$%[eL@9-R0mk22hJM)rD#4(PK%$DBrpb-q&q'#44'`J*YMYI6Q82Rh#pVbrdI
+V8jq%b[%L-TY,P55&Cbp('DD6!')I5UEF!d*TVb)SfQCN6[(Zp*(fmMQ(@UC9jlr
+$-0EE185CTUJA1l(alHPUNYDNHc-01%N%$"a%%pViUIeGT`j,2R)FeMaR$"6LQMj
+c0q3BIl`b)0eL*eXUeV*HpZ&'UqXN)SHL2'caNXB9mq@'[pZ2r)9BRL%r3XpC@L4
+GVFlBr+h,RUb5Zi*PGE(G68+)@NjqDShF,(9A*Qcm(hP86jL9b0$DZVqld$SILM8
+EAUVj31,1fmD'GX&Q"`V@+GJM$DpAGTH%&R`i1S+"+EG$k@K!Q"aTAeQZ(!9pi@m
+m*F69b1T%eCH-99krb5)-+cN1$ll#NQh-lUKc)UZYIRNNCNad,bfJ,JKr)U6B+,J
+N'eYDSYNR$bDJXe,V1FmfZpl3D2lH`[Na,R-)F6L'fqQaI+qJ0ICifSXh#S1YBBQ
+a6h1HDfN2bV-(YZih66f,d`ZRbT!!r'3+*qLbSm!@0[&ji!-h9lk58-rSH$CQZF"
+ABL0+bQ*US5ha"Ba#16GEKE)IX@6Rd[S%ED,hZ2,-@'V%l3Y@UVI"5R#"dX"jIll
+-)9XEM&D!`#1iRqirEcT*9`A$QSrX"[Vfa!liiG%d"U,1jY9ZqKD'fRiPDmr2i9G
+)dlbb918k36MKbJ)P)f9m6J3dkkEH(bkL'@Xr#cb+P*ALhCe*1,M,r`1-R!C[XB2
+6l1YUK03!D@Z!@Y)pr63UXl%@G08dUffKLUY"m$VZ#j,h-Cd+-AfXkPj2QJG@(r+
+EZD"SH[EjNAdRZT&k+a!rp+$riFU2C62(3TUJ1dNKSDKGLd#MR(4)q0+E-XEK"c,
+3+h&!k`ah+A6L8LUK6c"6e,MYh*@pYAp@f3cH5`VEQHHFQH#C"'(&Z%!JM''$KNB
+(!'eMRm(f8YCA1"Q-GU-bkA9F$qI@MrR(ZQD6-TDaC%a*e+,PTB#Z4P3DephTcqJ
++YN5+2f'Uc9'FT&Eh(+*@XMR$4`iV49$paR-B"[LFVjRm-P9B`PGLqNP#c`iqK!i
+GqcI9pcj&T65V-5U`ZrpQ1Kj@*!dXf*NrD5kX1hidjf)Ce33!!+@3"!%!!$i!%,J
+Mh!Hi)p`(!!!"*`!!(DB!N!21!!jeF`!!m%d!!!p0!*!%$`"8Dep04%9',Xq!,RK
+YE!!!Fm&849K83eG*43%!rj!%!*!+J!#3"d,"e1NPL5MYp5pUM%kH11F,XKaiHpM
+53,,rL([aBbd'mTN,#*aC8eh,CGD[&aYPM@d+%3D`-!l4$[A$*'i1Em'CVV,9p5N
+eQ0CiS9rNj0K6H`1NHHkAV%j6*pMKkh%rLRcjAc+h'%+08j[J*9(Up++VK)4mC,i
+B)"ETC%j,,r5dH*AD4(#fDaX-J"TJmlRS*q&f[@,U)$RAZcB#jTGN"Ehk+V*jMHZ
+L&)Eh&TZA'mUCU9EbhRDclN$042lX*[i!lRJJ-K[,Q[-*c6e&NEBM'`e`L#&V&2C
+RmJ`'@TS"8m@dS2(HfKLQAfL2FKfJSq[Nd1pM&64j#G4b@(Z&T),(&k(*3TKQGQp
+i0)*Q@b&jZ*JH,rI-!22$4cq0PjCM(VC'GNTX!+1&A0Tc1K*-J9p5ach$RL$kXLl
+PNIDF()AmR8falql5IYdT5#%iE%RX,fd3QCZ3!&`JZ8I"FpQE&khPd*0HED)29*+
+%RqJDMHYl1A52X*p1N!#XX`EMd,F-QECb52ApR#66Li1`Z"-4G`Brq,Y4e)XNhhl
+@3&5NE($9-6HDQJABQVYi(%@B1!#+aJ3$6B"-BfZJl(Y#c4"5S2mNaA1YKKk$2QA
+ASRbGCV)8$Gr@L+4)afL6dT*daGQ,eCR5eSRYa0R(fZqR0MZYZEVDb'$"ap1bPSZ
+lp#8qdJa+!Q@#lcVCJa0m4q$@6LG+TURV2i'DpV9*#UMhlhQK+YVAHY3qC"(qr2p
+M$ANcJibb9k3m)36[Rr9-'mBcGC%G*1h2k1kH1604D2ebHJ8%qli1jFd3i"p#VAe
+%+8`paS&*e#pF$4Jqa@',T94T`-q-$QTfGShl,UTbN!!5ZXaHMQZiQJQ6jmXD+05
+lLSq61MF)0[RDf1a50BI1`"GNE1d*#kUiHB@'6+JXND*TA$*14D0iMD!19ZdV9i@
+[19Zc3!6C%YFkk!Jf*!KIXSR*pG90"h1G5H2Gp-JTVdl%5iHBcER+5AkHhEabhK&
+V9ZY`"blHK"ZCBrlXEHNe%25ANRSCDE&VRK4+)H38eD!pc)bKbYRM@XiqU**bfA9
+q'D'%H+1)-Hh3*iG%QV)8QjG)mm3fPDLK'r95arDjUqA43(5i&9&QPPf'JXdP1,M
+6qfc,bDN9GS[*C!5KVB&"-1MKN!#,Ki2i0I6&l3)XYPJrP5JV&$6'+`NA-X08cU9
+Tk'EcIV2ET28R4djLLJEeJD)QM,3J'!CU9@4Jr@Ilm-N['X9e@+p&3"la-1(,SS'
+-D!9iE@Gb(8fl-VTVM!P*(ia@5#!f`&dl8hhM!Sh(mU,E-ar6d[3I!HQQ*AMGCia
+89cF%2qdKje,5&ejaK6HP2l%2D-Se6pD`LPULk5ZYV1N5IU(Q1`9E[6kf8EGXQd4
+RN!!@dDk8S5A-mHVZ8jGNTij%Z&2UJSKd%[,ccUC%!A#!qJVKHV8FQ#'Ij#[SP3$
+F-,%&HQ'&RJFpNUQal"&VR*H!`34Q9Me8G+"'!BEMH(*NVAcpd@"G%pXF5(l)[RV
+"c5CL@#md9*Gf-'U8I0+M@@mIb&&40pkPUX4BdD16De*SdB8!DA+#"rj1'D56R4)
+bQq&0%1Z`3SPDl)*CbFPhRDLe!ir%q36#Sq"SS6XHiP[PjikM+"1V5R3&QNrXEiE
+jpebfAC'Fq&T*4U`+XhR-L(I+`YY8(mL#&Vj4KDjY%"J1i&qf2qC2[N%qTp2dTT!
+!AkilL))(YRhRlMaBLV@G(6Uc#f5!(Y2LZe@6Tk`GM4("QC-@G"+Q$1)Pe@PVGGf
+UQ6'ld'CU3#HB"),*i9jBhNa!"FX0QXAjH%hTda0,)2GV6bY&2TlVi-pa5miE(X'
+*)qSajpMSf@mqF[FYBL5f$5KV`&!'+42c`(2M6VlDmG-VC@UYlkLr@Z(h`'Q))FG
+Yj0LSmVU9@*!!qqk`,3e-Hq`KkSIjk#i'&PJZ@i[h9+L1GXhH`02kjEA[MrM&T"9
+m+3L)Q*PpAb$Y33C$i-D,j0hj[$HIeBmQ!afPP!18X9M&**Jf&5RCM,aU3QLDk$r
+2R*AiTik`C['DqP#9dSm5SNY!KklcBRQE28U1h%EpK9bSbf[5)VSK*@b!U5XD%'m
+'AU$$C!!JfS'U,#Ml[Br3ddk6ID"V(1$$!-jSE#`)IV-fRA*lpM0GHKi,0V#ADHb
+Ir+@fp8qGp804T`QE%9aL+)2qYJ)3RQI%H!rR1Vh0$fbAVMjD$R8a1TKZC%M"*"%
+q$S)*365P-Z*VZHdb$8caF-9j$a$,[V!&QZf%BS6pVq,[R`Q%iKKEN!#Y+5F`-1k
+R%*!!M4X3lRR-jm&YdZmI"Cc`56L@C%f-1KUA*kRKm0@)fMXij$HYie*fEC305Ki
+VA4%8iRr9qm1[2MX9GPh%("()hNa+a))YP3`RMFV@'%Cl0GMBhi`cH5"`'&iq8M+
+`21j,bLPQYXZmCVFJ8)QA6(D8Mq4He!dJpQ$(20![M"BbXKC3iq@Uf[!5SMHJ0#B
+CSApL&V)J!RaVK6(6A1'E`)DmirXRXR6jme[&-T5&#k'2GFCGe,(L2K46F0Hkk8+
+`Ti3J,V&frBXXH(d$#G3,2%GTb2pQD@,-X@j0$YSENkK3i%$'cj'-C+!X1rcc$UN
+%$R(b1K'A@36*GH9,R`JJAa`JcV$1fr4l1QQk9beZB)m#VpT[YQYr6ERJef63m9L
+%a5b1r6!!N9IhC`'8C$KT-qkEZ1a2mrUkM&5YeThp6A1)2%i"R&ZMkAIm`f&6iFD
+`'d1mMiT6FdcMFQF#icfAaqdmK!ZB[0Jh*)QB8DkiT4UK6CB4lBrimL$aZj`(!Qf
+0a!J3D,ka5kPBeBh!c$3eK&UAYifQ9kUiM+T&,d)m8i(kflkN84p1FC!!ajl'a[(
+2RMfq9[h)&aDrGJACZGXD*I3F3kUIiaETMrdE6+,Qac)'ii"q62[PYdi%5qGIjS@
+XUp!D*M9F2*qKJfpYJlaFa1q`r,QM264YkG*`(Sad*LPT(Dhb5*!!r#lB,`Q%[59
+L+!mma)iG,[q*6lLVMRCQDja5Ilf9HVIqZ`Rq'9T0be+e+h@Xc5I$-2lL8-(A+JR
+Zr+r"Vl#ea(VD3lCECN'Td,V%8P0Ib[Ph2k@*f!p@d`irqREX3Gll3HMfiVcr1G)
+C"4Fdk+-%2D(mM`4Sr0BcM$b!I,C34rH"FMSaNcFRNCji01H6+X5T4IZ(a1+rE9C
+H-kAPq%dEa)aBHT!!+5rYm19TaDAAiU+0BZ5Mb`*2$#C21`Ma,Y`m(I0kNcMH3b'
+T+EK-pN)N2EchID)irEc&@m!BFP9X`Eh5jIb9d"YXk&1KAT!!QfGadQ'3!&GZJ))
+9)h$ZLIj@ma,)VLkcPdAB0d&#3a[$G6Ee0hmbai(X#k&AD)mmG1G*V%[!h(dEqJk
+XfmGCda8URc"XY)2C`DY*)pXm%@5,!DN5XYSK)p#q0)D+*6ULI!(YNMRBP&,pFeP
+E!9XfX"@-8a"[iBAH4YkJ[m,*!pYTqC)A5N$URKaIqd&Q)R$lGFMeSM`S#TmNN`m
+b"03I)$9Q!3hBD#m'S89RefhFeVJ#a6SU@JEZKYPI'b)S8!Rqrpj6TF@IrVmXCpC
+aj+Pq)&1[B$*UPPlRCD4HY8cTHVLHjMa8E0cDYJp"45rXV94[[-(jlB8,FT(1M3k
+eML--TJ+*1N(h22BXM4)YGak3!((cbh4eeN)CN!"r)kpDfRS[ARN*[+VNAibQrK'
+UhaDA4Y%rCeFYN!"0`(2P%LT[m`Dq!G'![fCQ!dF(Kc@6j$QqJ"JF@Mq,2KVm3m2
+QbDTU2QPrQNIkP&qJHX*GDM4l*9P)([+bChHr8ZIUR@aZl$'HaRFN"R-$QbPp-[&
+*S8HIPdGE'[P(h,UFI-Jk8'S9mYpP*e2HkeV0kU&9@89a[!"dpMqaS'MNjj'E#JF
+3!cbpMmq*3!XA8G"6RhfIaUSIDpa%8$qQ,AGP'Gk'aFK*PGkA#Miqh*!!#`V0*JL
+9`[Xfm$J0M$#BFXTRMU**S+*4P16F*Jk%T,%,2S3QApqAR!M[[Y%`Z,f[h6)b+e9
+8JDXa1JN[3I99!dN+lNUXHedB93K3%"dq+b1rhjpTkhF!53E&'c[,'aB))lV`)#T
+lKZB,3JUB+35BfC+4FV#L*+$*)`MK'NmbSZZ[df[!Yl8GbrQ#95j"6"VYdc,"qeS
+6Lr@Y'eE#CkUraU!&,i,eF3qhiF!X0DN'l)Q,C,cV@9T1PChl+N2'kbM$E,@,r-%
+Y3L0KYJ+h6a#eIGVYaGXb5R[9T)9d2)+8Y+64!-ak2X39dGj$l34FqNfC5%N-aeC
+d)JN(b1r6l68"5IVdmA+jdmk(Mb-e-3dm9Y$karR6`1RBp(FT8R-#&9"Y5a-6*-4
+FfdbcADqa!5)2fA8@HNN"JHj$Jem8$@#B#'"aPNHSq0jl#[2&c5%eT9%ICi)*bQT
+MCeDlai8p5)X*U&l990A'M[L`)86XididT6+MFDHpa%T*5,54+c(@@0[L1k30C@T
+GJdFY3)%jIUd)R!C+I%d&Y"$&+KXJQpM-l#IVNklla%2NA(,ipE"kiLY2Y2YRiI'
+h+5&p+eAhc%5YH5S5!GZD2JbNr-VYalj(6fGl*Pe-4E&`-![rJjTa#j5PTJ,aD#Z
+b+c2mB[aa(1U-PaEVUp$NXIMUf)e0BDB#bLP2i0Q&PUd[d4PVDkIMGEbkr"AAKq@
+KiI@LCq'`!`B8&r28'2XMq*Frh$8LSUN%UZLlB36piZDNqAYrjK5,-5XSRmNUV[,
+8q#8GVU&f$hEFZqSmVCB9Q*p9)CfD5`id#cp@I%98`Y6$QLah$63fmRS[$JRaba0
+B(2*@#`hZ6TX@%UecE0J&!`VeRa3kDAm%4%)kAB6D'8NRI$KEDZ&SFi3D86LAdLr
+h!TH2mI*Bh3M1%-3Q0$3[XZ2`r`"Lf45V1#@4DBbkGrLebcC[S+H(BrEk$FJrZAb
+M8Yr5c8Qc#mjeQM5B-Br!%0QP6kE5c*ME@Q"HN!$MA$aQLkf6'@Yj%kL`)Vbi,6#
+3!(9cA[I5f`fUAS!eI%k[,)9+Q%kGZ%1e#%GJ$Qjkd)2rbX4%llkAf@eJh+,c@l5
+CB$dUpE6@FAP614b)9)08G0HbCXb3!,HrT,%F!1N5dkEq@i)b))mN'bRJd4KUXYr
+#cNU`&-!Cc"XU+he@PR5rbQK,9hrLDH8rB3XYpY)Blm#I*L!&''VDGf6!MJ2Ml[E
+c"(hYXh8YZJ3raeM-PQ-9USfdij2lI3TZ30'PE%'3!#519jQba!SN@A!1K"PJchi
+5"6%hBD,TBP32lPBkr%L&kPZJkaIRkAZMBBrM!+@3"!%!!$i!J,5KkFDhfk"B!!!
+0p`!!G3F!N!21!!kPa`!(VHF!!&Er!*!%$`"8DdaTBR*KFQPPFbl2J!!!3,*069"
+b3eG*43%!rj!%!*!+J(!!N!C#`G6H#A*'`qFAP'bER8VP`Id"C@dq%6Ae`M-PcC5
+92qNQkh2iJcD3!&%jpFiej`'9j,Al4d),d[KXS8*)+0r##)pGGm5N'1K9Q0Sjk(E
+Lld)fH5qL2020%2%!F1DeZ!NYphVS'Y6N"JjbE1)3PB"rkG"'kaK(L0A-583ISki
+HPr)&CHHVeJEGXr0eVA#Ek%VfGemFAUL%G0K&CSm6!PRd,H%+,VkclM@G262[U3*
+5UhG`+Abdbd@hrpI2cD,d&r,V!E)S)crS0`9%QB!0j+IJ,p&8Ik40[MV`S#&*$8X
+jI(md'iEUA,M0'&m6&,jE(pae0+aGe[`F@0BG&Dd)6hNH2`!l2"#TF!8m%PT49,f
+J9h"3&aZY6mUUR&5`KUGCI+!U88ci&@bj)$bUQLTYh*DT(9k+Xe+)TXf-MNBD#jC
+%4+Ra5caVNIbTKCb-!+m1A6USf92"EAVDS%1F$(cDm63Pa4JaaB(N'3i(!e4jN3Q
+136RBPVMH5GE`0'T8K0m9%EeZT2h)AhA'&I(RdT%K+MVJ`II5FZQ9J#pmQ`mZeN0
+fEiiKD)`BMNJ4U`+BI'*kFLhaMAA`d(ak+G6lQh'HK1!50i,NH1CKPY!A@I$c"p(
+K+j-YHm`A"-+T9mVejE8C1ebj!6(rd1U0(Q4EK&Rr,hi93BZf,&a+N!!'&$%f8I(
+Im-Lj40daF5qD[dAGQ5&armFDjH-94!ip%9'F5L#3!$cHk3hf[a!bqcDII0R[YK@
+kVPDESImj#mjBVhm9!-YPQM#$hrNX`*1aA`3h$-3aejNVf92D!hmmTlZR`5I-1ME
+$IE+#J"'H83%,YXXEAXI1MI)`AP4XrS,6RiKLRLCDKT4`0E0rDcTR-Cf*#3rlb4a
+J!echh1J!DI,Ge&45R$f4cS3hDGB#0T,"Q)DE56IV+1Mr4*`-Q@(Q(r*J"6J#b!'
+K6L-+flb6!rj,(hB`hS3dY)`mbr$6JflhS%4ml"d#9YccES1b"1"@L53!9"kZF3M
+Ed04%jM)[8`AVqU&MX4*2Jr9Nlie$p1SeGG+$$SK6*D@KFB*AU4'0f$TSBIm$Fm#
+UpUf)$ie)D[(&M!%qII"!E2YpUJ"%jlT3YVEM@Cj4l39Q2'Q0Qcm-N`'J(&k0a6E
+*5`3VqhBTjq*iqefLi6Jl9XZd02YDV[[!c@Yd!HZlJPb*A%kBqA3YQ%5YrS2YEUa
+),CkS*Uc3YDfpipVU2bf2Drfe@''(@Z1mdLX1NX'JJ[mVAe!SNR&j9r[iXF5M-'1
+@HFB1MFD+3&)l#)`r*,2jY3d2m%P%IU2qj4me-aY1Ijef"'i&jF32E+$lFZ#X"d&
+-fHS)U[EhUS*+$E5FH('I!86dQG33hNRk)"5qa1556&pk-lE0fHQBb#8LUBCYXL[
+d%i9%$,*%Gq4X1j&!%eLaU8Vk%ZR9jYeFL$1JGq5VL*c@+jhVZ#fN(8Y8m*YZ"Zl
+i$%Cd'QV-[S2XJp&Y'`9P[1pZJc[a!5p'4CFJ(*LeU&LG$D%iR[Mr&,U#DZCQ#ij
+CF&`aVU2Rdd0-)BGGNMRe'-P!9S!Ddh`ThjBK*@mG-Ge#KFfqZ4"CE9'be$qSc6[
+q$pTS+Z[3GY2fhla9Dcc4#B+aGK3a3'8#l6Vp`)8D[ED&FEF'3',beIXrlA3S#eT
+b9%%r--`jFEAp6%KlIV$K*m+C[RjY88cFjC!!SDAQcD"F9K58R@S#N!!5$3f,ei"
+"ZL8i"*AKBQ[1qqhb#VBC-d"99LE8(e'EcB#S8kGNPp#Fj84@))3&LVCVfReVY@+
+8QTakMPS4#B%Nd3UQM569AqRJ0-fkdl"((JA+RPXmIFi,cJl2JMLrE+H)G6qfKPq
+5qlh)lU`&mUF@'6$+EBpdRlU!4%ZG&1YcdPlRE6qfS8fqGPTQ+DZJf9Sf2JS-KQl
+XFJXU+E"NTYekj'IFK!V)GS@lb!XMmm("&qYZlc*"@JR,EekhLE5NIA2V6'fpS8T
+)AEm,Hf00*r$FXU"jVdLH@rR5XeCDE#8AGB84mlAX41()2S2RRT*E*,`'fcme+"k
+Qc+-FA$*pe`UB#&Rq[j!!H00Qr'XE5eV!IKr'q0a"IS+A`19EL@mV@jF0I"kCC&"
+LF#114kEK"83Z-Rpji6ZXrR&1BmFJfJJ!([adLi-a!S$K9fqKe4A$KF90A1"##X3
+#Q)pL2m6V9@pC'elR)AEmZheTF0"mKSi5BhqK-ACV-!(*fm9S,`3%VDJ`@PdTV#@
+Sq$LV#Ze5!hX1Fj-%$HPKH$F&![%lSR,F%IIS$GU`M5C%PRG5!`eV48VPUi*F@Gk
+%rk)fJaRH#5qrBPlRB6r2Qi!53(5Xa'`K`0di-dajQkmdb&9(T5c+1#NI&JdiD$N
+H%5$h`r'Pe%iAN!"[`EPKeXHD9TUeBj-mD*`2i4`X#$#'""50#'lrUNJ8RYDp0l$
+cm9l1Kk6D"b"k*E694*26&+GLlKe3bjT0&CrTKjF,Hjk9j))8iX&U)$X#4GQq0rl
+(Mrp-h5*LB3LlFH'SU#lSCTUmYKj%G%JEEaRJ'6$pqk`(6!IPQR"5PeDp19*T9L8
+&1&GC$CfbPI)2hHQSTF$cGaLjVZ(kVfCX+&$Hpc3TkTk$DIU`-J8Pq`Z*BPI'F*(
+QaZHBCVSP8ArFT-'A%L4%-!JT#'&AmBR'VpXaAM[ErKkhq%"dZ6fjRpTApej@Z61
+B)qii"k,#ZS,SqD-E+9#S4&dqEUc%aF-SZk88(Nb6U6q$pFrbc(B)'RFP9M+D`49
+i#[dJT@e2XhcA%4iXY4N-H2-im#"Mb`,YeK!IQKeF'0)1%Ak(cFaN0`&"#8VjYV0
+6-D'!JNCQfZ+p,+c+K'@q3YXBeQhp$FlYp`pmDAeY2QMT,a3RprdZ,LCj,`iY&A5
+J@LYh*XR5r2XjjPM6e4e%N!"KIepbXjf!IGB`I#9Ii$RDUq6!eS)aHS0A8pMh(&Y
+5)QDE,,0&i#MjZTj(YAB48BK`jD5lp"%ZQ#&rAp`cS[ElGc(QDSl8`p"M**HLJNG
+Xp)e6`$,R*I"%25lj$6Gja9`-'PZdiYeKGL3KGKRaVlG(SBH)3QrY%eJXj,I9G26
+Sa'Se,SqNYAb)BSDb5qckI*D"NBG#d[PYG+H*6$kMeHP*[VR59Q9D*5&Ad,4S$Ka
+J9jYNqX0#SU'D+%JEeYN1J1Id@3J#jJPNSR*R!KMd+PZ,,p`&qc5)rcaVpD)+4TX
+8GR&K8SilhLK(![$AT8L,(qF%C55JAFD3!)h*%A9f!eUMCcD3!11C[DP#&0$qNk[
+iZ'+Y`Gb#A0*5"&`BUX4ArdZ03Z(AcLTplKlT#(33I'haQN%*M-*30*cr!XU@Jrk
+-RpehB81'pQVrQI+aKTAYb`S"EHc9B)EC[Z$pS3Z'RMe(fRdN4*4d(*`*kN[26VL
+CX+P6mb@M*qU1SEb*%bi6harmP(fi6JNBIf`f[k#ELIdNeYT'IrYKM0&#PM,Z5la
+Al,TSGA31iSAXK`Q91Z($4+E)0#XVV9`9IlE`DR,pE$HkjXd)"U$ZP3FeY1!CkG)
+A0e3-8RS2"EMEq!&#SYPXT&@1-QIk(9L&ceDhQrq)Hh)3faq-Y8%jPfNF2$4p*LQ
+qa$+MjDIpdeRi3GA5VH5)rC!!ikUX!Q5pR+P'X2B&,)4PYm)SH0h+BFqS,cYGUYR
+&L96c)4DHfJMX$NEbT[-b1b+"raDlG,R0(aZCSahP#53U)8bjp$Xe#5V-H##iD6R
+)k%U3!$#9I6HD`0'rQNFGcHh`#fhj14H14SC9)Vr[Fb-GqYcbPrbUp&@JXBBj"l)
+3IV)+eH@4qCV&2bB83"MTEVei%E%UGEij!Q,c3jcBM+QC4QPQdSjR#V8p#E3,L'0
+8Gm)RY)[(j&M9dEFDN!!B0bRf[G1B61K0dajB!1k[YJ9P#*YE+Z`JcPeqQ4@fp"i
+BU!2R%$B'`"pbfh3@#'GQi!04`P3AM8VmBU"1PTC6V6#mY#S'b$1(D#r0Rf9A,@`
+C!3QS#kdq[4PZNh6hLIN2QYd%rY'kSj!!$5Ell"*E2ES`RBqM5#bqr@!-`9T&"iN
+KirBj,3UamTM2T'b&P`2&Qp)D#&"ZIKPl*U9X25r+BT4db@DaZE-V+A-`#ERJKkh
+Sq-4X9fq5UE$T8ZCHL5)%EGBmdc@"FchD$$&q'"-Sa!lDM`pmhTH3!""E4kSpjUr
+G'bLZLZd6+Y@(CkX4Dj[S1@cL!TcYEEiZ[m@Mh3%D!@r@&@h"dmD1%*p&!RB6aJC
+H&fpQpi'AQ8p#JiT%b-4lXAX%f-Mmc6+F)5[0GiCi,Q8aFZl,3,eTHMGm)mIiVJf
+U3J'AiS2"cCD(d8hpijBKiVf50c*1[ih8e"d#"F[)Y31IpmVRfZK4TaUN,i9)+eZ
+F$BSdLUYXFiJY64YT&$EcHFeDZFYG88B!0PapdHm)Yer#la,c`*TIXAcUDcAaha`
+#ZBc-#)Kmqf[f'I4&[Khj&qrC03b*MQM,Kf8I9q`9%"EDje9"[6R[jH!SbaK`C-P
+S'"&+42eC6Z`P0M#(!)Ed1rrjX`2B)q0*FL9N[Y`R9Le'2TiQYibQ!1hkAej1!hD
+GqmPkqL"$k9i2ee$+%VmApe8pJ(@(DGdq`BJ&Yf1e[@iB!F6&,q#5aeZ!`LK(3XE
+E42`TACa"N96+YUr0ajl&+A[DF@J,iXEc+DFEhRC1cjl6%$`mPYR,)ecIXZ$r+"6
+%EkZRmRPaU@0E@PU"NpRVMMAN4C!!)0cjX"jZka)$l!rCG'2AbDPeZlACldA)"bH
+LQmAmjl#8J95#Sj!!"c+EJU9L!FrP31Z9""P2E5MK2SG*)5&r"I-r'U9EErjS[I@
+-lCd(1$,l8md&QfCUNR'AJ((eq`A)cL%)F`chY3C'pmcJ"1*mTr8i6eVCSZNHiLm
+!d3m5RiX,)prRm,eBD"*FPeFabS2cB8V'')jrHS+m+fl[IZR4VBk"eX8iC44a!SC
+pq@R%IX)'hY+Ic$ISY2a*YHGGG,4NU@*Nk6)jqBMb*QQfYK$JM[f3!)LA#j+h!4J
+FSZZ@eFfGQ5PETSLcJ&j'1iq3!##(JbLh8%(#V,aYA@NVAm%5KCaDe`1P1IpmY1[
+p+MlD2*CS-rPSAlDj,4Bj'Yp(pbpJ-HF3'J9BF[AbPj!!`ekDMGJC36qU15J2"h,
+b4R8T#KaQ1j,L#FbrXRQ*i"IX81'XU6(lF`-QC6dMKXN[-TiN"eN8k3Y+k'fQq`b
+@Z34+!p'QFFGM3iS5L@S#LJh54J2jQMJpUrNdSB&+HD3TQX4#qN1lUCS4ZRLj0M#
+@eSi,,AQDfPi,*[F5cfK8Hm2F,fjr-8kb+M`0!lRNlbUcad+fZ!$V(l%bqb`,'8f
+2(q&AMQQ1!f1DTprmmaU0*i"8baA9+Ap,Bh9$hm*X[qQeZC3h)babjIRT,80jrIJ
+A"#9lbe(mjjKhaJYNqlCb5UUqfp&Q4Hr886SPSF(EahCN+-FUdi3M)L4Y1aAL42D
+S4$T2Tr)(Qb-RpU+-1YB8*FbA"0e#2$Q[fj%@JI5e9il&D(M6-JQGfkc[4+`1Nd*
+VqIMZ"a`+1rhpmI"&%il8IQ,rQe-a#2$%@B`P[V*[am90EU'YV!`-%HZkr4Hj1IT
+PML`NieMaCJXV(U`BUS'h$F*a)%cYT!FS#&j`Y18[EQipY0*,!6!Ih)1*JYH-4%Y
++@mkZ9VT*6--4aH@UqI5I3SLaV'$U6F'PcHqPVZHS4U`#-ES+!ajLX$c1#TC&U6B
+qe!l5CJ[TkjcAcpj*A3JE,32lMh*C$hk+[Z03E,cLh!f*LQppF)TQm!,G-$`Q-A+
+(Dl$'*kQe0Rbm#aSVXi'F8#T1GGEJ60KfCV++$+@L4Hp*HN91BGTXQrNH4VC3*&-
+$%R(QMFld`X%9'rZXVj,3"DU&0Z,kYP'SdP9eUiFfADmrM"cD@aG!3Rfq*,e#S*B
+)AAjQB#jfIDFm@GQ#5PelRXA13Np1CdbC*DR#q3aZS[iANj'EX4D&HRbc38MUXFH
+,h[q-GRDHpS-ZMi8J8G+aeUklGfMkTQZk1ap5!KGHaNTCS1,`'L&JrPYPXpK2lVm
+LM-"lEqRmEXCB!#mTZqZI6YI@iHYHHdpU6F@4F%V,HDA(YdVqE&E,)H`4&r`!MFL
+(4PG#,UD1Z!dJk(5Tl!8q+KF(AG2Y6,+CVhF)dCU1+Z9@99jXED)pfCMc&DSjBI[
+m2SZm$GT,"HhjFFB$X-TZ(JK+0C!!9fKY!amUfDBSmSRrR3PY,I`D+(Ul5De2i9D
+GmaIT44'(pcf4!Ab5hrJhh(h2E3TH",kj23fS@@jCq2rlBe""-5INJeU2BSlB852
+1N!"`MJN@mr8F6-Ai'SaDC8mc6eY0,*BdVbf4)A%RJJiKX"0mllkV!Q5+-!jY@2K
+32+NqNrh%+`XAYXK9U%)#TI'9@1GB&k!Kq,PTViT-hJ&V"1JH$6'BHXmk43$iLX&
+J%1hA(@!%a6eqUMh@D23A,&j[`L[GKE22lJ#55`),i#cML,Yd)HKmN`"ki'Tk+*+
+$&@Yj4G@-aKreDQ+YXQcP"'m0DPVhlNZrHJqJ+&-!3"Y(+*`4-4h1el8BVrUfa2M
+*GA2lZ[2h&aH*Y,0Mc##C@aiF[6ilMFfH1"kIT"N@+GN1eJ1`TrYF(pklp*2bSf1
+kUJcZ,eBNdPKhBX%rl`N,"!1N`J-T+8"-0DUL98L&6CC4Sie5!Yk`3kd%bq3,l6&
+jc3FTMj*dY3%eUaN2)+fejq@I9rL3!)`'*H+Pf`p`DCqL2aM$,+)H566bh"8Mh@k
+6LZjd@jj*AqXp,6cKi"X3NLcZ&R(0YE0DAX,-MfPrIc#(Jp`D19efFHJj'1$'C)5
+"*Yq8X#+#1J2Q"8'G,V(PTUAa!JA`(Ma9efpqe$"GKMe)8'HpU%EP!&5NLG[&b"8
+pq[5J*k1AG8YQBY3plP(R[$AXR!kmQ!h1D!,1L8NBiBVCQf26-EZF)5,%hRMUjQ)
++P4"c'Z!RbeJiZP-&-8)0r)!&5#V!&CVRe$YVpVI"6KcKVL3'm0&$-"+P'lEGNMG
+5'k(*cK6eEB@SXYLNcEF-$RdFiTf)3VRb5[ViDrBCV#a&EU+0bHENPAprVX%(T26
+-e)f!IN69$GKp551"IqC5C9mU&U%ZQ,%+@bbQ9T2*L%ADm2Ih8!R"SIThRNBM&Ld
+A1VpK*f0'ET6BXXHJB3eq&0dH1"hGf8MEb%K6k,*F'm%dmj'SP25"!cm!P$ka-[L
+aJ9iUVRHZS9$*5Z1"fb$M),@DNKqDmDRdB*-Bk4-2&*+l5eZIEk[JL@2K@MGhj)F
+hLp+Mil2rI`JmFD,4RM'1)R@iYP[4@Y`F6RIZ"d`4QSp0Jdf&i$!SB3#NK4+KqU9
+UTT'GCrJ+e6X5B1b#,'Q68b),b0RSeCA(hk3App29NRSf4VLpS#3eqT!!B-ibDUR
+N%CZ)-1%b$lJ*TRQ%Jd!d@Tf1aHRYa,0C!X6ldQh"25ar'@2N2f"3I!R9ER3@'A%
+LGJ8,ED%&qYFDZ(iB1EDBUfh,[(Xk",M+hf-@EEZKX%H3!(Z'&D+*J)204Z`P+2S
+jT2IbR,(eMU+CP-+$&qUe-H30cer6aAm$a)jaE!5,N31YU`&0+3IbRG40!A'*baH
+*"L!+LJP4fU(bNADK1X,*-!NJ2+4jZE@)EmUdlXF[A5Jdm%bSShXcGmGpiMq(jlM
+Qk"4+b-8*RTIj'pm0mZKfd%$jQKe*5Ma*mRQLqQM8CR)4EL##l-fIN!#e"ieeT(p
+YN!#K)mJ6A`1$&5ETSUc$RYe@lCjYlIp9IcX43J(qQB(N+UcdYUAMAl%YZ'NUS8M
+bamR&BZ9PNe*[$*U"k@'U+kd[4XGq1QiPBEqX'c5ekd1%0emR&H`Y,iaKdjlZIM*
+(!ZL!-9dZ,3B@@`VcHEiFQif*cX@6AGQF[1mc"8LGkZ@0qCbH8eE!3Mb%lMErP0B
+)-GK0ZZ"&e"f![FTRJ-`'64Q,qd@YM6GA$,NDUF5B0Bq#6UebU*Zh3P-`"b)K91I
+N2TXh+a'mclCjUDk`mrVdI5l&#!5+l6Ejk$hT&+J5((iQ&+5dX`01Dc-4Ej9VCh'
+kJ#4%ADfXI-[c!XS6drEU"+S6CmMa[D,jZb&JEGk3!!5NrJrZAY)``eZ0RXaC@N#
+(jqkEXK$YAVQ1GcX5%BYG[jJ6h4irrdk1lYYmZXDEM,MZ5AH'3SAJP[qa[HGa'0'
+dC#hP*@$ZcJY+flHGc`cQAkE9kKfX9Cjcc1*11dH'VcR-hFirk#-"R,4J1Bj,aXY
+G#[-(&q+)*Im(2#SPM,+MpA2YCZIfZdkqjRBfG[iKd"0)6f1i&J0`"QB(h&3m0Xi
+MAM0BSdP-!ecp&lc`Nf)Fh@@0d+k2pf5!d3$B`-4C4Q6TCiTj%,h`9lRVPB[VaZp
+pMiKVG*D0#-+j0i(T%D,MaaK6Q%kEAq%U6GkRN@MC!qd$6NEd`,G6,$AfDFj5mId
+!fSGeTff[GElC,4@i(Xab`dR-IVL+6L@6&IBF@#5SjAMH"q,+I'PX,1RdlilaN!#
+abGLR62Yc*C'1mqAaE6Y1P1mD#$l(VF0Uh[IIaYADl5(Ym5"hX6C1dd8SYGAR,SG
+Ki+"MN!!U&141BiT(*((EISU!r6e+*LYA-+Sfk@BaCp!()IUXZp6MqNZaHZGZZBk
+SbL*4aYeM1i[iU3$a`SjXUVbr&(@R%pM(BFLD0`!,IA9##TV!K(l1E%-r0"q5cFd
+&1X3%14qdX3'VY2Qjab-Mc1"'!GlAjq`5&ZDa6D-68U"UGKYbXjRLGXd+SMb`NAi
+3"N(dH(pS,*f[G2UE(RJ%C,KBmAeZU%Y[Brbe(%NRJXYcS`ZVcT@`R%[4#b8HFA`
++%CpH&*P-["c%L1)8k`Q60J0l[5chPAR6@4qpQhU[R)$,e43ZihU!2E2h1)2I%1b
+P&kIA(8M!N[S9DX*-M#,ITll$MEkf1irTYq&*%C&XlpF554)QV4HPH4YiBF&ap*e
+&klCT,Rh&6CJkTJP[JiPMI-M&e[0VemQZ1(*A9P(*S8i@l8hQ#YT%5F4`S1Ga"Tl
+r+%AjMLce$8RHlCQZC!jNJRC"cdPFlj9ID),HmC%Hi,U0c*!!I9eArPeS4#Kf+Aq
+V&,lYrYr[`1Xme(YVZe"3V)Ri1*!!mAdkd9PKM$DAMU5`'SSN$Td'LP(`lfIdZYU
+Yqb"(+2hC('-5lFHd,c!EddlN8BH[VV3ReZeZeD0,NVHj&NP%PXNAjeCrq611bL[
+EUB8[R$10%8faC162kU!eQSF(%Xm5M'GjrmUqqDD!jhAPh165Pp5ckp90[Eeq@B+
++L!DQj5kTF,UmCbX5MihJ0&SbE$01r@-,q@+T8iCifH@3!)FejVGcCljRA1(NEN*
+(*G'*Q15%4J%pUFQMcV*$Ae)@[AE`h1h!B46TGVQklThDE-r-*Q2Q6YFb6jTTK0h
+8`N-ArhMIdAm(rlqGqE+@&&h+[eeqikR-+N36PfXi,ZSB)4,U"e00HL@2TqpmjdK
+H2[l!UUH$q8`i`$3ML+b3!%Q0$r*qSY-BklTFFHPMIrU1,[G*a&r3kRP!Q''A5Jc
+EKDMG9B"P85p3FZ#T0,d![E$3-h1TPR0JFbdZ,N@583"[&k`TG!3a04c3$(XiNL$
+m4TH%U&*VpIS[5'lLK'#-rbGm8+@%cT@K-(1!IaIMr'kRSr%[mQeTD[+M9Dc*G["
+2GJNZ69eAqHHbA-(LlFqeipp!E$-K#HeEp#R`-e5H9rR1iBQ96Xpb!TFU6e'%-`+
+(0ml4I[Ak`XP0mc-efh[PC,E[pP1A,P`X-lB*ff[-(-Z&-#YjBCPr3PfDH8ENG)`
+%aJ(h*1(HL4Fkd,X+rYYrEiTe!52Ja[+lmXP@r%A1YlDX0Yp,3-Dc9mEKI")L3R'
+'ReeUrb""USX%#rCFdA@YBVa!L&cKpA4LIk@B3XbL3-64$AHrNCJJf26)f6@6)'0
+@BH1%"aJ@89PYil'(5%2GP*apYk,88XLPTK2j@j6Ya5QN%SbTqb%6[[3Rb31BhN*
+ed*SKFD@Jb-K+rm6#Fb62C(32bEI'&jCNi$(9Y4FMi%0A#McrpB"+9jcJG)%'iri
+@%rY"fFi#RIS)SYIlA#)@Cb+k$'jbZ-#%ZZSHP@,bPf+)G-4@Y4H,T#FFrEdqVeD
+65'NrXF'd!#YAYiKUNK8EUK249"RP#3E"HhZC)hL,$S1V6KE8HJXdjVMSPaQmQZp
+Ill6[EQHN2[rKMp1FRm`#*%MCcdrVbT!!"#k4RDc8&`qckJZcbMH4)IjUjDJIa'd
+JXdaUTdRHT""Khj163k2CdHljQa4L"`S!Y+hN0kIKN!#jEB6jd,LN'2r*!aZM4V-
+erHNEdfcIe1FSlKNqq4dflMeke#Ca5UpaU50+RRJ103p%@L6amDRL+Lp"Vr0r4aX
+ib!U*66H0Jii$XGh"2#1Pa2%*J0JYZ@lU!N#502Cce4+`$'Sm*aGqPV)1fXcVeIG
+GV+K"A26BfaCSDf2B,P)2(rG"MKd'C5%FDJCCi`FP`KapY%Mqbrqq,Hh2rqR-rIq
+UVl9V#i&MHE3N-$cM#!90,XXR@#`f)LHmhTMedC8i%cN9j$T@T'""VfYiD*TmL*f
+F*6"TmGI%m-(k+qZNL@N[c"`@1DC2+pLaYT,qhUjkJ"hIapNmFi[be*6G&1CcBDC
+%mbqDr)Kd8U6RE8Y-FDFB,HrAd3,ijpTj%D!'A1G,+5VHMl9YSP*#b)$Zep+E8K&
+E2eaD4SlX*k)FKb55I%,jVT93AMh1BV`L68[0$DP*3jM%k9iUM9T(#)%l&DT!h(@
+4RF@j,KRVkqQb@,"J-+#8(j0$$(cQ`aF6h&b0Y5Gbch("e+S'XL&rpB8!G,lpDFS
+XmJ#(B`'T*!QfbRP6"(al5CbXVfGj-5-X&c3'!IlC13D"-#!BH8i(IB6DCYpQdAG
++XKS2J3%%4pT-Y!ri!J)LPb13!0NAF18QXj!!6#QkXUSj4EJB(!@Q%*!!TS68Uq4
+D`NBV`K(8YG-MJjGj9JqSS'1TGBjB3*KG0-C)rEXP&PY&-pVAcm2ee!dQC83,&[!
+qm$CQFX5dQQj4EG",Y*9ZK&GDYGKY+de5lalLJTq&bGqE$8VNR*N@NTl`%"!FjHk
+9PiBpAmpGUbMC#)@FZ,1QMVF0Hd'eD8)!1`Ij`3(iSP98'QBfl2!!&1RY)LBYUL"
+P+DV0X2YcZGFXbrKVE`6(d9%[UEjQbZ5TFb%!@1[&0jf$r-lRelV50+ZdfSfbBRQ
+8UrP+4PH2pcD"M2@p4eheq'iZGipKiKUZd2(be`jrMJUQ4aK%1&9B)dhrQUrSA5G
+3QbJV'$25$'k2Vi65F&Kh4R5Hj@"IlpF"dYYXR6j!)3MC*bH$R3d)5ik+aTD2K)$
+c,%A[qKK2Lkp&biABkYql!EAlXF(S13J5&Y*j`DTNI6$`M,$'F+UVML&+"Nk*5[L
+ZX$l9Abha0FK`bKr%kMG(DDCQTjlQGSH0M%%2*e2Pp-pJr&%QQ6+&k5,h&ceLrb8
+"Q0!LK"CIMBEM@5aikcaBfB8AT*Lb$e$1RBYc3S'f8f,D0e*YBr1@RM[ILm!Gk9M
+eIE-NbdDH[QbP5!cjV6lK"pjZ`BJ6fA-LTiqeZFfL*4Y8J0db80cm68+IU!&D#04
+49j!!hIcmVl@P%)IdJZeaA`C`lmFBQ1jpd8lP[h6J@2eS4jkiZlG,j2qYV+B$0N9
+DhD5h2ePE*6C-'k$23dG0Y25T-3Y,IiQc4IT#LJ0Yj*fIqJA41@5"mZF9*GP"0MJ
+#4*%43L)M)(-#H5DGd,d1X`VrC-@UjK6`D1NFq8eZF504[NBc8&FGDA[dS1eS&ZM
+$rf-K8P3F9TA!2LU2-SNdZM%DJ%%TGGceUJ"S46I2q(aYFHPriLL9G8AqpGI'cq4
+emHp+D+N"dbEKhE*BS1-dkk$CYN)0acUDrkdSf5bPF1RD[%j6+`lJV"d!T6b6&X-
+l2lrS,Fa%0d1XKM-G2Ql`3`9c(hJfV,%me3'MAqFRlM*35kZ%rLlLG0@C)9FjIq*
+hE`UV@EVV*G'JVP1T,K$1f60E#(AFQcYK`dLDL85%PF3&k6lZj(mJNff)J+$#EfH
+!KC'bqCN#Q%i)&30SZ)kNTN5[5IrJM0I)8*,H!0-I'M&*%J+%$J#3!*pl26[V0q%
+Zd)VKEA8"GP(d&PMeh-8+R'EmXY0bNjeQiLHTh,a!SP'&9)JlS6&H+L40MEbPP"p
+*8,a-E+hfqq'Mp$[a!X1rTC!!-lb$iljS@RC321%N9P"JMM,SGGRJb%T'e-8bb2b
+LAhKNM0K)1QHXPK)4jkS[5,M'42!A"4BJAPFLRDPICeVS'ZPardJq1',JbLCF#%G
+QqFp`KK3dB1,c%Tr3L&h$$Rr1UZSfMj9,KI*J9H+"X'Pda'+@`H)ACGSLK$K6XY(
+%Yr2@G4b0UmL2FfXJ#4R8-rrf'4STI+5r*JNTQmjSU'Gir+RXJbaT1ZN*mGl@GdX
+D(#Ik2'$#CLS2faq6BG@""kfPadf#NEQIN!$R'pP6K[KBDFQffRKm2"d[ZQY8lEq
+%f*3")U+,2&PQ3"PhC(M`EZUmei(**rJ5'Cm[ThVk,eA-3YRTR!J*aS$M)4HQ@`0
+5ZhULGeL+-QKSV8#m2kLpNp+QPGIdB+ra+(fd6KhfTV&K6$1Pd*4lp2am1Q!%R+#
+GdlZhL`-kqhZjY3&[B#*0V"r6%mCXGN[d"5eV`U9hiS'da'f%()31BfDAHT3BjY(
+9"S!FQ#C3KVILRF9fbl[e#5,C*#mIRXDD$XJbhe,r1HYj`C!!B`*h1GL@6'X4#d9
+B'`Qq*f6dT*pGrH8f-2SZ9Q%!NrY!%aRrSP"f6GK44Vq8aRID@U!NI[(#j`VrVlU
+E)%BdSF+FUpSfM)i(h-hGcd)K`)SjLKG[l5j,dqRcXI``,k6@[l-(4)&Xa4#r8(K
+4l!'+rYB66mrr9Z-A+E9X)A'Bk)r@+-Q8E1J+2R",q$ZpZ'Er8@IHMpGer`CQ`0X
+rER@T`d%)Z0-AQE"29p&,RZ$-Jm[I0J$C#8"5`1BX+ZKr#ZAIZ9P,b#[[C4Bf8S!
+eX#%"H9e'GrKG"@`IMLP5)kI8fT-c2)I2AeMfpe#R"IJT4Jr0AZPDa6dZ-$e(MHI
+#TkPrEI0-Q5N4CAUSI*S3'kkB,e*li'`MZAea4+VZf+((-'36J`rHcDDP+BmU*FX
+#2'AUHhq"lhJl9G0e@PcA+'GbG-LD$qRfNjB!rA,r3(EDXES$M1(CAHdT8%F[%M5
+pkAQ(PRX(2)DMd5j"jH2-1`V-eHHC9+R'q%1Bmkca[NZE+0!hkh8r1C*LJS&Fq6#
+ZG%M9IBM$mEhdIZ*i#F+693ZCcMaBZ,'-Q+5YErEddYBZYL%5MeIX*QTkrQL%!e$
+R'()QBMkF2el1Lq9#mFaSKZ4FlP1h!FC82,Il`hj9h[pq&XELhSYSRJ(S5[aabrF
+cU-JadLera,)Xb%G5qk*Q,Xk1flc6!8S04$$"kei'bUC@3ciRe#c3X89@1Rdkc$d
+A[[2q*al3jD0lq$pTF1C3j@H+)h1CHUm4@a`e+f!D(+VVI2!d6&$Pee#&`TJ,plP
+'MBVAr2bpQ'RB1(CpSL398%I-YZD5k5&rb$emY1A$8[P#[864+[jT9b(kdQ8)Q0N
+qpLXY%AU#`l%l+hliTM1Y*bjr+T2q%L"pcE'ZTB*E#Tp0,c#FAK2jEk)8l[r#a&B
+P)H@l8Vf0$BP2C0UD&[hJk23jaqYk$K15E04c*TSYSN42'&C%QY8Y[,TTQ9m4'Fm
+'NP&ZiILc0AfMYAb%[aP0FJB(+k#l"8$Ua+BrR,1qTpL1eKH%f8"4pG6hj5Vmk&V
+4*54-Gc-8-UKN,KHJ6R#KJQbjD5*1eT'IpZdk0`'5+SLC$fUQc)EH+0CjM+3`SM[
+1[[hG$'V'45HUp4!#qa%PY-+`)6b5YLr3N!#L+'6TQ4&fMZA*U@UKjNe*KDGNRD)
+S)&bSk5K()%$b1*0ID9edNp!QdHR-$J5%VNGjU'*5a$h#mSPQa-,G4+C1S&qdl%*
+q[3!3(hERhMk'4+jQqPXD8@SRXN,-GKq8@$HLrQDh@$%MiYdDVfZ$d$A!)Y*&&-D
+@YPaq"@fcahTV6,5[N!#JE[1Hi&D`h&lA6#fUd1'$Lfie8l6[6STiDVH2lVBFGV4
+GH6qV`*4PF&Y[J-q@8N+'TXX$"E0Ve,#0(pjQQ@N-hXJSjRU0Aj@bNBprJrKGB,X
+@q5b)@BZak&&(8XB+CJ6[1AE"qa*8aBfEd`&J%,4@bSXFZ06pSkPp'EMp81Z-eiF
+l5G0YpU-KA$RHG&$[3G8I1(DD,4R8)+V#"*ErP,Sh)jmE-YEHbG2kUP@"!1dd&EZ
+SSk(c9*rVUEVe50"A@l`cH5F%$900DRSq(3KY"D!%NJ&1-KTeqhh2ICU0"-Ll#CC
+jhX1c-H$adTLIrrcSNYTkYN2458Bk2Ph-JmPlL'%A'6Pm)1pjUBTNX`N`E9Z"aN@
+I"$kdU0Q5Ia@53S&34)V5@!E5dR-1A)SlTZfb-+rXI[jS5Y8I6N@jea$Gp4KK45r
+rZHNUePKJDZ#[iUrNEVPe%A'HNIj!V&4B"'2L#kS'E$qZQ5FrjGcHFSL+XJPQSjf
+'"92'V*H!aC!!Vl&!SB@mU3lHJNimcfc&FIbGMk@Qa4F"94JM`-9HX68P43FGQMZ
+G)&41C2q$Gk'B'Yb0ZSL69DBYTmjQ1rNS[V,6*TiMP$cmBG-JQAFqMA(EM`Ai5c,
+qVh5YPKiXNmSrZDqre1b#GLmlM8PBNl*i@R`B++9REIVXZ)"e2$3FZZ@J3MZdIjE
+XaCQqrB81)NSe&1lhLc4Kj*)G11Ud$`D`VJ-UAC-c(MI,k5"rBr`2"md(K68GVqY
+4)9JKr1$&`D"c)-,8+S*4[P5q1jVXQ2M))i8GXrS(0b(driCHYFqG@lf%03QE&TQ
+,5,UmYf,ePL1r8#11@(,"9YX$P'6@*$&06i5T!5!8Qf8`0R9Ca)S1ED"Acc$XA%0
+#6Cb(cK9L"eDGpG$5@G*ll2'S0VA+X+d"pbH'Z#-dlc5M-VfRGI'8qqhq+df,q"l
+6l$Sl)Ci`kpPM9b4QQZp[Bcj"0[93ZpX4P00+FqURPQ`$JLmNI`!3kM$eX#lfrQD
+i$hC$ACJ+(RiK00e`KQR[QC*U"PTCDdYPL#c0VGbTq!('DHF45S64CD6&ZdZ9M29
+4U0K)L1dqA0Y,0Ff8p5ZMeecF#RdTl1MdRCUiAh*kJR9l)hB8dV&9GU(-#CKC%h6
+hQR)SKM)jpE6ach(rj*C[)-6peZUQJ*!!5`Hd")8E8pa6E'[S,l6(,*b!Zp08qmL
+5`0kT#`&TmjM%mC[US22fl&I9C"me#lDE2-hR+%*!@!Tl5U5+f)5m4bMJ8ieVce)
+3p'reFUh3)MYG'd%R4bEp(Xqh44riZI0a(@)J0Y-iG`+SP"5Fr!"6%DQJ"NQC-SF
+4Illr#dAUP,R[V#4!3b8&TeANJ54E`YL80'UGNV*KZB%k[pZ&03aAm1"YN!!+LIH
+3!$,DcJFi'J[MlbR1ldd*$"kTK`a&A-,jmJl)240aqF@"jh*0'4-#PZdFq(#pYDf
+58N9@I*9@6N`#-%c#aXD+j@1&&lZ-0rq0HNNDDcdY@C`f#iV')6'qbLH4E@`8BZm
+CBb%+(,3!9'9ZHjS0H$T$63rUlN-i2TVI@3h2$)C+`6IK-U2-jc-4eV-H,jmVP!d
+j(EkM5RSPT@rp9bRX*(46&kI&PdY+GlcB1QHDj69kI$-#&a+UEkG-#dU[,if)$Hb
+S18Fi84'Ed2G3$LD[8i&54TcAcbhD`6VDB$E-ZaFm%2aYJ8qAlqb$cD-hYA*8ULX
+i@ZJT"aD*66&hL(,lBN*+ZheR0T89U-MJKHqF#hR%j46LXL9%YG-Mq0&Cp)S*j2f
+JV8rGAFieSqmHMT2T#UNNJr$*5'4Gb&E1RhHHR[%r9L$G,5'mdd*U*$Tmm4+lMF-
+N(T-L"D`Cq3C4NK*HEPIjPL#!jLG1M@LAi+BRBG)RfdPHTkE5P%8e6Y*N+4)HJRc
+$)ra3i"+6`*5hXUr++eGFQ$%,bdR!bM96PNZP+@mG9,)cb&V[Qc[0Fd4-NpJcN[9
+[bkld9fY"h$J)+%-AE[a$@$`485PQ6-jIU0c*4&U$62,9(!RCiH9UYaC1TPfZ$fj
+5P4TjS1B3pf@6N5Y$EK%ZL(h"J29BQrY!'LlfRZdFC`Mfm5h0-9K9Eih8NU-c4d3
+Pc(XP88[3RfX(&ZR3"8Ki6L1&h9q&#d,Sr"aM6DV9Hli[h6([9hX%4XAdk1"CTP$
+G%9f*XDCK@aXeM2,%RL%3XEfM1`YRHpG-D23H4M2fjB#Q&I&%b)1URVVXLZRjET2
+fMVbi@,B'X*b6U,eYa)*V2*@bVId,+$B05i"N1G"mY#3YSSjKJY@FkG1FjL4HeU'
+j5j+Z)p8"GSGQI$1e-#Q21UZ4$eQ`,NkQ909RQN5LPJBq!Y&P-,eJqdfX"dR-"RB
+@S`kHrl"Xhf%i9(%TqC!!A'Gkh0P+q4mp9'!Rr"(b#8M*qZ45)-TY6FQY`i#*kBR
+(&M*!X3A%,j3#BF6p(S*r$$PC+`fi5q"`jia(GcI+K10SbpR!br"YhR8CmbNYiKL
+8qrd%M+$HF$"B$$AMirEEeV+`(@`A12P,cL2K!*p5,T@K4,Z5SeLGdENR$`T08+l
+INJ$IX$P@V#q1#KMIf5Y6YET9+GY&D*KDD8S"qAK44-9Kplq,P*J*r*QrGCYTHM3
+LJ,-1YK-FEShBYVKrb6pidMZf+`lGhh8+F9UZZ2LF#2cVq+!NUI(8L"kV%B'kfa*
+ZS5A0PJ$Sae)*!VibCk'a5803-mJ@f93KYVUJ&4`PZjKFCY`#rqfT34PA1*8FFBr
+I@NUb$E6[jFdiGVfU8Se#*ED,dmiY2p3F21@rT9f9&2jbmf1J*IG0fBZ$Yj!!SC[
+fAAV8J&ccB*`45qLbfKhd)3YaUL*S)'Ycda23X%[[!ra@lm3K5KU9LKTd4K$EBdK
+5phkUjRX)hVI1q4IC1L`+fbJ(3I*TUhq%LcZpPUk9Q&#kcVdaC'ZY6'2l6q)B*cE
+@dj10GLApNAZBK*VhEXfM2f"kiMGJq&e(16JPJi0Z)KBj43QbC&E&TS8FY0Yd6Jc
+VaE,$U!bh'S5B'qbi@6r4R-!qE%fB4Pb-jhEKQ8I2LakjJ#U$L"+lP&m1AUTNe"p
+lGN$ePRMr!I2J"BFqJV`PTPk3!&GqeaadY"e"fK"leb0@+UqX)Xh$Yhf83MlI,KP
+fcH6Bkf!hc!-)5S'4i90Vi#'(8+8Ih*f%Qme*K)&bSI,TB-FZP@3,QRUXPM)%D3,
+HYe*D606J#H"44G+eQ-f&r1q@A"hGY#L-IYX"Y9[+iCZPbbS)bd'UX1KVDHNC[mP
+lra*m@IhBIb*LML4k$V'BkN'ZhcA0eGb2j1,i8lX#QqSV@YLS%c+UZQ*jT8089%'
+(+pqEed,kI2I##iDVrmVEN!#-HEme&I)lk1aaZ'2ck"SEYFX)k4f&401Tk,kQbJ3
+4D3`$Dmc)+UX[i0FYX"DU,#D5[I-*"TrR'MS+`aj8GHcL4'9TNp+-DH`kJ!H8+kf
+,54EQ-d$Tf5"[YRN1d$CrR%X(!mqqj`C9&TlHCq(!MeUlQdGi-(2#bdi2J3e1JY6
+R@HKb0UhY+C!!5iL[%,3Pf)pFQNcmBf!1"22@a(hh'&0jAkKrBiEf(jCpYbH+08P
+H*!!H([T18QRia9C*fUJA)A1hU)M%$jqL+`NhBh92NT4A890GrjcF-)c3[V)ZE&4
+CR-!T9rES`ac9D5J-22ILb03mPN#!hHqXVmR!#HTXf["MXCeAe2eVUhBZZm9KeQT
+M1G(BdMZpX3[Yqi!`2L)!F)0J1[TL'UKG(K1`A%EqdK&IH-QL&FhLErYKh6KqYQH
+XePmQK!KB+&@DY'l4C"HUS"m$jZ"L+GVqQe-,4bI55B5&'G[MU(N!NK"XcQXXpJ9
+c!eV9*0Ac1IRF@8eill)1paqD9,%A$ZAiYj1HF(S5HA3b[SfcZ-13!-GF3AI$)PF
+,",S@e2Yl,3%F)'@&bqQbXGVQZH4+L3)&3T!!D%C9c(YD-)X6P!Jm3FKAPLNUdHX
+Je4TaPQh,ldp3X*k3!#$!d2Rl1PpcH*8`H,j'8VGi[%-BLC[mBH8dkMpK%jmY5IM
+-,m14qPMF)+YK,)Tj*5i1(VXA&q-99dpDS1U"bI'dqD4r'k2[%iir'j)a"MIrPb*
+5b,6#)Q%E'*Pa$k9A*(JYI1F+[r5q'4@8a,NQQmZ#NNamS["D@fDa0'Nfm9NLJFP
++aeU9lXf)1CECE@E5Vd'Ej!&M$iHY@HI5diVYUh1AjJ@TEIbLTTMirUK-GNC9KP[
+3dJRV!#Sib+pkCCZ`)Nch(JEFaYEc`jc6b4V*iIJF#5-$&+SjHQST'eBJY'imMSX
+C"kQXE@-X#Qii49fCGa4k*,$Mra'XTfU"9%F,#hE#(QC1&q3""BNQfMq2(10`bI1
+lrLBdVPJ`F2@"hjV1J&5Rrj'G3)qc0)`pCh(LDS*+iD2li8Y'`RA9p[arabUEZQj
+9jjDPD6a@C9$CZ"MU9+Ipq"-6)G(K6U[c3jM*E(PJcpR[9qLLR%P-"0-EGT,0N!$
+(GDlAU1lIlSa#GHjZh%bjbXhl%AMhR'iVD6qrDSS,Tb#XK`I234k[`kXha&GIR,8
+A*pJH)S9LZ5h@#ehB1,$"pQII6`,RYa@9k[)B3#aVA&dTdmZTVrB-ELkPkYIG*Xc
+d'lJ8B$eErXlQd%[L,hdP$ChYaK6JCr)2jqaFm,8hXXmU8)MVfqmVGc2%*qIK-Q9
+,`p@1[&cAEJBdj93e3GHYC+ZKD26Jbe6--2"i-#DH40QZJcmDJ58K`cC3fIMIH[M
+qpZVMjBpqC`)jqAM4S#lSjIUEDX"(bk0,4N+1G48DEFBYRDBRkb6jl96N-F@md@1
+EFm,Nl-+[@k3ZV'Qe1KE&))B)"ac%l1"C191X2P)-a$T4Ui%[ZEikr5#SN9d$h0M
+b+5jM,+(%DUNiBI'q,H-jBGM3Qd8"FF`%+*U!EF0b3M4''3heH,1)K%!GSrD6m[1
+GU-#c%"d-DD8C6$e5)04Z$*R#P9mAHb8"kAmqCkX!2$G2b!h-0`kHj9M)pLfG%p#
+e@eQ`YGT6prflek#Mj9UT#q30N!"N!(qq%f$BM,p-`*5VHC0I`LSpKU'IUmEN30$
+ZRiVr@m9)+kdb#'AAjY%+#,06#PqfKiRIQ9Ycc#ijR+21j'GlhMZ"cX'E%5c$[HQ
+k0,ca3RPCPDHULH@(VPH`jFR$+NCJQbYV`YB3b(2QM5D&j#VXia&Fe8Yhi*Eh'Z*
+mr")0A30*)dTQi-cF$%cpD,DSUAk@cVVF5elm@l+ZFp8'iHBa9-(820UpC*lGTF0
+M6eP[M2A'R`&QIYJ4LS@B,@+eR+aY)`8T8RUFYbRmjV`5eGaT+52#(Dd"kfXJMkk
+1j4fTlGe['CXeGUPfATf@$1jB'j)XE)D@!TMdBTB9YcjQAZK-E@-6T@HK,,-&Y*!
+!)Me5d@lb5Z12hr!cBXSjRK16*fE)M82#Z%@H2IVDQ2F(Bi&QmR!DPX94(Vc4L1q
+D4J)&@!aT62dT*@(KJ&#aEM'G$EV3ed#+C"UT2T0CrK#MA93,M[Q5d4lm0DdFP$S
+bfCQe3[mZXBI0iCMfl6&fPeARH5QNC$FX2#KY#,)T#'(NNQF3V0IKbJIYVeY&Vr*
+FH99cP+'PM,(++ahG*M)b(8mDdM,38&)c9rHXVM(%i8I`Lb`Z$Xc4NiCUT"6YQ-+
+l`!baYRYiMpr5H3hlC!h2MA,808Y%RI@cT(DjLZq6rZH0'!RCVBj!BI56qEK"+Y4
+jpaE!#9*5A8p13c!"5eMf,G)&8hRb)Me4A0a6mFeV0,iF""[bFS!-[[5cB6QX5em
+dBZ`im[4LLF2P$#Ge)6(mNU(Q'D)d%3@2MQbb"mdLc54)8H9LmIL[r0TYM1B'M"V
+6KmZQdlU8p(m[R,JZIN"*[r$6'$hFV!YZdb$AI$ckCAkcKZXEYc'ZS8[)U10jJM[
+l-IF0HJA#5U,Yfa)M8ZZZDY9i8F%$2JNTcYZE"id6J%!fiV2!Nfk[9!Z(K%CE5bB
+Fi`c9FMDi(%$2f6M`Z*NDFa[dCj!!GA[*RT8`lbrNIUjP$!f!ffSY1mFHSShBaV%
+YTk&RlbKaQC81Z)e4-mB3VH8c*"Yh)icPfT1lQ`Am6U5DPPD)P'6m@lfDHmI5XmS
+)1)Udp1McS#e!J$-CaTM&h4p+RS(H(9,[JmmZR2$a1@3dhr4M0`KeFdP[,RcY*(-
+(!Y#9l&)I0f9'mPprNpB(0N)"BEGbJeeN"JJPCD("hfKkM!,3"la'$XlMe(m-4+)
+UMa5!NpRk`l3EqEH'kV-Y(Y[#beqmhqR5Lb1N6$jN2BFI3Y!'EQ4EN9")!r3+rBP
+*V5j6Q0H0USJff3CK!Npm!-3G`Cab!h(X"G@C+J1XpSi"ibN5r*c4V#hR&`X"PiA
+ST#P+@TDJmYa@qX&jIM8'5fY)&Fe"ik[SerQZ'9*H&%$YJ$8V,fk&EkIcIM1+jA!
+HM'S$DHZ'5MS'aE`ddk#a&9@M!`YKdMJ)&5pDNPhVIV#KeB5i-ePSpI&ReKRBcP(
+03R!i4@JKP&F%`H"lFA30GCm`ir,0MmJY@j!!*+"m10h#F'Jl#X'GNS,"9!H$31N
+IQC*j6'i8+9E[`)KYkfTM#S4j@db0,STeQ&C'*-9d'l*&&SK,bM)d2f42fjJk2)G
+rq(5$C+S,)Hf)XC4c4c)erhPF1LBeI%HmmHARca8'%1kJ8b"mBQd"&p'@cN#`RjF
+mf(chYST8RJ5#@ecL5'b3!06GJeAPha8mZ,RkAKifeMfPVX1)3RIr!%%)5hJ-ZPE
+m+Kh4%0$aE@4I-iFij80hG3`!Q[P0[9@M9h)XF1-[FCT2V6+S3K4D"+8V"!NP`ip
+hpK+mrRG9c'iLG!ATV1%FrLNDMp#3!1)ia1h!FGQSTP58%GDLGGN9Z*!!%TJ&TXA
+a&M&&2#l(E("8hKUdE&1AX'PBNlGZP`SIP4UUdmd!3c)[P$+GI3JJHF%kPb)T$dc
+DfN"1S9RP0il(I@kq#FB"`fZ1PPpPai1VC6d+P(K1ZHJ4aiAfE[)N3(c4U1fR)Fm
+LdT2h8c3M2!A8-lb[@H%9lbj!Qb"l+(a*HiR@EN5dUi,*Y&fX#*0P9`%dmU25X8'
+"6"CiI")3G+'ZqqKS`@21QjmF9qUF6(F*3h%l*'NCTXMZN!"+5A[c9-FBcXd+CqP
+pB3,6[CPl@hIU`eU[q($k%k5jbkCLhId5-b*ed9Ra*(@J[(J)AbHKrV5e@kmJ!i+
+Nk!(,jq5C&FkGbCbh3)*#fU3C4I%R['LcAp-bJM5D6-GNNjcHq3`I2IJqMCPZ,L4
+A$dM3TH*EE-D8!Q`2QU(EU9-maHED&1j1kJcMCJHaV)1FXq#'UD2&IK%$kTRN(UP
+)b(,,+`kdS9F[J55H"%AT`K$2*Xc[CEac4LfrJBEQ[Q!V299biTkD+%lf-K%C%1(
+5Nk@i%@CT9D#S#VC2Q(CpIprd5SD2ZrNC1aIC3)5N`1Q6B1PemM9bKhGEDX&3,83
+e*bEhM*TR(JHp`YHaBI,Y0Emq+#k8HD!m!(MlND24Y1UZ19Zd8k2CcZhA8b("9&q
+p@SJG9"d!35$eUZQ2q&@c3P['4GdRFLVB$1HFU&5lpDi%c8GF3'N0CCRc&5ZJB&R
+*MYj614ceV2DCIM52!kda1JhHUVYcXRQAX$q3!'k+l&I6d0ARl6hiU%6RhkiCXUj
+RZ)Le,G2Z1BeC$He8!G&G-Ip+UdQK(JBLcZj''6(JG,iQGBEp)@XpPFf*G-q'"ID
+iC%V4(-m`60+6dVZHp+%0Gr&cSdEX0*+'MYVd-RVNCS5%%q#Br*1L2'FDj49UH%k
+@,EQ6KD#Nfmf6Mc8ZTU,D%EGeU(iAX`0XJ%SfC[88l%82Pm["'j98KrbFIBS"A!)
+kHH!*PXGaq!4mBNG8MaJ!`ZqK+P&cd@+Q8!NYL(E'Fh"QMc&Q6%k551d`I#mFBX&
+%rAHKE$XKld0h,QBSd4ZlT9jU[Y9,fF#rk&S"60k1G(ThN!$NJ9DL`r%QTc'+G4R
+03jG`$dZ0qQ$DHAG`-aKBm&DMSCR6jj)N"5,eFLXUHMEGYiAKKM9XIfpX*(hHP3M
+YEIQjGkZJ"r'3!)Y)4[FSV0j4d4*CcHL+6#[f2CKhKQr'B1TrD-FL'Da-EK*,Z6N
+!3A5+X"BB#SN`'*VVD$)ZT)"98HKpJScLlL4Jd"cS5S`,d4#P#j6"*$[hk$4'cdc
+VlZFZi)Md!1$YqGBq)C!!HQAiTj6ek@mK*iqrEbA1[ZJT[MH,I$cB@ALQ!6$6[(F
+(d(fjZ1)@+MRRqIUPX"Zl6q"F&j'$VbI*5a&#HLe9E'rG3cZ6lB8QkI8Fd$eH9mR
+,eKAKh'h@`%e`RX(EU@kda0N2$BNb[cZ22BhX3b&Z'!4,a+paLr9*53b4`%lMcL0
+E#29UAQX!qFMG+DZjV0!)#0TF[[kf9CS3pU'9ii,l,0K2%6+QL+4AK0[Qh*1ed@I
+jYRNLQ,jP(ih)V(5CJKIkkG%KXLiP5DE)h9`Qj1BT"Aq8fH5pGc1j,h94mD4'eR1
+22R+(!M"*H$VFJ'(rL4a1@J`0r'rDDAe%(9(BV-#Qm42bBAD1fTBDAqhT0RK(3U+
+*cm,KR0Nm@GE+,5TeQ@TISiBqQ,8lD`MT-&Ah693FMc*[paE23m08(JMiKl65'Y8
+be%bGH6"F2q,8RJR*M"@,l,G1m-JhV@JIi9'BeYV3I%+-NL6V5,$c[k69jX#%iY!
+1A'[(UkPAA6qUTN@3!-f!mrGrX,kZ!!mN!0ZLlk4D-0E,h4IPh@6#*[+C2@84El-
+FKcUVJfKT*)bhiJ%q!C1X6@ZiEZA1ceFJ%-P&`GF)Q2$R3mGiGIaEX)1BAMd9Vi`
+HHhUFV96$i!RU&$D#-R5d*GKj0f636$CmN!#ek&5EJD,2iiHCMVCA8I!N+lH(T#r
+"aZ+Z01d@M-X&rfR$1Se"X06!Q&,HUDCC[$D'[&pF$%I-*IMqaZa)cKhbI`NZh9@
+-!8L@mISRfE8Qa(,8H%"m,C(H9S0pEEK)U'GPb-DKLV[(P$'dT5*SBTP1%DfJe+(
+T61RAYS@D`D5!qB(EjIVJM,dPJdi8c#c$El9ier0l)JrIQU&RqkP%`h*PXcfLYhA
+f'PU*EpR%1c'GSKS02[b"5LGK`#%X0%!j(fd`h8X&3r*&lYj"DePQL(BqJqF9'Zl
+ThMd4TFm$MRIU!YAB*%E@6D@XPpr2(,e%jH@CmNK24BjdfH$RAMc9,TiR@jQJ[',
+8mkZ"Rd,8jU3"XfCaaAkGQBAZ++'ARiRDMiIQA`lBSm!idJY3[hlk"1!k0QPV85(
+md5+r3$Te91)jQ'*fB%AGV4A2IY0l'5X)F@pM`EK+I+A8'CXYTl-3epUVC@#Fa*T
+FZbDi'q)NK4T4KdRENRC6S6mX'QDKYJQ1E)cCR28Qc'TDKU*,C,G8b#,V@MYr9e[
+[E-4b*d2P'NYE1l0JlGq(B(VI!MN`P))9,'6%V3hhA)NbXB5%Q+5+GChKj`d&I3E
+Um#rkjKFR1$8E*M4@V0kB#h+$SC+pM`C40LK@LT15&%@'&6G#4kQQlFLhNGR3fXP
+G51)qcmA4D2JG5mr8"K4[i!@!b#%0(CPSJZ3I"fH$J6BRF@qZ*%#d)MHQjcL0p,(
+9QU[pRpSiSL$)T82INNEH$!@dCPLi'jIN&04piALdGQ&*CGP@3V3c)eKqE,E-AR1
+,YkAZ`fLBA0Nd1"!YlViDZlYfN9B[cYCcE%LYTc5QPBF%[k'EVEZM',,8-A52&#D
+c8-AiJLaX2hc6(ME$NpJeTUfBJ5kDqQX-Ep+'N3F9S-3mJ04DNF-l#LYa5,"lUr)
+J#3`jX(lmI#p#jUhblMQVB(,'YTFU(damm2Fl-AAQa&+%20qJ3RilqPdi*q1NmEB
+j`88#)$bAY`Xrhh8VN3NjQ0USCH)lIfDL`k4ZXUMj"-'fPVRl`DZ2bDU'cC,)TF9
+YIBf((8Elf6B12E)25rdCHZ!hdm#!j@mZ6G9dE)%hDjk)5`Z4k1UCrBM-N!$[R'm
+ABcUlrqF33+BS6cjV")qH@rFk&r@3!""prIK9)jJ0`&))GR8+S-qpTbm1AR+h'XY
++J!R[JI$cc-aLl#!Y2HM0j!c9jdRCm80Z$Ic4BG[2!)@)fBheIb3pFr8%e$'D-D`
+qXMB-P**jZ'`b&'&(31NlClcjf[K4+H'5mNek'PbSd#kJAhZ!`-HG81q4C*4*ML#
+M)eqQD@!E1&rj@%N638il2#qN&d"Vrp-fJ!6PPj(A*cD4D8[M*0)r@8i3(&+FC$Z
+fT'A$%(U'UY'CUFd2pIC"Gh6+3jPdrqhMfibBeG$pU%UH!apeeij&YPac%6Klq2L
+Dh$'Fj1TD1Ci+S%CJ1ZIbKm-Xk[fm8"MBp9CfEb6)mjk!qVBRN!$)r8-L5"jQbiP
+1bX@$#CkME&@k'IVbbIH1L%`@IY8%K4HN6MrRk&jL8+K6a`[Fqbb,M-"+Naf5*bc
+hGqYR)%[b"!8S&rFCN8hF@P,i5*N&jM(mlH,mN!"BclEp`id"8CLZ@TdAYMN+$3,
+!4-N&AHJp@f9S!`qBXHf(qep+Lk8Yr-RTqa"`rD&m@[Fp$3FQP*N+UjF%10M9%6e
+Y`(XHdPiIEB#$d0ijEFRqNLmjM0qVr6M['RK1"jCI+"@3!1bS,#cSU*S)T1Im$Vd
+&4iRpdIaXB1(hkdHSrSl"hDlZb%2U1G0G`@PKVD`ZcMGLM#ENmQ44Mh"[P!GSE(!
+(E`2dZY2MNmCa!PVVNC)!mffb(l@qEC[k(FTN+09JYF&-aabR(KFSD08Gm,*i0)-
+Y5eiVl+64QASK0hi)'EL)'!6V+T[9S[RTXYG!NFF#X#q"!a'25@m"rm[k6A1K#%p
+"U*D'@H,4UqS2`pIM5J2K(CXULbXeZA4ZI'5&3eETGL#"--FXf3SI4GrEVpdNEhR
+,hGbaPC3M*ZSH[kFm$T+5%,P'QqANbD[-9fFHl@Ff[dL-j1K#K!ZR%2DBdG,2pe*
+HBrejZZSf1i-R*L'j1"6TJe#ahRD3!0J@H`"48mVXDdN"@E91FIqTq4h`JXe[@H6
+[DQ&5"9D+bAVj$6UCSkrVCbj6h,G8LmM+`LjF8pX1-#BYd%GLa+B(cKlq"NITmlp
+)`TP1bJP%`*XTaIHe0laF0R!XCl54*Tec`TGhXfCT%SV4JL)9Z68#R!QEb8$!T"'
+,`Br($%mAXfrI06dED(D[3U&I-(P[G2hj#2qicURXbUSUrLir+e1pPLUq*85TP(B
+QH4LXm-,[Phm2FmFrLrfhS(j8HS(JHR9*8*S,!-Y(&&f3!0pc)k32,9i1)bSbr26
+Kq6!14FBXP,adIDREa,F8fQ$2)'ab'`X2D4"8-X*R58LKHYM4fb-PT8V"e,lIQeE
+V3N[J$i-!@Tk8*Li!GR4aGiAAL1L3!&9Ac-H&BA$08`CPFk,3AqX*U+[%SN2'TXU
+)"i*#qk@mdfMB)04,(m3!rIYTK[r32IpH65R05lPE$U)Ej8-JVD-d82EQmMd5p!*
+hTZ'[c3j4+BN9!,2FlcpGlV6L5SRd[kNlPS[6hNe-,iIkIJFp$8FjkbG@Q,'BB%K
+1'f'!"Q(!'ldK'rdVA2hX4ej0VEjkm6VCm[aPT+JQb4I%rMjj$#L*MZjfTY+#l(4
+-m-)U2l'CZk&N"U5dLTF3"me0-AiRRPd'!K"&NRBL-KBJ%NmTYLT['&bZ!`@krUT
+$eN*JNlP)*hLX9,ZQ#Y*%NUE'jH5I!LV!I+qZd-1l'3[8c*`#b8pm9Z0*,Q+LTmD
+-!cClEi9d6d0i,M$-,UF'Kq+P-X1K!LB8QIPYliS63'30+1+R5*I9"@E&qq)Y5%p
+Y$EI&JXA*qHHfq`#TL$#-N!#KT2kB%L$rC+iGS#I(SK(19rk"-"1XF`8IbN&R5aH
+4eLVHl9kQ29)'cZP[3M2[$&@J#jqj18m&"8"r2,JRlRE)pKM%EV(I*6A5JMMfk-L
+KVNRD!`"Pp)8CR8b1TJUZP8L[-ESe8!qD`95(E&&YM&irY8@aMMV1'0#"ea6JI#c
+VK)3#G'"&fke[)[#K@%P)`U8*DE+QE5@Dm`b2Imfp*Nl12ZYk"(alE%!$af+k63l
+e1Nhe*Ti@j+I)CV35aLe-hHFm8,if0[V1&9BU(DY'MS,"EA4VD+i$'U!-I[%SPI9
+)4%!@(h+9$bpKU-JjDCkdU%AMV4(X%U),#6DDP"HQF**$@kC(NU(qlM"!%6RF+V6
+QV6U-9'+T',b,e0SEYUSARFAPJYee#%INYT1d)K0$#@keUQ6P)Pe@`9[P-(eR8q*
+P$Xca2,EAIm8`F*Y34G08+hSc-"-)dMQjVY8db`HPU+YXGGXXSSA+8IkkMS(XqKY
+A2ZpPj63TN!!P15C%1VHf+5(5k9U+FM@qp$"@SmT5,aal0ZG$4PAc2V-(4i2r96Y
+MfLi5KmchG$"!$UVQZ%XqCfTd#&r&Hp5qmIm+GZZTKH5*4CaH`kMr3`k192DN8Tc
+V8X5Nq,3+[iE,UGRb65&RBHBUQ9ee`bUP-TNL'LHQ[`XqKr-D5-FFU0lZG`D%rY&
+pKqF%dA#F,9"!Ib%#MkE5fD+2TmHiHNk82DrR$Rp6DaJa5hMZeV-RIZDVfYL$Zc0
+3LZ&%[lEcm(hpR4f$JK`mRQT'()r(Ia2Y'*kVDLYYL&!V4cjM!'R#VheCTY9"4ND
+@G&[68XFR4DXfB&10jPQ0Q1aCCZ"YY+eKHrS$1V"IK@!'(#!Uf(cDCb5d@N%m@8a
+2P(INd'F2`jVmDK($Xk&AiUNQqUB@G@X5R5qlMhp$d4UC8#APDNeiTiPcE)r6&`5
+[,kp(%+@0dX$-XBkLqihS'%@,pX(&IFY9DKFIQ1"JECeeYpXr*hN,cRQR9(C*5+"
+Li'pr5$AcG@05l!U+)AI+RYQ4rpIjce9j3"M2K#DND`c!M'@N"VKbl#5c"q#*mmS
+9&h&Q!5bU200'@[A))[!k-+T&Y9EqM2)kPrEHHY9LmF#QabC"0r4V0h#F(P-+ppQ
+bSBQN%bcb6YcP#SVT4dN42)`Epajb#Sj-N8#&BM",'bD-2p%%*2Rb#"5#qDY'%)d
+VIdQZLbTU["[b$0V$EHklpHq,r`-hai[fJFEBl&qm``dhM+HMLk"T'8lTcX#l(Q+
+j&6S8Jc(9JqlHTeBE[#8D5hAP4qMmT2,if,Sm9[hA6+cm#h86J3`FVM0B4%0IM5`
+5ErrG($S`0qrf!4`rcG8kR!i'm!l*l5,$&#BSKIN1EJmDm3A%+#,d1'1$FJAfN!"
+Al"VF)hllr#eP-Y&YeEKC1%ZmRU`B*Vj'+JKDZEKC*e8L*6MT#)ci60S-Bh2!LXi
+M*"05U!eeCh#caaPbLeD+(q03+43!TriHfQ`drGQ')fph,(AfePIA&T-k!e'+Y@-
+FULM&MqS3FdE(k0Nr!d$6K5Pqd&1'j4AB(#pa(-X,[)UY#KhJjBXqXBrhp$X2UD*
+bMVA5Ch[(3f6ZR#K4pSi*V$hV[kE&maLDD'4hd8A@djkejXDja"mBiDp5f!)+`hF
+IpX,d2lem36q3!-Cb"pJH"*S%c(5IDaS8KPcCkZM&`&kQ[)3F%)pC@TqT6PLlFpC
+[(8HK&3LCk)'M,RqY3Mh@IULVPLK'qUdHDr"F1Z4QYiq-'1b"Eh&Z[&fEr6)X[#a
+`ASDble8d)ZQZ+lcfqPp0KZUpAb+&SbXQN[4+68[Xk8)[A24Phf+"@bi("JBh0q$
+id[Ypq@aEdcl[I'j1kmbp8Q!K'Z"E[*Apl3lmRQRSY!Jp,dTE$NCP`j55I)4e3H0
+H3[SBKmU9`+me+5r8Rq+,r*3p*RE'[86cQ!N4ThrRC8L54"hl!Sk13q@"22@A0qP
+jPNMdL3J,2GTB0dVeZN*D10dESZ%bYjQXDmd`L1"pCH@N2!)*bAfF@M3(3TpB"j6
+ZRm,pNi-lp`'%40Mi9LYJG3#BdkD)[eIf*+&8N[HrqRD5!X)e`N0IMK+dBmh-fH,
+@eVH4V3!X8B[B`d@pSP6kZI@XU'jDTDXS4+a`M'a3A9-J,3bIM9@IeIU90C[RH%[
+QY3ZV%Jk3!0N(2bd-*GJqf4Z--d-QV`1L%IB*'3&Sf%XT5MA%!8l'dLP$#$&C+P3
+C@m3CMM$IUMZ3!&E-#b5qB(BeZ,#iYH,+h12jmeAUc+U9$3d6*P"@h3G&4d$d*#d
+crqXki*INAC[dCpQ*!-MY)FPS)D4`J3EaUC!!LcXV88FB!Va"TD!XE)U0$*JbSCS
+ic'e@AS(SaU#YPHTVid(%EX05i#cEX!C),HXQj+T(k-``X+j#eB8A+!32eCB0)3+
+rGE(DC[mJ-hMe)YT3+DSId+p'J5+'38!2,AiPl4Ckp%$%ljEE85k9kLmHmje)0Mi
+bYRTA)$h1[4Q1*,lmDIih)f2&Gd9m98C$8fU-H+-k#46l[Q"EFYb3!&MCZqQ3!1p
+AD2F%P*%(p2X[IVd'HXBZK0b`RH$FaTGHkmH*8R20M$GbBjP#mBrXP1q&('D0EQ-
+CifGJj*Tp9IFi'c3AVYS-k-PR%fFk"#AT'l%q30@e%GUpFfq-RbR5l&Sfe%JFa$P
+*ESCHjiU0l3Yrb"M3R%&LH#XQT1PfqHCFRDB[*96d$IHf9'V%I!Z6Lk83(8)C"!B
+U5(C8f1M4hV*4IpmU0qG[`A,2X3H+Id[SGjF*fKpZf'ii)+U!"-TPVI"SQCcfdb[
+hDa65CePbY+pl$b61XZ"$[+hb[e""48(Nk9i'5j*SK)@H!"l$AMr"L*PfV)q"APl
+TjMPMl(l`Qfk&jGa6Df0SjVXI@Hrb[KY0PlUC)*EiSVf*abG3bJ2RUY(h$c8[mb6
+RicbL1L8+E[Tp,4h*4e5PHHblN3beE`&GV+5b5i#q"PJ,fTF%[*SbRAVp*6l$Hm2
+jh1N1A*&*I"[a(FH0I#Ra9!J&c2CmY)dXE2dS9J9j)j6!CAN6+U-4$LCA-JbLNae
+XqFBTfjbhkN`#E8G*6EFrXh1mIF!VZHETrHCYq(Sk64lq5LcbVff6hJc&e+j4I4p
+&FHcpmRl&pFP810dmRqP`5bDJNlEXcijBKVi#Tcbk91!S`fp&)!fm9$QBieGZIIB
+M3P,qJA'BU@TK*6JL[A*K!khDl6-)KC0FMl4S!q(eh463-RbVabXFBPGPND!2HP`
+INiUJepb1ieZZqiSiI@Yj,HV&J64C$FNa*0d`mLmfa34T!&!Gl2#"jJ$h04`-MAD
+1V``jfb0LKbc-MG``eYQP%pc`[4bS,&I9ji+r,BZA*RjM3L-qf$"$cc(VNcc3%!R
+Fm[P4aq"IL0bSp#S95kMN"k,T*+mch$QX-R$em2[L#H*CT#@IAIJQ&DKk592D$hJ
+@kbLPk@6DZGA!iDX-UD(H0#TF!AUfefj#I%b+a0C5JT+!kkNGKrT-MVm'2X("I(r
+",k*0b8+9(N9KbGc+dcLr+,9RY,pVlapGJ%eMhr"250k-$$K'`fXDf0fc'M3DQ8K
+![XPCrJ+"a%2'ASSiYbdGYYa&Q'e`9X64S-S*4[Kh)hCR[)(*+Y4$pfZ5@l($Yp3
+Ii!#2RTdHC4FZYH'*EXAm,CBa*1ilSpqcR*(VjUAq0EPlp&'k)dBl%V-ITlPKB&a
+pCPJdGG"ca&[bM[[A$c,$m,UV586`1#d-"N'N4[B!QR#62LLfQ6"IYd#%q'"bRB$
+6i@@j)Hc,CVK6A8'rY)L3!-8F3-GU@S10RS5Pm[6RKdam@eP#*4r8e'$AV'bUG+M
+mMb-h4N3GKrKqEX-#A)jXQ0`+8UF0K,1U[aYpN3b'mV`J63)FD#p8eC-j1dIi+b9
+QELBUq4Cj0)XNCVA95%$k4#!9(k@3!*3MC"6dL(3["QaUh(#CTRf'JD@$!FR1lGL
+bTCP8U$Yj[9[m*45JHBLQU[qaIjGKXZ"1l,$[fDK8GfjE3S53!,JrKT!!akB#R")
+Z#K@2K4i'F*khTDK4%U#rq#-d--9Z)0RQM#Sb@0k`,jmm#$2'N!!#12lQ&*[8j(D
+UJ*!!j,!fA6Q8QcXB3*0q`1cSbJrDb5kSHUEkZ(XMCre$`&SJ+pSc"kD))ebh9AV
+,m3HZEhRckA$U-'RA`Cp*!+@3"!%!!%)!%,JMh!#i)p`!N!-GTJ!!VN3!N!21!",
+lr`!1KAJ!!$MA!*!%$`"8DdaTBR*KFQPPFbl2J#jiE@`!!(2"9%9B9%0A588"!2q
+3"!#3#S!!N!G#`G5R4VU2PNbdGRr!9SpN'Tf9[3#R#mE&4hqr'A68ha66EEc@HiG
+&6c#I*pYd6E!Sj5NK'9p46VGp,#QXj@9bqL6i4I9JP"%T8j38PkXq,880T6-6K9c
+!+2pb&C@iN!!dr$`+lEAd1H3TfU,bE)!lRd#"PP34ba'&C,V1SZ'XCZhV'hcJ3cI
+eEj5(`CaTGq%!cj*DA1j&#N"+Xd+0(EF1N!$E5dR#kjG)5Dq#kAUGc''@XV%'li6
+@q(im8C(NCfZA'R%b"P8Y9'Ca$Qa0bG,S)3bCMp(MADh5PlJ&mC@9-HE09URD,!-
+YI0'**9'1d2UhmP8hFjSN[LLAV"qA[ii%Vr(0rk2Ff8c"ZM-)l6jiMj[-#'$XFN'
+iNb`0pQ0a(DUCL+3f3dHBR-ZHAT!!UcChBZ"*eUZQBq"C*%KYQH59@pm+mEappAh
+G'GcVDrSl+QSZHC8E'DhX'mm32@flV&aj,`IFPBb`(S@5[#`IErV%"93d,S`XiD2
+8UJ+pGjcV"4Q6+bU4``HX`-+j8kL$)lPM)ZZSmUI&B&GFfl5TUm`H$Dq10FVNCbi
+JRTS9Q&mh,e3,*$jHd"c%'%XY)+*iXJ6)9DPaF0bFSUHDpXYcq*C1)HQ,qd`@p'2
+SGmU2S[lPSA#H'ca6V*6D@1l&m#!0$3QX61%[1!Am8+5bkKHH$k&Qf9#+MSFKm[V
+)k)F$4j8XpKJmq@kIDHE,6Y-B(earY@+Z2%2SHV)[bR$T$T!!F-pRbJ4D6XrKVGQ
+m(e(jef+chbdMQ'`lU3Ab#rBk)0ILADM2E+`A5Rb@D#mSfZX)306[01D'rc54VTJ
+Q@el(rZ9)N!!Zb2ZfN9LAUSQCI&YPIE&EGAN3GRGr&9!XL,AGBTHe-ZQa,TeDXJa
+'@RLa*j3IY+aH*`$L'hc8LcX!&#"cTfK2$0PVpq9#D8fYZV9CN!!Qp[i*E*i5(-b
++QR6Q@hBbXX#2G6N8rm0%5**M6*('eBl"D8&4,R8Sal6mVbdRKMNM2GrK3jNkMRX
+c6AHJ![#P5("U9Yf1-(d34QA%l)Za2L%P'KUCUpU+[lC)p'(BAU95qZAfR9#B(XH
+U0h5XNN9r"PBT`1ZiRr1!FLT"93B%SKjS,*@Scl,34B(B9NEiM*@3!2cEC488HfI
+0f1aeJVUjBqRb"A*K`Qbrk*4d@r&bQKI%,V"%IVB5%+'"9id5k6J@1R*"%cJH$Qa
+"JF4V%p1kSr'FV(KS58L4!2GFHHdU8!2FVB`e$IY(Bp&"j!l8J,qNkNNEhV,p+cP
++F$p3YA,`,-Ma0ZJ(f#lGTUAbr6eQj#%9$965r@Y$*E'&G*0cA-XP"U(F-GeaY4R
+B,eUNQ3m'a6ZS88EbZ+'$8&"i-`EeZdl!m[Jk`UEX0mERqHX3Lk1hYEkf598HpJ)
+B@RjYD0qad12NkbZGdD98c6#DCAK5iK4XqiTdjfkL[P@YV!CUH*68[c(9J@GE@[R
+*@am#5D5`b##kRDhJ#ElmI0ReeM5M54BSrS"QcpUl+rZm4rrX9Zhf#`mhD-Q3!)X
+%6jrdliTJKrp&RU!Fc#'iJE%Qj0qCYhd1FKY)L+C'8V1Z+"fm+C@+pH8UNPFX"B(
+X$CB2ZC3fLfZLZ1Vmc+A-mbeJZL91-0Q("VAZk5Lfj$brrQ%I5[+ark@NU+5D5RM
+F0P+F%8R%BMaM9+'c6b%Pri(QmXGBQLD%-K,'2+-r3%FPI9KZj-`FP"L9PQK(pS6
+'5CY(5[el$8U54T(-CY+Uc8A0FM@#rE)FK@B"-$pK(8#IVjpmM6[4Mmc')$,b+fm
+JH'B1HpX&6,qQS3fb%IEYqJE2FJD*SV[FVPJ!9C&"2j(f+r$MC+B![6L6`r%0RAe
+0N!$dl)Nd0j0J,CmQVAFlA`0(&08J3bB6U9`KQ''DS%E`h*al[m"ecNj,j0DUTja
+(52&,)bBFjZYP'k@GD0k,GNX&$Iaq9lhY06Z-`T2p-$YmNrFfpDk%0*GQZcGN(fT
+Ci21-mfkaJck61fGjfQjVl@h[M(YJmTJ4HhkEEf8U#SX'daRGQd@J-8ifh"G`YjV
+D9rjd0GQZab$PJm8HjYU)a4fD*,h)CCrBiYMG5!+'YKfKq"Pq'Q5Yi03Zm4f,j,j
+jEbHQV@5SDTVSl*qbe&m!9!e@"0K2I@bq,8SM1$E'hf"8260dU6Ydmrh['X*3UPL
+,&&,SHQ4mN40J%DB6V4kALlkRU63@%MMPE`ND8raZ*Xhj`X[`Xd@bU69qPfSe66P
+51N+D6Ij61P"T)AG)K-G+PSChZm@#9iXJ39PhGiRI8"h6C@R40BrRCVCHk1MfJ#'
+R+3cZQMHj'*epd8lSS2##8Fl68&H"('Xr0%[SC+Gp1cdf[aNS[Sd('U#FNfL'CJG
+L&Y+IprGiG$6VjMUU@Z)!cffJXqq(fpR+eC!!)PBSYm%d%piQd@0pfF8*!B[Fdmm
+AL!68@9e,)2TNY6)TfNYA82%T4e"rU26MdFI60+@-ieke3rCm#aj05j0!d6CR56h
+FB5*L"XrkYMaY$[5H8kK4IEib`pLc)Heh$VcIKK`rH-FZ1`F-0CSU)NV8MkUQ'e"
+K[qe#mVX`ijT'e40-eDI4-CelX!Z$(CPXE$JUKP*D$+-0F"PM30%'mZ)'8mL!)9R
+,j+UQ[DMS,-8IbAL9M%Aq%i!Zaep'XCkN[8p#m+XDcAml-+IZ)bp4B2"[c"9B2PH
+G"i2"UbBrU[RIES2J+T-mk2l1Z,ap9XrK!UQG3KM#CjH9Si%'0lEp@ClPNXQHf8&
+jZ)$59%Bc3Z`)DT!!b3(iLpq*c0&jBQrPTVUm3*J'ekY#klXEhaQ)blb!&SY6LfV
+9ZUG"(5a2%jNebiZ!KDeISGE)U9K(jD&`EpMbB[UDH8HYk2bPiqrAQ41Ub0a%KDD
+1hGQCH@X&6&T64GYNpD'`I)4iAQmNI0V2'A#6iDN9"GDMG5SflUY9k0V1N!$cmpk
+[@AGPjF6Rd#5,4pH[J-F)JPT0rclA**Y[iNh4"4"H'5)X3!38iX$5VZT0SDkh%hA
+-UN8#RbBV&b-)FpFUiEb4-jJN([+5IDA)3RUCTUCMIHJFh6TAV[cJ!NT9[@k!3KZ
+8h-keEieKK@)EUlGIIF+PCUGV&q#""L`[mESEELl'[UYe"c"dUH-lhk45M2%j+h1
+3!$pbJ89bl&$pRGZ#&%a4p4iefP*c3#&IfbU4bAp9MVUc#,28P&`Gb)5&(pE8%Qj
+*rmp[+MrJN!!8pdRDFTTRji61V#ak2B936MXc*EMUPl%(!r6H,T)6piAJTPR4QQ$
+*!cMT)&')%EM$l*l"U8[XmSEfd0bN)0rBdlJ5L`(lee[)2ic3A-X9Q,E)@c0*+(f
+r$G4MX30f1E2IA)J[3EE!hQ3$8Pe20%$SG$HJ1SpPrFEc#RPCfpadiJmUUE%JfpG
+$fZ@*KiT1pRB2Dr)I3SpU("9)QE3[DZ!$8,UV1M,X!(pT#aJm+I2UlN"%l6VXXHG
+N2akk8+92%@2T`HC6BJm8&m4`$b5aLK#6PB`$4Ldeq@9aihpKh08FA,[Rd!EeRTi
+eTR"hrP@)`9RFiaD+3TKiD4[R3G)GpL2Z4Rq01#iQrUQD-K1[#d$$K6c6*rG4CZ4
+h#B"ElLpA6-4[B6fIM5ceij(QGDM&BdLd!#Ff9FPhX&`jUY`KK9"QAXXJ*bH+-1l
+Z@JT9aah0hE4(Q8@Z'&J-mQ1l#08'jBH&l,iF3jIASJqaFA'V)j[C4Jk@RBU8jIk
+jq-9)V9hBMM9iYl4!(MD&bi58BD(pdPf!a2#Tca'AZadKqAq8iS+JQR@R1LjM@1&
+UYRc,33'B&$IJ$*XBK#UK#cYBc3IeSbr21'S8-AQ5E8krPdHR$9bi2SXa&Bj91dG
+Cl'`0S0*fE`VT6MZ('A+eDTcTV4mHN!"2KQdYDrAM4i!jrBImefaRmqU8+Y[Q92#
+p5i`hNRmUpA!V+F8mcQ3hpR,ZLfEHaIk9*UmCj24Pe$Pa'%mjCCC)4FH+d0qSTD[
+)X2KqM6&UJ+[ac4j0fZakNZF6[YQbI!9YVSc5(3Yr+U5D@cL1A+pSkXE$B%XSCk6
+j`PLL$'5!Z+32+1ApKFP[mP1S!T8"UQcM$0011NhUY)l&NZ'Z*RqGfm2(B9rcd0[
+QXXCcBQ9JS8+YkS(LCPJ*S[3iQ0pXK*U&DLQdY*3Y)J#3!2K6`fTr8q!,UK#J@"0
+@f'-9jY`*KGhIDBY0i[Ql%GL+XAS3q2c'CSh'j,eSYM+h#X6T'`l2$JGMdI"@bAT
+BeN@L6'6%Q%[j"GD&V+$TcE1a)H63EPI!Nq$'k86B+cU-r6lq#rT%@hKPG)IX!2H
+!qIDi#"eX"bIfdM9iZ*b0#rZ,%H9kQ-*bK9$TrL0(HDdiU#@1M"*TK92%-KfI%-#
+r4bcR0K!X!l9!mAa&%T'mr,IMCDkX$$PiN!"$q604CJSEMJqrZ5[#)rN9p9[+#Ge
+6*#**%-B#Q(eS[Y9-Rk'%'FZr9G43-S&KK6EaV@r+fQmJYNie*,!E'0"DPCi(H)"
+Hk*N1b!+69a*5[E+8pKP"qAV,8@h"pC[kp)-'Qi5(bIfLAP%BaKqU+*J[!4(G*-Z
+UUf4Bih0"d"(Y'N"B0!`+4NdE%adN$hA*Z%'G#iX,ZQKSa*%$NS'[qY5i%deK45G
+*4DMi2@V!)$)%ZJE'UA'XBJc*ja0h-5iaF6!#FN54cT!!)4GYU!lj*lp(DAfTI!2
+Mp`FHp1-Bj4kF*j!!BIbZPhIh*N6V@i(RFjBNp,'ZFGl`-CCBi$6j6#NcrhmTBp*
+cIGMZ(MYTZml!M8*D9p2GAkDm%(Qlb-UpN!!1TDLik4T6q[Lj6N($Gl4#ZqEiMUS
+EeZZmbrFr9[Fe2eS$9HqA3r6qb-9mbUm'Gq`,4)Y$[$YN@6K&02'Mf+91Sme3GVG
+1,YdPed@%QkXJ#(B`Di+3!&UB8r,kG0VcF'XbDI!D4@j*eD#X2D0F-U`+l$%N$Dh
+d+i9B3HM(9SSk#AUkU$D%p(,hV+dKJXQhpY9F&d*ND3q1!Z-jEPYTqIVS#c0PmPZ
+2&d[IcYl!MZ((Ia6fNaNAj+pp-Yp-Am2c&K4rH&(8ePYG$)#SQFMMGH"(55jR-E9
+-mBE4AdJmP(QfE['3!)k3!("&EC6TlS@QZphIdi&-d&f3!*RmDJqQBQDPDbGIjeV
+a1[CaD&kKe%0r!G9c1lleR%bN4*bpkZ[f0l`Pc[I!pfTpBFM2!+HbF93@)LaBCPr
+X`eU@B'r[AE#QfVid[UMZUhER($@f+%Hjk6cpTQ(jG36k9q'cVE,&PV1e5LB2D%6
+2dI!K@FJBiIRYrGm*VqPDPmR4Z('Z`C1GJa%PKC!!SNMTE#Hk+[ZN@akMJbYFf$B
+4ejfXjf'BV2Tb,-+h(UYMQMSK$Hjd(8h"IEP5bGQCE)1!@@*UU@[[4r$&BT9B(!C
+Y5d##HNLH8K3"123E5AKdBJp56r@-$M"ZHiVSb4BrYTV[cH@h%9SeM1V'RadDrC,
+6FD$IdYd0dY*j5bL[Lld--Sm*K@%'b"Er+mMm9!j*rc+b'LJm022XhN[iCVpTR8U
+`X,r9+VJbEXV4*D6MRa2PajDdRTM(RSr&LR(1#0rSED2+)DEdKX1EIA1!b**0F23
+Z)c')9D!p+DhfA$A`QiL&aEI`N!"LBFrajUfl+IY"1Ykp)kkVkKem&PaTep,&EHH
+1pd12hR5NZS#[3**Rh5CRcAVFKM#N%I9G1V$5jhI6mIbp80SGLX3M(C1d3JMIEG!
+b6kEdJ[Eq8XCrV1G9Uk5LBAb9FB,F2&,Hb*%*pM8B0L@8li,KP"Iq2mR8GNi02R$
+e6qE+e0+IKi6QDJ3Ni,fkkRF5Uml#(beZ'ZIq"RGdj%lAFDr(QJ5DPZeS(SV%ZiT
+BGfQNaV3KfThjRVq@"e"6B6YCADQQp[m90p@*im3dbMPBT+L$N!!m(ICPV#e(%KU
+qjeck+)%CP$4dU`2$(0lVR9QSrC,Y"6m0ZCh-I++i5VmK+Hr[0BMLic3imY)cd3D
+P6"HUQGkV-l"Q)VU9C`k"%FfJ-6$QrV#Zbjp[KBp&l6kqFe`UJ'FGe5a$U(c%M2k
+9kbTrpB&lX`eC+cZD'-VL46P2KKeDMIh8RPR[C",,2Rq5qdBm1#Fkq6NJ!Zm1(UR
+YE!i[Q``)2*PE9iNlRMp"kMVS&J@p,m`aYd)@ZAh#PDeUb-+f4(0F&pme6[jV3,F
+c[+Q&C$&)[)4ZeZ$@8%hDLH&6FeYb53U0`9YA@ca*MSAVZ0IYTjrSMc#K'Q*pH&#
+0Eid#CE"he"1CFJU3!'DbFBqR9rT16LM2l,B*l""@)3-qZhY8ML2kk&()4'hl'l4
+'3''c$feJUkK`b1L#`b*%Q[')EAH[A"X#8'jJ$l#hbK%)f2Ye!9Yh+2&21f2"GdF
+U9EYeLlQmXJPDq1*(eYITSdc%LqhFB3k8*2*'6)pcf)L#U#MiQS@&[KqIZ"'XCe@
+Y1T,&+I@kqh'IjD6Q$h1$'j*jf8b&*(lTm-b#!VYhM`A%%Ch!(1KMGlcD"b*kVhj
+@'FT&[F6!Md9m!e2McHeY#hh4(iXBd2I2cm3!p`ec)%m$%%j4jP"G8r5K%i2LI-q
+M%eGMab+fcIRNq919H6#B$2kq&4HNbe31"3Ma@"cT++ZE098@bAmVdH"T!cm*9@*
+*M0rI0DZUrkQERERq#*MM8`Fm1e[i0$K26cB2&,8T)UYVqj0l1JhGpkISZq*883-
+@pM-+qac0b)eG2F2SP#GmP,r5))hpeF"4+baGPXrV#I`B!cp6AX,E)DbMc*,9d(V
+H(qH2'`RiaqH0N6c%%RYU1#8FJ$b)HimXLN'5kl5[ImIKrXqkp05iSpS[1`KBrdB
+H`!PA`KQl$8TKEA$)ZUM+"ZN,ljm513)GR-+(L-D[Q#46A9F3&c@(8%Z46YikVdb
+c(ll`FY-JjYSK&6mlr&Y9!XYP64rQ#)H8ejZTMd1&3T3mdi9C*l%``6M')jYf8mb
+LJp`0XKb!$AQc9rL8FApq)q9[-T4fqb8-ITR-e$qcdq4pDF%0AjR&BIBEmKd+R-K
+I4`l'&6#)-f&K4CKm3*r$d42(eLC42J8%C3RrH56rb8996V@YJEmI#Z9P3EFml8i
+A$+$SFp&aF0G2F)3a,4NA*imbSbYFl&H9h9+Bc,bMK@%c6LR`V2CQqP2-'I,(hmH
+!a5i5(6pN&c4mSPNY+G558)5rlieG+4!X1Ab5UiNqreKL5bRY[ADq'2cl1"HJ'GF
+*#B"Q0k,Ci[h2MHGU2-bm!G`#(N6#'TIFD@B04#M@!c655khSR39)4pDjih02Vef
+i@Cj8Rf%Z+dhFK5P$cebJh4RaIXN+NNka81TjVY8Hr%pPJIQBj(&CMlM1hMCMSZf
+ApTmHVSYiiVD,mXCXB",[X@F&!(SZ2N86)DApm3(!$8RpS)mhY[r#Sfl8AcAIBP,
+F-HaYTTZXM#H5!!L8rmfLSK%qL9mB3IPTF-@jX2KMLT61l1kHl3qBDJJG%L##M+-
+5C5fR%`Kici6!rA-F0',VTrMLXq!HU`(R-9QY#-6,5m6RBHMYL+lD`&Q"1-D-Rjm
+k8pcFEBKL@-EBNBik$'1SjDT@aaTcCIeZcNIA`VZkj9RI)NX9K@NGY1@p[@#!lhQ
+X'0,qB,eXr,fSrA3L1X(4B6T*([G+RB6m*HDir5&F@0YUqSJ)Ra9&AXV&j-3cefr
+MPrVh2k+mQpCFN!!iL8qjIj%P-I8%RT-N$G6j1Mrc+#)9*-a,c%IU59R5rMrNC&e
++pipaUjFHT3Y6rCfDc9KaQY*-LTFJKUPCP*%MHTP@FMEic`L,`ZEPaR&UX!)[B@L
+cAejQ#Dr8GPX*RQ3SIM`25bh&K%jUHQAi+8B(IPSGh2h12$mK@XfP"YQVeh$-mlr
+AhLL3!#TQBHVAQ0G@+!qkAKiRFGU"a#apKMX9JVdXrXjl[dM3l8D2@&[[fD2A642
+5FBl-EKV#ml&4l*rRlGE0*VeQ-*GYXY&YBI,YFRD9BYQ"Gpp$(#d@iJ9lQ+&4B@4
+UrF@QmN"6GGYYE[1Y5PHYJLNfX+i56'2(2&IkkZ!"HqM1AFdj4DB6'RIadG4rkH,
+PhGKM6,GIV0D'UVAa8b*p-#Jf@2kFYVqJ,G"mr89U`"rEcSbCHVVG+edj$MTD*Fj
+&GY&S8UIJK9I-U"2rZ$fjl0`bfdB1b0qFSJqPYH5FGj4R6d9jQphES-Q,Ii+@Q`T
+-93HDMSE#8PH#R+r%B1GPkQj9XIiY@MV6lh,BFKC@GbBA0HiMGl8fDM1l+K-j+LM
+)`%Xi'[82JR5p6T[DVf%8U5A1F165-US)0BBC)Qm8LZF),@FGcGPSJCHf&*ZaYmj
+bJ!1##MBM"i6bkIBP&*Sf,(EIbqVPY9!+a3GZ+#kdPEc'8rHSVheYCc+26R*&kT*
+FS42+RI+8jjNj"T8J!0#T"9aj8e`lC3!fL(RhSfVM%T@MaGbhNP[4C*U#)YK,IqI
+F%(8Y5N(-KAaDKdDd&L8pm'BUdHmLr%$"5VrrmPCfi-aha@JmqmT4(i'lkBEr6@e
+BFq#aArJ-Sk"M6N@hL-68#f',E5LM#4Mb+F0)5j3hJ)LT"0T#PcS#qAIe82KP+lZ
+%pk56+9E2ER)#!$Y8N8#RU9KFNNaaj*4%Ph5cpp%KLe+iZ!N-DTSPkNE,r0Y)[CK
+-ee1-QfNjJ,ZmS@pXq#`YcK)BBY#j8Zj88HD,bM*SiLUGUN`@Z4I"X,SSl4HBFTa
+&!@Q)IC[aA-(-r2G$1aQqVKj3qf#[CMlkhJH*'J-Z-0JKjl&GHff%GRVAheTiCa(
+*pf3-c+NI`[F0Cj!!64+*SI0dI&P2miVQbq[aT)3-29B)+V0pSTUr$RbGZ0GHY)4
+*(PXf3&RLCRl19(&+V+L$qmhD)KN9hZV[55K#j691TI+5$qC'@-JJPMjI@T%alKC
+3"Vd3ac2hRK+,,p"p4ii`T5!)P%piTEb"GJ[TGIJp0%B[m@KX$XPrPPVM8Q)LGI`
+RmBpRc8BTM!qY,N#N1,@iN!#k"ad,5rTF58Pd3KUH#UDm5D20NQ[iE)Q0TMRCb)j
+Kl+IVZ8@Ca6F10-U`cM3G5Sj1br&BaR8b'da%9@10N!$b##0KTeB95@85X)848[m
+BDE82N!#2!SkX4acMJUTe$dr%G9C!%FcBQm9%'QTeSMp)RpEGJeT*iZ,mTJ0L6&Z
+a[04Q%N[8H'rip4BeB[m$i#CSA,0-M%(G1)+$AL%Nke3F6UK1p&b9hRRq&Ce5h[Z
+4$DYA1,0YN!$!Hb,$Z&h'*'mUBEbPG*bp`VRkB[TbZJAeIKHSEAYa`#Qd0"IH@e9
+PaDke5DXBrH&BIdFcdPb*0Gq94[ePHH4aBT[RTmQ`VaG0cYk8QASr4*!!mie,PiR
+DrXb,4MdU&clhaN$ff$ppr!9)[6#$40[)KVpe*dha4b,0f6R09AfhlAdCUSKE8l`
+Z!403PRb&CmHcNRf*'$1`qClR-T21BRLpFH)3c#'RJ+(dcVpf+#e(VlSbDejI6Qa
+m,b08@DAVim)PcaqRY46Z2UAM"pAlB@-SmPf,@[EKeL*$0pZ)qN8pjK54TEq*ppY
++f6a-SmNDBB8i*2B5KFUAKCmb&K@VB&c8,j`#S!+JmbV9A&Qe4V`l343T`2-ej1r
+XpX5a3!BJ!fMU+$FZ%#4J"flqJ#5TZhH`QeJ(j+U[cDL!al*-kBK%)UJ!iAqh4qC
+P!+bRTR6`%5i0+@Y!qe"Ga(N,rE6ECI#DfKdDqRSk+cl(421LYINdcj*M%8F`Hq2
+$LYl(2JPAB69@(hqf3p1*jd5dPhj',e!`&@FECI,#IQXd+EFQ`cPeBUC3NG1FRT!
+!iVS`6bCB1A+JbZD,['J9%LVZ'TE&aABHjKpR)HHphVZD'b)VF"r-3p3kI,Z1#C(
+i&6SKb5"[#EP+ZliS,hS$35r#5TB'ZfB)aq16a'6e9Z-G,Q4)a&YFSYJp!$hN0[T
+pcjBPmMbI9aeDPVME%KmI8f[6FMX(e'rZm%-3ST18V"afmKYaR0EXe@Q)CXB10mj
+SViYR4I(YB"U&X@(JSb0GZ!kT[mCJEicVeF2KBbTVL$1(p@[d&14$KM)!Z*%MJ%A
+0,Z)JBUVkQXD2(Rei0*9%)q,f2$-3-eX38),FI@fR#JP)B1ibClM38jR56`6U+lD
+BfKhfqKe'(#QBK&1hi@rR,N55F`I,a*i-B,'dB$[4kL5)-,0ib,JMAi0e864iFc5
+b,C'Y(GIr56S*$+!"j+I&01CSJ2cQ[MmqB*SGD6I#6-4r"%UE(jLYhFARA%h,(#i
+#bpRVIi(N&!,ehF(ihCTV*E!,KPpI@,ap94XME6(4S4E@PdH42,ijIYM+[a'UkC6
+1#2XEdJ#`3ABPBGchZFI#+TY&U,YUE-B*JH,jeJ"-jm3lTqk$!IPI@1EGV9YG$"Y
+iU0eXHB!RMdaH*2T2X2rJb+-"Pi@Hh0(Fhh#0&SDM688CfH2`14*XGlmF(2S"IJe
+P+i#q4Vr9!'A-pr9Ibda#SA+9'chZ00p-&Bi0$H9LB0h6Gi3'P1I([rpaHIR1&&F
+53NXH,jfGV&KmKDkARXC5J43r'(8h`&KcUIUL`RU6i,KbG*a4`lH&jAVA1QeFaUp
+S,,8XYJ6pTaLiI@d8*%0ZSmC$HcQ2UE6HN!"PU6-86hNcTecqM6b+rqPl02+Mf*3
+4%VcKV"`lldCUdr!beLXJ)3@-&@+d3#FAAPJNp,8L%,%mN814EQ2T#&EH4qe%68Z
+&0iLRj4i'lH$LA$1da5b&5R6$QB8CXp04&5+21bT2SN!fba8%qJH&Ylk**&P[G6d
+-2C'P&XD%R#Y-QjM"bD$PNN0E4E'Pc84$MN[iidmkYG(lqe'5QI3#*F#p)9JRNpl
+hjB%Zl'Na$88&$`rFRc1EHp6f1AbRP+Zm6*i2U#XIidQqAjIMI&F5fLl[HIDdJjD
+1H*AGi6bDHLbCBjLAqH6ND8H)C0@LkU)6&-FljVJE%$NheZp(cP6'*p$bZ$B4kH&
+1TX3(`FR@9A)m1jNqGmV(V5e%"LA5*1KYV,"X%AJL8F0'*4hpYCCa&JK*apU2NPl
+"1qG#D)PR%GUkdF4DDHURrQZ(d$L!)[e$2@AB'N4)k2UARp5YY1AKrRE9JmN3YJl
+b&TUh[+'&I*1d)hBL8AJNAD+Vc4`96pDp4DR[FY!`"l0G8eq$A56j(lJ9i&!!1S@
+f&@Y$pdC%KCGfcR3D1"Kd#5pP1eDHP6rQ+'&L`K#P8V4mmFM[DjFS",qijC9Ne&R
+iDAD3!#hKcilaTd$Imkq+4FVKcqp&(aPEBSKUfA`J*mRB6$4jD1Ze'bXmhFq)c,X
+R(r4DSi0mi4&@)hSkX,M2kaK8b9b5%kAd'$(EHiicCB0'TNUfZrG`hj6$q"DQIaC
+*'#X+,*Z,%#IMIelE6!2EDU8YhRjqULGQ0%Z+!ZDlr-`[p9L%E[Mr+FV+KXT8'VC
+e"m2@&CK9drZhE+aN3r"$10MD$"b$iRN9bDj8GYhR)`c0j[Z&X'RSFM(ZJp+F6J,
+$`pY'S)a,[rVHcS06f@ec0XR)5"U,c$6XCAX1mHfj"LU6jUi(GYBeXi2hR&"b(XP
+eDj!!,G,r!T(rFSk3!$3r9R*0dTR)e%TbqClfLfa+@$pk81D"k5$!fJ$UCq9p&Ni
+Pr0pXB'3Z6a@qAL5a62V#IZ*"@k#JGRILLbB2FV3ZKJ9A0lSIkI%Br$V1'afkjLb
+6HQ#hc(bbjI#&j-8L%m@M)B9ZLiY0Z(N+k@BaJ3&Q1LHlRhF`3f&V9aF)SNNC5&Q
+88b+rQq*KHSae5J"$)kDHVI"rEMXBi(2DfQ@DC8IGIH"N4N%S*R5JDi4(682T!1H
+Ik!`''f"e%+N4*p6fAPcFL,4`+c(-i8Rl*2E$ZMq*Zi0L1II*@Ph%raR$Ni4c'0*
+$ShSD8BAXTIlaD%1Skrk$Z&+a8(V-"M9[Pe3MeT@4jH%MlRXFC1DAPCHr%eTM-eV
+"T0P4GaEpqZCF4Zpj%,)E!#iYSUGA30[B3",L1CXHGJ8Tl#kX+L),hZ6d'`VJm''
+J#0pNGr&NS0alTbR0Pb5IX)[+SR,1'*!!$GJZh'V%6r$E8I'mQ[Y,FmDC(@6lH(2
+B*I9jDf(d6h84S)RDS`Lcfb@$p&ahNP6ZNS,p`ERLFQZIA-ZF-BHSSr3kqhABS%6
+qF&C+4dTP$GahU`k'#kcm+V!IRV0h0BSTh`3hFmVJ!HHZ6B6+G'"UAP@ra1TT8%X
+PB8RYrXkmYX3$10*rq)52KY*6fqI`HPNbSJ@*M@f`CbGR4-[k"(2GCH-!q#2aeG4
+d)%J$HmQ"T2JQ@D&)hR1MLUTjEBp$$kfBIS&lc@ANXG#-(8!cP6,TQjGpD++SES9
+,,acb@GI!aDMCLbEj0B,J"c$Xdk22'lHm(UJA[Zk%e5kN+GaG50@3!"88BLBYI2I
+[()(33)3Ra2DkF2a+69jV'K$#dqP`H0H&#GRSNm5@VV[(LV!0ZjA,QEKM'@#4CD3
+j@J39)f%jef5Nrh!'I@@a1e-'FNTQQJ"eRmdhSkSZKCLYYqDq[UIJ4c4@"EcTT+5
+3!%ZE&CRQdYKY-E(E&)rX3+kq'h%+I'X5!VV0GQlDh&9"l1)P#QU+*QDV%dmi1DY
+#6NeZ'f%dTM[r!h0ik51'MGe@K[pBNMIe8GkQ[b+3!,3AHfANjJ8KmjZNbC!!Kd"
+*6BQreQNRM#G'FD[+,K(#mXa3(E!XrjCb0KKPP1cVAXcc96pZqaQHJ5115)JL3EJ
+ZI-)"5I#BA@YrRJHSm9kGlB9aRGDZB"CkiUQbUS+!1p9'pHm1Rr4T"%92mp9)d(R
+Fl+D#+p'3!(aYJRqc1ZFm,XZ"CL3Q,FrFIK2rV-NVYTbL-mAQQ!dXL8eQ08#Ul8B
+KRX0f9P+TiZPMF[df(*q0DGHaeCGTJGrS9aX%RFT5amCUC6RYb58(QR-UJE91EQd
+AX9KfhA8X-PPG*6iPABfI`"HCh%K)j)#VSKLS)$M2)q46MTR8Y%&39!DqDJrEa#,
++Sf-Z26$9D%apcdPqVr-YNNZ+6)Vd`6Q#YcMk*[d[4k6JL0N&4*X81b#V[Cl[M@Q
+V,1pAmpJ%0-mPFQEdSl%rqB)`%*MJ!Qlc"!UbZJ`N(SX1iN($Zb(B($mEV+ql["V
+"T3hLS!UAk5[Ffh8arRjZdihS'$!2B%0HcVM#MQX$fRA"6JFT22-a#(0kfV"-'XY
+mE3$R(i%!P2QT5QBSH-Y+m5cX%pdMklI9YmrlL'X(U-6rGFh8E)GS!jQ1,mLim`N
+ajRm+4qd!#)M+94*dk4CAe4G53HRYZ"9$0K)&1UB(K`FJMc,+K6P"%0RADA-2L$Q
+P69CLhL,RIf9Ql)FmJ4&JXG3R*'*j1+ef'pFL)d!Q2p+%[Xlf4S5ChD&hZ&NI*dj
+jf4bleIBc)j0%eP@Y&0@dc(8m)5D#0A$8,K@HPe'Q4M@JNi[@!l@aND@3!1Ki)lc
+m(Q*@8K0kDmKEAAC1G)CTH#MhP$9VGkJ(Vb3&fXB-MY*NVJMU@I#b-PlS@NZA+qN
+d1lBCfjpLN!!#a#U3!#0I6Ui9B6YBaHS4e[fXcKQbQZGRf8RmA+iXLD`HP4RfLJ4
+9GV"Q5MaB)k&Rb)l4!F+CRG3l@XlXY085CbaeS%&!ipDjEq,akbPK0"#m'T*4h-l
+lq8%kf5'X,QE"bb2$V-VY`aXpGJ&dbe&G3M3d&dI$kpq*iB-m2hP[3[T3$Ab%LEF
+YX,h%$YMTk[8e9cClcYEkqQbB%H!0am[E@k[A9A%8j!"+8TVC'3&ZqP`,)ZEU"m[
+hT@mSbkkAlEm4G-1)LEI$`C1a,T,d'b6G%jic,JqVL-H&9c82*[LrpTQ`l1Mj`2,
+dlCl5,ekHb,P!!A'#N!"XJ3EHFB%&2q(#iS*6mKDl`Y@H(Grhb%BLY0rN4(JC!AD
+[r9`KlmDa`T5J-%jhiC!!qBVFd9'Gp%VKDi1Kc4`,G9,@,PeUqq1&D(m3-Uh&#4S
+#(TdmdqCGLYRBAY"LQEA*3[Adq9ql"QGSX&Ih[Mjc`NPPbkC@V'"+d9iB)h#Md5S
+`KKPK$Ki9ICb9Kj!!eNX(%fl+NCEDb(HS,dFHVlH8GJb2NMLp%b4+2fM8qbA@r#*
+Uq6m+FDqCIkD(1MA'0iY3k69kf'+U6MKA#iL&!G)(,J$4rK`hJZ4jT[V&X&0L-+k
+!bA,2-3UrbYJSSFj-k"Vpc5EHr6jTqVh45`hJU"DGfkhPcp0qeI9N9%#m2B@AX-@
+Y@bmF#e3"TQ84#%[mh-hdR)hf6ad'i#'dHXq*'lNH#+TJ[#NZQ8-CKp#Srf[(0Kp
+NR(MS9q-HRbGNZIG#&KUq#G@$aRUlF"f,1b`UkdQX)'#d*8T-cdL$(J[3$*ae+Ir
+AlV2T,r0*3PrB1h-Q-H9ciLT,p(QdA"2&cNJ)rZM#jKV3fYcjBV,$l*b#ik395)`
+X651f6i492%T"m4+(5d*HS"2,GCJ1`IM0Q0%ZpRG58MA!%m0(3P+&-Mkrp*V(UfQ
+lMeCU*lS`4"$fkkfGQ@E2MTA#h@jC4EiX4&GIHpC(Hc$3`TZlCkKT&k+IcU`,q83
+1qQS`b#SE4T1B1aPi95CUDDbPe-h8%Y6"5c'L$VKGKj6L,c"V[l)[@TiP$UC41Kp
+9VPAE2A$Q@09cM-X1D#2MaG8[MkRcJ!!9Hb2Cfafb#-JL@JQ+2eJalC8Zl%TrjF-
+$dApmh"rcidX4%bLb)RJ!M%H(VelM5Fi,)X[drB,[(T2p)0(fq*`a-bKYTV3#Fm,
+1*a&kDM"[b13GXFB()@5(LBQ`H#jRfVCBJ8R5mem5J9M"YR3(IXM9k`L+e1hi@RC
+9hU"!iTj5L%c4eiVB9,ED%TSIlTr49DGI)ccD50ZQM'JEKqp*"@LhJNbFYIaLkH'
+R5LVLII(QVqpTfMUp(Ll5"SrJr+5EZdE"3UGXB2Urq4*EQCc$%Sa*XL9Ai@Q&mp[
+a2a(J-j2U1%ar,$I`10(aaiXYGM8QI1PPi@pYU43k0L)DSe8Y1bjEEV5q!Xma@-'
+V+',+9Nkjf&ck*,Mc`Nh3J(Ii!'TFK'3,G'-Y(@d3X8ArTI3a)rRRa'Ml5*GPCQA
+'"*BeDf@#S31ep)hDS(&h2"F*j)NA-MPd"(E6"HXh&5%R&QmqMqkmCcl,Y`)Jcim
+65PME3PdKk2'UK3qriaD0mq4#ULL'3h!NAqY-ri5*Y!E`DKr@R4Y3C,TX$NJ9&c,
+%Km)D9IJKXr)4'dkDkBVX&N*DVd#D2D5#f5-SNBR9TJ*&!rN&38GIDXpFalRb%(5
+9fi+fb4AN5h9lF&"b1UZM3MGVV*2jTEraLhlrbLPe)'Ti*VXmdJ3R&J04j#Pq`Nd
+`B`1J%QUp#KR(Xh,QZaRa+9eUCP3ipF'%Ti1&r2#,9V0jr#A6jEl*FDTIM5VY6eF
+X$%`jYBJacb$Ufl'd,0&3BGm6&TpP'c3c6-A3$$Ua'Q!RhE2&9aCpa&8*Q6SJ!&9
+AJV5rVSe3$M)ZY"#8jeJ"GHkAe5j3Ehrh10b$YQ'")ZhQFJY`!m*HD'8@[V@9F9-
+IV#aX3pY%aiY4BFAcR1DN'JX[*F3jmA8R1*2L!3QU+aHUa#AjC$Z-h+krKDU"K,H
+frZUKQk")L&iQ@r--De!0-FTpkKB"L!E"FdDR21V"cS+pU1*6i'Vhkj!!'TmjB(b
+M'`0S3SK!L2hT&PUZU@K"j[@r+@kR-jL&*`$p5ZfJN!#,B#jM+RLG[f$biMqLY*!
+!DM"M(!G1Yi)jKc6p"aLKC-FbE,cHAJqpX(C`aTJk'0@,8'r0Mqa('HHd(mUr@NG
+&r3S$@6dda"eR&%fYikYI[R-@6,6rL2`M1A)4@&eqB!6j!f)Dp%K85S[M-9dTiq+
+3!$,fQI*(6Pa)RYclpqLJp"A!f42hMpl9j!ZK$9Ha&!a*"[r1bFkeeLIj*$CJAlh
+1dL#)m2(1C%IF`lp%ZEDTc!Xa16!IQSkdU[(QIIDaQJYf&&pGH,45c-!lXh8mhUb
+Q`C8K,Tra&J9@a#i'V)QLI!(`4)Eb1*%Ji4IrG2Y,GU-5!i"b*Rk%"f'6c(%pmUj
+0hZ,QIC@!1$(13R(2r3$G1!@rNXK`Z+2D@$miEJ`(1-*Z4A-jP4kher)K`rN%f00
+@2b#IP3P+6rQUqfrqKLP!m!NUP1EQ5)Q+LUEGc&2jmT!!CAYeeTm,#A%I04p0(Y'
+jc#VjEeSk!*XJ9pP6XN0Y)JrD-lMPJ`)U@%%lN!!d!$kS$d(GcF-h*USJ"BRH[!e
+ZSJ0++*AqklU(!bRFhfS$PFP+hl@SEeUcrX3JI4$pUYlQd24P6(@r1k`KPF8-PK8
+Gd%AN-9Q[MXUQ2N[!*+XA)DP%BI8+fRim[DDB&9TdP`5DJi5@Fcl&1H('c`+TA"0
+3f&Mi)3[Xa0e#8K49+NF5fJ"HpYRDrPbK"b4klHY@+#PIDQ9Z9!E!Jc(l0J$+DhA
+2dVm[kc%@Y#bhBTED(QJCemj0h'cCM$-+5QJ$N!#&,5H1QV@qhYV8Y@YVjX3&k5e
+RP9Ujk@a")+FrIpd@DVLJqr[@L*q$Zd$c)$1E')Zc-QTkGFb83X3&r)J-8ehJkZJ
+T,QFMik5YmYY,Lc"CS%Mfdjk*@0p*cJKq1LK+K#&L)k8RpT(9kXm86e9p&GB-@i8
+a%k)`m-RFHaQ6A!I6kf9drRIbJV(,SF)1&r'pES$lUKdPELIqb6K,iHPpI@dm-qm
+2l+5H[CrkVUhS5`C%,J@@T-Gi9Dd9"hZ,C+Rf!c`I*GIDSqj9R[E$U!(K+c*iU3'
+epJr`DC+1Z"FE"q[K@!H`fRFN$1MKm34h`p4DfeENe)2NCb*YFSXl'LL$Z*2qcJ1
+jR8"afJRkNr9b%Y,[94N2c[S)e6T[jk364S)[H@RKA8i%!(rj)5mc%Z6d6Ph59IS
+XX2@CMkB1`aX$3+6G(@8!fBL"TdKhG"Y[`L2-medlFZhCDqYaaL6YhPbN&bjYNjC
+8Ld-l1cUh0,apA0%A"*Jpj[c$0[QM2558TEMC(8$$CVRfEHGDN4%drFFKi4ddQdf
+d#L&A01i$DdBe&IZ(9$,NG2r6r4D"913KhEpQ49PV2iTP8"3Sh4[S0,#I!LP[YY[
+l!9,$+cZV0APd$bC&%4X&)*KKJ(6Ik9Gke[bU,rC#$K'j[q$kjJUejJLVJd)j9dD
+HmINRLJGV`TSchU*H%mQ2G*1209bFAhRIdXGMDLN"d`'TXepU&8pGcFK#(,bDGR"
+&)6Zb2KHlrhZ+4RK36[!a1e9G46&8eq-J`#fI(MQBI@h54[J`!F['9KQTD"14#(b
+$RhG9mpX`FMR@EDN6aMqDVDS'Ap2UK0#2Ikqa23L[H4kbY*p'S9)`lFErfIaHGkL
+HmHFp(cccAZJGQ[3!%$XZpH32FHBP+Tlm&ZbPQqG'-VTSYiUfcjhUCaI@qJ1)%Q&
+!N!!dSJcc8YcSBN'#%+0*#Qe[XI31paiE3HS8,N,-)i,[,82iBi%jcRY&11F"*a'
+(!TT1$aiXEIm2fR@r,'('UiHj&f)hqf@@"rR6ff(Z((lC,TCkmkDY0CrVrIH2$Ik
+KN!$Je5H*"T!!HFR**ZY"PK6rZDj9fT!!#T!!-jXI&5TG)Kprl$$m%Y`#IT-0BQl
+LbBT5QVb2ihAR@$$0jY%IbcEb,9R*b5H$"aq[S[K0pLImfD5MqM@+Y`[Z0Q"K!9b
+@,BSjF5Yp0IEEMYV%$cF[d+*8a)4Y5[Q4eJeG``p+KqUK,5,84!pDadYi@`4@E6E
+ip+$i'Jq`aGVR&$J3456*jhGff8k`U8ASB5$$MhJ[0XcN9-90"SI2CD#Hpff[lGL
+mkjK50I2fdeApJqCQJBZ4j'-&1m#%MhUc-c6``dCXekCdYS95q6K4d'XTTrFK4`f
+q)bX!$#cDkS0ji8bkSbp6XUE%IP'c*KZX(S$ZS5fdEhj8Th[YGa#jr#l[aNIm[53
+0iql*GS%&XP3'$T!!3I1*ZMK+#U6Rae"!"ff%3(@LQd4qTN*JkdU%5UJ51!D8*(q
+HSjpT*`J'AB0LM,m8(eK!AP#i+l2K#*K'ZFmd4BmN1,)AVEeS)E*N))`rQQT-&#1
+NNbTiKeTN8qEj'jRJiGP3TaJ$mJJlL156jM$adqPc4BdZI2'V%,63B"3VQ#V+pN`
+b)"QaFCC2`a-lkqIZ6Pa0ea@6)-*i@aG##F3Z5Xd24T!!hd@e3&)SemYCLhqN[&Y
+4bcJ3J'*%(S[[SfkII4YSUa#+L0r,e8p"[j0NE'e$MheqQZrm-*0V8GZXfFdA9&`
+(f5F!J@P&TL`[NjSd+G(#6BGH"c**"emD@eIXjBPAVL(+hmb'B[5*`Xh6N[Ee9e`
+Pl9XXbQk(E3-jkZV4UD8PGf1dqc%[im6iXZpHR'Uc@+l%cm)K8j9C1D''B$8EP2S
+%4Fh'#T!!p,400qf(C!81q`'*Xj9CQD-Y8rEa(F9`J+UkN`Y!LT4A-ZT``J#+f35
+)#2Ym'P6K5%,&3)aA(Y5G!6EZ!42HXSH`#kYapSG1jlr9PQpIZ2+*VJ(RbVF92eb
+@k-$M2d#J-#m[6)!hNq14&UXR"[rTqc`fA+K003!Yc`YL*QJpQ&(KllfkRKjXff4
+p'CG0XZj$&bcpRMBK2GQ"Z3aid,8E%1bSKEIf"HSI9rTfj,2fI&Aek0'C03%q-'R
+9$U#kG+$J@)mF,+Yll*-9j6(rQ4F2FViJhI1(+K@SRXmqjeFESlF"FKmck28,T2F
+`f(d@DE!@P"B&IV@F`BA3"qYbrmbrfN%QIMekl2)VpUCmJ3f%R5FrSZ%55i*P8`B
+(1M-QjGlY#@'j6IRARd-H!F"bT5VaTKfFBm@YK5$XFQKT,55H%,18DddVE()U&l-
+i+rIYA!P6S2VAf$@13ZfIHNB1kpRc`[ep&i#"Gl8"(H"&0A`'E2c@mD@-8Q6GK6D
+49SIk,jP-[!8,(Jf&J!kQ2BX[c#+BP"l&NS1%BMU)k#(9"&Y-5kUG`Ij1*DJ16Ie
+3&H'k,LFLr3*rI$#+Gc'F,Z&MLQYk$epF+eXE32EcfrqBfqXNe`GI!`1ZS9E!IdF
+SY&5Ea(mmraH06aCd,$C(,G5JYRbY-U4-0#Q238D-c'YHIYLAUI06%&m#M@26d9J
+Z4SMf,$95XY-lI@A3Z(ZSkY)[Ydep&dV%8Ub1ZD1BXV%H"21EJ[K0aI"[l5Bh9QS
+m+h'AQr3"EJq`E0kAESb+PHi*$XTMFG`$ZM3,9lMXi1@cC[GJLLM0K#4hHmkbCNd
+XFC%hAkK$#`LD2ic)CVq3!1"AM$Q*2Em1l3[E!T!!`GIRD'kI%H!LITFS,P*Ik4e
+ETYKQ,HF5G,MrbaLp"Yd8#RAaR"+H%XG&P&&RXUp`9R$2@kT4SB!&4pY!%*UYPfb
+RkMlJ%6+E8LQp5QG9ir3M!Raf5iN1FpP1pRjHGJ6BC0S[D$F450G#3ZL$MM"EjXU
+N6#mKBNi`*FZdMJPfB@*U$"SRQ*!!rBS+j-E`@KLBNdi5N!"jQi55BG8DGcTP`QZ
+#68ajkShMdh)Il3[TYkPU*8S[bFQQ,K,"+j!!cGbMF20'4&E0K1BpI"-&(K%f5)d
+$mP#UKPeGkYfS(D0(rm,4PKkHM3(T-*0`0P3GA4%92BNiH2MjVA9l`hrlTBY#d+!
+q+kdqE0Lh$Pk0ADHDP2GHC-[FqpT0()LBZDE`LM'*d2CHKplD0Jh&pNLi"H##8A5
+rk[S2'IjCX[9iTM1RX9&BEip)3`P'Te*ml9X"6PIB!Pfb@qhD&Nrh!+@3"!%!!$X
+!J,5L65qhXE4r!!"e"`!"!"B!N!21!!YV13!(acS!!&&c!*!%$`"8De0SC@aXFbl
+2J!!!3,*069"b3eG*43%!rj!%!*!+J(!!N!C#`G5),EBLJ2a0ZTi[rUNbk'iNed6
+!ffXZ8VfN`*mL8Pj#5d`b3GmYmHKNQlJ2'r[Kje(KS$%D`NZFAA1'K5L%[K8Ik#E
++%9Q9m1-"P9J[B2Xf03HH(*GmH-jL2GpLUK0K@@"a6r!ieL0P1a[rQmbfPYl`2D1
++8ST(a1j0f4'kChY3VIEZlXiY0TE(0E[8k&!D`fbbMiGBi[1B`JdZhL18q$CK*FX
+52&j@N!$-aSTia4rh2b'+3SUTU+Cei)R@L$-L[eYbadaGl1iJ$FG1l`qDB5`U-hJ
+9QF'4I6`@icpr@BCrF1kEVmT2NUEkqTj1HT&GE1E,dj%p11##M!F0X%9MD$&@iE%
+X$Sr5"1Z)ZNNi(l9i+4XD`cGXXNdq#IY3hEB6X%Z[0[+&H&fVB@%db*4@eN"6JdD
+L6Uj"%L!IXmD#M)*9f#&(%l+VCPK59!)'q2Qmqh6R4cZYF0BCR2Y%SGAPDG&#EGL
+PI`QXmF1ViZN"ULb[2[iCCXJKYd8@KkC-jiM0eYNPZ6X@LhlKHS!d9q5lF*XaY1D
+",`PC2D*GiYH%&`*Rq`RB+@9YR`M*&jGqACad`k8liZ"94mNaL#CaN9TVAL4`J9d
+!VdhZcIm+1Ki4KMp0)JX&CrUrE5)XXMPq%f[D1ke6a"m(Xh'bXTQf0!elX6HYQCF
+E%D#a-Te@Y2@V2cN3004aMNIS&JZFZekaeqb(A*X',9Pm6+`1Uei%XC,23)-aPiA
+%VJ&&USiI[CCEU0Ppjjp*%lC$1kPQm)[ZCKbN&P9flKF"'"C`VLpma2r`S2`&XC2
+',ja)T0bmBrA9J%)GG51e!bf(*p$H2$'+Apq"*3%BVIX&)!kRDAYDLd8@391S!KB
+lRpZ+N!$Z,jSV"9GRChY35[64KqA9ZMj5QBlq"5&mRa8,`G,b0$XK!mU3!)YqGh%
+Xr`@)Qq,1!0[UAljceA8i8rQlHY#PjqLiYJFi[E"4Ml4Bk"q[131bh@IJ26GKMf%
+CXMHZ!0B8%lC+IRFV+N3%%Kq*QNh*dRj9a!!5``HM[J`*A`p#LDf9`5f#F"3P19G
+FKAj@GZe-LV8'QP@e4QlAD6+ieXPPEh1RqUfrXB6m,cRrfp`3Jf8$BcfAd`&k0V4
+6DA)*%T25kZb)#'HN46!,VChG,XAj3RbUESF-e#Q[-CPfG#9hQ*B$S%&a$cJ"'!f
+i%Rr-"k+hJZ`A$1HK,1rbU$&r4LE&G%[h)A2",CbaCkCm)aQ%)DR"S4@-Rc*hk6r
+pRA!'D[q1Z*%FFFFVLTdP3'PiZh,R2$YKP9r2B'UNSq&'K`#jpC',hXdm&6NPQM!
+r3#FDb3aBqS'I9Zf3!![MhR5HmLj+fCJ[018f2ND3!0S8T2$%,SRhmZi2rUS0#Pl
+fJNSq'%5*l+$8Sa[qqR*E)bXBF,mUB-0AUrqP(%(hMjEGILjl@L8iZa5m)4raiIK
+e-Z6G1'&#HedYXIPBU,FJRKD%hkm$M[@`0*S5$L'0Y&GqD&U,Q)+p0Ua9+,1VH3h
+I@(6M*(80`GM(A&F*)4p1*U[!rpN[XHXbTP$AHD8QM`a9UeN#L3&EX42M(KD!2TV
+2HL%RVM32aI9SLL6Q)NV)rH5rVp353`Fr)*!!J9i3'-rKSJki-G-$&pqr!!ZSm!I
+djL,LVP28"XeRH3q8Z9)jrT*BVLGjZf)JXaDkrk&52lVUrC@!DI!FS0NbbdZcBk"
+[kE-IPMR5"6+'b5R`-pd,fGGfefMlc`FbPmb'bJ81N6I%A([`phK'0122@"@Tkr%
+"hqYL(Sp*RChEG"2&H*qh*,mR6PHiMGa[E1E[rRF5cY#fLPDd`"9"3E`CFM%3,bQ
+Z$[Z%262"+Tr@H6*9k4bmE$YMd@%QGj3-9iF8Z)JMm69!RmU4l6E)5KTck#ap[,S
+3V9j,4iYrYJ*S9@BM)1he-fEXT3p*H2DSIKq9TXSE*c!'Z6pMPGS#KGH24+41NE5
+JClma3DC(0em,"1XV'6%SHmESZ)ED3q8XIDdMNCQ[GGfUAZ+&j#+""cmVHYq+,c`
+Cqd-CT2+&K,9(5+RrCrp-)2VBbr4K1UF8S8*r3$F'Jj%MK%3%9cEGD("pVlXDI"V
+NfaDUC"5prZ0"i%c#+&jd1(Z#dlCV`j`S+VNT6$')!+Pik8I&2a69P22N#$qZXLR
+KP0RYXlarhB++#d-"k)Bj+$+0!!kVRVqmQhGN1XrZC398PHr%'VS8i#MhD1Gj6df
+k*+cS43HC#I2%Gmj[fqAQil#IaQ3+khTZZ!qD0qRN3$Kr66'mlkfa&'5F[mYeU'K
+eM$Q)0QmKQpD[++T,TipJJ6)QI[JMUhhYQR!%rDG+UH!dH,P)hlk!*I#m!1[fJG3
+1FP3H8J9I&-E`k4S3l[)U5K10Gr"Md!M,9R-,*B0$FM(M!m#5Ermf#"04%-XKX3b
+`khHGlNUS(E@"!HF"qY8[DIBi[paFeMU&cafKmYGMDZ`E&"dh(%,$TELZX4cf[@a
+*YX'`5F4,brP-jeKS"2p6*9LD-6lq8,9L6KibK[q$+N(Hcjj`PZm&Cdrl)Mk6fVM
+N`Zl"fI6-R'MImRj2iJ2L40fPkFhI6cdeL$6e28@q3&-#ab2S!qGlBIZaL*!!YqK
+'9jq!'HFXZ0@'RpRXVG!JSb3D3U%q$--C*a8%QJP!+@&NMf9Q1Ga9Sri)r2NPZ1h
+f(4SRbcI9MF%S4SrU6j*CD#H!&XUUN!$RjCj$*CqUj0FC5Al8LPM"d2m)kfmSHYm
+%B*l1m,68@pC6RB+$MMbrUU"Dme10dB1dRVlhc$XThlU'X"8a0PA,RbQ%aVY4e@c
+B%E1$GLTqe'EHLJV-mc+@q63D'C`NC&VeM+Z8SC&U)6(ql$Z[m8UX%A)T-mc@ae`
+bj)'I4T)FV0[-%iN"0!X`d+8%GDcQfK#m#@SI&%4K`[khlih8cRk[QhYKd-i1JP9
+r9X[JG$lB)0QIKjBTK02&cfadfDP3iXD$f66rY+&MJMZ0!*L+I!$SemQ'%RP`PJA
+5jbjch0Q#UZJMQ"5(UHD&j5E-'erlV"mf!r5S66Uf6SDZi!3'ZpT+fIPmYL-L1R2
+9EaX-NKSZQK2+"af,h(E*mI5DNBAQAi"Ji(@K)*!!TPUJND!PXe'8cBDYhmm`1X2
+!F(*'D$&YD#,IV$Tk"ViRKf`ef3Rq%!@eJCB'BG&HKi0N%Ed2*f+IXmEC[BNq(E8
+Qk59Y#f,5BDBb!I+4&EqfX[Gb9[(Rd,kbiQf-JRGIbk+4-dqZi[1N399K8VE-2f[
+f*5aGC+$qKVq"Hi,DEK(Ghl!ScLVZ22m4'-9[LS[NaGXK`4QBpZ*Er2m3&i2Qh8%
+BUCRkm%EIESmT!iREk5IImX#QcR2hI-MCr$l)','lc`Hd2BIm&%Y*`pGp5+CHlc4
+#rd[d!2k+aiE6k&9Lf6aF,#%p-M"h8Y-"FVXF#%[QMV"2rd(l(5"1$!Sic,dMRTV
+B50`EX(#qR`cA`S'"!41bJr!UiHT+PGV)C[Ba@)DlD!G%dC+(dE%58P4@8m1!9(@
+fq#)C`$XlD(U%qJrmVBYe61A-DIAm@'m-bP1d+@hRdpjD-JEbKQ+G@,6HflbUb2+
+K6k"UeH*YE`4h"pc9l1eEaT!!&QFB!!#'B8i+5QG)b,`VA&j)KD@P#Ghrj5J0k[U
+U#(h@-1Ac!4JFS4[-NSEGP0@((5#G`KpCQ#e"aH*Mf85'DGM@KRb@RfX,+,C1Z%#
+-@a3(4,8i&8Ue,j!!qZi0I2PAP'dNLCG'dKG%!lMR+kM&JLl@`I3p,m'#[la2TJ&
+,5,m9rADfEH$ZbV&$C-l)bK9aC1G23FAbaClUIKp1I+h+AP&k@VjJd8a2+)A4I,H
+cB`V5JI8@T8R,Sa6mpNQI0(c2U(k%S)f8NTA"3lHTp($efmaelU[I3*8)m%Sc@QJ
+,0kqS@pajpaah,qfM0Te8Ca`M$r[5Y"T(*LH8YIM+UaLZc2bQJZX[%RTS)aSe'9p
+3$XIq1I'6*!e!8f*iaRka)S5#6R6$hKFV0#r)`aGG8&KeaMelef&$l4hpkCEXN!0
+SUSq)2`dJ9QX'3ke,k96Ckc,J*pY*mFSadPcU4`8ij&A`R23,1RZ8mel)YdJKmIN
+6ILN5L[#$*jbPcl3P4Mqq04FMXcpjp1HdaIIM(6-eAj!!YZle)V"kZ'E3rp!H6Rc
+mRBUIU%4(5IFLDbhDlrLcU3XKJ8hb#03p[)cPrQY'qCZ@-i%Kh-9"CShK))@K[Mm
+)Jak,hc+*Mjqq$SB--Ac4%HMlK[)T9L"leaSeBhRpCRUaC++0Smb4`F($Q&QJhaa
+&*UMrPSaL+hj"5D2L`Uk)He@HN!$M383JCIZJJYQ`f2rm$U@LH*F!9[mQFF%'K"@
+b-fXNkRm`AF3P0d9)jDPdaAU9*8m[1q19Y5VfcQ#!RFaJ1%+2`1Jr3[iTq!+NqXm
+85"@PYj4M0$k&8@jji)BlYPJq,VC1KdNA@V+cj`1Kr'A&B*r)*k@1dK1Dac#mebp
+[Y,S8B0c55BF-TS0QNVpcjl#mXJ#Fkd0B)QBep251VZ")`54N!NH-+TXD0a*e-S0
+(XpA&dc6mYZlD5TQ&4l4J%N$+hf8SR@C$lR@VrcCSSX,-#"ZhhFLV!ZXJ0iS0p-1
+R+kMd$K@XBB@k)4k'P5)('mE[DUL3!j5XdFiAY90)$VS(al`T@&X3#RCHX))-Y9e
+@pRY(J*US1BhXQ8VIYD)MPII@B&MA`YK#afkCGeG-B'S"Bi6G[@kZ,-KP')(0V%i
+jE8-GJ*,,QLr[r6!cE-Ymp(2G!QTAr8HKSEiEYQKd0IANCh9$)BE&GVRm+3h[BTX
+qaS+jE-0Ar`Jf[JL88`,q@(j#JFiq8fRi06!0rH*2CGqq+b(K*,MR)iq,[lBeLac
+R#(N,065TY,BfF2HMRE+L@VKC-Q*15cF!`e[cP-blCS'TI3Hm$BI#Ql9k2#8L"r8
+N5`'3!&@SNY-RP"ejFEFB(JcCAJHTR6qXF#KXd*)%&hcc%pCq,H6)E*VpMi91*5p
+Z%al3D&(bPVZhAF*NrFFLbcC-fF`Kc(HZ[8`bcCL&M$FM6+YhE4AUEjKlk@2QLC1
+'JjDcGcKFPXJcU+9YmSJac9IiL8-X',"L8DcGIC!!r+(8bCN0%&3JjNp'F0+&VNd
+'$X(+9ei"-1p'pHfI6*GE3dciTG*,3+!VX"EkN!!X%DV`Cm6a8rG1$)4hESr3FM)
+Fl0A@d)F1%CDdNG(daP!9i+i%NXRZ,K3Q!KRBGVb8RKLKCB%+KHNQLrke&a$rkS-
+$cKFqc%PF6Hh*XHS!f1l!dh$G34f-5Y,*c1L9Z`&'`(,B[JkqfAU3!2"Ri(DMCi'
+1X%G[lihQh`0IfX"FIUC1J+T*fXZ5)6EC(4dbdJP``'i"EKk(+b!l45G6S8fjKG2
+PJP,"RjbJGTQKqHZi'2+-1HM@iQcC@65(*H0jeSE[Al8rKQ'M[!M2BA5RNkaHSjR
+#q&JYclESZ!(RB"d@pq-b%BPd!NP@TQMaDA2f0mZi%-&NJRI4!VZDZeY#c#jXU0T
+Aa5PiJD2hU"[*UbpR'&!-aZ$YUBPLSj4-rXh@DX(F,%qEDN)[YjN4%p!f1XDm!C'
+i3D4kV0(9Mm9`[!S-U(kq2GZKQ!VM[`-qVK6&m!&cT22!L#PV)qY4%P6)$Z5!6G9
+BH'I2e,0bSrV(h0J@%rQclMSL8#pp(#RLVaDUYPcc!Hb94P,XUdA3'G&l34,P2ch
+$dT3L!A%6[f!rj8[ESH,E9f1Mk(UpG,!fU"29U6`33'UYBfRG3Zc-hjJk3qPH4XJ
+DI#86(mfXDLlAYI8DhZ(C'hffVTkJ$rAJhA'@KGmN2V))I0(L*I#SZd6YiaDKa9B
+`qBaMH,X4F'AMQIRrH5jU86$"Q4RPF%lppJIrCVT#qCPVYYI(!,`D%""R(BAL)-%
+PTQ`4"BcUAmZjj"%[kU&-Gbd,BBCc'&FSr!T23GX&aDPiG0kTIEiPDI(JLT+mf*C
+Nlp+jI+*qN44Z$BVH[aBF"-6"EH"8dE8Za*1J5GR*T!,6,2M1Xr*ScX!hMP*KIe6
+GhA8&rkqX``B)"T8jQYqF)A"E@5*abQ&FI#'j(UEFAeQ[V,fH9B)2NeQR&9"&X1e
+$mV["88KhZJNZS#3@)B"@DBe+E-FYVPjF3H,IU[q-k5F+b&id,Cepa((Vi6MfKfX
+Imck-6lMJ*'9ar"e(`+hbGIU8e,NHJq6#4IhbpG+#Z0ep5L`PTL'keVS2lSF98cp
+M9NcNhDcLA`B`&J3B2i'964hL+1HYU$PZ@bJRkP(jGBV-+C(8fTGLF)*IjKTHJ`J
+6(1EM%$b23pZiP64r"V5!D63a-jaI4iN"G&l-&)aC5'XmZiAiT$,ca3RZcM#%Xi@
+`VURlq%)@b"HdH`jZQD$PC"#G3XEb%1SLK(8HF+j5DY3lmk+,aV"p#'BLKhpPE65
+F)TS(@G9f#)[%40Rj(39Si,rUHjfi'kIJr$2Yba0bm)!5L9*R#()END,F)6"*8Yl
+pAZH!j!PqHiKi6ZhR90I)@b"NLmi0FaZ6r'`2bX8PPL1+2+Rb)'9'[0C$0k%p1RK
+QhA+#D3Fe"968N@d'ZNB,iUaH19Y$#%,(*R$!NUmdG9FjjcHEm[)LmkcNbR+lG+!
+-[c+@q[0I[RaeK!B@icf!M`DH'@d-&IEP%@imH4kSq@qi@5-I4F-$TP-mpj!!Llr
+cK-Dj0&Xb+Q[c'M#ISZfEb8)h3kf0Lf+caRh"Jj9Epe!16GhC%i*X!V9Dp-VcLq9
+mr)+JiikYV5"J1P@kBQPTmAI"r#b3!-&"r&*#,ck6Cr4$",@Kc`d4`c!4J9LE3DR
+0Cq352U&ph*%U(X+5NllJblTPXdc00NZ1`S2CN@ZZ3F`4qmP@38SPYfHbmAKM2[!
+P1Z[deVLjeFSVqIIMUTMf)+fd[r0A@G[T5fF,2BZDP#&e&dTP%2'+'@HZTrJ`b!9
+96hErGUIe,H9KEQ6VNqeY4pfSY##c5"Hr'4YCTEMSS62NAZ)6k@3)@`JqTbfRGec
+2JQIX#0GI%-B0Z@-B3RjI4f0Ei9H3!,"`Ah+cLN$6K@LiqVIPL#9*f5-*Z@*CHQ8
+AF3%A4!lLiGlaNUZ88@Y[`lY,kr-TIP$XG1@"6Q-j1S0d%C1C@QA1H9202Pl%XIm
+UXBM1,FGHl14H"Sk88rF83a4+hFYBq0QL*G#",bdQ#qNicPr-+T945&e69I2G*de
+r3)qdh$JQKE&1d#L#LUUNX%D[DKXYG)IKDm#"f9-4@%p)#3EX2&*6Vm316YGaaY9
+YhJ$a1aAHNMZ)F!XY#+QkFmTarc(a$V3(G)9(GBqF[[2D#iYeh'bE)05,#E+CZ2@
+Gb-k1rF`@)DNfa94Zimce0TQJ2drV3McQEKE`-L3M`fqbIL%X8i3'),clZ5LRd+U
+DP-)Gfc'FCbhM+qJb`@5dRBIYaFNpTp$pEC2DKELL6(')MIhdb-2G$FT3e'D2&p0
+DU%34K`)N@DD2X+["ilQrCG2')5NFZKRUF5HD*SIUUZB'S1)P',`jZHIm+[fVHp5
+YKIFJUP5[@(lAaq*EpSUZ(*pUE&hMPRmEqAM0QfQHq8*NfZc)b+@'V83aTK#pG@0
+QqJiaQU`S'Dq)rbprkih8rJ@jZh4PMXlGCQrBRl9&m6DGd+J46#pTrG0P`$&h#Hj
+4SM33LEeXYCdN&4"('PlGai8fq4CB4c9Q6['5TFSYZIEFCBI&@qM@4JN33E*m8dX
+&qk2)d%&Ka)4+'[r8YN*e(5,4i8rbQEE`FFI3L'TKZ%[mBhdT5eYB9U2X`lP-)Yj
+iF[LA!RG[89UZYB,Rf(lf#Lp2M#d)JC1meNSfUbP834+QLp'd,FSZ%jeaEa(lISS
+"Zhl&!+qkCb(l(T`$cXP2`eCh@qb1F6Jd91T4+NA6Z[Ye+XG$pBfPDkSi(h3-,E$
+(SCZGY4-GCqDX9UE*1d4bY2aTE$Uj'd$%m(0S@9kdJ$!(eTE4)&GI!CVabj84SHX
+j9Qre'G1$QGeZD"F[N!#ZIVH'C%aGTlKGbK[jH%qY(mKmXCF&A0UI2kZ2Y#N0IU+
+PF&+M5k`TqQ*+mC8+$QEJ-F01%GRhaBKZEFEP9m,FF,BPk'4HapFeVEi&hM"m8j!
+!FDV#Rb[iVr'Vh-XSXXi'KTpRU(CQ)fF91MMK0ZXF'1,,9B+Mj,D2UGaJQB19Mb%
+dAh""T9[""G$B0RVX(Nj"41ll8e"Gq1LN0SC)5C*Dk21Uh)jAfRJC0qD(B[I)l&#
+HCArSI69#kL*4&P)T0EUT$cD$DR6SZ5#8c2AC0'D,jpf4R3CLhY*(F5NE0*`a#+9
+Yjh9(4lY3D5X*5856E"H3!#NBY#eH&[jAFR+GkfRX6'eNGXJaU%mLXBb!c$&@mI$
+,K'2SDGU)TJi%E)hLUB+'Mh(@pHGpTpE9AfDL")2'[2PQJ+J4E+JCCZ$4A5UKe3V
+H0ZBTh`-*+ZUera'`h*ABa#b5#6ci3F)eK8`XfUN1)[@[h*qYcGh1kelc)44EY'd
+JKMDF(dajdAB8N!"piK4cbV$*SP*0P*p(aYZ`2FE5jD++A+kF$(,Rpr@L!d`r354
+C3cR3aY!)F-&k+H@M2E11`abN3,HZ&,TT3j!!Fj(9K([feE*+[-6q#5`Bm&--ZXP
+qM!KE0MaGS08d1m*'6k[GA"qFB-iZhl[D!C+9Si)PP"ZDmXPR2+h)dc-a",r6,C[
+E[P+kF4j$*f)h`VfAf1iHlcK%T+fbl1U&U0hkPFR)%a0&G48hphAkpHH65Sf(LFq
+QlH"9dJ"QG,($Q04RLM'(BD,6`'E)iRT&GaNSY6TpTH"UaNi24B9`q8NVVae,"lD
+-%ERIBS29KCdkP8UE4Yb&3q0[XL#*Eq+6P$-&G[NHRBKZEljF,cHlQMef"4(ZU-`
+V1E`iUDhJcC!!0*-UI&YkhLV2Q(P)f#6m0X06SAiLFaiQ@L3Y(TKBJ8r8e0!GSh"
+Uc203*L8@N!#@VJ"BX4UN#I!IPB3ha62P+lK$-R[Ycqm"Z8C+r0V#DHA5(%`CiM!
+C0Nlh8[I(k2Qieq1XcC'6A'(Ve069004iVFmUCQGca-&LUe0&!,NGPlVbTM8Yj2f
+Xmk""MI38ebC[TX`lMcjZh!Y"%'FPRGMdD+(IH$dT0[a@@i@G#%Pb+EM9pK"cQ*C
+eFKH*[GK5Sr+Hc,+-[+4qT&DB`I'F@`!FiS[TQG[CRYQ8"jaUKI(ee(KBil%E`N*
+M@KD9U%)q8*!!(ejjHkAQmQce#%52'XQ!S@2Im+HLA"5Ta2TZf-5%*rlDAK%FEdc
+FJcl3Y$2FDHR@qT'LjX5EfqlN)@VI8H$)hkmV!XY#T@!4i'rM(K"N[$)*(+'iHQ$
+8P8*Iei(@cEm!UEC*05SmF3m9Z$KI-Nc[TXQ(T@++(!`dql%h@LRSM%hL"qLZGP,
+HV&j0V(CePACM+3$mP!l)jCCA8CHIL[p5&!MeqZYp%GqUI-0-UPI&f)i'T9*lRLr
+iE9DqZ)eb@CH2E'XrUabVpK5cAil[VNU50+)M2Slj*MCR,EhX'#XlUZ%6f9b*rp4
+CE',JbLb4U4qQG`V9lP%,caBjcd)Sm)5,2dH1H0&H$$J2[(U(c1AA[+rG09-6RS6
+heDFQ"(h,[!Cq,6)p(BGY93dX-aH(IChCEMVkJlXc89A$*Xf)ekeUXd[CjT`iU01
+6RG,hL(UmD0Sf#BqH1)m(hjqq522[lEH01c'XbLqQI!EMPa@[J[5k%ALFGDkGFNI
+2B8[JX!QiN!#L(NLX'EMcIG3MTL6aQ@qZDjL(S$JF!mILr0h5IMm[+q"$fYlCGcY
+A(ENd2(mG!a[iT3Q'JJAU1`0'`c4CZA[4T-%C%lUDbd8Ef5NA3BI9fIZiQB(F`!C
+9Zc0(lJFH@l!I[eaXL)T,NpJr%8l#hjeGa(L4L%9E`9!%iK4"3M1A@LC`ZZCijZ#
+dhp9@DA(E&a!`X+R6THdAak6#ek%B+8J5KE'1VlAArB)4S#h2S[G"#EA&(C4CaI*
+U01-)S)lGJATfU2T*A-Y""`GBFbD45JqFp[@)Q$!*&8'1ELdhR6VieRcRUZTT&UZ
+T8ZC!Je[8BJf@U%i[pcb"JH9%PLYPbf@EL)+U9Dd0+YA3RRDJ(0PG1L)LN64&!J+
+j*eJHpLE9bhEqE)A9fLShUi*f8GNRQVBT+5XrG"ZC-U0#4BTR)d9#IGS,G`Y(8Sl
+FaZH"F'T0FmmIkHrGHjTEBAPD@II1$AaVf0lR4i&'Hi&Iqe0ap84$@Bd[-YVi&@X
+#Qr(p-L"5Q+h0!HK#3VJkJII*'!(6J''rM5ffdc[*Jj!!GG8j8m[1[e,6GL(*bXM
+q8%4+FJ'EaJ2QZ4iN[3d%T'11CM,SK@0hp0*i'X%qAD,a94aSBF*5KK6DHf[DAd@
+Rjk3"8UCQ,D[fXG5DPC+c,TB339E1ir*BY3j)+Bc!$ZP2-j!!ZfBhf2hB5d@RJ"i
+qFFJ4GecEd+ET`c`T2"6`i#q6PLc'3ifZPr4r-XAPf)-hbYcrQ@IBVQP,(CE1#`a
+ldTDqQR-)c'HYMQZ0"rTJ"%K#e-A&C(5(l)#SeAT(R5-+(@blY93%KdPKI%)KaV3
+0Z"rYp!Hfl(5e-2biIb-)$STFrB31[(%0`C!!5@!LBeDd%$aF#r%e`JEMaHS9Md'
+Vc[L+FGHJ'J+$B+!ScppSbZU#-"H49CVZf-@LKqN'`UlHhQMX2)Q,QKIJQAkA'[`
+iJ1H@42Fp$Hp9*!aDeKJACq6f`%5+m4T1-Jp@kY4I*+8qafjQQ3!B0Iii`4lD9#F
+Rl(CiBMdmVm!0P2md%FdB&+*,#ai9L"$$fdI`QKL"HX1cCp'mM@--01pN+c8qP$q
+kS,99F3@IbJrJNY*2pd3%Ke-[aKQq65V,'$213R+,%QkPbEPVED*`M4,9qm()`A9
+(6-MYDLEYpE(&V%(bp[@NCqceKjBKflcb$mN`4L[-1a6fcKqaL#)Ghd1,b6c#ZiL
+Phm,H9I9+m96[F,VP*Q0fcrj-i'#,50A2eIT4ICA"[38RC+V1P'rdIDbN6rrblH'
+e`-RLiV3KZ5!Z-AZa@)XI1MBp1L"266jiJH4CVhB*LMjHVfX4X91PU2B'H["&#fJ
+G&*K%ka8P-LQ8'&XL-iBKP)I'YH1Q$VH,XE8VBmGV2)$M0)'hY4TjY!QbAX(aBK(
+0J0lHm4'h0aj$-[(AG+CBY`AKre$+)X(Ei9q4-KjIBkrGeP9JT&4Gi*aKK!!6P-H
+1A0bpUalCXbIRMp4282XRCB@RD34kA#!AAJH$he2&FRdq5ZHjKT5e++jM&'D4kqK
+TB@SP,dZfrm@GRK5Q&mFbP9bMS+)4DP-B45$JX9#APcb,l83--0U2NS'eF6haC8[
+jKAS+LrN)'VKL9S-Hr`Ufk#P(m*%"Ximh@MB5UL'[$Ap55a5[))5'MQG-E*3@HMX
+JNE"'*+J*pL0Sa`#MR($YpXi`d'e9X9GjNUB9@B40K!-l0d6JHRK+VA$4C3L",+V
+C9PXl5Gr,mYB%`5m3fq"UehqCA5YpkI%VTMPdkim$KBb21JbRH"ST)b(,Z)*a63c
+Kam,1CMdDYl)kJf5RlRh*RT`KXMi-r+-(9!`('6j[%4@@P"4&(iELGl)bF+&)Z11
+1phZA"Nm1Q6+#d@iPr52SMV8C#*SHD$0`cfddb93`Y0rh!-P2Dir9-i6kA(0P9LV
+q1j-HirGlf`GI%Cmfa*ZC(rA%c"[(pZJd+M'-3Y4brR4jH'Z-X-Ae+f9U&*mdJ$J
+&K"'&V$D%c)`TG6LSZU[k-A$Vk,#$Xc!)@EUY%jfT3)G8N!#kPKqMEbp2"Y4Nb6J
+J13PSK$53!2)a[4mD6(6#GPi8k8Q0(hSDc(5G@K8hmSMeqRFT1%C'e-Dpc6fA[iS
+a*b@GqC&hP)bSc'b@bJbD[m`jSMeXTPGF'lTZK4l#HS1D0fZF`P&Bj&hQaPm%1)`
+(H6V9c3RjAqG#b9V2G+9[e(Mk`B#c*9N0GLLP5j[rMI,Jm&B&pIL%MBcXcbQJbTF
+`iB$M4S$VhZ"4'p3lqKJMN3AH$(mUXiD'Qmh+[[iP@0[Q(YpH!lZAZ9R0UJ*NEL8
+pPT3*dPHNRNT)%ZkV#S[F5$#53`Z*@IqR99DpKDa-IFdDQRi@Br*'X8cCZ*!!)f9
+iJM#JqJpK!!*I'3r2,&'cU4[cB%cd4F,VQ(hXPF84V)&$&ER+4M5kUL%V5(L"G4m
+-P-aP[iXh6#Ea&$DCHfX9191qeSF!N`HcbXEJ6*e6rL)Bj3f-"bHA4ZZD,lU2DFK
+)Uqe(LBde()`mR1%--!%3dMb["V0PAlMElLQ4K!l!3@'E$pA6h'&paR(A0j3%kp&
+--qIPPFe,p8(NIMBFb@cNE-*'(U)J@l@6YkHNBj6*U&8-'4-cP@,RmUS3pp"KICX
+C8dqR#)2"bPGqm'"0dVZSKT1KY$#Tq%dIRDfA(cp%'G9VRNECEIDFN!!V#0TJJ!"
+M2-BLCYG'A9RJ0@I*F,&e@ZBllQfC(R@4D%e6m,A85T3%D!MJJM@GC!VITKV'PbV
+G)$3XJ1abCC@6r!-cM85B$GXM50ErLL'6Y!DERkfdTm[X%+k1#e@bLEDM'!LC@@N
+BF+DU9-mMARPCAACeI%5iZUm+TCTmRL"9fMfXJHb4[HRE,F5&(F2*"&6Z)$-bf29
+@`GM+Q9he!QY#2S-edMNq89(&qS%1ZLI$36q"Ur,328B0)0-U@"SBP`l4#QI$S0m
+BYG58jTQ05[q9Q))Tm&CD*C'I01JTprU%*3@1VmhK%4DUm'jah01P+3VAkfF!QH4
+e&KFb@hPfpa@DVmdE("5m%TIiI!G3["Cl[*5em6QeP"IjL)mBFbLj!%9#8+ERUeA
+(E8rLYX5chM'DhjrrR@9fU5ed-A-eHK#8N!!cG@"Hhb1AQpE#m0'K)D[`k`8bq#b
+!Gf8hGK$ZU2Q`LI-'r+E3NmE5k-*i+dXkp!!84a$BQG15B891fG0$IcUqK@E4hrE
+6+0JimErpiiIKjRme69DM,J`4@r8PfpIp`k0-T,LZ2a5D%%4NJYV,bjTr@34LG8[
+rb2*B[[@#m88klT8[V[3EQDA(9MANKHZFDpIpHQ#8mBLLP5('1a-`RfFp[P#8B8p
+N!@(TR`1FN4%$`52f#KILVFJr'qhb#U9rlUD@9kGL3V,@i9+D(%4bbUX@iifrcQj
+Y!aGE!2pZ!Ba24ka3SMar[U*CI)K`f'p2D'k2NLUcP!+#T+YB+AHr0@YE*TYqZ3R
+TfbNP2f*iJFiph+"8bL!VmmN+0fm!PSbHPNae5*KQ2ha@fqNi!`G23jRD[($e&ii
+#el"LeV$9(!khGR-hQPk#ZkrhZ+@cdk8JRD(ke[E1ik1-NJHqXR!,9Z@1M5C8`&I
+j(F#CpQ$6`+dMdAe0Fb2(TG3HY4*ZIY2+LPY4Dh-BqPEr0rlMP,X-EB"mecAr()'
+@!d(#JXMN@RYeZA@iU``!F6&Bh+1"8"NXFk5CXr5rKNL"MbQBeR+YM3U(aU`lXiH
+b0`Cji"&Cjj3pDC4TPpZh5U5j#"H3!%k'2ZBcU@VKDHfreIlaAT+R6Bkqr3KFjm1
+Fh4+1iA1AJ'dp0EhpI&N5lDE2FLUZEm*C5&i1FRYPF#GCefCeDF6S'@K!2`Z5aj8
+r3NE+6)E)KL6TklfR*b[I"SKEFQNI0NYVHZIkAXijY3mi5DIZSaGMELYNY`cK9C!
+!E%+9*`+F`ca'Qm#LHZ`c%Q,E,f2@A`Sjrq+`U`Y)rrdAS"!$GS2mVAPc`p0Z,Jl
+Jr'@hEPLiDUqY$Umq9IHjVjRF03M68QckK"H0)klL[H+#EG3AJDCe,(XQdJE"eBm
+m-e6QVkZ08EhA+F(Nip8+CEp'0kpqY6'VU'Ka6A14*MEY#c%SD@6%jK"LUIYPPd%
+'N6XVXAX&!2c#dKihl9aPB'#%BJj$"11D[ePie%clb#92a+VL,CaKaQFKhEp*&E$
+V)+!k2bZ1"19X!CA@BP3VH3NY8)JAehYI'IU3!)BhLhi2[-1RXkMF'cE#0,%eLcc
+%08Y@lCTKhCclS"BKcYX(&DTL!-H6MNCZ(b0elQ8KrBXhH`daGd"#TRQ2Ym4$mSL
+2Nc[RK)1+8[r@Gj!!b3FaQb[R8kaT0JqhP"3Q26ph"N$ffRFVmPjL"K6fL1-1Pi8
+PQULMqbXIVEki(Q@C@k4@SG8@NA*(C13L@,I$YPZlf%Qr%GaTkK@!I9[YfIH+ULT
+lak[C)RIrNC2NaBYBr-,Rl`kRQT`dGJp*LK2EVaaP`GC`"GYr2h[XLBL3!0CQF1K
+`VCbjdjN(HL6LmX-Y6-l0DBDiILECrdRZJ8S["mA")e-0,%UqKjU8,U&'3PXmK-k
+i!jjMhB2U+ah@L9Bkfm,dkG4jBRi1C)M$B34hlr(rjF1J$e)r$8c!l+6X#TlVh(Z
+LT`6rkplh@!#h3V1+'MUZFbR(RA%5K)Gm4cfh8,QD'D'Gr8-KY9ilVjb1LUj8$)$
+0KNqVb(%[!Qr,N!#[5@5U56cN)JA9q#c0%b%,3C2abED1)[S3()B0ZkGl#0lpFZK
+9%DG%h`IcVVNei@[*1U9AFAA)Cf0!!PU$9JlE(c,*(9lqV+2hAmUVkY%#Vc-4!hV
+QX+fPHTrXVrCNBe9-`b3@SGe5M+fcH$[Y,Q1f!ZlYDZLAGTKq09%Th0f&flf(eR)
+SH4-cY2d25LE`Q,"LApM&S'al&X5DU+mjJ%kLbcC'j(Kr-0"&FQ3DR3eF[G9T$C-
+P,Q--XPM%QBL6a!XI(+dchT-S(&-`i%h%9*qEqA[[#cqFAMlXF+@rBQ8CGZh[)Be
+j$2CTDh"'Qh*MZ6p&QLIB@-q)D&8Qa[%G3&l5@*T,X2$TbQqDLp&Kf([F&S6Dk*j
+kBH1kIDYLZdbFRm$SH2V$i4(9rJ[IYfIFQEbU02HB6kBq(N%RBib%Dd$k*C2aKFe
+DrHNB2`#5&)Ph4[&Yb+Ebm5k#P4pVkd,l4&#)JbS5#b13!)`d'#[riEX6e+$9XVf
+3!+#R&)E@3`&fEBB$ENBThTd*ApDl)N8pc$*`#UUA"LQ#c`[VXYi$A@d!5`$ChS*
+'&`1QGDJ4NPYB,pLkdBUapQ'Y51p"ZK6@h""E,IJpS)lh[@,YrXpjRQ-Je%,1'(*
+qBHM!6J+Q!440h%2ANkR!A,VVSlNS"h4!H,l+kc1X+D+d@(4,5HD95qP"%+afDF+
+(Y3HANbK%ar!A$Dd!4pErcGaM[1Id`K*@XEfHfp+YZC1ScF4qZpq%148Hi,5U2PZ
+1$XEa*)JBkf"bYjp)DR"M)pPd&a9D364V#pKB%XZpTS,)6lIcp"li,U)V4$qU!q*
+m!)l(XEDQELmS'2JcPN8der#%QF0Rb5ZiYPka4F)cDNhk)8rFmJTX*DMZDdM)6kc
+Z'@h50h,+X`bba4Ql`0Y([N)K!rM0"[PBMb@5mJA6#M8K@[q0)@bMUpMk045m[Qc
++ZdS$RZ!Tf&8EDjYMF5Z('2,DkE5TY#q"`Zhf$c*`r9mbe*b&[X&@*0'eHH5,',j
+k2Caf$CcfF1ZU9#((Q"Y5L@m0)`,k6`+P6%afaVV+3K6Gac3I6TCN($iL"1UHJNr
++B%#3!!eCEJd[H1YVSlk`d!&qGf!*Di$lF8MB2[U$(pq&VK$m2"qM1qCADCaS'XE
+93j2Y`-m0+H`QU,8j6a9QXlCk+eb*6jmV&-mD["9pE"B$dSRlTjSU0jE$dMC6fr4
+X5&R!"dl$HLV$VYXmi1ZL&+$62G%4q)l5`N+ZRMjE*9lKk[!eT1U[R55eKA%HS4l
+Qbd1DlE#(Td"8I"VHcq!fcrL@rGJDS(Maf0l6Z36&Gd382riFFRhZ8clI-lq1-2%
+ND#$4H!U4Y3)cZS8Q@r38[83pEU6b9VFk$(kJhamSl+406JYQNi&4cYf,Pmj(1Y"
+`8,-JY(0A[qHT05+dFf&@cYJ(ieV)0'(1Ka!alc'iGHUTDSV(p!K6%6RCK(CJEE(
+JF(Q6eK3f*kqU9a2[&Zq2aMrjrr1Zr`(1B4U#hp+JmA'DBk5JaqA"UbUT)hHV+Ph
+i&BJ9S@VUQD(IfFl+c#MMDD,I)J@%V[8iHJ)#6X(86f%fqqr@Y0"KYI+T31a,L0i
+VqK%)$XeB-'AqiNY&KYK$F1e,P4mS[0hQe2FI36`CqfiX,Gf24jhIlqAAP`qm4-E
+i"LcrfX*DI8D''B5rU'3'&Pp2bHK+#qRr&LrCBA2%c1jE94qAGQ140Fi#8Lq@)r&
+rm(6kJ%Z8++2Ti(3eE4D1Ibqf)E%6D#`V$UhT(2bbQ0DEpYlZX#EBaalYNA+k@`V
+%AFi`2fMB"id9T"Gr$C[#(hZUh#RFTF6A-EmJX(E1q(qR8Y&F6QDd8Pp3C(heRi(
+Y8J2l'4PdXGal*f9YXdRJ3hqLk0+cFUJHr+eHB"qGhlS*B@$`f40BNlI3XcE)*Q!
+@4TUK!hh2f4'KAYi#ei9PFB0#KZXU"@&S0-Ei@m`!26#!UZl'4I"dNehG2rdb[Xl
+6%UHEK55)98bR)#S,haTj#B-E)#jHNfS40Fd"6mpBA45c&&b8hYZTYT4R3Fa5pp9
+Yace)L9eT2l)8TjEi)EZURAXSi#+j6p'b'5+X&rTjd!YIMM%BpR)DDK3lTeDfP,-
+#PY'THIKG)j!!4*'d#ldpb#S'e+SF1jHNQe!4"-[B1BAJ+X8bbIC6dh41RXE4,GX
+bUdMESjG!8jV,YGMLZK!Km#cQXR-haiXH9NpP&"`ATHQp',H5bhe0%D#JHj(3#Gi
+(GC'2MIar@TC2bTVr8YHiP,p-Aka'j0J$1lPJ'GXAZT)-@"ZKDqi3YFRY2lQUcNh
+`2q,N126Z"DBDf-KJN!#QS(EEJc'&Hf9%Vh&*IK5f+Z*4SK%J6YUB6f@TAlLA6N'
+XkKNBNJ58cl!c-")2)hipbZ[jfXKJ%-NSC+fH0DH!P[(Ni(lbL1kYf+"l9H)A$dH
+aIXA3Thl+VmEqlUFIN!!GHj0`aN08Ch2-8h-ZkVaGh+G*KJ`P*BKQT8C3Z6B)ieL
+[R@d3I%i%cF`KIAIipM+L9UcIiR[IQU12C%N'@D-2FI'@N!$r*+,6qdT$iI$hh&E
+-Hbi89l(SHdADq9CD0F%PNBpDD%6F1"Vi)U0)KkqZ9ihN9+U$3*!!UT9qCF3D5CF
+XSLC%,!Ai5)#FCPDlj(AE+r-641m+YrBRN!"I&2L$DA38iae+hcTq[k86#rEHe@i
+R+8THB(N`G0B8#d,9r)j0d1AM9[(1'(Z6%@G5(*[,q&MhpFk*b,k[XTGQicI`Fae
+M0@I6)")MlHi#3Ce)0GV,Sfq+rm)`5Zark+!FfF[PIBrAdfjc1j`VGeIXhm!q34D
+4Y[ABbhpBbd3+A[YKeHVPNELr6rfr&L[+@!UQ6N)`3$HPER9&DfGJra38m!1SV[%
+65',HMSJGE*qT,Y,S&N1iIE@d%)bbq&#eJ+SVd%EGVU8(KMU%C"3&5GhXXImIU3(
+2+N'(Q#4&V$%$S@9QG!L`ha%PDa$B,9J#dbqchj!!Tl*!DBqbX[,RDI6'`-edQ)0
+'99XRLjIpEPNG3J1p'cAT`DNU(-E&36$#PY$6N!$Z%b4SqX8cP`DJ)+@%cM[l61-
+J(@c&MVZB*XQGb#(`*D5(S42R#EZeN!$Jc6*Td-aj0Z5[TdfL0ai&RafDr%Q2RX'
+$kc!Y,efKVXkeai#m&Qb2JJh4[0ACe!#5%hH3!)NFh`VB!K,0q8MSCKTa9"RiD,H
+0c)J0K@5MPLqQTer%M&%,M1QRb3P@q%5r3Sj1F,KYG*E-Y@(U`5f-X-qrad0[2(D
+l[fBdFeN55H5h%*a%TXkiQaQbc&LZ4L&L`E,Z2RpefEI9,-Ld"Hp+0iJ4dbP'Bea
+1Hl&h8HQZ4Ecc1!,D$(qeGdURfX26i-6UF(I90)@831k5XXQ&0(Rp#Bi9,dp,B'E
+A*cqYFh@Ge6pB(c`Dj[K3Y4)Y91`GJY8jMa'"""I@qB4mdVfbcp5A2l&6k['@f1S
+HS(h+Q$`GCM5P*ZKej+,8(r2@!Be!3E(1HT'[+e@$hFC$+b9&lNXY-(EZi@dppb@
+hcklGK)2S9ZNjBec$+4)YlBiL+GpiHJE!Fb*%pdUbhYVUjHDU`MCCie)D@,FSb%N
+YF31hYh(0,rQc&,hR8jk$K`J+'&JA`pi-FQrrlf4dhLM'Y@@LK8d#IQ3SL#hFA#[
+fQRa)cLH6d`S5U@#AS)dPq&(P$QhIQQ!NSJZEA32a8Z*Ah1p@a0X!M68jeqJe+DY
+SN8RT4hQ+J%Te4*'Ab(b2Gm'2F61Ap5[kHii8ae4rJQQY#acG&TIBkUZrT6eRB3Z
+I1aiP1VM!B$kbrP[hS+A89IN8F"p@)5r-**m!X-h(`LEp!h@J0+dSUPB%aJ4Lbmf
+6L4jZJA9JS25%q2LJ3bb@'SU%cZHABK(dJ4A-Zc!FdSA0HNdiV93jYJ$P-ibV@Nh
+I'a0Pd("-20,Q1$,2rF,fH)h5MU)2Mcpa*-#2Blm4rD+jlr5mS8(m),+5P2aQ[#N
+(0hP#l0b1DbZ`kS6UYHGlhCi%#RD3!%eA-Br9T#e+ZdSKeC-)*kKf(-@0A)`U1J,
+&!+Q*82S1DTCTM@NFVc++Y9pjMamj`2r0i((S)rE%ebS6AC8$cjQQGhZddZ0Z6CZ
+AiJ9m3G3FXrkcrq0aD2E5pBFC(CC2eQ![N!"HQ@`I6bbjDV0R*QG5HJl-#'NM('+
+G6ah)5QP)8NHY3RZ6EBDfUEed-)+pVZQ)E@TeP5**XG",RkmXeD&[(2c%3b+bGQ3
+#--,JUjBNhJ*S%LH8&*6&6j6BFR(1bZUfZmTiASi0`q`T-f-&8Q2qJTX[C4Y0K6Z
+bf0&`qL$i'P2fKB2-@dQC'l3G+9q53BQVLd*0Hm-Y0L2VIAD+lhD8I8qPC00fbh,
+""S4hIkNMJ@kRVC+@lVSBV49DEG"G$"QE,PqPf`HR$mBY'b+PHX#B6qH*C3REh!4
+`S`"p,fEqNS-IGkN%KpGXrpbM#IS@'PqSBKY8QhP($NdZHb&VFrKriNQGT-SpFRP
+6-B[(8"pqiS1a@a"1JjQKR%d8Ba3@1%hUIqH3!,$GH@P&dj@d'b"1[B$d#RA%l6Z
+9EFE28m1F$q(H$MqT3cX-RR`eb)[Q,%p'TQA+#B'MTX2l&XpJ(V'`bK`K2dFkPq)
+-pfaKbqYBS03,[CJGkPjQqFH9+(kRXV5R"*[(N@%Q9QBr(-I`+@K&dGa-)LP*e[3
+[542)apPTfX3'qYE%DUPRK-,,0"@J(!@Q,j&[2pDZeXaQirPVD+*)U)44#EkGDNc
+m[Gj`%006I8k*3C&ZKYlfa$e9mflfXSPcjhaZ1)e$i0mjEUd"e94FLI5-T'L$b-5
+S@pR!dL2d(jcKBN6$rIM-*)J'3-,JQi'mbLd0-p#2Ki-'ATV`S4C&L6cXi0"cjKk
+[rYM2%Ylq!"2%qE+K)mr88+18RacH2$84+(!@4+#l$EF'cRN@@EkB@65&YrJ!S3F
++PLN5lfe2e$le09@00BUkdP8MU!$pRLcmdJU8(YPGfrM&)D&EU'YFAc-,Lb$S9jk
+FmdlC,-EPNG%30"!CKiCA**-6dqCcm0lU02F46!T!E(#p9eSq0!+h"fB52+S%X2%
+&*dD`PE9fkAqc#!,@qAJ,'jE9$k6Uh44L6Mi0&I2@r46A%,'*,l[Zamd@aJEVV+M
+%bF(B)L@6p1Cp-P6X(QkUiAVl@i4p4Pca+BT,DqImr3HmSU5jEL5S*NicMViNaBh
+3bSFr298T5kcb%,E(CYSFA,#ZP*%c@`3l(RQkiqqr(&)C"NHd1+"#fiA8@p@#J+A
+H@`H#KYAL!jpPa,em+a("!S(D-jKSbC(J(#1#d*EZr)d+Hbj$VfI,prqf3HAq051
+,hcIV8mfNX-0"LZlql(3$8aGpcHmN#q'UfT0[c5Il`@#!H3qjK%`('M+q)L&Xi$)
+$F0aVHSfI!r[C",rV*#*I(A'ebNR,'mPrDP'CL46b$!Nb0$3'miB!4H$FA@DYG%3
+55Mrr44m)N!"PrJASq-PG'SjF21fj-mm(ppTkfdkN92Qh2GFiA)dTeBjdd6"+J)Q
+jSDU!j&d`2#krAU4N[&A5#(D4IA(JM(V[T&@Q#ai`@PV8#ie$r*RclXeSlr3jf25
+M`@K`Vr4$H0bVZ[,RJ!DZ'a(d3Kc9[8@a'A,ZBYAB[EH2%XU'hBPk%4!*%NYEiiL
+1Yp)[$S"cB!+BMaPdehFZPmKlI&k`b*ZQiY!5qd-([)m0Xe&-JMNb8AB+c9l5mRG
+G#J9*D*p0GRdEUM&$2$LRk!Y(FNm[!1!eB0!3JC1raUDNG[TZh'3frDjLSKN8mhJ
+)c3KIP9rqA%8'#N@0&0VI%9+Q00@FRI0FbB9Sq1M+2iH`#Q"9$YL3!#'4U4YM)`J
+9UFYFB`e0r#lrL6)SpXT@r*@&c00F[LhiL$CAp'Zi4X%)cX([kIQS5(X6&G(C1$a
+-MH,9LXZUJJiriDe+Zc`3e54[DMcETD$YZR4")`$qFQB9ejZ#GXZqa'i4JERBe4r
+pKYdAkAZ+c'bmG#ZdSeE6jbLi!$`Ddb"QK@FFJ$+q5M2$fj'$diYJ,86QcCF"['f
+XDN!r@&l-f*3cN3V`#-d%6A%9IRBeNfSQK&QqQ)5+q8UR2IZ,`FMb%IUlR&'edil
+d+PP&L+`dp$2@'S!''(R)Y4ZTFhTC%"0Fk9FLZ[YI*N#K'bb8d"Pc'0Tc,4H$J0!
+X)JjQjlQSd*`G&"0*BQYe$"'1P3QbVmeGBqe!UZ#lKSmD@YqIc0V(6i`(2I-+Z14
+-NC%@TAFpHP4G-%)3`%G@jEr&VS5TpTXS3CaP+9hpUGj+bCke,M!)#k2iUi*Ef'i
+I6fYB*d!P(8C-qVMaVH(G'de8kh!01'fqXI`HhbNl$',r+h+j9cr6"Jc%MTYSPf)
+Mmb'p)#bhT%D+N!#2%ZX3#R`[LD9kQbJP1F@f5e+@l2[+12BS-@Z4!BQ3!!@E*hk
+J'2K2ppU%N!!FS(8a-AclR+Gp"FFrJqLF9CZS#Di2!L@C(Q'0eI8)[HPpI`Ud'6k
+a5bPl'8ZJA)20M6Ue3iIhjNU93Uf9&!-Dcd6VE`IchD4I'mbZa3#J+6'V$D50"eS
+J08Nk%Ae&`1@qTiCRbhdm@)1E&S8Me)JL980&"qrF0bG,DHZl9I9,QUYQGc[,-kU
+iJ1VmRkD(6Mfj9TV1TJ61ACq$+@A$)MZb94jeP)64(50dR5Vf4CE+19IPp[d26Db
++Z4UPSiV%@CNMEfeXM,&3C0paf)YBmX@P)T,hhJK-#UX`)+kV,U!@)X,qHK**X"6
+(!RTPT*X[#-["0F#AUfb(LqHICELqr%a"%6Jpm$"K,R2kTN#X$ELk1-fd,ShaR+0
+@HrC38*Zek@JIB2MAGcXa2$6MekG"ZhRRZ)ThTl[X3I,JT3d8,05[$2+8K),K!rq
+Sa2d%fLdFlP11A"TCD$+b-Xd3rE$[JkEK,KVQ(rp)52fD*`!Dkl#8b1VbSASTiq2
+I@jqp!80A`4AVC"F&rCAr,hVYb6*d2(T%bHNTXA"d&5@JHHbH5Y[dN!#1D1r!UJQ
+95Y(V1LVAY2A6d%6YC$L',Jq0*JeNU$D+,N1k9VY)&ZBT&EAmcKr-m2Y-HRFrGlX
+clp$C*eDQcPkIEL[qj$BMd9+RjU@(j+qY&E!99A`FePU@B)K'-6CS-YFFFE)bFAG
+J03`DfT'1p9Mr2Cj&"dKQYPKC`0YQ8r41L'S+%Ab9c"4!D81LrmFibU`e"i0BCFM
+-B2TQQ$PbhKLhCriAmf,GFeiKK6,fICkjf")MI[%GMG1e%$Fh8`8`$kYG"ZUYX(M
+&ZJ"hQ%Mhm5C%YBL`YrZ!USi662![,2k"UJUL!Ca'-9BD`5kbHJY+GJ(39ZUrmC!
+!"dC!#,Hkde$3JqD43p9!E9%fpdFB8q-0*NH1j5HcTZrK,18MBikYeQ)'IJKf`90
+8VNp&F$SGH'6Yk1&(K4+3!2((EbmplfhmUBa6q21G+NDS-+Br8)#ec@3lUV*BRal
+P2pkT%+aG`P1jF86qCGR%GCd1PAqVa8SJfqKZjEA`1NZ*Y!KQQ4!FbrdPX%GNGJk
+)'@%JRpUHq8c9m85991TS![(V[8,Cr@j!Rf*%'JHNPZ08Lk(S"$GrKEi#&J#c5-9
+"'MDER`Cr,UMKe`mljR$)%Q"E2+'cNqC*0"-r2N2)LMDa[-qM3E002aQ!RJ5$"bN
+IJ'r%U%kV9ZD+#,0Sq%@BqlmN*9e@lc%r9I4fC6j11aVC2blEa-M&`R2jlf*04QX
+9kEG4fA9i5apS58qePA1I,QNP41*6+G6CbaB$q'*bD`M[R`hB&KFE+k-i#SqYAQL
+k+%@B%+6LF[aj8Sc[0F$-CSb-I%MDKiIJ%IDph4F4%qb3!'%'5&(8!"Q"hF+4L''
+X4,20b%&2+$)55Nf*r!%GU'3DGbTZ%Q%f*6j)hZXLf(pU(Xd$+d0K9hikF%kGRl&
+XV!dG'-m()1I)T*1%31"pFc-j2eAi4ZS1mr)aGbL,9aqGj[Hec('fR"lPbQF(qSc
+S3(dki-3AG"br6H3'Xc-Zk6''fdAfAIIApX'2&lj)fr5M-qBYm9aAl"3D2i",L5r
+-e1GIl%mk&b*bC#E16fXU%NQF2&%D4V5)L*0S$p$rec[SKM"DZq5Jm2j%0KJHkHZ
+MV`A%D`bP+(rT1l('P(p&VGq,4kC8&Jq-6[e"Y61U)@`$CR!d!hU'h(Q*A,jRq5H
+0G`Y0[@kDVGi829PQKJck'9F3,-S6r1X*#Z@Vp9Dlh2r3,L6,#Xb90fF`Qpc(a[I
+b2Q5E`A#qN6if6&IR-A,K!fbIE88Q-I6a-RqSaiEIX[Tb4"9MBU[3NG!CdX"VEiV
+pN!"-j&#a#Ka[N!#-*PX"2ViJ,5d$N!$@2feNh[9(P(!22+mQ(iU"rXmmGJI0TL#
+P@5N,-)GA+[,[4-*['-!e#$T$PB*kL&5iEbEc"l#dXXM$j*XjD+'[GrCCrdqIl!q
+hNpJJS"#ikEXc4FS"jc)"iFhK5ITe4EkJDG2)S(L[[Fjh*1D+ihJ(!9[$h[VT##G
+a*M23,1d0,riF%,U-f@`jdEXbCbkBqqBb("A2l@IjL699*a"ri%H)r93fDdik$c0
+8kJdfmL6k41R5SE'Vk1A'%IRjSbqT"D!'m0Y#bMX(h`FSM&+F`B+JD9T9*NCNi,B
+C(-ejbV"'4Ffd@qF0D&a)-PBBGMFq6U3j(f!AF!MMJ9fFPXJ$@(%6-fJmUQcDZm%
+Rlf#![JVk*%(&Fe'ZA*k!h1H5J4GH46k!`eDE0Le9K#pDMm,)dR+HG4M2R2hXVJ6
+dXqh(69N#P#6lSKE4(+T"XC6bG9ljQJ"D(@p1e&i($%21#H@93aUAJer)VTNQ+`Z
+41$1@MS'DS[CF%-NYNC8llDjEHcaL1m#RNATp@%r*NYV+9a$0+qGkE-EYQ%B&QP!
+GShfKdQEE03"6PJdGB1ZMUCff[3CAaJaM"qk`aI&HNp48mdKRhk#`Aa%e0$-&%3f
+Ke!"@RAL6ZJkc5QNIQe4HL*Na$BA1#"NKD(QmZXlL#L*E`#ZZr8l-U3"Nqh5NmJ3
+TE8iEBeSXTX"HlJ#1iL1#Gp'Fp)-BfcFdDh%&!M%(28iRDQQpCkF%XTMY&!b[,AA
+qVZ3-@@I6@QKU[NXf%'AbTI&&Qq4NbQ6I5R@G@(c63l6I%YlZAUM+jPQrbAAX8jX
+hA6IFJ5h3Z9F#QCVTYB@PI&FAH8Vcl5K)Jc,5&6Yl1mVG&pHJUT,i*m4F#)Sh'1k
+&@2L&KlXJ-!dJ5!qi8ThpQP$AQ'(e%V*SXj+D+1e1*E2(B@53!)k(8JajG-bd"J5
+"I0,%T%,X`#eqFRVhAUNF0+d3k5JTrhT0Q%IfV%kU$feZ%d5N)1[q2)BZHBEZal5
+ZX9IE'5Zf,)$0Pmma*@kE5$b`XqMEe$+T0S,&4GUSkVH`'IYmS"ma"&(J,Y2J2dQ
+5%)J+ah4Q-E"*1[DL$NIekDD9&,d`A5Ur1#J[#Ci+hPL9SaF#rqkIf"$TeH[DGPh
+X[%6KHF$#INCh'5X`HRp4TV$2C`9$jEQammIfSl*rMN&!YGK0D+MlBqB#2GM,$N!
+Ua,PLS"4FUa!iqZ[Gjb!l`99B'6daZ+eKZ!KckeG`U4f$lPBIB0dAe[5j8E9'#P`
+4UHYmH`,393NhUqSM+[[Sacq9!cqeIDQI)fZVZH&MSRQYd)@R"bJPBpa5ijC`9SP
+kFR"j"#p3Sldp&DrX8H`SQN12I48UplmkQkBB+15m@Y2#qS'!hKY$RbV)9cU'P##
+B-l,b*8QH!l[Fm(6CA*%4hVB9$fL4Airmd`@J9%8T"Ef'(28Hhj&4i,D-qHASe[@
+P'9K`ML"5FJ2,9QDL%[+3!298cdqT@c&UIb`MiK-DkPHaJ8JZ'%&hG18jV4kh[(F
+fa5JF$"ERH%b0iKkGbjF)b1#E$k'#iVd&Dm[H`iD`-I8,h4)r6F+pjLREZ[$QI((
+Uk6pdE%Hl"5K#kZ$LVM)#%08(Hl(c)CB(EP4Q`$k-*X(JdX2'-N)arkBcX5m*RpN
+D+j%k-0jkYm'eQSkkcR$RJ6bNFP5!K$CSl+!+H8jr"kQXeI3eS)dJ23kA3`JCR4)
+,HJlYR8ecIbd-peSdc+%I31cp(Bi$TKK-%q0aapjBFG*h1&)ASG-2P*QJJ2PA6[I
+BkFFjk&+0YLRk!0DiiA)kGHk#0U18KU#p3Lll-hrJP"4'8d"$,L9iYXj-PV0(#TD
+i@FS,eCqTNRk0H#18PKk1*mliE3cT9'UU9cGcj&i#ZF')68He5Id,`IbA%ideLLL
+)30[XMMHZkLU1[eTar@bdZJch3!N@TPE`IQdm5ARMp4QNReZ)MRmGYR-fkGBG+R'
+M*q98$EE5H+m!1LGqmLS@*rH)p,4`bUr%)h09BDKZd5T9aH9%@&"4!kE)HQ-(-fK
+PiULXmD"3YYGH8dijUFIMZR-4fE9k)YM0H@ccV"I5[)4lJ6RJ#@m+ia(Sf59#EZ#
+[[SYE,`j3l+Q"Si)AfAQ&4Fj$1!Vjchd9cHD$b6P%r)%EhD-HpAb5qZ$J&K6Hd%6
+"3ED1PC+QUEHS`&HMQCK04C3AbErjZ!"ad,,C`DiP,+b@m(4i"'iT[R14652p#00
+p[X()lKlpS%D5iA#23Z(iNqX11Y'[DXfi'd4dGA0XX&ZRCT@bqZE3cm9G"9$%-%l
+T(Ir#CX[iY9(jS"0"%dc``&ac"SZENJ,8khfY'EU14LL$#%PZM[$c[&E1Pr@Se'A
+LQ@ld!GNIhp'1kYhB2XM6IbP`eed,8@cT2M,arXdj#-c,9KZp$pPN`+T$0(a-kZA
+&IB#Z1hTGCK'NBNB*qYh0m*dIDea%`!PqD8q@i'CmNHX@'Smcj%J+j1Z0JRhah!h
+q8[R[%2bY"VcS%SJYAXP&6dCbCdZHFY'LSrNhkC!!K!Sb%N`m@lEQ4l0N#!PL9PV
+ELdk$N6bU@K9AL6AqiR#["c*Q[h1i#Iq1Z[M$Ii1j6V(#&I[85Pl5(e0pU&G8+[3
+2ADSCG4-'"Zr1k6NeXf-AHq(CHS&q*9j''P2R88I*Q$jrXeaZX$+$m[5-Yi5ICf`
++lmJij!+$q'b)1Mh9QL+XY!%+N8ZrSLfLNBeGf"+-('NrY2Zd(a(A28G6S66$VLC
+l-,V5iK'deSm+5)[V(@6P-$Mq9K'#J-Yl'%Pa!TZdmQIYV8ZpG3(AS#QM"D3l!1D
+9bU@c@1F,-bfa*mCj*%[22Ka3p-,ciY[qP`)$JGL433Gj*ph6dX+F-"M"p@rkChV
+c&C9!S&`YQBV3D06j4IXii$PLGFJa8Rb(TmMRM(DrVT8T9KI#!FS)G1qV8&dB@Yc
+#"fc-1qDa%+X'),l'U66pBDlj@SUI3bDedCMhI$eV*e#3!#B'riMlKJHhU'Mpl)G
+h@j!!KFNR#cH"T9Yqm(&e1MRR)L1erVG,VLd-2-QX$Q4p1QRR,fS[LZ(J%EQ+-Xm
+@jNJ$Fp43[,a3UP9DSqCa%Dd5kYaU&@KfC'NQDfVm!JJj3Vc%aFPA3@,%!qeRX1h
+2!lZjjrpPR8PDJ@3bYmVUYj5XLq9&m5+-N!$#qU0RNUjca`&ZRZ`8C5*bRC)4Pij
+aqX%Y25'*eI6TX@`DHL@V%lFE#H9'Cf5)li"cUEjZLD$T!*63Sc-lmZIlS-%P4KZ
++QY(m8CP32eG4I-A@(@b10pV1L&'4fDKS2UXpUD4QS65#P8P1q%G&)CpRAFrk612
+")8*@1`5KDZHPU)R81$M`(NCh5,Z![R)cl!--MIF!Bkpq$J(#EQF!Uq5rm(82([#
+VP9R&hKVCP-1C3LHQ6RYlr+f4`5j080@q!P'KPmJkFYrqeJCpIe-0eL[I#$F'FN,
+B`SXB@,TXk88Nma0J*RhiVZ3Yb*SEIrL%VrFh"A)dVPli3$Gcc[rJI-&5lDlNJh2
+#R163@%IR)5*T254(!(195Fj8bmJ[*#iDi'(jf2R9!NFaSV`J[k+NP,bETjK@BVK
+2jV)DlqP*qHb5iV+H,r"-JR,FN68F$Fiq0A6GmTP*86q-62*4[*X(aZ5hpEP+8Dj
++2&Vac+Pi!LGb(%4*ad!9JF&VT1S9Ueer1'E4cRpX,DpA#A$Bej'*(Ci$l1L#r1h
+dH$3fqIp#iVdCUdpqAUp$,14XY-pXeX+(IYh9SUSF3(0#+!a%MB2FK6C`T!CE%L5
++M3pBbCfC5JfIRdA64&La,b@YV5Se%)XYPhET#Va8[R*'*8M9C,5"eY)6H)*khq2
+"r0-ZQRkFMi,kI6cm,+r6drjrZq)LTJ`UZJKKH`cN*Gjb0dZGc!0Fh&Jjep4a+Gf
+QV8N03YQ0"H4RkM2(X-bKdFJYN5!$9SI3ad43"SKbM'SGj@8H*BBDRVLNrD20C`b
+Lh-d')f3KFB8c2"T*ddbVIE[dhD88SmYcqmr!)0@+ZT11`3U1*[r"JL[p$"'BEkS
+%,(&N5RV"!ZZV#cdV#ifJpj(9p8E2F[ah`D[QV@i-J+aCG8lZp5`ARDQ-`Y8YmTN
+p`8CJbTb%LMZhcC!!llkJPXUqc)'e-8iA"mR)4%c2,XiGbR+K%M*d-cM1P$B%j#4
+9iPfY2k(GMk+rH`DJqQDc1H*!r91QS!iN`k$3bIiR3m2[N!$03ldrF$d[qP(3Hem
+c+(1QJSIm3f+$ZD)!$L2#++qJ0U,2&Djqm+T0RIq3!+JZ@!@reXpSd$EN5FE'c06
+'QG[p0QmC'!M*T0p$!1m+Y@'-'TEDhE6IS$`VNLTiFd6qXlZH*HjM&[K@P0L!8f6
+)"l5[8aQ(hKSEi'*XY0YCG3$!kkf0e[p*EU$3-**[b#FCSakE$h4HhQB9V'FY*@f
+QiHT,R-fZ(#+LR52!a&"j!AS3@ZmCqY!%1I#[*NN`8cFAJ6*NQJcNEVfMV'E9J*l
+bJjcpGX#0XXm)Xf!LkYH1fBh0kIFEeN9SfrQhUqdS%*!!SdHeH%IR+cN,3XKZ+Be
+$mD,kmXNd6M!pQ6kV)!4%-Kp5`,kJpGIiT6[KZ0SbC*4p#)+aFXK8f`0"VU4,DTR
+TBeR$e)%bJHJTB&@,NKjB"'hhjj5JS@p%,lHpSr&cla58arX#R[I,HKajI1c)B3%
+4r923l1'28499&lPLl"#Q[F2H9QkP%fNKPdf+i3ZJ&H3PL@Bk-hJYVa(Mcke9,SJ
+-lFrG#NIEC#fB%'i(hq"c*JAG)DZ*GTip8*CFl[*SK5Fi,HJq22&HJj9X-2C0,HF
+,C,V,MQEQp9K`)afK-JaH"8A6l%,DRaSfJ19qDKd-lp2PcNH2D)D4%@HBTHL0(5Q
+$q,EqlVSeF*6BrH90E23))rh*EH-U[Y4%Sb4Xm6ZIcq,US0c5CiP9PCLlEdPqE)P
+`iNMNX"m80Qa[CELY%350-SNE1CMa1PPDMh+L+aUa9V+-IRE2if#rZjUa"&")Gda
+91CUX[h`C4C9qS+4YZYJea4fIH4*9eC[H&ZUe#N)(014XXQ[k%9D4)h$d39iDp&F
+[)BrTaRD1+"l'hTccCQXYd$qrBG()R&i,`1h,+KECEIr1,,JP1XTHG!HA@q`jC6S
+KG,%BllVQTekUU[i5T,H@,jKRmq+2CV(Nph&f$ER6b'!k*ieN"9Fl3BECl9JAX+N
+NVh5'D*q)Cl8ei[%T4%JlbCd+jr8CAqkS%6NEhhI"FA"VpM9GS*3L+h#"d`1QQk3
+%3hhD!%1cCU[SBR&F4$ZjfUqB8H`d5pY5+LA0"-KEVhZbm+aD*lZ&Cjr0&h#b*BJ
+[86cLC1BkGlNMUGihY6FB0Kb1Y)*ME'qdRR(RZ"h!TC!%!3!!2`!3Z#2ElVJMfqi
+!!+j%!!%LS`#3!mi!$jCj!!UZXJ!!)LS!N!32!&4V8fKPE'ac,Xq!,RKYE!!!Fm&
+849K83eG*43%!rj!%!*!+J!#3"d,"e5(69&&Pl&CI("#rGY*Ph'J)J"49-!5AlYQ
+YRqfUGTfD[[`0Ih9'M1kSKZTKU9&4m6)(S4l12`e8HGDS[55#H6$%!P1YjKbYIMb
+lb$K&Lm56'MUBc*0VA2Bh5GEJ%XU[JH$48-(Br)K1AUiXZl&!5ZfLReXa,q%3UKU
+!PZC[IEYfC(8kSpX-"R51E'XRcXFL`T!!4)ZJTqKj)5(Qq)cG#81(kXeTj$GZ6@l
+HEkFJXCkVRBNSkhUYD3K0'`0)f)#@"UffUFkM)C1R&4CiFDUTa3BiiaF`YHk6[Qp
+F96V!AfRL5KDfRS@KS%Bik@e909D*$NLM)!2U03R5'Q(6I')4l`ZqC'Xcp6G@)6q
+#Jha4,@ak#53DZm%CmiUXY$h-$@UJ!XQ[*QJ$R#qUaPJ-5Mr5I,i)[0HFpm&3cCa
+1KEmET,VaLGc)$FdKe1f8AFSG(%IpcJp8dLAc6RRNQ@G&3*Y%qZmb'0,SQC00%$`
+`5($3IDSBDH'BU*!!TLrK&)S@Ac$)m0lQE*Zl$YPU+,p&+GM5G`(*J0Ni5AKCdh!
+dd9S0ZFHcN!!-&9+0+BLm$)*cA2eVf$2UVl6&'e+Li&1NPBCRU[#Hem+c5[4r[RK
+8dUKJmPZb#ZeRfB#`fUAm3#BNcfZAXr)p-6U6J5,Mq4`X+AmM9F@0#TaId6ejY9#
+EYpAkS`,6bJM6XT!!j1fpj4Ir%)Z%R@-QG9EP9"k+c#)@`p!+L#E`P'N0i%-KH$&
+q1c04N4ZHp24c%6UDpPZ)`IDGdQeim`[fjcF+k0lplY0bcQ'D"XR36Shm8UHjH6`
+90+,#%plG%C8qD8PEkR&E-'Q&SBR2hjYSN!$Z"KjImZk6"qjKZl-f58PUD4)mA-q
+Z36Pe5C88V4mA`,ce'$JY'EP(B'B*@0`pXhe,`a@d&S)NN6*eSXXXXFKdfN#J2r8
+,IK1P0rF9dGZN%bmF%L&%H"6ESEU2+paUGBXldC!!lp["fY'i&`dR2b!p[$a+MKi
+4&Fk"VN1AFrFE0ciI,dKbR"[lGe3*T(i)NS3H%d,'4GprdTPZHG1-MBcb,Pkfjf6
+r@2KU(!R)8KbMT,(3Mrr!m(FZ`9TqNjG'!DPk-V9TTfFDqKIL5k$(R8E8'U65HCk
+!!d`I8h&S"*b&kjVTXF1cUeDLlH[dKJB,Cd%cXe5Z-I8JH!Y(Y)T5LQKdacQC+i+
+fqf$PPQ8r#('0B"a&LS0LN6kU#hR-4("200`C)NN+jF#kB*C#3G#pE!,FcFr)['@
+!DiTB5LS,mkf0'Q-'S8Cjr(4D-bmGdBjCeI@&-kpC-krZ1$Z*jqUjfFlHc*E#R!i
+0Lj)ADc,`$YT8X)iH$A6SZfiL'A2)SHXUMkF,IhRq(jCVG8adaSeF1["&8R2f-'S
+IU1+,CJSf[%Uq!Hk*+kA`'$r*A,E)J)VHSEaqSE[lmq6!MQePUU+2jZ@Rf6I4Iqd
+m&FdcZAkJ%-K8&+#kC@b)MVq)[aRM9B#pNZY!,%4!@bD(Dm3h!YHGEJ#-9q%2"j(
+93FAr%6bT)i2Ndb@Je+iJ&C*CVY#RSaJh1"6R#`$eSed%Y5pb'cqC[dZH!`6b`[N
+,(h$5c8cXr&kS`XK2%Q`1l0@(kR[3XdU#a9#10N%13ihFT#$2LS[@f$35cXlb[GZ
+5lIm)j'13!#er0YL(ZiPJ[F2*KQFR0)N,IcYFdmNeRDXMUMG$91I+jVibR$hLD"m
+2rPhQSHjpmk!d6ELP*3rZhkVh2,kIX"jUfm3!bcj-d9480bKGi$L%UKM5l(%PEX0
+CIaUdr"IF8mL0"GfjC+F'&FEdQe`RZfb+qJZYaihLa9jiB)X0U,+QVmLrM9TRaad
+JiairmlVV,J@(M`PjqSZF8c0@,M[%"(G@F8j+(QhkJUAj!(q8m3jM9XI)3@TL@JA
+NUBSdJ@`NC"R1DmdHD[bkcdc$b34`+YHNiAPQ-US9BAk3!&Xr-RkqRcE#')4qVd$
+0LV!c2&bbV%EX1r[QL(DiFR6kSM-ITmrGIY-j*LPXVSrSP-hM+SJBU-T0AB8bX@q
+)mfcQCZT4J*PS(r,)![kl`G!#+8'hR"aBIfpKCT4#F-JXI8ljH2-Mjk5f4lq4PD)
+N1hMX92RVR#R+(TkN!9BK*MN5)'f'T1eijpU@Rc-PY@RSH1RUb3JR*M$F8CM8pb5
+aYKITqLe[$QJFLHfYqRTYrk)bAZ"3Y[CNjTVNjS#0P4aKq`fXeYr&IiP#i$23&9H
+IC-H2CBFqGRbL)jZ1CDU!q2eCK)QIE0%A0)!l`PK)8Ul[&bFYX-,0II-I1*d"ZA%
++R(`#9k)lK-IRP+&TXHY3k*f4GdXcB#,%%SI)63%"K8#RaU-EcZk5j@N&ZN!#XT!
+![$"q1DN-BrjJS#3"r93c+UKE24#f&C+6Nh0('VA#lqYVIU4"e4@C3rYi6f0%TTX
+ReH5hX-'2'$U[!kj`+)['aIZNZaUfGV@C(E&8F[F$pjPQdF$3Q4I5dR(3FPT`R!k
+E4''[SDk*MFeGC#&q"NFUIE(1X1XHZ2A+@l3bRXP3"6&T1FDfE&+R8VUad")EM0Q
+c(pLZplMAJ&c5RR(NajjrBH9Y1S(p+XN`-YdiR$bM2MF-Ve25(+$cJi(X(mTA(Ja
+*3cqb$cDakMj'ceA*,Am0)ceddSUa+N&r`fjI1dr8'HYb)[%JK&H(h2*&dpeir%i
+cj+0cFqd#!Y0P-6`ha(Lk&+ZUB`I$&T%qTP@SB')VV%c&j&dbN!!mCFq&HhbDq6#
+YbRMC$m6,-"%,*MZ1h+-&TMMrr'DDhbmrN6mk!+BAa95K*LX)rVkl5l`!(%%8d5'
+Lak0BjUJU$MYk`+eA6NA*FEE1D)93+SH#303D`%JS0jp#Ar)@e08m6%,,JSRUSj!
+!KMA+R0YLk+f#D)8LQ8q*k'#@-m(aQb8F+Z@b1jk%KQMT9ZBh21&Uj`"I([Dp8a8
+4)9U--HK9Aa"hii"+mPM)V(ZD'M6lQC[4h0lPa4PL3J`#$8,E`l%641%Z-(,l*"1
+-,%f`@,CX`I@IaIjCPk'pbCqG(LM@Kh(251!IS4clp$ZCiP*$@9jEj3*YIG9"M"D
+IjiAMemS%5'KPYMNZdcHLbNZVFJ)-NkDhI4SZ45((!p$D)"k@"Zh`UHIl"&m0!9G
+mZ@KGFbi2h2),`K4k5mN""afF6CXBCk9A)606*Qpb6%Xe*A2YH6&P45qDQP@8dp`
+TFRhMh@)[FQY!&QAmkUVVcD@2%"1R'hPYR$ajR[HdPQ&DBj[i+CX&QVd*d@aqh8r
+%@Z-Q2RA3,+0aa[4*8frlR!Y#Tr)V3VMSF5T-B(-"Xi[Q'YEYGQckLDbS'UmB3X4
+5(k-9lU,SZM2%XjNa22emRa&hfS2k6&!Q5CCAr(k@D%jpYI)RIYcCLkhK)MKZ#VV
+FEe#SePX&I403#`#@,U-[%#(fiSG1#'mZ,,01M'NiB5kDcaj*KPVP[SeNeN9h"a0
+9`E45*0Mcic9@IrCe4ALcY",pCdZEKki98)iPV0aKN!!5'FHl)(m&`L4(+i,LZXL
+G&!CR,L&8q0A[rI8D8IiUS%SVLTi*iM)QKdh!fk"D%KaUFiZ2f6+r*F2+A%M$QH`
+RIa&2hfSISp5eLq%Z!-qV9!G+3F$5jc92r@i[@Hh0XlNR#Erm)m63H1Gj$6e,[F#
+N(P)0Q1kLea"IH*MPKkdD,AfU"Y$LAEPc&CB34r%TlXb`T,"P[MD6mGUBTfHeRX"
+'!RiN!QEiG,YfAGFJIdYF&CpLAhFXTAr@8`6TbD[qM&[*[3a26rNI8k@%d&l)(D1
+Cbb6laMhK`3Q#fmrYImV[fVjP#b[rX!0R5DXKa)*K-Mh@C(c1-,Pc"!M%&)0e+'*
+VTNMaf)NVB-d&bR1XlH(G,58CL*(HY-iikp!#IAS4Umbq3BjDE9km`[$ZN5$T`$j
+05)rZQ0Z6'h#)ZUVAr6bfU5(pMkakV0pYJ4Zd+1!b&h6JM'Q+'E5j5H#Plfd&q9`
+(dZ$K14'H(@0X(N5f9Rd&eS54%-(V5I6S6L'"ZCZ#$%JYI@48mNahQ#J38Db8m4`
+4EGYMJdeTMCT-Gp-VIkdf$kj`crQ8Iq44KqBESc2GSb0Dc-44cS3&!m@VX984PUR
+bLJ8k$RYBdQ9&5RiIT,NXP!RmJA8p$QS@)Z@a[Ui*q1hPjK,'[--(0`LXTbDcbEM
+E-UaZVKU0Sh,@)0U)$VFa,Z-A)PPQc*aTP3#Hf-'h!%)R3QER4DmEb(D5MNBq3f4
+8#Q4c$95YH#kDBXZiIq3$[!2GF!dNKhHlfJjdA4M(T),N`&4PF9ENCelj,QicB2R
+1k(b[l$Q@%2p(VLl83a1q29)QJ[+#[M@UTjpSRRp-eFVM%X!m%Kb-pXBlam2b%PN
+iRpQiYH%`([eHBUTc'S2qC6cS%F[&PJ0!N8)QC!9`iNM1++pGcNC'm,ZIh&EI,&"
+eRXlM-SfHUL()T9h8q8j#DP[9XMB#p#rZG285IlYq)1fe*3Papi#Qa#1i3UkP4XQ
+f9JCqMP+j-Ym%[9cJ%$biM6U)XGE%mC3ckb6F#FDI,39C1SkYHk5k93+)d4pVTLc
+BqBeA5M0c(6Qj%AM-"'J(FDC-1hlp'dELN!#Zr#['N3k9$*R-*4J9IGPGl!+jq1k
+iKP54-Pf*4JaqLepA@-RAiZJJp1KpGC@3!2qELj)6VEJmE6l18Z5&i!J18rME2X4
+a[G%UI,&J!&cp6H[m[A5H&[H4%,MeI'GT9[lSe98)$LfdN!!E3!CrCMGh#bEq[p)
+Jl[Tj[i)L6,CP&!plBP#SX&C3@hrrf%IQV5i$IFC,$i($eDR#p,ja8"-9lhdPSam
+FIP`YG4p4N[EJ5kFN6T*QCJ9UE@r,ZiDGmkprZ6fV[c0hY6NIih`9'@Z%(@5[6h&
+Ndem4H3hiDi(1e,$Q@QdF%+FVT%m,VIK)Ic'S'SXjAm%l$I2B&@eQNQ)ZdRVVh54
+0YkQ&P8[Di0bS&MGN0UeqB*!![k9qhFiM0##$cq9kTZ)BiJ+T9l51'8I8LQAE%$r
+[mPNjlDDk$M%(eM4U)Qi4Bdfc-pY0C,C*+hXh[E'FiEDS2Ifiq[VF@(SGcIck8iJ
+pMBDEF&6%fCXhfE[jV[c84"ajFpc#URVRc4)m8if"N!!IIHXM'LTp[$UJE"VPFCR
+%h!HTVk"%6[a9X9(PBP%)Rq+-&Xp&FT!!k`Ek6hA+b[P@%C[kCUc1d6r`eK''(al
+r*CdiJJa1[`,R[8&Z%*Yjlb`q*l-rb'4`mlbbelCTL*!!aM--ZKlDpFlf6pbG`dB
+M#T9%)NIqY3DNRa4Q5MP!V%1#i%6)J)F-qN#2H&pUKHd,'"$"$M6lU3Qd8PbbN!$
+jiHcP5L((qRh8RKl0Ifi*0q+9YD52cEGaJA[KR2P[4mhL5)8feKNr#0iZIR*ITH(
+,f)Z1FVJV2G[GTMLP41V8aSYR96L`2+4KK%4(6+e6Zpcl5[(1RQNj$L4GVQi%Fk`
+U)&b+F`4c5MJrmLecah)DA,1L,43rE!#&"4G'1ajD9@cqj0RkBYbU#$m8+fmjm[R
+A)&q(C"#B1qG99RHC)5fM!L53!$61(DA8[$+8PG"*IHlNAG+DZ@8rde`BhpHCZaQ
+9lIl&p9b98PeNMSJ2lS`UAJ"kP1rIFFhIjcdpprRh@@!$[Z`YDUXJ@EV"8M2P5-h
+rf#3#a[Yha3*+9McmA#1M'INNeKkj9`0(ZZ$I'(m-YA*j-MD5LQEXh2lF@XbS[-&
+aXrB%4hNMV[JVE0U8mR'`N!"C+a+6V9hKBJDA!ZK!pI64@@2SAE-CrIa+V(%FUrD
+qj`KF@RdkbMi*K*6F''hS2EqjV-YL&CPfr@CDj+A$Df!R((SUA3@j6RY3K21#EG$
+,Z%GA[TUrBGR'blS@-0PaC3!bP!KHNJa*8**T2UYq)qR&8mSE4!aYXCbCVfj5phQ
+d'bl@N`(J!NGTYl@q0P3a-@qZA)GrEmqk[3G1)*42d0kXkmmlD,DHVR4A*NDfAfd
+!eRceUp4rkZ1$dII5D2*krJMYLZreh521*-Fd("0VAA8I@D3pQhI%Kpr9(aJP(e2
+#%BGPVe!Q3e)@+0TFV[ZA4S1HM@8M1qCf@E+@b98%f$,*6dQlG59m6Pam!H8BfrS
+Dc#YLcPK9Cb1LHl0j4VRkTHGDG)e(BVF,X9M+8VkSEU5U#aG-,b46P$Na+STq*pL
+ICmC2ZCDaFrlrX3dX9Aj$$ZZ5dT1rT$9Z!K,T,f9-hclQbb2$&!'I"CK)XIFmpbU
+XB3Na-6R4eh5-(A`AIe1bTA4#ENrQUlp3LrD8NTl-4fq9QUA5[I'd'[iQj-KS!bX
+qRfDE,E%PX4cmC0X%555hB25-P+HbbLZVKp*H-plT##CdENlA%k*hBVXH)pcH%#C
++c+Rcci'q#N)C!,j8mQ[6aPIm-+H8N!#kCG&a9GT(2YD9&L5522(pQ"Bjh!r&14'
+)m&l3F)-U*BNm8fBjKURYZYa9EabCBLXNfY5GC'Q$dSZHhHpmLfl4!D49"6JAM*K
+Sb!9-!5NBBZEI!+eY5+2pjpY38malrjrZCaLQ5&AMa!d,mf4[+fRX@J"TMVE+kFi
+[AePTfQ@aAYdX!6c4hpqFM$1HF-il`@-f(p`q`40dcNR0N3dDe%IGF'BS6[l"Bqe
+c#Ja6S('`Yl8b[RNIbMaHe"SP#9XYa'$$GG5+B4P`(X1,6C+%BG4XbcHpEMjLZjE
+'qF6j)8!(Z5%&eQbIIMCYST*&40CX5ajIMLD+M1,FQT`01L"kQ-!LX8TL9h'5-*D
+K0TSAIMJih09QkLdBV@Rh!eq9+4hZDS+B8rRdNk[$'BlNj&a#h(r-4(i&@lIUGmH
+SjUYcElC11I`E2cS$#'lPB`h'@Rp&3J5&MAY6E(-cG+rVbT+DeZr[80Nc$P39'"I
+&e"$R!`XFp@Q@[Pfd82(%`I1P4EkD2pIDBiD6M#MqCbT(Xea5+F0jT&LDaHYQL9c
+mdD!P@8BM8!B$3YPJj5HU+,-EV2Zl)M&f-0hTPVdrKa8`dPRe#*TU+UahU`B'2V'
+cmIRpb2)rri8N1U-Vc+`N&!#T#5JHh'N3ZXHM5*4QQp,&TlFk6#ece%[#4,-Z!1X
+lLQ,Nbd53!%p2jepC%$1mZRT8IEU&E*p2p0p)hNr@fCk*j&#RQR8hG!KpJbEUH9e
+9DIqai,[H0[0hf(SGS83+r+QCjZTIJGY#Xl8Q*6+G9''4`4Yh%5jD'Sd!5%T@1qC
+BfVql-e[5[D*e'a[R02R*Lh@T3"4M)1"VePRPk4GrFjMI`5U(`"SRCdTqbmQcEmJ
+qeN[RK*q[*2Fq[4MN[qa6kDf9qHPRc,E5p3mrN4)SU8NC-V6PA%NqDMq8a2M`*rV
+0TI%0&a4A#AU$,HQhh0krff5+FBf'ePNPlb1jfbK!E&m)FSNGDCc88fi8[VJqArD
+$aaU$RC!![bJe!F0A4,C22KcLMDiF4bP-iQMNE9#fZV@R!X8I)@J-mBc@bSLrr&+
++[S'k`$UKARFE3PhH5R1JTP%QS&iVG)Afp,E9&c'2MiPRrBKprM`9c65Xqf&dBEX
+)pZdcTjCD@0Sh"Qbe+44VjX1dI#T,'pEJPpM[+%4jPN%IS8A9`PG$P5lp0["+!0A
+)ZC4[&IJb4jb4KTQ#3L@,(Sc9,iqdA)rHb%G"$1M'*VFR3bUa#U3R("hGMD9&DJC
+-H+1pV%l3*VZ9G'qcAA9HaQp`qSd5k%cTDHLC99GmR%j)"M5Sm%D[dalH+bEK2j6
+4h!)jU8[imq+p08K[LS6je#bh'Fm#FDbk4[JTDaP3h)$$CfT0B5FSRj%f3(GbVjh
+!`JPlRm"0GbQ&3iRh1QkY"kD0$9EPJr6bNMU-5VhS+VGir,@3!1TFTZrN+9X-p6(
+'!VH'0!mEik*a&I&h&B%IAYX3m+Z8!!hLm!HV$B@Q,1,GHi*T2+fTlL)5EjK8L6K
+k3&)LCTJN-"`1)'Ph'ReIZUJ!3b[5f'P,Qq[dE5rp!mer6c+%PejdYCL(lD*&EMk
+EG03#"k2UC""V'N@B@P@q3Naa4pRFQ6+(d*Pi4#3"h"N-R'(ZUB@DVa4m#X*a*L(
+M[ELF1*SYN!$eMGp1F8*K81&r*0S(6SrGVK&X%Y[jeL(4cDf"D9`[mDaH+PCGDXP
+d2Vf+)jJ`-f,E3bDbXh6Y`*I24Nl$ZACP(YURRLJ6F26dhAQhC2Lbp$c4R259Yrf
+ZmGDUf#U-EPhm+iN'9Xa(+bJA%r`U-N)ieJmCPifmh"!hY)[0hkF%p9[01[[P31#
+0h3GYS"VbKGGb%8Z("CbYjA8%cBJ9HRpT*b`kkf,3*LT8[KrbSb(6`UIXV#p&1Rd
+XU85Q9qV@P`crGi1S5ZckPYJrDM*GIcKF3)@Pjd10`1C@V$0caIK@6*!!Z&,[%%+
+&DND4NBAZbGlU)[JKPYmlkP%ae1'V%Yjd*6i1'F@2N8[S2$NDLV+c9Hf)('AH1(Z
+6cU0lbNVlIed2U["jSr!4jFFjB+9'[aC*kiF,225cf5I`I&08cFe@HlD4Fqe%&R(
+(3-Rkh(G5(m5SEKFAE0XUNffUMm1+K&UE4S"UTYVcY1R%KahYe2AfrZ`rl[K(*AG
+,PEBJjffMH`'[`UH&IPd[2SMq1[-(m8NE4E&&'%ADeB1b*PdUhf`KY,d%#BI"GiT
+hUG)NT8EqQ0cllF$HC4Ulqk%ZhFN"RlAULMd8UQAUSL!LjPITV%&N`0j6q8ZCP0m
+4cqC6Trf!SQ"Xi,aP22dKPdM!,*Sq"8XUqm1N&`0FNPpl'k`LHLmGMkMi2fQc,q$
++BM+IZNPcJCGN4(iFLB@YQq(dp5hp%X8-pp)1%#F&"iJFP0k4c&jEQ*f0fm1Sfem
+EpCd-p[mFBl@hG$rl`lA6fUBf9KYpq2%(,VqB4a8Ye!A6PbScj(GIipQ1'ARl*b#
+!PPT%Q,2JM$0%U6'$r1DAcMFiRRfN"Fm%Ih[Pk8eM5ercmUiBI`X`9r0Tq30d%G0
+Km+fH0$bFIJ++HNKMq0[ejS,paT4-mkDC1kGp68RlCi'5Eafbi(`YEI"9e6T#+4D
++KYSN3-Yk8c"*Bc8$[S32,8&P(-TDS@L,qH-!`-j@SESi+*d#"rIib(`G1!hc3GK
+4TUpJ!cX9XeA)me4i[[5&&CF(kkA(elPplPjU,T[qY2k*3*VRCU!F+m*[3G"'3J3
+(kP0h0Xjk1erY*RBk%Ra!([dCL%8r@em3&(9lAZX#6-q1U',T8C3d4EY!EAS(MGb
+G'BTGhE6$0Tfp(2mJ%0164HEXN!#N+IaCZ26K`ebI[A2hPXqLpCV5BLVBf,'J(X8
+'4EI(ZV"aqj8jjiBlHJ+9[BX"-pCm4ePLmA6#6k$`a8Th+k`F-D-F[5YUb9FHdRI
+#JKX[ZaN'BHcY))BBebC$Y8FcT,QIc,df(-m*&(dD4#hEd*fiH%qBaK8er53S1dB
+`d'pf%`Ga2S$j+cRQH36TfBaBf2U0SYc"-`*4U0ik$KAQ"id`G#CqBQDll18%XpM
+DP!J,MEiVS+dkNrkRYmhMXM@MGErPjld39U`Y$@UmS8K"GaTQL3T0e+ek`GQG-5@
+-N6pj'E&)mI1G)Q1L3C61mXH8#f-%ma0pX63"jFZ9FKrk1D*BB5[Y3MmdFc'XlM'
+$)ff'm9R6N!!`bS9m9`$D3IIp,9K5PNa5V"KIj@`jqA)EfCjk6lY2#9f@$hM@FB-
+Kf'jF+R8Z-6Y2alAS62mZ#)MLT,pk2)brlL9dNjGlT1E)8LlX40H!ZRf@&jM)22,
+-BaL3!&DfF3A`iE$-eMKcd1VYLrqjiIbNiqhQ3@`@(9RFNiFa2MY4mPPQ2GDSk2'
+M5!$Cc#bNJ(Hi`U-'-eYeHm0$(f0VVm+QDHYRr'J2,199GmDY3-N(*N3fC#Z"-TB
+)pqNf6Zd%(I3i0k%fE%J1e+C%Xq1L-G*NbPi"DMS2[-HM(C)1T("*PBcE63%V&p!
+IB[4@82R4Up,$1LTC+k1car@f)"db,d@[NYMibKLGmfLQj(iS`5E@,q[9%PFVHM(
+RR'Gle$JBDH,Be",3IkCK9FpdQ0)6`Cq-6BVjeZka*qAYH,5dpD,B8Y[IpYbZk++
+JUIB`&%,8ScUl%(Y3"ShFE[20*J2FL+PbZ!qm)eB8mf#4,SR(Laq6-hS0f-@fFr(
+bBXMmY!j6V`#8"`TK0c`@VVk)-MkreLc`)f9dcjP)i1lEkYXVCYRpZ+C5X"R%A!H
+TUp6)E0GG-#AZ8jA8G34[djMT[6IJ-e"##DQ1b&lZ*AV$Y"JhdU'ArhL4N`LAQ)b
+4E,FdBK*edS1j%+qKUkm*Zi2IDF)L'i$B1#!4S&lqU@Lbl6EFT0,&"PPl$mK'lNI
+e"a02,Ba4PFV5a)rkC)+0bfHfm5pkkYLC2'p)l9fAM%Xl@H[j[YJm1JeQaT1Yk5j
+l2M8*DUY+Y(QMj$i(UKC%0,#J(b8H-kI,i8TjY6S&5)&GqeM"5%q+V"RXiC6NbhG
+h%iNjAFej$%Vd&KrcZpRi)&`'UADKfCq41#RLfZfHl"D[U3'J0&R26GFHHAJ*$,S
+mQ"'Ce2L0*DZkKLe+29A&N`MfCQ,@im@C8XfI)jhq,P!8CUX3")P2GN!Ud86pfLr
+8mS&-bLMSbj8m*H9Nj4HpX(,lmMhI8#GDZ@UqcheVb*N#KABA+Hr4ch(eYRU@QQ[
+KYdVda90ahaS@P5,M*$%h)rJCVa#%"01B,"Eq@aMNTj8MjQc!'L@ej%lP'"bA9m"
+m3A+$rU)1ji#)M&QM*k`30',LEXa"$#$D55&VES6fK00bc!X-ZK%$VG)jQVmX&Ad
++[(`L!XM4eLPm60IJTCI@r,#d-G,58DPKQ1*J-9r@4Drc[P+N#iHEf)Cp(R0fV2&
+qEVYdNZ,6,X,$!,BV9#r2ia*PHMVZ@be9JC,%,6h!B+(HG,"TM'(kT2B"BXBh4P1
+p9)1V,l1qp3Q55RN88j&A3URT[MXDj84Ceck[mV1-@e4pVbqU4$'Dr4E3Va%KBYi
+Uk1F"9SiJBljLUh#lhAijQ`'#+3@%QF+ARjRYI@l8i2T9'm%@Hck"CY)09H!@lG2
+94qqBI9UhSlhPCff+I+I@Q(S"BGi2ZFCK06$(R(Q@[TIX@d&BEmS-E)K$$B&SS2#
+B!aDB[6U4B@e[EcajQAicaKbZ&f3K*r0%L+$JKN5*(0JLb-[HMpBk4b*Eaq5N+Hf
+q6R5)Bi[V8!8%#8I9ikV&8!+NTE%!LTF2VY5UPj!!*6pJ[DVk3`('NYJ,bSSL1h2
+blrJ`q@RTL(-$BH-"a0L)ch*f0a&3pUZ5EQ0)3kM(hPU#ia)9BAFCT9j6,8M!M%b
+[)SI%A88lKaLle[C5'$#ImBB'X4-lMBKH4$cDZ`QcdIJRa6JJANfKVG!ckIeh%N`
+R1Vm"0TmFp9!9K6i#M*dLRhA4rAk9V`PXIGcfG-4qN!"6lLm5`5k26%JJM-0f6YH
+(ba[!8FC-KFhP$S'C3VG0aTKFhT!!#k#j`cbZXDY3-4QqaL["b6*)$&&`N!"fYl2
+@B)VmC8&#d965SqmLiLDaf()bj)'lNCLeK*M!5l*q3eTN3rMm,3N99*Z0p8Mm$AL
+Z,cTNb0MA,4-34mhE8qi&1F[4kb%Tr'E%$-V`Ud52f(m$2TD)*kEbE&@6Ep6C',D
+BYVXFaFMl!+HC1ai"KprbGTqVah0eXJ,c2"C$Sf%8iMC"@4ihFD"qPalR!6UUR&1
+khA$K&@MK%0cG,A2!N!$VVTRY'KU-L`N%'8mlXhkb9DMhSf!c#N4@NFR9"0ZVJ3i
+QVYUV#KjVCLfi4[aBRAZc(,qcLfIY'e#T$KC$B`Qj$i+rI$'[a(+mZ8XSi2ZFLUZ
+hf))6D3R%H`dV[K9K'A`RGd#PN!3"!!!`!%!!N!N"!"B!N!I1!!"4@Iq3"!#3#U@
+3"!%!!$8!!,Ea6[1fm8lc!*!$cJ!")lS!N!0b!!9&@`#3$NPMEfi0!!%5,@PMEfj
+038063!#3$i!!N!N"jJ#3!i!!N!32!%,"e1([a#"i(T,V1b+63jBp6KE&40bkJ6-
+15jfD#UKj(*k(jm"JiedH0VMYC24mX`HVe+GMeF+dQmZ$01k[6XH0K4dq8mdCCkB
+T6YB8X60cfjDl4FpQHiI,ZRhD$mE*L4*AjH@8Sa([GeP4F4lYQSHRkQ1Y`b))1"i
+N"5,R8eJ!TC!%!3!!-!"!!*!*!5,6!*!(FJ!!Nh6rN!3!N!T[1!!!!3!!!D1+!!'
+LLJ!!"8X!N2--!#!!#!#L!4`!J&99!*!$$!!S!#J!VJ&1!,9993#3!``!)!!)!+)
+"(!##998!N!--!')!NJ$`!CJ!K999!*!$$!"'!+B!ZJ(@!)C993#3!``!+!!S!(8
+"2!#(998!N!-1!#J!+!$#!D3!L&99+!S!N!--!#J!+!#8!4)#!&99!*!$$!!S!#J
+!M3%A!J&993#3!``!+!!S!,B"(!3"998!N!0D!!%!N!9G!(!!F3#X"!*25`#3"dS
+!93%6L$T6Eh*bH5iJ)%PZFh4KE'aKG'P[EL"MB@iJEfjXH5"LC5"`CA*QEh*YC@3
+JEfiJ5%C6)(C[E(9YCA-Z!*!$@J!"!*!&A3"`!(%!V!3#6dX!N!G+!&8"%iJk9'K
+P)'CTE'8JdPi`db"YBANJBQ8JC'&YB@GPC#iJ)&"XC@&cC5"eFf8JDA3JGfPdD#"
+MBA9dD@pZ,J#3!e)!!3#3"@d!CJ#"!+)%!Np,!*!&"!")!'F"!iJb8fpbFRNX)'*
+eG#"K)'4TFfXJFQ9XBA4PC#"PFR*[FL!SAM!T)'KKFb"[Bf0eFR*PC#i!N!0p384
+$8J-!!(i08`U6K!'ME3$X#h)$Y,)b+b[M@dhH@qpUpkCZ*YH!-3"!!`#3!lUe$)!
+!#@NUrZ!"94)XqdV)@`lMjA1kK9'1XMr2MrqZ)$NhV"Vi%FU'0AQ'BU0RDr#XAMm
+&lZ`,`,#T"L)i6&Fq[H[,VD-C!m8F@8XE1!X!N!0-!!)!N!8a!'F!43#Y"!44G@P
+d!*!&#J"3!"`"%)JD9@j6G(9QCQPZCb"hBA-JFh9MBf9cFfCeE#%!N!8)!!i!+!!
+ZS!)!!3#3!p4"4%05!`!"%Je6#TXN!$Z+L)S9caE3Fka%E"$e,$pr2qcARErRlXi
+-TeMBB58U@)999@,P[r%%XDS&#l*P1diJqC!!(`&8**Mk0Eb&Tph&fGe0dXKkNVe
+p(bj$h-@Aak8,&[Q01&G2PI8,*$a+MT*"[ZKdYI"dDK@D)Mi&jNl(,(@,TA1"CHp
+m&"bi0FV-TR9!6`FK$%aAP&QFVF'lCA-L&paq$(JIm$a!SNrM'Ub)p-`20hNS80Z
+-b('VTjc&BeY4ZFc0eZQ"Uj3hhmRl$1Rr92r*E3#3"'i!!3#3"@J!HJ"m!,B%!Np
+,!*!(5!"H!5@)6P0[E@8JDA4PEA-JGf9bC5"cDfP`F'9N)'*PBf&eFf8JG'KPH5"
+KFQ8JEQpd)(0eF("[FR4PC#"LH5"dD'Pc)(0PE'BYCAKdFQ&MG'pb,J#3!kP"4%0
+5!`!!YJe6#U-#!ZrN"*hp8l%2ccCldpY8G0M(R)VSe!Q+HRCclXET1"!2&6YXCe8
+*9P@3!b(HE41VqJ%,NJpJLErjN!!"IXTN0pFP'NhFXXeN0%iKA-1K3f`f6F6Y%d@
++CqJd-B%kIc8'8cl'BkDNN[dmr5K3rf[-JcXqPd"rAJ@qC[AL9b'HI%[ErHjf82f
+*dc00USVP-@0*@#ld!T-Q34*[(afX!J#3!cS!!3#3"9!!@3"N!*-%!Np,!*!&!`"
+%!%J!k)JC9'KTFb"KFQ0SDACP)'Pc)'4KE@&RC@3Z)!#3"%J!!3#3"8F!@J"E!*3
+%!Np,!*!&!J"&!$%!k)JR@@pe)'KKGQ8JC@jdCA*PC#"KEL"TEQ0[FR*PBh3JF'&
+cFhG[FQ3Z!*!%+!!"!*!&UJ#%!,i!h!3)3fpZG'PZG@8!N!8%!!3!SJ&L`!)$k!#
+3!h`!!3#3"@N!B`"p!*m%!Np,!*!(23"J!21)A&4SCA*P)'Pc)'j[G#"PEQpeCfJ
JFQp[E5"[EL$5AM$6)(4[)'0[ER4TER9P)&9Z8h4eCQCTEQFZ)#""EL"KC'4TG'P
-[EQ&X)&ia)'*jG'9c)'&bC5"ZC@9NC@3Z!*!$8J!"!*!&E3"Q!)%!SJ3#6dX!N!8
-%!%J!C`%$L$*6Eh*bH5`JBR9d)'%JC'PcDb"bC@aKG'9N)'9bFQpb)#KH-#NJD'&
-c)'pMBh9bFQ9N,J#3!d`!!J#3"6%!C`"&!+d%"&&eDA3!N!8+!&!!(!%3L"T9EP0
-dG@CQD@jR)(GKFb"cG@0MCA0cCR9X)3#3"3J!$J!S!#kJ!J!"!*!$I8&%3e)$!!"
-q$9-+Ni3"Sfd!l!Yb!l5b-LXVieY0hP[[D[HQELEAJ$%!3!-!N!1kY3b!!!PT+[l
-J!985,2Y+b&X1iq9cZS94MV)rcirrVL!j0k`Dq"(+KM9jKQ+MCf[`V&ir"HlX#m#
-`U3BL1%aA2VhVbkfM'32&(&P,'cJ,!*!$@J!"!*!&A3"`!(%!V!3#6dX!N!G+!&8
-"%iJk8fpbFRNZ)#"*ER0dB@aXBA4TEfiJBf&Z)'pZE(NJBQ8JF'9bCQpbE@9N)'p
-Z)%K'8b"fEfaeE@9c,J#3!fi!!3#3"@J!HJ"m!,B%!Np,!*!(5!"H!5@)6P0[E@8
-JDA4PEA-JGf9bC5"cDfP`F'9N)'*PBf&eFf8JG'KPH5"KFQ8JEQpd)(0eF("[FR4
-PC#"LH5"dD'Pc)(0PE'BYCAKdFQ&MG'pb,J#3!eS!!3#3"9d!F!"a!+`%!Np,!*!
-(5J"9!41)1P4SC5"QD@aP)0*H-0-JE@&j)'*P)'4KE@&RC@3Z)#"3E'9KFf8JGA0
-P)'Pd)(GTG'JJBf&eG'P[ELi!N!-S!!%!N!A-!)i!i!$5"!K$EfjdD@jeC3#3"33
-!"!$$!@,!!J2S!*!$e%&%3e)$!!%5$9-+Qb3!1iU)LKA2&Y"cV%4X%28X2hmrl0H
-G[qIZcJbR@0KK*5TBK999BZ@rm35aUJ8,XQ8l6L$jN!!I!93NQ2Se[)@RhFACh8h
-5b(U5[AdI,N2FaCI(T3X@qBdi9dq9p3XN2%U1NN'qk(5em(4U&CSL2JAQ6XFXGBZ
-PFi&Plh`8(,JebXbQG8"2"b%-6&H8@CbY`EYPFb)Ah(i-H"r`2%#L6q-DV)Mdc!m
-hH5K3fic)FDZRR-9M@e'jc-h@kB'VP$IIbIX-kIp8rmPY!*!%1J!"!*!&8!"C!'3
-!N`3#6dX!N!8$!%3!5!$SL"P8D'Pc)'&bBfKTGQ8JDA-JC'&YB@GPC#iJ!*!%5!!
-"!*!&4`"D!&X!P!3#6dX!N!8#!%8!-3$SL#GCEh8JD'&fC5"PER4PFQ9N)'&Z)'P
-ZBfpbFQ9MG#"`BA0cGfpbC#i!N!3-!#J!+!#f!4`%!999!*!$$!!J!!J!SJ%F!)*
-993#3!``!BJ#5!2!"Q!#&998!N!--!#J!+!"e!6`!Ke99!*!$$!"'!+B!ZJ(@!)C
-993#3!``!)!!)!+)"(!#!998!N!--!#J!+!#Z!8i!Y999!*!$$J!S!#J!`J'N!)K
-995J+!*!$$!!S!#J!P!%5!J"993#3!``!+!!S!)d"&`)"998!N!-D"3#!!*!$!c8
-Z-!p6G(9QCNPd)&0&35!e,M!!N!--#e9Z8h4eCQBJBA-k!*!$#!FJCQpXC'9b!!!
-%-d&%3e)$!!Ch$9803b)5%HCHEK"N,4P%D[*%*!X3@DZQ*LHh2BZ-i(ERb%Qh-e2
-bQAph[qrELM`EhmbhY8#5eFlXbH4*f,ilNa'5j9ENLDc)laq42j1IbEcCeRB454B
-6XMFYb5)S31)(rdjCKT&84$LS#cYiiLGf)5c5J1e3aD%@GK*H(mq1D3bR6lpC+R)
-6)mRY[@4[%r6@hmf'R%[)+8FIZEr5&V,ejRAjaL3*5bPTf0kN&a@6NPGC,a$mi-R
-K`KFHI%V$*QM4BN6+hFfqTX2b,*5j55k)jb(*(2h&i)XDJqim&Fee*9$cG*JIMZ6
-*i#SGjViNe#Xq)@+3!*h[`af,NK")heX@$ED[(5XhPA-`LA1fRcbNbSE0RBqrZ,m
-'l)YVm[NQUD!A@)"Ck2@aqNDT+'b%UlJKdF4%D4j'8D8QKLJRXm5(8JQR40@4X8N
-6+L,JmB-'82KL!,85ECR3J#8d%@TbLdfC`eLTT"qR$+aeU)[Di0J#T6DMFe4B`aL
-flrdNJ-)Z!m3jBTLiESAmcl%RFHbLl9fAJNh,JDRU`pD$+ZFdM(GdeX@!G"Z$#pD
-fYBXaSNc2)HBbh"2bA1lEQ20L2d(0f,[Q&#I)A'ZQ2(KBb@@qIDUNT-rSkShVZbh
-3b(2j4EE#Hi"%aD`5%YXK48JPi!JpjfESS#*')G-lpU&Zma9#N6ZP%AF+hP-PhjB
-J16hDlDNc*qDmR%1jlK@TB-cEfPh+FK[jplG1#3aZ,GrmP`rLNbG@J3Mpl)N"@`N
-mD#E1Ye,'NV,SJ&0-'N"4lGDH(L15jV)kGQArf*KLjXEBBNT+ilSFVqIQ2L6S6,2
-!-qdr5A,SM5rZ8%e+qrrFIEa)TAK+(ePf3"KU9mH96KeiJM&J8-CCH2(UplHlTpQ
-8&pIV!mfS&!eYS22Y"H59K,,GX(5'$iDUN!!D1!1%4[Dm+R'd+EK+q$Ll6eBP[SH
-Y1Jm&+*f0f9@c1LPl$U`!LB0EA#,N"l-#h9`&eEjM4RfXIVf`GZf$Y!rlJeGII3N
-EUUX[JA!5-Xp,Z*!!K9k#PFalib#6LH[)jR!53fYB8Y@+#cA4e!fZkRA5eL(bC5r
-eTB0Nq+`1N!#ULm1*SfpKL@KA(V8&MK(J'6fDpK)ZJ-$X$'lTUd'pQXb1L-Hl60l
-qhlJ2YkIbbBfVNkBAI5lbXT26-1CCQI@i%dADZX@J'V("P$45$f-VG@mlh@!+D@p
-ipZKGMr,CUC9ZcXXMqF'dI'XXGU%XA8IkajQ+#fPh$2Aj@FVRjqVrINKT#[0r9hl
-1a'Bar[EhjGLF9@FZ6fPZ&[UQ90aX9RVbi))fT0[hNY60m9Pip++5qIc2PqqBK`c
-8pE9GaLXRlhFHm(""&mY9YB2CTqfiUkZ$G385RX(1bd[ERX3qk'4JZaVPpDGj!R%
-'T["3[!PH+Gc$PhJ`"hHqIVA3@F0Eeq31!*!$'!!d!!!"(!&S!!%"!!%!N!8$k!#
-3!j3!N!-m!!8%)'pQ)!FJDA4PEA-Z"&0dEh!E5A4PEA-JFQ9YB@PZD@jR)(4[)&9
-Z8h4eCQBk#e9Z8h4eCQCTEQFk!*!$1N&%3e)$!!"U$9-$e1S'VpIeXJ8!,,aeGGN
-Y!*!$m0DZZXYri3-$NLhBmRm"LT[[1kCMGF6SE[+BY3`!!!M#384$8J-!$i!1A3Z
-X%L4fE@IIRApiYl&XGjihCQ,BfCc(6*CSle-E)bJkEdHa*eS0Gj-8#D@M,#1YSQS
-,UdUIEm-)Ejf3!1fj`5LMfG,4"USUd1Tp3kd8$qJBl3)PV8LV,Sh*PY#8pj8'"1a
-pH0r[E[EC)UQD9YAl!`hq3#-MB')c)N3K4$AZeI5R'm52eIGBY8"p'M[$-kQr)+C
-(ccpI0[E"-prq[iV0kE%!MU6AKbr)UJUXM+(q$U`rekH!HKdfrSQJIrU)8d$#`'Y
-!DT(!G!B+G8"FT83$c'p)GKN'L4@)'S5T$Z%8T(QD[X(fVScHNGNI"REeMlhpm0d
-ZdZ81MJm%9UlqFVK'T"cBlIPImF44hQ,UG2$jjAPjMV)'Kfh)QmZLH1FGMdciUm4
-L@VEa[blr@m"@IIaEYSNXUSrPE5klh-`lS*62`A-U&h&S+DY0c5MPF2EBScYFlQf
-@XH8J[k!ZY!4MiB"rV9IC9#2UDa'P%r$,RpJ23Mp9mdDqFU0q"Zf&DJ1'88+i8@l
-kD+m1mclDU@3fSQV)d5`VX2CANYQEU*q&L3k9fhTX,(6rbV8ed[)hlTdq1,)e95,
-QA8ZF0j8lcYXYmifmf6i8ZHYGc)Rjj52G6k9b4qphIA4"K6b5!ZpL9R9IZ32qr*c
-JXFq`kEcbjk8dhlGFcUmrRJZ[Er#XD1`bXeJ[E$dHd8mD4rm&'VBqNHbGkIj&[e$
-0U'm%Tkj,VPhL1L'Z8h5pMkl9%ZTkdS6k1RLYpM0L*fZ#f"&0%MX00E'6pK1a%li
-VLafcADAG#l5,kTrikG%-8a09q%FH)rEbi$X&JYL61T20P*AHmmcjpU`rYYd1+@Q
-MmY,(EB,BKJiL)lC#KH,2p&CMDYBK5XZcMSGCKi$$CVQ%+!FhI2@@)$CrCX5'9ha
-SZ*B9[G`XVXQk,d)N2YX6$[S*4M@i+Ei)l42+dhd4Vj)QSZ[c-Pb*E0GEUq'@Q89
-N9),dkf"d8"(L9H"%*34E1qU56*@(b@R!8NDeJ[[JaD4P4bLD%+jIhcc5ZqAUY9A
-ppmE("L*0+l4cUcBIQh3q!-Pa#mF,E5A@0)f#eBGhVIb0[)$&imfPSTl8fU'!blc
-)r"1N*dqBQ4(bV'*TRqpH!HRQ!bD&a[GbQQ4DCKG$Cd##!X,!,L%JPNjBI6GY$Tk
-2'$5CcfP$*Tpj-H3#+5*#Xef)L+AG`liLB8ZhZf9qaH4%EMTDQ+[QjLmhT0TF)%P
-KGR)0dd*T&[9RiG#9SLI"X%qLUS+S[)(M*e#[3Bfil1!VRXUb*+M`i5*H8!3+I#I
-A!RHIFK8N*X0X1h!`"TjYi"5G5N0JL8SX9ApmrD@ATVIYqhV`9IIECkmI'cMbKfY
-k2P@XeCH2ZH8Hq"f%R+DSS)liI*l&d#Aq!@pr1688@Jc0@TKm+Pj$i&cCTjbJUZS
-3X2mbf$1TLHR&8-)51N1&E'*eIN$fC9@Pk!a630&)bYDJS(e8dfcJl+UU9@clm$e
-ffPRJ#RcU(Nkp1MNEXRP#,UT[Dl[iPTNLLE+GP%AeP#(b!VLCU6eXh!RMHZeKcYe
-(a9a9r8mD(Uc$i"M8#-R5`TU`l*jX3h8+SS`IkE44A4V#Z"Al3U4pbb8ZPLLf3F!
-NJLSP)5-U,C9mCIhP3aThLC-"fLdAZGHeN@Zp'mIf&BUKUpcbXMGe9&[BHHl6Qcp
-CkC90$aa#Gjl(ScGEXLQI0dADQ4!(3QRce[mG+&IJ-jl"jRQ4+UD8,$(PR%bNN!#
-Ac$e`f&`4NdFb5MNSpH&NbI,Uh**rS5NXGqaCfNVq@r+Xd00b`E1bqB,LXcX)JD*
-#8VbQeS+5`T0'MJkDN!#P`4JNBZ$9+(K62[N$dKR402fS4[hdUqP#d"%5a@KdUKX
-'0eQ06F(l[Cd1`Rd31Tp+CPkJqkBCa(%MSbUC$`PNSUh@rGUiIl$ha2VRV[K"8G@
-6b@5Xe6UZA4mFHrGKiIXrQdSQJc6Ce(Ta[(i`[,[Yi5qIdcFJ9LSTkU,ULkhDq+$
-l2cfP`BI1G+U$TMSUHqZG69qlh$%`j8pREY"U8lh@IUhAfGXc%2cMp`FKpceP%j+
-5frMDDlh1[@dp1`F'R,#*$L8T841!5Ua(pF$q+L%"#d4rKe'BY$YQ0I6jpaK9,if
-1@SfBmMl+Tfrp20R&qNCrT5HljPY[dFj",e6CPVL1'U2k'9")+mEQF'cTbMHGCc&
-fG+lD59rl$X"QKEK13)0!Xa-#+)S,iq@[(cU$4ap6S!5&l%+UBpIYAA[k,)2f,ed
-1IRA1Z66cHYN**!VM#!,6p@M8`Ir)BZkdQ2T5r)2ESm,5c'r+k(q,EUVhTc&lI24
-!T0Mb8pIFTVlc#FIT8Ir53V'C13a,#&baCFNeTfYP0X$`L2p0X-F5$VlBBREP60U
-r3A9'K@,KPS,9qk1ENKZE5R5dPZhDdjdEeJi0"2QjpZI[$l#kL0Q9EeqQ$S@24GZ
-3!"ac`jJ'Bp+'`ppL1S2EAa%pDB4RZ%#3!(rl)YF#IG&4U&8ZAqXKGM*ae'!X5Q!
-QpD34(ka+q'3RYfQPEUQqd4h1j!6+[I)%l+9c*2c)Mr%*58e-DHB%"q$MrAGC2Mp
-r+6+i)rp4Hf'dmDUHaS1ch'i*i`P*&L409I$KH$[&bcRcl2$Z)3mafaQ+8`qb#Dj
-X%djZNmJ"D@G-`EPiR,Af0DTE*Zemr$Y0K-h%N4BR#8Q,Cq-bC`EF)@IM3F$T9J3
-0F&-9hTk`0P0mGVMX[Mel+jf*F0`2@a%dF%HTiJk1ZdYa@ri(1r,MfjS@'K@mMhk
-QdY2JDJJN1ULEA20Q`ddeQ6BT95+hA'RF83$@d!"49h@Q6H)`)VX9Ql0-!KL%E6d
-QT#fLA$G-0%j,'3B*efpZ5$bq9@-c$@,3**FRfS14N51q-RNiAQ6*Y%F9(@C%Fqb
-9mDpELXTN,ZicCjSMSh65'J`Y$E3RdaT9G#V6'*a)CaZML[k#P'',-#P+*EL$AAX
-bE@%hr&YRI%Z+)EV5BfUpXl,+$*p(j&$ZP5X!N!39!&3!C!#,!BB!!3%!N!F%5`#
-3""J!2!"!!,!"Q!!"!3#3"`%(!*!'!5*"4%05!`!$LJe6#TXN!(q'4E$G16N6X-8
-1A8Y16ahE!48$fl(kf!a@pFiq++KBI@c"EUcUaX!rBhp8p,rrEircGPBCaZS!#jN
-e$9a@MI6"MNEhVP-Dl!5cmbJ8h-AL-N+fe,NJbA-,N!$IEi*fJZR44(62+AQc%pf
-mbHiVKB3cc%YDkTT5LKd,2KqEdhm%m(Vq1HV+dqTUrjpIEXHVRre$rrZ4PL8#Z$0
-USi*Y9X&)*Va&Ufb-9E9H@cjLQlH&l@%9IG`AaY*D6+58Y!*a(daqM-2AVK[QKkB
-CkP2EpNhG$lS3D&U!*`6)!*`!6,hk,3$qkJN$%Am!m+*bi3)3()+!!B*LB#diLj&
-"M0m-3Z351Z,UBj,-[5Ka(dcIG2P&a#YXbaJ!N!0h384$8J-!!)!08`YE)!-$TQ$
-$UQUc-,!")Q*J0dZafeQ9S#"L`alUfF#B96%,BbUkpkG6V!S,L@2)YZ*heJ"5+2h
-K[F##5VM&3+GM5$+1VpRh*L)1[qR'r[[BRcTA6bLQN38GNEU#'ELMa4UZU'SRT%m
-b#Zp&cJ8!N!0-!!)!N!8)!$3!'J%EL"Y3E'9KFf8JD@jcCA*d)'4TFfXJAM!JGfP
-dD$S!N!B,!!X!+`!VS!)%5`#3"4d!0!!Y!4L)!Pia!*!$1J!"!*!&0J#(!%S!`33
-#6dX!N!8#!%8!,`%rL"PH-#"KF("PBA*c)(4[)'*P)'4KE@&RC@3Z5`#3!kT"4%0
-5!`!!YJeE#e-`!hGc,@B'l"R6bPA'0c6M[V999XBrEdr[eAUhlMhriKXD!!$`$3!
-!k$B0!!!,XLdEJDAi"hCRqrRPV5ecdeE0heRBNa&Y1kd$*bTR@GR*V[*iehG%KH"
-5a(q#'"5q4!bGmd**U)B"*8+!,UJ1hY8&`*1&(+!BY25$@4r[#**R3EiJhiV0BEc
-Lr@Z6"D@&%LZ+ZA,FjlR#dP4ijI&K!3#3!``!+!!S!(m"F!5[998!!!%!!!%!N!-
-#J!!!"%!!!!NJ!!!6N!!!!#I)!!"""!!!J3)!!3!"!!)(`)!%$q"!#"KJ)"!Er"!
-N'T3)6"Vd**mb"$*-0HMj*$8S-K!hq#3)-1!)""rJ%!)!`r`"!r)%!)!#*!"!JQ3
-!)))N!"2Q*!!*bL3!"*)%!!)Mr!!"3!#3!i!!!!%!N!-$J!!!"m!!!!rJ!!!Im!!
-!2rJ!!(rm!!$rrJ!"rrm!!rrrJ!Irrm!2rrrJ(rrrm$rrrrKrrrrmrj!$rRrrN!-
-rrrrq(rrrr!rrrrJ(rrr`!rrrr!(rrr`!rrrm!(rrr!!rrr`!(rrm!!rlr!!(mr`
-!!q2m!!(!!*!$J!#3!`%!(rrm!"!!"J!3!!8!%!!%J"!!"%!3!!3J%!!(m"!!!"!
-3!(J3%!2rd"!Irj!!%2rr%"$rrp!4rrq3!"6rrp!EZlZ`%C!$%!4%4%!1lZlJ%rr
-rd"Irrj!!&rrrd"Iri&!6rqC3%IrT8"2riP!4rq43%2r[8"$r)&!3!$r3%!!!%"r
-rrr!Irr`!(rrq!"rrr`!Irrq!(rrr`"rrrq!Irrr`(rrrm"rrrr!Irrr`(rrrm"r
-rrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"r
-rrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm!!!!3!Irr`!%!!'!"!
-!"3!3!!5!%!!%3"!!"#!3!!I`%!!!%"!!H"!3!rr3%"rrN!!3rrm3%2rrd"(rrj!
-!&2rrd"ZlZl!4N!-3"%4%3!lZlU!6rrr3&rrrN!!Arrr3&rrJ8"2rlP!4rq&3%rr
-Q8"(ri9!3rqj3%2mJ8"!!2p!3!!!3(rrrm"rrr!!Irri!(rrr!"rrri!Irrr!(rr
-ri"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rr
-rm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rr
-rm"rrrr!Irrr`!!!"!"rrr!!3!!B!%!!&!"!!")!3!!4!%!!%)"!!"r!3!!!3%!"
-i%"!$rp!3(rq3!"$rra!3rrr3%IrrN!!8rrr3'lZlX"'3!a!%4%4!$ZlZi"2rrp!
-Arrq3!"Irrp!Arq"3%rrJ8"(rlP!6rqP3%IrT8"$rk9!3rb"3%!!rd"!!!"!Irrr
-`(rrm!"rrrJ!Irrm!(rrrJ"rrrm!IrrrJ(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr
-`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr
-`(rrrm"rrrr!Irrr`(rrrm"rrrr!Irrr`(rrrm"rrrr!!!!%!!!%!N!-#J!!!"%!
-!!!NJ!!!6N!!!!#I)!!"""!!!J3)!!3!"!!)(`)!%$q"!#"KJ)"!Er"!N'T3)6"V
-d**mb"$*-0HMj*$8S-K!hq#3)-1!)""rJ%!)!`#!"!r"!!)!!J!"!J3!!)))!!"2
-N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!!!"!*!$!i!!!!I!!!!2i!!!(r!!!$ri!!"
-rr!!!rri!!Irr!!2rri!(rrr!$rrri"rrrr!rrrriIrrrr2q3!rjrrj!$2rrrrKr
-rrr`2rrri"rrrm!2rrq!"rrr!!2rrJ!"rr`!!2ri!!"rm!!!2q!!!"r!!!!2J!!!
-"`!#3!i!!N!3(39"36!#3"JG6C@Fb!!%!N!3(8f9R-`!#I`#3!`G6C@G1!!2r!*!
-$"d&38%`!N!BFBA9cG!#3!`&*3diM!*!&K%C548B!N!@%!*!$0%&9Fc)!N!-"580
-1)`!$!*!$J!!"!)%!!J##!!-!JdC548B!!`#3!i!!!3#"!!)!JJ!$!)-!N!-J(kN
-J-6Nj-#dj1#""E'&NC'PZ)&0jFh4PEA-X)%PZBbi!N!Fp"41!!*!$"68Z-5ic-$8
-Z-5ic)%0[F(PbD@GSG##T)$%j16!Y16NX)%&XB@4ND@iJ8hPcG'9YFb`J5@jM,J!
-!224"4%05!`"ld""9$8Bf%J!a-qj6rhGqAiCKM0-BdfQNj"TM'N-b-b+ENk84NNN
-)`jJQib3LqP#ZLM0)5CL0b-PLXAN$")b)'T!!Ce0UD4`3%K5D8NYT(YXAU,USbmG
-$DPQ8ZT5br2e4+Mb+&%-)QEr[ZhGQlS4!dEIA1ZZFIAi$'kbR)%U3!!4"%!4"SKT
-3AD@IVI[JeCM4'3Dq[`+J,m8f0RHJd9Nd&UE%2irk8!XjbhlaVjApJ`Y%IHGh-J9
-er+5bRkqbFC!!VVl$4Qfah21ZBV2Z&'!1XF,fDQHrppPYTlSfer`CaXk1QXUZcDL
-d&)h&Dd*NU1YII6"56F[bQ(``pil0qXApiG3G-&Pfr@Y8HUV"eeHdC9V@0Q[A*kK
-qLkTPU-kQkLVq20JI+KahQ$m2pUFEU6SE4Q(hZ-2&hfF9R&rfP6!JeVL'l[Tp1"3
-*Ja@iXqcNUj&TaGq((@NYM-`[&md@p-FCq!p+U[H*djLN%2GFqQRV2`J*2b(mT+[
-f#H9hrlRp$ZY9AaVQ+N1i003TrVRTMa@GVXkp`pT$e$d5,UA+3FH)YHahCGTDFT9
-`#SGE(CdGGfMb!@FB*M[aj$9[ddFkJR'qY!9&8*rY@$[LZeAiLcI!*+Q*P$JY'NA
-Na25QAUqAI[lBp%I1QZPGIp3lYX)Y`Xq@mZRFjCK1hH@aEXGdqDMqSHpJRhLbk#H
-1A%ZZ5&F+Ed"jqd3*'3fHpYJr++RC*bbAIYlk!5Er!5ErJ8MArA@hd,*ErZ#8D1U
-@qC*6XKUXC6FBY2T,&rJSI4S*@harIFbkH)3qPFDZ9rheXHQ,cbVl!&imSZQkr(T
-4FGPeZ6"I1A@LT+k9cDC9Tcc[HP*F'1)eH)Dk0Z[1EP6N+KHS9,'T9$kFqf[pJi1
-2apeF6bVZ$-5Z#2%IrD)q'H)L39&EG`dCMXUZ6ebBC0+-DKN+'P2CppmTbN[iX"!
-SQZYAAQ'RF`jXIl[+HSAc[QE6PZ+R)6B*U&H8PeJIR$AV[9q+!*JLS!aeV3ZRP*'
-$-)8AYj@rDKY1I40,90c*b5VCMQ-c833#X5H1DM0G!eG@K-h+50F1jCfZ4j9MLNd
-aGEd(ilr*aiF+[1GVV0FY%CK3cVh+XCSrrhk*--2i(+SaDCC(cK9MJEm[%L(EDap
-[pLje)8&a8FP6$GKX[RT*fIGRC,J'T+&`U-M,%m0%'#`[4*&1#P-`@EBbUZ3e#`c
-j`PqjCp4QIAXaf86-*el9(!`JiJZ,)ZREZLqYD)X3Em@AKXR9!8#G#PVL2285Uik
-jIi8)!BZVbpaZjS5-S&P&5AS,"jHFc$QiN!#i`34DdcC(epd(qlaH$iSL&"4&&,H
-G,+QUl,TE55A[i@#h2ZJ6Zd2&'fU%PXU@""Zk,F929`PVj*10eC+emm1b'cUYN8L
-NE12DXr*("J#U5i2a5e)NBSdN6ap(YXmk%[BE0Ki&'PqD+dT)2R582PSMeG+H*fm
-iHjdKrqURjVDVMY$(2m(d3l%0A)DpPPb$km*HCqk&iRl[D0H&5M-Udq%@H'Yc$A`
-)`@bG2cHrB@qSq,VmKReil3VN0b60DpF@Vbfh!Z(XiZZ+jhLpFcD6LY6,KC@5$kc
-6jmdaL-%Y*Y%ee2@PYI+Tjr)+mh)m#'U[PiXpLPU+I%8hSqMNIq6CZSjh(9Ik[S`
-q[4[&2,e2VDjTYTBP1cMD$rXV$1'3!'CL9LrDV&N!aTfDAhDTQ)3hEI#NYe8q0@#
-m'DmqipVLeBpc-D8P-Jd(Qe(`11PN593DK!VIeABV&(MM6AF8HVpMh,KI+(h*&a8
-PYUPV"!D+8"Q-Jq(3IZQ16Q-C(5RFX@Hm4rk0MlbiHdFbk)LN1M+YH2A`fP[2E4I
-'CI6+Zr@FefYm,P*TA((V1@%ajKH[RV%C5mkcCSB%+LYaB3!&6C9MCq"RDA&"ae&
-IDf5emG#KPD%Q,YE,0G`kBS`!JC90,2KCDkdd0KBAR)S1R4[-KAJE)QZmcq+R#a(
-p%Zp%(1RLRi0p[Y+L[bGFNl2SlcLfE+M5H0+l"Th,q#Gq6(IjQ1l#a'&+S'$A61l
-Rq(NrI[4pr(`B2pUJZkDL[hpGPL[DK@r)k1!#'S1"e4m@dRXP`90$30f`c@V-MMC
-Y'c(D-28"9cVC-VM!f"Me'68)Z0feaRYhf-P-!&+!*QZQ#0ejIaU&XeH-%1#`A$K
-&M$($`d96815`M(iZ4SDS0K@piU(L6T%UqTU,*88+J6HMkpBD!hq!k["e(%'1pF%
-R"4Ic)"YLi3,0!46h@$pT-$"JXCDK#-T[h6MD!!05MJZ'Zh$(dHpD0p@&MMk+BjZ
-QA-iq9ip#21'riE*@cCmDBjr1k*p#Zmc@MGRR!K)l8blFF-Eh+#0f#kLU1GDb4T&
-pcX3a31Mk4l(94a2Hc$jh`XiG%``chr5GpCQaL*!!GH0m`m1$`[c`%4(bfDePDmm
-m2#,m51*EiK-CPJYBS4aPPab'3%`!R5J)9&`!mkkZ4kXG[PZXCGG[`q)qQQ$`EH0
-&p'h$PKmqDf#8EV&Vk+N"kmD"SDIk-2d,$BEXFeBc,b5DQQ[`qDeP8"+(FHKkkmE
-VKjik"$3A*KKLLceHb`YGqkEL`-,-H-8@ZXBl6*eq@YUTmQc&FE"HY2$LN!$9C$+
-"hLiA&lYa%@(l#LL3!%2'MH'kHJFAMiX8M'4$2hLMY9'N$MB+&)2$9)f#@!l%C@m
-VakUY@PeeLhidc8H96T3aTV"&d1'Lrjm23`aebY[aSPFUH1@L8drIB,DMI(+4-I-
-"T!ei@U$)ce9FB1B8J,cUXLI0e`"'PeGCZFS,+6VMDcdZH$0IZVTe2"I1U#kmH4%
-A$UJZA1ljJRFT*i5m&eA*B5N9C"GkKiYHiCHRcp[VlFdV!RK1Lh6H6q91i461[(a
-8*#(Pr962)#hP3PNf9b16C%%46K1b!Lh9iQY$f"Ne,6FN&869T9a`&'lrhN)45P*
-#2@KQ)lYh[ke%1a&0,cH%r9%l$QH$5#SN&pG@Lch[SMM(cjq64ceA$TVeCIEb8SY
-HBAC3E*Ck@1+r'iCj3$KpY6,DhN"81PQL8G'a*4!X*#ii46Dpe2TM*4ff)5T*[@1
-J+1@5GRUE`cK['b*Uid`PC6-S)pYXaVZh)D0JA+a9YlT&"m69MNU6*`@KP5U9,p3
-Lqe3[bT'"A$dF3*!!1ee$%m2*'U!1I##MG@UP!$&hifFH$MPY*Caj-2kZ@q!K#$J
-Sq"JI4j6Q6a3F1jPdLBS`HI%J3fTkk!QYKG61+ai,d0TXdhPc8Y+AJ'90LFZR&5i
-X4c&##TG,FF@1,2(U15H1#fE3j)"cb1MDid631$e$aT1FACDFa`@%GqQp%JM6cX9
-%0hlSDe@j*jLPI'N8KDN+j9ZTb*mh1LpP5VIQ'UhEMKK2hYS*i,eJiNi!ld-%VVF
-6Z"DL+llab8CXl2%6XF"bPq&N#6*SCq81XG4D1A%R1D[RD#L'XR-(PR#F&K6[D-)
-#+3MbA6`YCpMJb$d[1!1L2RDMk(DYM3PXV'8Sb(%Fp22embLb,#r"aBJ[`eS'F$Q
-X%Q4mJTN#3Z6PQQLj%GN9@E4BHhba3mBfID0QIH0%9lZ[G8$)5qB&qmc""!kRaI8
-bU9Q+)hN@R,&Tj@VMbH5PJNTMGM*!kN+%2h6GU+8B1C!!1RbY([0"1lEIb3'BA+*
-'kZ(J0cd!pN(apc)30S'Ca&(&&Ah!U!8aiKAj+*M0b3H9YlXHID"#+!"l5&DP-j9
-@N!"&9Gf)"BJK'FN$jk*I2,eA$!"C$51V2KEI9%G'!,F*#5B!FM%'V&I#erH!r,b
-1[&$m*SkF&kbMa[%k%-@-M@d4)i3j6FA'9%cQTS60NEm%FIHGkLbqck-cV6I++J&
-h[r6PhU2alUr3RGDl"q,GZHJfbpd[*P#id@hAZa-S!ZMfkpd*&#%%DfdLJB"8,Eh
-rAYQ-`0%BUUp1bi*aXaIC#bBJ8BcDFA'`8c54SV)E'B8$kaGb"+e1[)UVFe%1#ZH
-G,3k$dAeH3&(V`)m#df,9i+,e#i(D(@e#Y,X,kP)T+dE(QEhp[V3Q3PQ+HrhY$&D
-G)JP#"A3G(33kA#)%--`GLK4kkqMUpU#V&UL-EUmCjU4GZK*Ta*9a&!QMS-TEifZ
-pE@3p9"-3UGl,4h6%4L"F"P2J*d$D&[f,8F-QCHKJX1AfTZ6VkhH3!!P06+["P6&
--jLD$'D4-+Dq$8AX&1d8rG49k#@6"Q"S&19YIT$JhQdRNF#4d'a13!*Nd)INqd$q
-K5-`%)MP@'TU*M"&N20jQC&laUVCCRQIQ%+CNHpAEYZQ)R+#-20Dm*c9rqRa$rD$
-@92qfEBb[-GipCVkKD[!F'eY@mJCCML0C[Lc&p&Mc`D-Q%c'ebA89B+Y"kDbf$99
-!BA4ljq`Ae`1a9ZhVV$IaBGmZNcrr4m+FE#&bYcQ+qE(QfrDB60jqcHrSA(jNhc`
-AVSAG[!8[$e2SMbHB!,ZXQUK%ada@bYNK&$@B`af@`f*NEj2[-'q'DBkTXGf($)G
-*1!ilXPEY&HCp)!-K)G3"5A24@"LL69!T66!GKrD*R-hS(T0![i%,cNA4"#)3"EU
-ZqhcZp6PUCFLlcT1q$@cTI3J[LlFIKRf6YaH"[DiVPjJj5fGQNd`SjC%9%N[N,ke
-NS%JYFXD9mRiB@#rj)QYk3ED3!#PT8@YKErP"Fpk6qb@YR-%(h$3(CjA9J`AfRX!
-2&*EHSd9jPM@XM2@@*kY4[20QliP+%bT2p*lBjl38fV238BS+VK6kLH64$%A)jHK
-mMj!!-[XX(pNhbC%VNf+Z(0Ph*S,S'`"eD1`-cp$BTGE-l8jH,NId-"H1&"HmUb5
-LQ[+5-#8PHd0NpGKH2[3`-QJLFLHbD#)AUZ63f&l2d!Ze1#jF)j5e-9f6SMZfMBc
-YlHPc8YKVp#i6Si[85fp"ZAL2P#%3ABB99P$afHF5lb$MG-I)a$#V'bGM#h'kl'$
-$-Hq9m(8SY52@bK99%2AY[YESMP'V9e4Y3mIBiD'4AR2L%+YL3&Z3!10@6bdTc'q
-S%"AfQK&e`4bcrBCZak+hiX2%(AL&M!pC+S8d-43Z4CE,T`PcHG5lE34,@$h(-$L
-mhGN*43$JDf#lN`'BYA#$Q94,!c*TPpM&`AU+42Z%QET0&&fZRL2dEMYhTjE+hF2
-$qd9pQTGSf3N)mK@*X!BIQ$fq3NAMJh!dS)KHNrJ!N[#iDi51JjBr@)D%H5,)2,l
--`Y+'*Zjmam$U#KXS1KIerRp4FjFEbGAFHa5LV'H@3m,Ej4+fNQ3,ZYakPm*GBI-
-(3-$*Yk,FS4cX#dPbpS!2)8Z!cE#&ZrISRYE4KNC*hLlrJUeNRrQ1,&VS8AeL)lB
-5&4UKCc)FR3Z-5f4JDA5$)*p&dS*V66!)h)kI,EMD4HT2Hj,-da2$!0lcYq(c@"J
-%N!$%F*LA-ELSpbLVBlIL8XaNd'[#Me-f'I`R[k8bNQ[F#e40iABbPd$XGih)5+%
-BLP"Qe*X2GYUEc3XpNKQY)%*`)L,ep"8rACNPG`"dT8!3kDKfcP[6kkbiQPhS5rF
-k!Fj55X9"L(pi5cQa@(fp1+"&1HLdNiLQmYDZb5PBbeF-fB9#p$VRSGKNrA2SIRm
-Z9c8NL"'RX1!&Ff#6(Y`l6j33B`)T512FkpXifBb)C)V-SI3KaKJZ*+E#0ebeL"E
-@,!I3qI*k*Gf'5VDEYr-)@8Nc9FF#*6)0"UNR@"4Q!+kPaa1LN!!+A8H5'SX@bIP
-fJ)dYV&T6FNiPDi)q&-cH`phUa#2j#04Xi81aS%35HcmiL8NT&JdPr#8H**,K@GM
-%H@44leFRTb2V*-5(VL0KIf4SfM50'!)+#)+C&cPYQUd%MUN'iTX2mFdh9%Z6#E"
-$[8aG4'8FY@MMQeKpm-6ZQK!mXE"*CcqEaleqZFHGXlQ(,9BbShV52#QJ9N"3cYQ
-QPPJ393X+*13!DFTm+(!#NaQHQ`"+D*!!d1KVCH!#F+-3!YQipfCa`CDP-1jaeLp
-64Aa,LQ*8UUk6r'9A`bC,RI#Q,bGG840FCk!Z9'Na)hUq(LplmLJqCi6fKQ&HLKq
-Z69k+Q[P`Hjhd$jBd$TILC8rbj`cTUb5+EkC0e"F"8qQ@dT-PXLJS-#E+40*3#LN
-lUV5#R8*+L8Gd28'&ejELYDl-d-XrU[(eLEDa@69@9+!ZrR"cf-R&CP$ZYhHe(B5
-a"*Ih`BJ0YUkaD[ld,9I3IJDZFr&)a8MN"!cC[EY@L4!D#+ejj*`h"rSECiqhKb-
-Z'$N+P8GBG3r49Vj(Z+%5R#Xe@k[JK%4)1aejLDk%F0JC0U(EM'ir+QN4`NHcC8#
-%*%pKbMNJH4`MYib)$%*@DKS3jLXeBImYM04Nb6cS$EhmQHaZG`k%,U'iiKpf!E$
-R+qrm")@dJim-LT4V)$6U4i'@!@N$j[#N"3D&C!S,[rH@R5*$[2Y)CXJT5PfCk4Q
-9ZGLk&0Il)Q'BPRZ9NSFc8bG%)'SbDXQUKhH#MUrGQ*(XZ(1Rq%VilMaha((UEA%
-k+Z'crj'GX#q@3X$AP&-e)2)qY'TK,4FT-P-`1*8,pVMDYCU+pU"5#3Z-YQcJDpD
-U89"hh0Hhm'-3EeT@0)6pVSC`LcDMXemS[eq,iNSqCL"#"#F6)GKH,9k,i`jYdIj
-2plb)D&ZVr1,,RDMXH2&r[lJIPHESRRdJ'K#MNp'R3@iJ*[dr1a5Z,2R4CcY3N6U
-qf,hh4kK%+L[jJ,4McaH9A'RHLaTAK2i(GMTEJd#1QLd[LDI4U+c&mP*S2e4DXf0
-%mcX(,$mmbFAc'J`a!p*AU"lJU*F$$Bi,`@L@21%"2GL1+L9,!5l[qS[[VfkVCD3
-e%'khM"`-K*ei$B4,d68!)JbKP@*EQ,Se''5BQB&+b%&GH&V1h&54+*p26mZ5SkV
-2Qj0qA"'DR`J5ZHKpRF`1SVh'fK))Ljcj+d4baULI+&$IFeB31rXcc(E6GQ4dL%(
-DJaM%a!`#T5J$afYPCUaXjkPCIQ("MQ%,AZP+Fm@)[-!F6Ed`cR3T!j,TmfBdRRS
-9bE3ple@P&FHZ&b+iD&T@F-&Sjl`E4!!0qM*%am-)E0(HC8CJTiUrU6Q'JVMVq1,
-&&@)Md9T3B!Na1J2@%HFIA"idib[&bamf6qc6R&epQN9farAK5Pm+dfN&@m@!Jlb
-J1k&`LjD(1A2F(UNA(ILj)j)(CZrSdL`MhRA*8*GJTYb9*`*BD)Y1'*1+)D"*",S
-NH4,+XA)`V"!IEp4#YSha,8a#HCJchJ%fF0rjXDL+l"50f-EYNT,QVT!!&ZT+-h,
-qA*-(iLB)JcDj$LM+#%@+&XRLZK&(5rR)b9IT3$iGD+%$6RN5AFL'BB[6ACCNDHF
-5%2FX3U*D)baGlpl'MGCNp+@*3&&[3!LfGpY%RUJ&%rdZIk*%#L(&MX3$9ci88"e
-bph#S&!c!4aY*01kZA$Qaeh"Lad%'aLJZ0U')B"%!3!N,&-c8kMDJiFJ)JYZTQCe
-,K!6!h"pa%L1B&9[4Rm!-jTTQ!(36&bN5)JX3QB[q'cUGc#SecBR!&d*A#HpMNT@
-L,KCqj,Y+DlL'#cPp!C!!fC[#l5Y'2J2"5-9Jf1m-A&HQcA!k(50GlKKJSNRGl%N
-MSqEdhSf-fXh'TZ0FN!"K361$aG4X"4P'(`FZQ5&LfmXAKcLVGcGPp4E(XhSh'fm
--CM-kA%XC`hE[""aXmAj19pp!PRM5ErMkViM%T![ADk-GE'MJVE'%CfRV3(aV*c(
-Y45-cTUD'5PiBP!"a'a-"6Q!6+N`4Rj-`##%K!6a-eK24T)`8%#BC'1+YmQM5%rN
-5IASAM58B&(6!b"E30fS*%N!6,GT*QeLmEp#%rE%*3p5Idc,EimZ8'pl9hXDA*Y#
-PcfR6a2+fpb6XU9`BI*dA)MeFZ2Nf2V5B!cXD-QTa`&'5B#LDl')5fd-8)-4Fd3a
-pXNiINpKcNbGZAL&2INQ2NlqGM3!`2+CJb#Z&!E3PeQ63-Z)APFFCP$q9*6G8bqZ
-3!*Z-pCq9'kU&!e#Pl6#rA@RP3Jdb()NQ0&hDI-kVrX50,*&Kbc[HQV6J!c9ck(r
-SH#[)U%b@6Zqr`c!pr6fj3GmL*ZT%3F,01,bE$Lq+&Br)K8rH%$jpaFGj!abGL3i
-X4,R5pCi(MIKi`k*2qQ$k,IVPm9E,'LlfmJiRQqJ+d1R0+5B1Y'UPX8iXCp8!PT-
--(BF"mZ(l8jV2ce1499P9C(!l%`&4da1jZB`c5&Ke3F+k3aE@R!1kX#bb32,Z31D
-K,#DHb&pNiI5183YRcNeBHUIhGmQ@q-&TE#cSAF&#5ei,&YD',Pa1pL5XpI2`+6X
-KV!eVd)(#Lk*I6&dm'mi%LfI1T'$ab!f)BL`,)1RKiUpq!`J06,,Lck#Gf8mQLA0
-Fq2blB63YdeTqD+*'J#QI9$')!SNY85R)U*aSU&Ga[G2kNH-b'ZP+HrR+pIX&b+l
-F94@rqk4m1SSEfGcE3!B!+S"5PJNr+NfSS-KIXcJkSmkjKZ9(+YHamRpDCH3[M4H
-BCBV!,8I0fJ(,)m+YL'5f,m6&[&`-20VJZ0"d!5DaDZ9YN!$IjPCY[c(rK,G"G+#
-8f@)AAhaU`H[DChicfJR8Sr##MF0mX8jDBGKh-aCJUSLi)SAM+$-8M@hq3BQemJ8
-B9#T1PApDA($,BN3NrXMU&hCU4b(#S4GfJJ!0JGad9QP0YXKGXXRZaQ'S5dkj#`F
-Z+DemMB`!ZmVr0j(AaBhr,Ra#%CKqq+m4T6AQh2+3!0,+aN#3!0I4iAiM0ic8#lL
-F%%M6I[Pk[Ac&3i@6rBZ"TSmEK,TUNkA9DrUA9+hT[ae6K-&,XF$X9BY$4Mi-8eB
-A"8KfM!(T%hqSdSZ(,08!4P8SDSD"d48r9VRL+"pERk-ImkQ198efE+jq,*8ijNc
-(QPc+M)6QA5E11%5&jHa"r#8YPJY8i3DcPbaRbiqF+1I1(IYHr))k8kkc5ErV!KU
-m5V'#JdMBdjIFYhH(R*!!lR+jMVe6aNhk6@iQQ6Q`X8c+&@M'5J9qSdje[QFG2(!
-Nke4aEPC*GZi4Kdam`dLqf2[5LcS5rp53!,bP)aR-2M9BmHI"iX($M%C'a!N*+TG
-CVpMeLTmU1q@%&K8B!L1PIbV92aAV(6BZAQH$-S*dTh#!'BU(MXQ)"jH)dFK@98I
-YbQmj%qXEaC'*RUe#G00mUY0486lS+"HL)p#jjp-[GRqUI,Q[-2P5q1NpAq`'2EE
-baB[Ab`[0m@4JbP33lMq1*VRQmqZd813`&qN"TF@0D)H9VMF*CBQ0,Vh-840)2[T
-VjZjU!`P`2b*lL-[l[UaLh)CXXhFCc'k&1(U-#dJ1'CJiK4(+k-BFJ-KbFdmj+Qa
-(1Z@&62GN!'eT%&SMS9h&fjeX4Z(%*&+TmJMeQ"MU3kh*Eh4PaXL91`&H43M"CIB
-Z1e"@Jq+"`HJ+%-NIf'K!&Z1mT2QBG$LR(C1YPUI1#4BSRm$2p+JPllj$V3I+$'l
-[%b"qP-+Kmp*YKd@,Qk,IZhXCG,k@9I)HQ1C8pK%pX&'JRd(+B@cj1X',mf4cjpq
-%)rUN(%bdm2kBZ,d@X0CrcFe`CL6Gjb5q`Z`K(cVSP`rP,'("e3P(9P6+[abHkEV
--9hjcQ#-j-8YI%L+jk4@GJm8a,KCbJL,f+HA*mFp"[FLmZ-!j-(4-9PhNk5!K1$J
-4G*B8Cjdk,%m,Nd+"QX4!hF6LkTd)F9hbp,&YhG-(S[iN)r9BV(Y"`#*BC&Sp6-i
-Jb1%)VVKJd3i%5hXNI*!!#f(S'$iX,#kBdAZS&H+dC0r[02!5B+CDqc,[EN-T8G!
-%[103S%F,i#DZj`8P3QiZhJ,6M)f6)B*QRHY0qR$*PI[e4Q5iQPbj"cDjB&+[YVc
-cidr5Cd2GMlh$&p[4S0DC3JDj6%+h#E3jTA`XNK8lZ$,V'cSBQHEcEq`&%FpZ*Ue
-FEh+hFL0RejY3I0k2C%AX1&M@BTG4KAd8X#f*+jMb1&aEh0%UGc,aA#H)NTAIqNB
-"d5DRRE1Yf(!!5h#'Ge(3JeJYTjB$h5f5LSa5*q*JC'pdY"+D45"!""SC"8fJ"JR
-QGZmi*"Jdc@%aiG"c!"0J[TUjc(cA*+FpkAH$Z(,p0jL#NpLM48CF1XRG5U*pN`Y
-+[JZcfG"K(ZE#1Dbc#961"V$*i52&4ab$fGfj43k`'@#B3%`41#pFMF)Q#crCGeZ
-&GmE3MeKP)39S"P599Hj@%#GQfjTV--4$$)MpJ3eJpNLMm-Y,qB1m&'Ifr3&$$,4
-0B8!%U(%Uki2*&L%SZ`$!k)ZDH`D-Sh%ppdM@i([CjAbaH2$2Z0cHG+T`pkGl#Mr
-GVGM!fTrZqE6`bdpI*)419S-0&5!3a8p+Fh,4+CSl@'jM%ep+-dF+%bVq'0X4ajr
-,5l)UZ+*D%$0XdK4Gaq!2aL#4!)02G&U2G,jpUVML9+kFk0#X1be1bd$I&'&f,ef
-&kqq8l3QYi-V'hG,RrRFfE3S4+"0D)aqK$8lVb4d%[ZmD+$K0XK$40%J1pNmKbKD
-!ME*%dRmLUm64H55a!(R#BCNjS+U9&J"8P1U,,Sd0qr#+idMfNF'+S)XHER4ViN!
-r8%E4Sm@e9a5(QDbXZ'K#"!k#e9Cr,$Eal")Jb#Ua(5Q1%GFpbBb6kX!#C1Bj81D
-b[m-J@fBLNa-&c-R3q6p5mN2N3J4V)&`$F#P&pX'1K'2cYE,U[[5H[PDS9lq8Ne(
-dGrN3a*lIVRL6d"8klI%!0@PD*!YLr#SBRBHL$2N&`r5-J9EeCkJ%q6eY[hkq[Re
-5[6f@DrP2@D,i$dF3R6F+Zbr$21+p+HcrKa%3j-S"m`8#"X0U1,I%"-b4Gq6)i92
-&FX,UTq!!i&kIcp&r,2V)QIkEBpi0(%('f1N-,KiTcY863`ihXk)%'A(R$$IHJJ&
-($+ab4lf+)5VU4`KY3)lkF[i'p'IGVHq8FD-d&e33!T6b!T-%&YH)*J+kh&!)K8J
-j`kbf4dEBD')Ym`LPP8f#4MFGaSE[E(5GqAS6VPN1"!&L"0j%L'I+!,0S!!86a88
-0#A(KmaNX$+*hf(L62+Aq@1+cBNR'Pi6)C4SVPRr2V'Z0Q[-[lj-rlF#R3iVp!`-
-Q@mi4F%dE,D,-p4BY[fE9@hY0G23c,G4iLp*d`Z#4LFRmX5NF0"Fe3%8fmf!bZT!
-!h#bJhX83rc!f-,[4+!Q"GKTJ+3BJQa!&%i!XjiK-a"+c(S%L%kLd2PAMEUlr953
--3Pe&RfilEG"%MDYi%8dSVXedYeVHj%NQQca0I"''eLTC993-j`8f$X3L6f`-Bde
-EBQ2V)%JjiJ#CP4*D`(N@(F42bYPX#S4amYDkiR-A!(+Y'fb,!AH1GEedbA#k&FF
-kJTFR$pZ$!VG#0hqq4)IVU*(eE(QCkXRKL%*((Zdq54e0[E[9BfRe1rRU9RdjEPV
-+Y6VH)15f+aa`Ee,!J9!e*JaG",-5)SJT-'SCb)6(&!!XZR+RXf`9NdJk$)H%KjG
-MBJ8h`EMXAMFP*PU1+PlT,,&p!"[LUH,$*Hq9Ui6+LDS*4%E1b'(P#LX-bAVA@`a
-FNSVVmYGF#AKBq3+4eT+C04M`kqX,+qJ$*B($58IpNGrqAMp3d0M+)X3LrBR&8(#
-hjqm8S31-rP+0PBIT@I(a0ibF)`A,,UGeikS,K04mU-pl''JaR*L-LNb84&SGM&,
-ZA$X'6,#89!S8p3#-c'9(cQ*)h,%jd4(LMT@*MM4hj#8kc0c4S1KNh@MfYR6dQ,B
-,C,3bh%E"&&!&da2[&GX'1pmq8PcZq#!Qc#GCQ%ifb[3Jc0TJB6liXLl-fL"KjXD
-%q@"KR5a-8cGKQUBU6"-,Xb"BQ&Nb)XT86#j+[E04h$['ifFaJX'b%Jb@1(`EUHQ
-",3NeI8c@B%8j8UXZK6LJ5,-J+!U0-'101'q*$,BdV4JTc)`jEB0pb!5FPp$4P(q
-idJ'M`iMc%3e%NEj@&1*mmDN3TDMm$c4bp)1UA$PNS#0(Se-jiQ[02mE4%"SH(YE
-'bDLrPU0[9VR+BNRKj9-9b(SI3A4I8RaJ-+kJ)p*1Qr5K0L`-C#J!Uee6+!![)3,
-J5MX&)%$eBqXi!&HF1CD)e!--FMb8e@'$!B$X*"Pmk)Qm,-%q,mYJlXq$0VA`FQ*
--4%0q)+,VjBa#c48#'J(2&83L[5c#i%K+AfU,[Y38)UaHPDUa0j*e6G$5l(V%@qi
-kPMa!+YN)#Y2D9iemcGQ%!Hib)B-[EU6SXTl0Q,`PIp#69dd,*Sf2XN+AG4VAkqh
-%4%Jb-`eDJjlP+(9P"8Hjb5BGF0+3!(ebjYcG+JXQcP)3c$p"-,T86KfT51Ld#+$
-Cb0Jc%LHD5TE($)aSb(-HUVFLI`,`([E%-iEfR3$+k!+B[3pE0F@c["Bj!,"4BJG
-6aTqrL%CI+Jc,QqR-!'"EEf!$bTI4`YdbU2r6Ka!I6kH2!E5X9NA[c+ZVrj9V5K+
-4X8%B*+dH"`JX%c%6#M2ckY`B5JbSQU+Q[$TQLdE"b1AXJ,0-CHMSe!dG-DD8-lk
--#TNM'C@X0#93836M(k+-+#[%ZS'M-flJL%AH&Piim)a'"(jTXJMFM8LTh'25&E*
-q,,Nd0T(LJJ8j(&%LkQU#3&Y9Lip(-GJbY[BJKF%eKCYGX6VJGEYEYC5FJ"BGi#L
-6N3h&-p#kfLH[1jEK+-93Q!KJVRUFX@`rTZ'RV(SGCrie@I8S64J&rQ9YX&%!DX9
-Nf6apJaCX8%mEY(LF-0[c6kPUSj5iT'r8VPf5XjRGMd'Y9[K!)R[jke1GimeGkKY
-EX2&TfYMLFFDC*De[jY4DC(1C[-'hSY`C%cA-G$hN'DH+q-Ti%$qV4Jc9Bl,FC"a
-a+Sii4B)bNB(%VL-Ze4'R@JRadPlZM'8"`"Tk$N"(&SJ,28#,6#K8-Q+Rm1Z)6qY
-#$h3rKSc,lA`JSE+qaN,A09CpSbCX9%8E0G&'kNdXSNVI*+"e8`lP$EicKMm'UDE
-GpE+,fkKMkK[0RKLmdD[aL53di(MQZbdFS)e-f)K"3NT(EY&+BaQVT4bSHLEUmUP
-1bN2T#*caa16dU"F*XJ!G8C1HQ&3,l+rP$`RJqFUTcL$BH9&#1$ee)F`a"`YK#Qd
-b@6a`FCXe6AfciDEJc9iKJ5ILBVe"L`p$HR#$Qe,1G(+acc@K*8rIB[',Irl-K%E
-URBjD&0ViaGSGp5!Q#E(5YVfkbH"U3H-,#cGM,kmYllcQeABjTMYUbjmSlp6iB*S
-2QR,dJk9bJrF$Y3IiU)Q2(RML31Ib`j9[-%"5DRef&0d-U`ZR,[Rk9![,&2Y"k'+
-DdS%-XG0Z*P*K#lrqq60mpGdDSLEkX1L95UHP1QP!bT,+TFqNU(4H'L00N!$bT1A
-5*p*mDCDd51S0T8+"8(ASD#J5XS@q#Hd0A3XeKpi)63bY#*@&jSGQK4D&HY1Tp1P
-dAASJRC8Z6bI6Zp0Rde25aR4qHP0kEATaHVBjC(DDDma(c9RQFR25[0YmeYaQRQ4
-qcPaJhQbHCejLRQ%hf6[XpIEMGU[pJ(f(IBrGB(rCrUapMEh-2YpqMhf'hq4[ppI
-lMrYcr3Im1rhAr'2mNrcjrNhqYIl&rYNCrSbQM*S-AmDKM1b-Vc*fCZc2U-dBRG'
-9X5+M,'0GaVdC#c0QQ%+Q8P1(UGUdbh6)j$)G-(h@e#YqM*rDmUZDb%MUlQ9b6qM
-ZQq5kG2FeF[YdGa5jEYepJea&GjmPYd9hRb,AV,YGl2TRk+k4h#@k1j(FQESlPYb
-EGIF&FYrAh@RNjZYZ%EP'hFdMGiVZ,L2hM1iq6fkQlUiQGk[Z2NIZ5GeG3fkal[k
-5h"(Gr3@jZh6hKq4@kHi+FYYeph0b6EUlR&el[qlqJ0cEGEH!h,Yepr[NVYAGrb"
-hNqkZ)[Gc9"IMam"#2F"G,!!qP%m(TZJZLGKq4RG*U2C-h58afVHU8"N*e3RpJ,c
-J'!2mLY`qr5-*b1l@A3S#Zk+MUSfM+Y82N!!Jl%*h+BM-5rAMVm@QB*kPEh@'$Xc
-Ah3Cb2p'20q0R%KeISD1Mi$"29+'E5!G'UlTHS#k$IS@BbEa(GbNJc$Y8'jbPi`j
-9ebMU'P&e[8TG,)"rCq%4%N9ei(Nk%"-!XD%j*J!+l$3,B&e-H1Plp1Q1)hHHlUi
-NGl0qmGr),G"G5PMTjh5Af$Fp5E@%#Eb%p"K82m62D$T`AL@8CMU`9hAP$(9pTD1
-Na*,1ePeL`[3K&E1-Sq10qJ&+f1P,qX**)'QRlPiP0k5lrm4ZD$DU(m8@&RT)Gpm
-LGkjUQlGiQp#(UUiTe+91!-p5Pe(9p62UDP0e09$AH9AAckPVVlkXlp(@hqJ(ISf
-IkA3J@cp!`JmGdKG+!42bkFF[-026F4E![c$lajJkC&&YqAhZN[T9A3A8Y85raS&
-jJEVQUEU)(D9290HHSUjB!U#P5a09"bMSTG'U,NSbNN(9P8pGKIVdcK)56AHRNq[
-3h3[NjZVZ%q3HepeQFZYepa9b1h6hCA)YZ[XUZb*(GmH3!,Y&GbRBD@RX6L(h"Pd
-%BeRi[&J4!i$%-Z*chCe!lMMGr5Qj$EVlFh)ah)li4!F8je$j,cU)LHS14eFlG'%
-bS$qKIf$!NkdlM'T%GhM,SrS&CS4krF22i*c@(9k)8hFi'M8hIH5ikRM#ChENjQG
-9LXH6T-TFj3E$#B*m[5%f0pF+FG-R-cHNEL%&CK-T-1pq*XaEB`U-1!hUL[,deR5
-A@C2rTCG6jDMCKBYe3U+VAA5e&82mcBeIA5iQ#DZ`LA8BIh5G1#"fLjeLM&JQ*X,
-p6'a#)iKVU+i6KH+-1#NfLe9`4SYmkP`R'YVla&-X@&5-U*a&CDaf$Dq*fQkmaQQ
-&H19T1r%UdMl$khRY*&l2D3I`qS9Q`qYccBAA$l4F[2j$1i6A+Qd!Vc*Y&eiEY8D
-m0QR9H2eA6F&VXpD"edeD%ekp@LPH`jS*VcpTS2"fSNQQrD4UdV+kGr!c%DU2Uh[
-MT,93kjl$P*Y"-YiQh5XDT*ZNHG*XDE'd4&S8ZL5k3RkT2i5%*I*#Pk3f+(k@8)[
-)$ef#Da"PBL9%-9HX&E1N"V&%$)XY8#&08J$M*bP523ljT"%SNeETK'569NTGdNj
-*Je+C53MHaf*"I#j0318#*dj8cU,#3Z4N`N+X4BA&H"Q92DLF3@8V+QqL`Q*X4Z8
-V9&lMa)R+G&4BM%qJ%N%&!bC+ek2b#LSXaTG4U82P994U8'RMa)R++&4D8"Q05JU
-9Ye!*S6)&JGQ2bMqKXK590e"CL-U[1A'LdS$+6&3`J+LBMmS%9'j#jDHF1&&j&T8
-#9(k'bJT8*U'b$*9IS@*%C4SU,)!eU,!!IUNcdIXk%rdE-G&r)5DkQCMSAiQ*jK%
-6c58QHSbBk#&LSJH*LCB3%rf0Q'JK-G(ILBPZ*bCD3%bdL*MSAiL*[N9-Y*5Bk#j
-LSYNa*NS(d'cP&da5lq`6hd%(%rJMiP+aeZK`+3pI3-i$B@6`J@!G)IYh3[EE',,
-3c8!f@NIf#6T@832Mj6+biS,[h5$f!XNCr2`-T24FEF6V6F&@RJCbINk[#I6k+FB
-k&1*CN!"Hm`@HcJbDi1-d`6Nd`AkDi!DDi(TD9!iYbKYIe!!@9D3[k[p#4cdYUJE
-G"VhlqqKSS@i,[I`!4QN'4P*rH`ZDpLa'p3d-bie*r1N*QN`)6G(3e2jlCLN6+Hm
-Y)Aip(31IS5Sei6@&AJeiFSJ`r*aH%c#ZRM!m+i'-a2!cHNf5-$P$&i#1-$`PGH"
-P4!j1'-D*Qr(+Tkl[LaPi&I$V3Ufi"l4Y4M4X%FeR"BJmQmp!0+,j9A%HVe&L$ei
-6b*NNB2CSITj&r9ScIhLYLmAjfN5-QLjHHd%-d(,E)+3ZRAPId*PhQFkmUhAQcGH
-CGiA1[$r8QAHjcVcI)qCG5FaE3-clBf,HMiKj2b6Qr3NaleTLhZZ)HHF6mrkHQ2F
-'BYlI%I2qC`VFQ45ipe,JrRF+h&N8Z)XTF2mE"HipHZ#H41$m5p,@2@JX9i8Bqfp
-S#)f+X5XFi-Tc'(#%+QI$69S!5,B3fMm5fVX*lIdk@Mmp%N,%KZ@3!"[Ydd0QC1-
-"$!HLLSHpX*C48e0,E!JJ0"c`mG!UX8ckqM0-3&UP%ij`JG$39K#[0pbf&B6Xck*
-4[&&a'60N9#MQZYZb0C+,)HRmdA8-E!EU4#iDMNI3F+G1(+Sh8-9GE8$$qJB-j2i
-XQYk$A([p'4#2MH0"Y82#ZibD[kpJebb)32e-9dMIi*bPd,SY*j6Frqd4B#YhMMR
-EE4,V*qabVcGD0jCIf,hpXD,j"JaD(i3fE-E!!09SC(R'@XE4Mh9Ef,arRGEb31(
-k0F*A[fEpmZSekeH`B$R5PiPH"c&dfk@(j!Hlb-0#S(&S&AA2VQU'Bb*R8P8c"Nf
-bl--J!6c`iH24%b@+#`1SB0!UkV#G+0&b9)2B**!!"9ir![Q+h"5$'fE%1kIS#al
-TFF'ZCljJHB26[6e-J*!!rmEjMd%Z)b0$&iKGT'm'&rciCL"df8UUMJ82")*0,XQ
-I8C5!`cR,HDZ6*IY-h(a8hUVl*6Ui,SEdK!ST%eQMZGDMBPNi821S'+G)E8A#H0q
-J-#UR3,*ek6kVQ$6C!ZU!kN"9-lp`U!S2kfULaDcZ0iar-5$Z9%pbGArQj'KSd*!
-!$J``BX62Z"ZC`'QCiZ+&i21N"hK`,i-`@VFL5DrZ9G"X)3FLc8'(%B2d6F)JI4h
-&'"MQS*Xkq9$p!rL)DI'!6XkJ`&`!pU''JJ`-ZJH%,140-5'[hL!Z3XLaL3h,9fN
-bTN33pV""9Qb$rVQ[Bi1emY9[[m('hQHk!9qpL!d-X3ek0em8%klZ,C1[d4!ajJ3
-V8S*D(-YBZ1V!MLNAf#"TMX#KMLB%lb6(-M(T0cD[Yf)CUI4P1054P*IGI))E9+q
--mU0-&UTBT&FIFQSKIV`a&X%J&b!'M6%*!dB3R8I4A1+hiDe-mSSNZ*H'Q+[mmEe
-%*,Kk$Jq40i-)5PG['0!E6S#`AGL1,2M%EkhF--)G02d62'LNIR4%GaK&RZi![CJ
-*KMc%Me24"mYU(6m`%!F'&pc81&jJi"jFm&&696-M9e`d,#kfNN&$rl-F,"cPA85
-#,1KG++2L*)9Y@3!jRU'b'A*a&+11Ep#J6i821LPa9IF)f%X*#+Sfeb`%!PG2$J"
-Mb9!HX0RTLchfTjU*%%#Qhb06l1)Kj+[VK(%jMZbP!H@C6@VHjU&98,L1eh9J'Dk
--NPPQ(E&-#`D3!,Y#E01Q$be4J+%0K-LRS@"ii*YH&3[ea`BEp&`*BU$qm6)3LVD
-pMG6XS2)6(a8pb``dQaVUb!ad1cr1$f$C#3C+kJad6a!$hDjLS0NU"J,k('kiIdL
-4(lUQ'M$-53e6@'K92k)JD2qJK)LM1C!!dp3!#-A(D++2T[!3!RGI`6C1&N--P9j
-BNFRN@(+aLr*1MDhQ*45hM%S-3"K,V2(L'4ER%NC0Jk9NBCJ@E+L`L0T!VReFEX!
-`Te"2MX2mU!Y-[FekE8ie$8kRRMSIj89G8Y)UT5ka+@mfUeT%[FYjD"8VKM2+j)&
-3*YY1*,BEIKEEVE"H'elCdhE$aZ$YBJ8fXN$MNl`50-N1AFKSD"2j5l#)PA3LB*M
-i5dGd*@MKGErTp(Te**FB#B-SH5SbQRB'%&FC3!3Ka2+j@C9FP+K`NP40HYL5Q26
-MHCMd$GCVMhr5dk3IAm16lMk3!"dRe6L3!%Q$B0%N2aBY#R)L9b$CAbeB19485R-
-X`6-3QE&eF!%T3J$Yid[X34HZ[iJ,1A'!)!G%%kP)'#333ik&))Ed`QD(iHr0F%Y
-"3-NJFb,8"Im$RB)"4SS'3`N`k@@i4@Gk'RTB&&16[!*a24iGicfm#!2pFJ,h@k-
-$3JCXYT,J4-'!N!#9KTDf4'G8**aBJc8-3q$FSq4Iq04XG'ZP',Jf9E1pC@k&)GP
-I-kLF8L@L+cbF&JPp*iD*5CdS5HV"Q$-c%B`jN`i[q!J2XIc1ba5-9i+$m6ZCa,S
-ZpH"Y#@!k@@4b"N"qf93MNle"N3Nb6R*N-YXfYFK%KD5$KNcQJ8a@AV6586#M80k
-k@e46`!1R*93hp@#,f#"rmSR+LJP289kfYqEL&b&DaLmF2R$Abr)LLE"4M`V4D*i
-AD+N+%VkqH,qk%m0Zlj5liSN0NhMF%(YJTZTLHrI%S*Sm6lb-1rbr4,1Qfh'KImD
-(#@Gi8m+CA4cI[0jX6KR``6ZCNS'*,9dZ4raaSAG3XlfY&0A2#Ji!9KVNL(miQa3
-%H8Pc-@4TA#9i2)FZY55%%KYJe,-0SYk'i[X#D9fpB0"AhB*KF-`RTXmE[Ecfbq(
-kG-0S1T3'S4NG&0A9U6HH&kClVR+8RBL)P$5f#-5'"p8,efQ3!"Jm9YP8jmpf`cj
-PUDr$J*Ye`Y*`QC0N2XM'Gj3b%(N$`#$El`-SHq1bd[+HiCVdTp9DalbV!!aQI40
-,mDJD-ak1B+LA6T3X[rcPBS!6#aiS#k)Tmf5'F$5(@LDFqb`-[)Q9UQ`Pqk82P`P
-qC,4P-B-Q#e4@Ch!%`ifD!J6BQ1J85NKHm!+U"G4GNaaC*,I+`TdaMc)mP4rZ*%9
-59L[kUDQ1V&BXPCXfIDIJm))2cqKUaF)JS,&8T9EdUp3+4Tp,DN9D9NS(&kcELSD
-h2S`T!8(qUHJU*Q6$0&ELTj!!(J`42$JV*8"-Q!GqJV"'b(9QEi9V!X%M*PN"JP4
-%JB&%!N0N!#$)c!%&c-hN&5*A"SAK&KlmbC25"@)U(R@b4&FRVqK*qHhZ88Ce0i9
-5XAAV@#-hCSP[(J-D0I*Qf(lA#6bf'8TGjZ5!BqV+kp3h8c%S"(&0l)F98J[%TaF
-S(X@$*S9$dkr1ZqUSAAQQmKl&(Q1eENVej)XpmArhBJFAr+5JHqBi$PJ@p$HVR$D
-9Be!"ZhTZLT6)E0rNQ!V#2*@6Vh,+9%iA4EEHRT5)"613!*PhAEc5XH$$Ehp"&G'
-S!6Nk(f[@eDl3G@9"J&PeN!!8JCH%Ip6I-*L654rbfa`XG&GEdZ4BrI`-KAqF`4q
-GcL!PG%!2qK036d,e0U94A1)NUS$XYlT4(!h[iX'i0YJF$#LUqC!!BK-mV0jTGUT
-Y'2kl"X1+Ea1RV4Xhi8(AL,C@GXqBaBBGMQdDN!!IPml+6'I%H@Hf#&@9ZlD+dmP
-5!&8-+-4$Hfh!X'ekY`Q26Pc&jE*3Z)k'63+4"iMrr+MBaHRUmTk@S(3'0lJHIkC
-4$KCQKJh$c!`EbP61CT@c8UfNeE3&'hEi%I,k&MZC$Dl-)R$GJSJ1cDLZE1*S6J[
-89e$h&Ehl16`qR"qNDDRHbL!U15ZZ'[(RVq)Ze-JVJCi8T0K$k(YH4+T"[BM8YCi
-@NGSaY8@N@Y5,f,lffbmL,U#2IlL@QmI&$HBbi6Y85Z(5'IU5EN*R*IPi3Z8d(3p
-Lp)mKkP2G!BbY@DAmp"JJX8B0LNdQCTa-B3S'e[HU"MHf`$KSaSr*qL0G&F2e8&j
--++(4P%'i[DUC"6T8JXF)md4B(@c@9HJ#D3*RUUQUU)Hl)-$k66c6A5!9*c,G8L3
-KK)aG3(kp9XdAYVqK$XEYQC`eib(r(XGJPYjl8G%5kRQ--0`C6f!d+$K))E9FMd9
-ArQqLC@3bH)pP!j!!a![X1BR&q&FN&Z-I4aH1BNReC0C!jS@'Z9bM(Nbmji#rQ%#
-8Q8-Q@p@AH&,&'NfUTCcZJG(DaQ0J(8p#9fr)c+%23V)`XDAAQ0M5[L`4`3Tj))U
-p'*MMEDJ6rNFVK%N$X6qC-ULa*"kQBqANmB",Q+ZQ*j*',$-@YI!`NJ$mB[)XfEH
-XL5cCYbb(&mcIBlhfB'p2@E)((`V1NR8hF%hQr#-6T(h#rrX6T2Q04)+d4p3*dPl
-e2bY"TJX6Lc'hUaD6qPmP3DB0rkF6C,Vdre5#A,!bN5!AR%1#R'+pGXrHRK,N23G
-H6i+-,B#B3KlNaeR[8$!)Yc+PZNATV1QXqIJqC*3&"P45(#33EL`f-c&J8Zm%&C2
-Q+!iN!dSDc"5+3d&fpLm1BDTiATJ63Za0*KBXhB3&qp6-N[K20BMiB$[F$'H$UFU
-+ri"&#D&TBR-d"-XEd5-608A1N!$+`Jl0#NS)5bJK9$a!8kPk5kPJ3k)bADQi%i(
-KH!l6XqM'UB,K3YNm(!mFEP6Q(,*"r*Q*5E$$"KXEC8SHYkSCI6)McALC,3')BQ$
-SmF4$EbB6`2U'LaH!G2UC#U!rjq)&i*e-!-pNd[eMrM'&+FqX!+Dlm6H@!*5++TY
-@8qqUFN#3!$SMVpp,SVA!K@LpV$`he9Imi1ENh2SaeEFSRAGf#R1#JIrAR%4[dqZ
-D40c`*AE'$9m&iV6Dm19YlfliNLF4LalMKN0QkrjBp2Ji&rS82(k)-k6G#kP9%Hj
-&,'$pr)YI`)C8E!(pXkQSX(MU#`!b[mIH+$ITaZ0)kfL)f*V3r-Z,,bM5BmfVmNh
-L8h-9KNQZNa4lfeNBZaFVSEV@aPCea&E&#%*V$FJFIi1(Mm+dp+IAi2K!"S4fc)B
-,Nah'aqqZ%EI8FpEE1DXC'elJb`mE!T3BQI!$a!'(&1I(KZYqL35)KpEP$-J$HmB
-qI*!!q$35P##9`3@c&K,*KKr9'6d4E24Bm!hLKeNRkD*cF-'$Hbm'4AF%ppm84j!
-!HA%)G%+(bL@I%j2M`*`Z93'*r,'JTimbim3r`95E+0#20KBr(AAhX%"cI)'eVh1
-"CE'Y['dp*'ERkb)3LL'pZ3HNcfKLGjq06fcL-`QiZd0a"*mm%`6rr8`F`EdAJ`#
--E&*@ck[9"jPPKalJ'!dPK)lLh5%#C6%KA@6JUa"8M3q"IL$Gdi(a#IRHfq16R2d
-k*MP'0FRQlT-%%mal[FbYZMacI)RQG8pZ*$Dj*9@[Bh*69*0VkckjJpd$X'&m%r3
-fpc6"Jpd$X1%I0mNr6SP2X[ae62*Ce53EHJM!@Gmq%IFm39aqU+I,cf4b-aI(*eI
-lZK2`,KaHJm-SiJKc%E+*MX2SHP%!mKN#3G8#fVpY3*K*LH9LaZk!&i[r@c5SB*H
-63jk5iXI2-#RFaC-V!J!!0"""4%05!`"Qj4"9#c3R!'*VNqrK,,MLLVY%Y#V"!9%
-4LG"-NFc11E[(X0%b068c!3'&4%#Z4r&k*YqcZb!L+TUCN!-jeMK018l6ecK0A`0
-QC8eIQ9QKUD'5UH1NQ@-'Z$c[ZlZiA)q0cGGhrqlVrGhrqli"(93'!!'3!`$a!4%
-K)b(Q$Tc[MSL+q[1#Ki9JmcMbcbH0'`aA#bI#aF!P`1A!8EK#Z#'hGKRVdh0618a
-H"MHf95Nd8!b,NM6e68h(YkZ"mLpDAH"NqT2Fb(m-kbFCe5meHq"SqVrb*IjCf&G
-5[&V%[`llQc4*r9QE''LJJq8Nc4miKNkAcr!I`ZC))p8!2M2X'kPCRDZp("K%jmN
-P[&IB&p)$k[ID`i'Gp$ZjQeB6H#[pA2Ea6m-'59je[PBDH$D+2L%rbKm,Qb"G9dr
-bm@(25&I9hfR2"TkQBq@,2$*XP)4%S$dBZ*@kj6LY)[!K'LYIidq(MC1+e9Uq*'b
-TG%2pShBLX)SZP'r@kJ0[SS[NfrNr`KC)$@USeKkiNGiLAqChKLf@PUPYI&EBE'Q
-$1N0V#44TYYa6#`r-L+)IbjRmpf'pT6hUE[j"f+qPlHU(@PjJ&ZdZTr"A`Pk5GUT
-re4)$NfPIqAhYfm!Gp*pb,[p0f(!TAmhKIF,q)qe9rk!Y$ea$AjGIdei0A%pr*Iq
-ErerB'p*+pANY0E#!rTHmMrmPl%ATX*V'A`MlZj5ZrPNl'*K!"mJVH'(BP5HNapA
-RY0@"DqN&ZBGf)(!rI8pqK,mE0N*DTrEAMJ4q3Yq43rK(BF1NAHSf2M6X,HNfp@h
-YMX"$G)JFSc8&EUDRj$raFf%4dMhUrIaif$(T5I@mYLT`%qf5,G`6&L`*kP(YhX!
-Y0&TfDNUJQET%@A9*B93594ID(CVb[XCe2TPIiXhm3EkH4fP4HY6NU%Y4c9%24R'
-$d9jG9"H[6@`FV8qDI%Pf0LC0%U4$"N&5i3)0@bKXcQ4"1P%R5#@0JQ5(#i)l!cF
-*4#m#%8%aN!$mF%N6,Fj*5AD,8k0&&QFGR@4akX4ISL"1*Yj)SB,3UYNS3Ej%r'6
-L*l+j5AC"-S+c9Lf)eB)d@4FNh5K)KNC9qkphk@Ma`k0Vmp,cdJlRCBNIUXl9U3A
-LlZM0U@*YjSfciMAReGYK2-@LR*)KCPh)64CAlde2cGZChL"Z6XkXEa$ca93TS8+
-mU@@IUck$)(AP*UI[6Dp(IAF6BaDa1I@Qd88MqHKl8r,%j'K4,NK2c8hqIi)d&8,
-Tq[@[LKSe#P5648ddLTVU0(*%#V&QbFK&MAR4+,Z-j#GIJL-C0B%DCG%BVA&#0FU
-5CJ4rJJNq@!)4+CBEXB$c-#`"42a)E+5DfD&1S8BfJbK6U'CKUTJ%LJ[F0"PDU0(
-X0$+'P!Q)b!PZ9M@8BA8-8j4+1m35JPPNY)$V850&&8ij95L92BLjeh*+T&j1L#+
-9bB)5"a3R[%bpPU--JAZT(1e!0&0UF6#JAX9&b$)9,C+A+NFGdleQ#D3BKN*Qbm&
--JeGfBPaa%45CD$$(-*9J,bT8C$5,Kc'"ETN5NAL(H%IC!XJ@Tde#r,!I`D5hm9"
-SY@J3Ube13c8A$5SPS)B&XN3S-[jh'RLe6)(P3J3LV6D6@3+CL2Qb@+e+KQVC!aB
-'cUBlUdNNBj!!c$%S"*@#%c!8`NQP"M0CbDjU+h19U0PLeHYJ!a6-SahL@I%C&eL
-*k'%H,'8LQNfM6!5Ne3V$%JdZQf3i+V,jSN5FdX81#0qR*$K#4bl#F8VX5)&!*8X
-d'DFXKf'cF,6Nr$5fbfC-N!#$E3c)Z#dQHbT(-ljJF8lL$Jjm#YFQD&"1fG$CE!m
-CRL+AacDC5JkY6L,G+9'c5NXNP9fLBc-GdYMiBlFeh*iifDQ3!%5!BpDiUNL%SKS
-)46jI$AQ`i-$JLN&a'3J+$JXeR8aUZbXU'l'jDVE!E+jCU+*i'(Z&+QE*aSlS8Cb
--D026T6Mi-cf+K0R4C"CS0N4#FS+h6$3V5M"6`qTC'Aa2@DFbm4NjKXdR!%4fSVa
-JKM#LU*)BUBH&A*@G)VaMJG-iK3$&"AJN-G9VLEBYN6S)QZSL#b8'2$Kc&P&P["5
-RLT5KUP4NAL&XcF%-adSR+L#$PdJ$C4kE%NCK2#5'#JLT1*KDA'5qJT6T!LUK8bD
-(95Dc3jXjaN("4BmD49jYj)CUi6N$*`%bIl94a%)N#`*"bBj9'a8A359*$fMb16E
--TJ+`1M&&GQ)+N4),-p*#$10$q*NahH`L2*'9$H63MK&0c$&ml&@`M4d"k!b&F#-
-m(1)S5*9'E+q4V4A`ZGI$9KB2)jQG4!iABBS%+dH$QCGl93DNM)#%4Ur+)+%Aq33
-(!9#[HSeb""RJ4Y#0!(G'0S'FZ&&QCiJ"aF-`j&0X"R&H"Ff#HceXC80#a8'`&*[
-&CKR*(TJpE!CK&8c8Fi"F6'(XEG20%)h*C)ka#F+Y#%G"jQ`SfL%L+LLQ'6$HKUN
-32DKFp*CkRr3-#LM2&0kUp09DK*c-[)48I$eSi5f2S,eQ3P!b-RGX6dXX5-lDP)[
-'@A*HQRbd)r4*BIAQBh*QIQT"mRBVQB0FE0E#9!3Vb%),1i,e5-4CF$Q#p-LAmZp
-[@f(*5-hBNTZ5QTHf16QK)(9eDPTHaNjZZJ$k"qBVCC%`m!*B[SlJ5l,3`T+`4[N
-U,"YZ,$5Nb23fjHLf2L[5%VHRjBRT8q(#CJldqU5"9A"E-G-Z5pZDj2IZk$9&[#F
-,8MZQbHGD,6%Vc5TKj4%+eMMLJIh*3KXi(1YYL!I!p41NGDr)dKh2`qAlRSZ0%A*
-5`5A24$lC45L%d6McX8U$6(D&PQ$8EGEHV20*EhDDd,3hUk!X&16VF2F,dQU85Q0
-a0,&,i1E,dU&5Ra3*,T%'JP"$&mK55!,F)EJXfA1J0Mde5kb)bE2Q!SMajJAcq9B
-j!r2Il!hYlb2S!iFlV@k5Mkj0JB4CBTkBpPjLQSJ@IGQVL4A""+RfKRbZCI16(4c
-&PKL6KE15$'+,'M`0V$pLV$2c-p+U'X6dh$9j)DNhq(e5Flje!LJ25AkUN!"196l
-1IZ0pdSpBr)K5eIjeF[#Z"5eXQQG24PC)KTJL*@D@+l@0&Tf5Z$dh-`4(*#@5Y%P
-BrVJ&l!l"C3R5*ceP6dJl`qe+,%J05G`GNTD4[$f2DGGqc!,k5U!HKqXY5,Zbj+-
-KlGB%p*a`1#mjp@*"FRVZpQ38jP)5NlG[KC)IApGq60+H(Z4U,DNc-E0&2LkRTHF
-PjfCD2dq+k6'*DGcX@&a*6'0-,ERT#4QTQIN-F2a5Srh5!%(FL%r$UGV6mhe5(&,
-Sdq0m0%l9iJa[jC)G&hGMlm@mj+adX5!j,bFK,c-e,bYPlhh-8q@*,5NS9lk9PjD
-A0A@`p-YhjB1PAfDCY9m@)SJN#qdR!pB$IG*2Z-"2l9SF2Jc&PIU#iiURT[FBdAZ
-hm1DRr+R!Qjm1Ql@IAN9`J5bdRiCK[4Ea"h#[Dh&0d)em%"IZqcKZa6rkZ-6+-+A
-e6Akkf@`&3)1VYCrL''JCM2[m0"-"lM-Bpk'QB!A-#kH!PF(Y$+aNCX-0KZ[PZa)
-A3cMHlHd'VjQLYP!E('06fm1X$Fj(-!cZ"5fZCfZeXIMU&KIS82X#8jYe%DiGVK6
-1Mh(!h,Jq[SrLK[qVkZER%ZeRdDcpA)dBZrAcD5dZ#C1cIFr&,CQ'bZ$R,1hR0-a
-(VIIc'VKS,4CFBb&DV0Gh2MDQNVB2Y*pId'*&,EEfZ%QZj@@Klmpcc+eJaFm,S@8
-#JNLbd,l'a[cmP8rk'K[cGEX@UmVRGbfS*0[A&l@[lp&LFl4BXQdifTX9HN#Kia6
-kTN,I8HK(#ZfVd!D&[U63re9S1k0qJ1+V3[d+rBp#2eDS8k%&#Ph+X"p4k'k&IU[
-3D)8H91JmKASBaal-I-c@13VpLd+[-caGSE0*'jlk'&1dYb`+GFQNZ'aQBd%+RFr
-B!AZ(3Lqa1EFcdX-+ABkfN8,(Shc,q+jK1QBSG*&#ZpM!8BAq5D'r9ZJXKHj6+(*
-X(eC#ZCQY!pPpELLN1(UC59bMd'bQk91&VP4SN8*2+I6IM&%r*Q+B3XmUp+m+,@D
-Lj#[dM%)2+h5[3Kp8k!m+rBQ46M,KS$A6UXr1&ZHBS*MmRN,I8ZMh#MfQd,N+RD$
-3hc1CZYM4Af-brCd*j&0S2,ZY`Zk*cHLRd!X+[81KJjP+P8Q3!+A3jpN'M&6S-)@
-k&4ULd$U&AP5Sc%kNPd,I9qJ3GQ(XC6-lpq(XEYd8fP1Kcl(K48a@R2irf1N-91J
-If4f@-KdEf*d$&,T4SIX91P1K3aAkQ8,A+r3@KEl1P#eNrjpNSY5bSm&PGV%FFcm
-leZ-+2F4f#mUZ-$QJq`r@,,+CRH"HGXR('1U6#PfVd2i-G4mlr5TfF%!GT0#h&ES
-+SV2Y#3F[PRX+f$jpaC!!4-Ck2pZ2hbPdQ8*2+$4#SEpL&`!,Pd*2+h5X%[8`TfU
-Jf$-mfeZiBP$TJ)6jKTLQ`EA$mjIiKaa++Zk6-mlSXI4Vlji9@M*LADr6ckH1YAG
-YqV,KPC3&3If2c,[iaXV)DUFbX+hhRPNe&pCfZrj#fS5LL(ZqVRVrfi8MKfkE8r(
-kQVLkk#fr,2YJpq,1(JHq1rRLiI(aaqrrUVj[mXd"`hE0h2VDUe&Z6C,$@Ml1Q1'
-lm[LRCrpmm)Q*TcErI1-hZ8[([(h(p'[rfIYdBl$`imB2mfjji0e([RMf[`Tq0rV
-mU[qprD@GrhMjR8rQh[9rrakPZma[E[KpjZaERe[pqD0r6hpXdVNrrHh%2hImmFa
-EYrh`d"q@adiqHZp2PhqprFk(hp[rrG@rl([QdV%R2l[TViQ,QMm+qHE"AkhhRPG
-b8dfEQqGD!kI2eT4I`hd@EGBq3`[KXjjNSAhf#YEI)RiHEV!@1eb@`T-!DCHBejS
-I[@i+JhJPJ26Cq+P8C)1-CQf3!0ehG*!!b*K!kD$6fL"mK$-#MJjUF!398)`@lL!
-&ETFfD"HT#'4TGcKF%p`k!Z6Jd$+0$I3&a`jf9#Z$,QL$KQLa5@AV%04FKC''-Lf
-@)BPT1+P9L9Pj+AaEAPVLNfPCH@PX6GKPQmZfFD)6Tb$-aeh!r0-DXY!q$F#k(pE
-,i#Udb'+S*AAQ%,LH-[*dBDCak[c1Pp(rk8VYdbkcpZNHa#2JHQU46C9j"QFDbfP
-XP-0XM[ET3LdbTS2"H6#`&HYB+`dihBUdERiYFX"lPBYl*UA"EKHeEP[-@VF'a2I
-$EG-L"jYGdpD)R8Bmdm*RYaHeES&Dj*,bfR%A('Hj*5-pp6kd3,ZjbpP8Cb)Cqpa
-[eMl(lhUIRbB,lA-90ef-'+Iqq4%YFTbYS6S+U(&`S`aSk4RZ4V,9+BRllS0NRrH
-GZQ5$)GNJ"+&NSAf1I2Gj$m33UCGG'q9h5#Bk*+[eHH)-6,!HHc,58@)JEHNp"EX
-[NR)6LNeNk"KCK+5QCH5QTV-"FDYXfidKYNRT,-&1`c3)X9[V0G5XpF+jpHS0eeG
-cScdh#K+2'Zk6h*!!c3dC4`'NM%,+()A#kLLdf%DK86F+#GJ0ZGe)mlf'DQlmQ$S
-+#AF8%ZiS*0a4Z'%X@V9ZA-Z0pTSl()i3d!"cPrSmX8fQembeb6aYeic*68`2`84
-512SLh'bMAR"`5NcrelIq)YQXIA%B3AHb3&d,1`"@q`*IAVl!aEli8R1Va0EJjb!
-ae@NUDq+db@TMEE#a0QKI,2"*h`A!AGIFaF6@8!$&e#-%3A-h19,*8C)C-j%UbLf
-5IP5YSiI!h6MCCHC9r,+fSES8[dIFEYLmd5"FTqh`DTZ"DZ[A"kr'Tk+-[A,`UN3
-@[,fZ)#mG%GqIPj9X#pIP&k5P-k3YDENN1,Sk)l8JMB3qkAZ8@,l[#rFLh'Y`b"$
-IGi1Eil[bhFIhC#3AC+6Yj9[bpU545(jZ98CDCMkA%p*b8rJUF,m(j8(CG8m"#S2
-"FX&fr"iS[ldD&mcEZ3F*kFR-e%35h*piQ&(NSdK0YY!R*4RKX&0*q*U5&!6A"JG
-SR34iPS4[+8N9F"Di6A!(I+l[2ND9*5@3!'SVDB6[I0)3[TSAm'5Ha62iAL9L&8r
-X@(@Y`e!H6hHX#rGMPBAK+E6MkhJqN!$51LJ4@l$+Y3k[KNeP#)bL*5&M*Ed!Kh5
-5K,58K-5IK-m(difqBp-lq6h!5JCq"QCJqKCSfS2B5SPCaD*-RUr%b(LURQK+86b
-VQ,,SHpJemQa4#T&&4V3G,TfR+S@V`5d"dZ6aRH#Dap18VLI"+aAhYDf2hiriX!R
-#F3YXjK3+6Q`kXZKdJ-lTq#BfI6GF'K`+6G-pF'KK6-GRXqQ!!p0a`HRGI-'i9!E
-IU6J61$R[1AkICdi!blp[lda-cYZE8*!!R*PkFCmYP65)ClIDLP%4E05DNZFd19*
-bF%TLCJDq(e4iGQGNjT(DEBieN3m,ZCI8,NL&j6-Qb)GBUTZ6DYEQi)2*R0iQ0'h
-1Lb!M`majc5I1%D3e+f9T63jF+Y`kZ')i[bcYMB4$mYbl32EXcClk68SG0lPlZ8S
-VbI8$J-`2kdcPqL%IC,4$IJ!-rD&,N!$fpS6brR"$i#$JARclf`[KpK,K5Z$`66i
-RdJEf6&6D)0*C+jMXAjjB9L6H@LCm1*KR5Y2QPB#-pY!m*,9jaAKdi3eCbZN$Kkq
-L150N%@,P3+`FP1Cc)&T1!d35Tb*5k65)9&T*T(N482a++j%#3FB*c32-Q4FU52[
-`q@,I2,JN1)Lf$kHe$h,YJeclX*[lQQ62[SY-mEZTZ6[c@Qf,BqH'GNK8&N@f56)
-A0H2F!db%ZAZ`aS(-4D0klUZ#G"JPI$GU4[G`RmFpJ(%m2S84iG04,jHML#&`KaB
-ddHGfXfQCL6@qTXa&kf9Z(,5m!3eSqVN,S@8)BeHBA,#cNV$15[FTJq,30"13!(,
-Q@UCTjLkXmGPr*K,ic$A3K04`'!Gi'+RK-!l`F,(X+3KPM+pdm,0*EDX1bfUchGQ
-K#PA%c&if9GPB)b(1400JCU3J&A5AT3,Nm3,Nm3+S,3L(+S[Y#TPSmfBH0NNqY[b
-4Qpaabbi(MK9`I,2&!4fkGdKd0ec)M#RCl"Xd5Vk*-+&Thq$6h$IY)+'QqfDJi#N
-`-ZC[@ARD@*N`C1-pbqLZM#Lh9Mc@*f8(Q5V1,JAj1j!!!AUce`QHe(if'*QCZMF
-KchVAl(c(A@hdMJ22cZPJRBd[50RibTMpJH"CmiBY8pU`6E+#k36m6*10ce2CX`3
-TYBX3KH$P&kHYYImH5SGLiQk4IDF@T``PLTQd3%b,cX[L0NlR6$pS@hQeqL"HERZ
-R[*+$$8r+6"46BM*5meVPZ4QSQQBJSmhSUdAj66#l#'DPP$!$AhjRS%8l)e5,%Td
-Gk5TNHekUDFZZIfj(@cSN&qAKM06%Y,YYqE9d5)2flbbd4fDYd+*UE4UHXfVSb*L
--rP&j5PVMA$$9iaKVfDVD9-h#lhDcd'LGe8q,+M@j#`VZVHk5q0[HC4B1DMB5aHa
-5,DVBj#j%3k@l*2lhlM)E*cBEjH2ChE8SaqmQ9`M)I!VfaF%[K[%M#3Uh#c9US58
-GD@%f$M%8U6)8pfbbSBrSd2i8l4R41N9P+1iE1K311AD&kAhrqh[R10&3j20EiZ&
-'DP'(6#re&'kH)j[FJRE0,@JJhP+S4B8l6GS#6efLZJAYkP[`DId@YaD9Ep2alK3
-G6ffb@S`'f@)8K4HRDP%*VHlcP#@XaDMA&`2S,jkP4H@dZXp6Rl3@SrKa*iT'Gal
-5SNJGJ8a1kX*KQKZ!DQDfjTlr**S%QR[*NfL#D1lXHp(FdGa*pk,GTEN(KD""U,N
-(Kk#TUVN$3p#3!0EFI6*2lFj)3F@8QPD3!+I%l%B4)!9P%*4-8PPK*Nq@m#Zbkj(
-9&M`)8mY[+0'2S!L'&f2)alCNj+B8i"0*@Pj#BKTq'V5#qU2@JMfUKpd1T+RrSPS
-1ZZ`Xqr[-8SZfG*eC@iTfre)8YjIQ#p,b(0Qc2,r-Yi5P9&YkA)XD8%l&)p"*+l3
-"Aj)(rhc5J#qIe++@e0$j+-2I5fpGSIh9-I,A9L1q&9TIadKINj(edr+(ChI[IeT
-f0BiJaV#*Q)RVL#RUamaBBLEe*-EHa%`f-D1,LI%'-X13!'jP,%DUc23L*L#,Q94
-QqM-cJ"R'ZYR)M)@CF'EBK1E"a)J'CKUB@F%-Bb3b4Z+Ac)35dm+CHB@CFF5d-DC
-YM,6"cd`1-d1)@9C,c'9feFY-S-[cL+PpRKJeJ4LCU9qlNTNNBPDh-m11B$8E@-e
-%@Fh%AFFQV'-Uel%$HX61$$Z14e+BBBIi#"2p!"0kIbNcl,Mh-q(fcbIQ%&0ffh"
-QqM$$Q"la-X1BIX+%f-@1E"HE(-+BKT3``iC$f*D%-*9lJTMa---Ql'(+-YPKCE,
-,C,,Mb&a!6"CMPm8ZR-9%c'+6XpJaC6'"mTK!H@b6mLib`eMXCKIBcDkpQdhEcJj
-SHaFchCPKDVC(%T22K-jRSZaJJZiic8`q-q`b1pMN(@cb$TDpNTNS#Bae!K-LJBQ
-E`*JH&)P*BeNYRE&1CiY8NZfNe&+Gfr%Gka@i`G@k&P5Y9fI"HDTe[6[Ff'VGL)(
-'@VK0eIV%d'Tp8P+e(VqN@[HHVYC(UY9k%),fFG9kl5'i!A$cU[@U8VKmZ*A9qJP
--2(%%VUYDEfL#!q1'3A$CF&"`1lkMh9i#e`jh%5i"!KKe[6T*eqXDG2dbeF&!eaZ
-kG2h"RVSZeqUkiY&e)9$Alcd0PkAV6AjGhp`(VTqZriR$!A'6(Fi#0dMA9aRJ`1$
-*rR#4Z[ki#*HUkhGiG6fm&!j-`Tq(`f$''lUqTe$AXeE!39%@#&PIkRTHM+l["Q,
-q5Pe2a1)J"JpLdX%&ZTj@V1[T%#`GNrEP`f&Jc88i,,MGU+2h[klh-qU0q8Dp,XQ
-S6dk!'`&(&NZ-ZU%8lJJFL"0cM(T4YP'I9'c84f15p`fMAQ-dkJm8`Jd`kJprDG6
-pUA"BM'NbkQI!p-amSaj8!QH"`i3!$!4!53#3!*SK3$-'QN&SKN,a)K`))K5+(VM
-qF&!N,M$U,5)F%&V#i@,J`+!Pe+Lh3B#f@VJ9F#[K)%6E@+1q`3qh#3j#Ei#!'m#
-XAB@ECp3hBY*'A'`M&'m%`NBSAmEK$X&e`B("C3Kb'3LAAc(UY9ii-,Ma[&%r!F8
-0J8EpGM#UK`!hi9)hM62UT9"@#X&,-HNX"$e,!JKc(B`I"B16%1)N,R-5KhS9!Pr
-YDG5,`H3D"Up"X'[Gi3BEp3S$h'Ni-+[!K5UJX#,5U'm&Ske!h*S#"k9E395aH6+
-)-TM,JibkJX1f!#(SP8DpY(ZMrP"+ShjA9U2qB!*F8U0Z'G'S#i-EpIhKF2dEGHk
-[dhPaR9lG!"F$e`IZbcTG,i(VJJZ%Lkc6M8!dHZ"k`Jf(H`0Z%&b[1Vea5CeHKm(
-*6AA),(#$kr4*3qTdZ`&Z*GccF'"XA`!h[diIEB%,VG-[!I%b*PlZ$YH[6Ume`VA
-$!H%'&0j)JB-!94#Q+Km15NpiiE,J`,$"AUIA[e+R2`Z"VN+)BK(Z%&`K(*KIih#
-ih,8%1#"Gbkl6+m#iBJ8F,PX"jKAMk[5(`13Z6(J3&jF4+"Jd3kNC!JX35)"!@i,
-Up(@BX"r%3lMNSI`k[!Q"ec+[aQ3(RFC,K2MN6MaalkYa,U(iR@4TEiAH8p1eK'I
-MEA[f@Mij(MhbU)BUhqGjZJqGM'HlmIRkk6k@#0(IMKFdm%CZQhbVK9TUKQ$LpC&
-m3`1[EH#M1rQBNIa2IVkeKQpJ6"E,R[hcZ4e-*XR5@Vq&-CCGbh-iSJ8qep2$#@N
-KUD`)D8N(IP%(IL8dk2kUR0Q3!'C!fD&S$-fZVq*LZhVq4J1r0BL2E1$03E`pARD
-Yi!p@b5k&9m4ET0B5ML9e)@%ecmUU@cRh-"Q&"#4+)[8lLHE,d@Z6lNjcrIqSjUK
-kP@QZU'UPq9`9Vpr%Em6cqKcq*d9UIFcPkAEX5T,X!GI*$*mH4RH+)L+2cr0-3U@
-Y+L[CI2Nm13N$h[UfD8V1LLbIihP`&2e"h1!ec@0Y*&ZiUNH5(M0NYPZ@pXm(TA-
-+K4l'Spl9*DB8T4+'8Jk,NIq+aFKraF*%ae%F9LX@C9$+D#e$Q3U6NIG&$Di5-G9
-6[,Y$QiV!*T4cd$iM#(f)Pr(*46B)%NUp@qM&QSM3hf+%!D2feX"SaNS#M'+@m#J
-rIB'rM%bEbRfEZ$fHqelPE5ch,$$*2C!!d@c,2Sdqec-*MSaX5`Z4mLQ5&[+PXE`
-NASiqMAGfmU*1K5NE6Vf#9*e!)JCeHJ"e%GjL9Y2%am6cQJ!qUBe[l13e-T(fK4T
-A0R8SA'kdG14J8k+[0G,4F--blL[KME)0i#%4Xq&*0HLC`Sic6SjCMTjEKRCY9E`
-F9F32PI$YARkSM4qXiBF#H,#AQ,HCHBNBl4TEV'EQ-8DDc-`CCQjLaXb'2f(Q'-`
-+[T`YrX,-ljRjKTQr-42'c"GHrMEX8VBDa6MjQ0N)8fU@b2N@@FphA!ek#Iar,)R
-D50)c#HJ`dm!ErBTNUpmP0lV-q@ZiSFB8@)`NM3(42a,[p61PPj+88Kjk-%([j'+
-mkTSmNTFS%NX)0DaA(c"1%daI6F352X0!2HJ[BNY"-@YAiX[,0YlBS&JVJ+1S!-,
-a@bkkV9!$BF)HF(!h+G&f$"`U1h$+`0Gl$0*TARH4h)NpFr91j!#q[Ai,Eq[Nc69
-mT*drB1IH!'+`D$D`p$Z"P*0*e4C(DLc1S"ZTXA#T133-IBl(60I9a-cKL8Dk'+q
-AY+ACb+H%HEGHK2QT1HKKK1C@(@#%j!!F"a-89l`9LKbmU"be!pD2j)haLJ-!4ab
-m@(CDfZNTdfLDZF`XQNBU"1aQ[1QfL4fEr0qLBeHcrB$[*Aab63FBhi)pRqT)--N
-(D*lB9@RbDFI"NP+f$9!16BMNiIjPr,+G)dZpE1HhAZIaIRjV2IIEcBkf)h"Bbm)
-a+p*+@Y++C+XUBJK$`hAH'+!iG%PVdC`aY[0'H`FT!H$Ff'C#)Y0QN!#'ET@9p#&
-Ke&l+5q[iM4,H9X4I,Z*)#VG#6MZ4Xmh1ViVi91LSJAEfjcCKEC&04YarD)eV(Tr
-+GM[YD0T1ICcD)D@r)r&'6Z2G$'AZCLKc0m0pZGZhGXIGE"'jQk(bh5VPb8TAUc4
-FjQE[JD-QY['(l6c)cQX1m0'SNNZ`YKBH#)*$YDhkaQFK3XUH3RU2N!$%J,YK%XP
-0XmS5mP(*bX4"`PZ&!5rE683lLQNL(mN!NH-ff`f@SH(eThQEplF(#CrL1Hb,05-
-!%MUPC0k*il*cH`!aRICb10M5pGYSM)AM*6jArEc8cfriHCZIRr(c%MmIlB$!H1#
-b5A%0jbDV,Y09JZPURHQUf(394$Y@PLYLjh9f46ZI&%$-!lCN1F(RLP8V56L#5$M
-b5(Ri0e[aae[aiaKqaXLdqi6IH@4DTAQA5#29iaeaGRl$cYX$L+QhbmG1mfDf9`m
-%X"dM"ikU*G6'!k'M,)P`[UdiK("#al"$K8qdU[$[+VZ"8jX53GVb+*QEJ(1FXKr
-pNUe(r[4`*4U040l'XTbMV,@lhA*ZGN!3(fhJU-a(Hmff%m%R8`*Kep8FRF8c$!G
--i-*je,5LhmX0*DE!1mJ'dm[5Sd(R!908SPC03Vr@-V3rcl#Fj!der#il,lEc4`1
-)`D,"bcGlqBdDhQjRCaY!$"Bh$,b"YBC$VEPjJ68jc(H8kehp(2aTV&"f*fd*Kl5
-NTf#4$P$S[Y#heGcr3FQNZ#6,[aD0S8'fA`DdNSh44G'[4K1S-ZA-531*PcZ!,3T
-(2@JiE8TADTjE`M-lQkBelhI$(Hld*06b*J-hqrNl*GaXi&Z$q+NDmTAQ@JSrEHF
-hfAP9!$&BA+2$H3,X)ElIcYIDqDS!BV#iKXmkGQkfmbDL$CPJS1h%%(jY1`H%AeQ
-65@a2mLX"#lZ6h`KB5"*@(cCj%%,EP1%GE!CdX(Rq2V0j%C-(6G-8$kEBfTYS)Ym
-R402KBaL1mLSmIKQI5(rKm6C)2CD)`Ejlq%kKVEK)@PE&(kf4qrYjqfN'H+jAJMH
-mRIB`ff#%p4cFMNa&B!6lLJ,D(2,,#KZGD92"L*j-#fXjfhdM)',8VQ+qLZ`10`F
-3X`VJVC4Xf6AXD`!a@qhbN!"L[PENCfYiJjddXYT%BV!iDkZU[V1QJCR@M$h,@PA
-ej@A5#1e))e1TT-KF*)3IdAP1@eFcV#m2Vcr%E`59@e8k5[G6U5a*+TaM68L4Y[6
-ei`+&TV5Q"ppTf-9(eq"A4@lS!)#NU$kPJ#(bGJE*E'@L'%*Ue9k1CQ"C*#e81J8
-Z!a5lM,6MDjG`LN"1ZfQk,,&"cRC6@)h2BS#F$C9S`H'N%0BKhe&mHmLS2QRDUYJ
-rRhaVR@D3!!f!N!#aV*LIXE2+*i#B-hECeFihXU-3!fc9U28$Ak8GBYp*VBG8a2,
-5SQ@lbl#VqLhB6E)GX+(Hj,iaUjYiLd%T3fSb)Ed,8NB3R90HBfL"&FD0Y@SH*jm
-RQcD98NYe'im2)YPXXM+9hE63eJ#F%5qd"0$Hj3P3AQ[%pP9ZR@N0'8I9DZRE"[@
-(09jHi#9[D6c3cYH,r%!TIkQ6(iMR2hMjJ4*Y)NJRqH-eI*1Ghf[RLTII9F1,rIc
-4"NHeTE!"$$pZj`HUY+YEqBl6"$iAf2NDQd6pI+ki*[EKP[aN6+,h3HT*SQ5I+p*
-2SM53!'T*&%&q5LC4$r)l-NFb#X1&Uh0)(B49),lk9A[B#Yr("T')`*VAb3r6,1a
-YCGQEr2E-!&%2d2)*l9[bJrC6a0-$RP1Jle2,e2i8-RAFIIG6H(I#dcH0b1H",2T
-,+hhX29NM,C(&P10i'TdpGq*iDX8X[5`+T*!!++e&hqQA0m(9`ThH,,emd9cQq40
-Rj5FTP4ic9J6`CCemJjFrJ'*'%2GfNPB9ZNG#mf"(b4[3$#+X0D@3!2%"a'F6kDS
-F`BJDci"THeU6DXSTIhbPe&eMJiCYPF"`1bQjNGHXD%T%H5F6Xm6D6m8X"@c$FH!
-ThV9iEMJJ'Qi2A2*Q+H$`e)lMLR8flaK5T'Brq2M4c%lKl2Ha9LUVE(+@PH3mNm5
-8$pjZpcLHZRQmRb`eSiGj-piBdZcI,$@,8a1RUc8,c`c82dDj*khKXr0(mLB[(i2
-r`%%RVr,b)$q"j#@Gr%%[[aC[CM[L+2mqrLAl+%pfV8GC-YYC+d*ba`Tq5!GpMR9
-&bKm"0Cl3PR,%ZlZZHC94CDrU&0Q[$M9iiQN3A[[8Qe6%JR36(Tb[E80M!NHq*QH
-9C"NK5cFUC+Qa#HmVT+ZN1dl,8Ve6PZUmGl#c$2JDZp[*YNF+k)[&!GZ1"k!6rpT
-IE'NK#%aAY`Pi)!F[)N)UCQBPM,5k2mL$5EJ1ViFD@5p,kbi)!,%%C9df'ALN5!!
-i*B4(9%Ei&S384ZM*#&m,*+f#F)#m"NdkX%b3!!iJcBe"$ihpp3)Hf#'$qpH4`Ih
-S"$$Q43cF,*!!hefN-82a2T8fA!ajB3bH-lXMRfDBT6YH%*ah2%mYdKhG"1Q1AKK
-E`GiV)ie"GiCY,`UZEAf!jlQ0d`bm*HNfM)k"`YXq%*bh$DF@22f$[Xh5E6-&k6E
-FfjmP5dIL"HN)hYcM"j-MH%r0%4@,keMm)ML2,)'Q6h#!Rq!!r3'bp%Q#J!H&L0#
-Ip'3QP)Lq#rdkr(LceDj08,%VLicX'X*'d22Li3NB@B$h[i9XFBD8J'%)$[rKlf4
-R5"0C(4+N%1cL``2`KKMXf-2pC9FiTjPQ9hJ@[3NQLEDBT3c)N!!"'8S`0f1@i-T
-JH[F%JB5GfC-Q5(Y`HVHLPEPRTZ$+0'+UP+N)8UB&C15Ic!K"bN+rJ"VdmXebBZ(
-"!TI1`QPQNG2-'S`SQd6c"9+1RQ'@m[SL(%"RQkAGb"fl5Hj!&f#%(TTYPVEA#IK
-Ha%)`hijH!I&Vm5dS5A$QNd[QP`T52V52(LK,Z6MKA'JEM3bBkm%L%!YXEZi%!Cr
-3#0p[XF@MSr&",BY`r"EF4UI*dJkmp()(-[6SA9MN#miGhF&j4b#Sf(El9l+8-Nb
-3!&,3&m(qZLcY,"'NRGKYq`GB1!9mGL5FGd+Ar3)q3SiPR*2"cIkU,#9I%+4Np)@
-a)i8PUS+8L+fI0%[f*!kLH'Z8P"JTN!#[D)!k#3e3QE"&N!!5#%UJl%PJ+16l')B
-2LKJq@#(Jfb5')IA"C#c`YTp*-9Md&T`()E(Vi2-i6CUQ5*05m1([ZS#2Id#"U'Q
-l"@GD2P$5FXKjT`(U63+R0#505CfbP(j5N!$5FB56m&+mG(6Y+%*hQA6Nlp3ZFV2
-8J3MlNCa@B#5%!U!DF5i&Z`65*8-biZ!,d$'%G0%`)Qm9$"9F"GdCDLK)`d"b#rK
-"9c)#@Kb',[3BNB`3r["DJI8J-H,8$kF*VX-XYapqJaPbEfRI4B(edc'LqYah@'$
-pGSb!3IYk#+`IMa(TEGq,!Z[ABm40pRdRZ2BaD*'$bKHGM["+5#N(J)Md3G)RB(&
-B)&f5G#6)('`0HLK*1VBhj`A"PI-'QiKq*k6lP)lNY"I#NZj8q[YBJ![TAU@6VPB
-3KA5hdP'0lHdKZ2Bbq,-h@f!G`R6553b*L(33de(*V3%EdQ&-adDX`C9*"c*p+aD
-imKTfj69-pA,)UJ2H,Um3A-X[-K*l"&@K1+[PJeCjJSE6+15CPaF,VJ!MJ8r0l3+
-HZU4hiX9U!#BLJGdiN!$f[S+RI3"Y!@il0VMjIPRD1%k3!*BK@64MkjBP#jjP#A4
-'V5,9(K"FYB9%95d5B1dm`UUU9-El)Ta9b#e5&ADe#V[k-[Da#TRrj51bG1)H`AN
-#X%FkX3h4%4*pLbL&4'X3V544K1"UD+,Ec9*$prXT)-G)+0B(iT@bb(KqC*h'hB,
-8Q)m&4I@"2DY,`ReFNpYTZ&QD$,!hH33,N`5AJ3"YbB#fJ`(D(ik3!#8$J@#lC@N
-LAN!f%9*eiT*&J%4&E0mRiD3lYa"J)%LMSHk"lr#f21cP!mLB08MN06MP%ZcM!i@
-#p!!UT&[EC0I$T0+3!2bSA[afZJ%KGXDI5RE'2i"H0NYMN!!Uaf!6DP*PejPmJRc
-Q!m&eCML3!*eRjZ2#36@#+kL%M!3T##f%5p!EJLFSP&l'Ub0I4Q8D3"MX)Sr3!Xr
-6E+FDDSaQ4A!fik%HU6P"N!#DNE0UQ[!!E4,K*&B)6K&M6[%)m4jJLDJKaAjXG#(
-#"33ZY"#id!,NPSXNfL@i@Q))5JXfY'8!3`R&5&Zei'`cNQLCi'TE39$DeL"F56D
-T$I9QfeKbh`eq-Q8$fGi0K`6RKK`5(4HN$HKrj82@ENGejF2qYFm4A"XC,0L)HR9
-M+DS3D52fE9NYBE2X%"PDKZk*b`$iI+rKQ9h#AVU-keiQelfF,,JZ*j!!Z[(b+i*
-d'4apZ(aY22+JPqA'E3L2X*!!D%BDZJ&1ANK`!Y[S4@Zk!E$@Lia`1`#9&b#S(Tf
-5kT&,[DKcERT$F0ddMN`[$4,%8V`-95VG*,M1%LJVR8AL1XX5eeN)I*C8R+kcC2r
-Tp5h5GD5H5`0Nek0-M%Fr%+4(m5D-5fYNel1"T'Cm&[A9552ChC1i`NQf&bHA#+k
-Vl0jA0j'KUi"-9b(L*6!VaMN9cb0Selb#Ui**8(%G)EQFUi)eHbS'#&)&-Z)PP2B
-V'-al#)!jhLdl(b**kD&#V&k3!+@,!"Vab29h)6ACPmPdkaEA9YB)fST'd0B4,(`
-G)B-N@h&848JU+V#,!)eN9A$*,12+aa'b&#m$@K3"fLKSr"5Kl@Y*ZGpC6&*GGCA
-JUQiJ10A4#'2)cDY4&e4rLIZjp",5A0#l#&Pr6A$Tj'5FHL4N0AB+,U1I*!SMbDl
-'BB,(f)YQeLLZaL@!,*ik$ih#lf+6Y`LHb8ed0Rkh0Y5c""k&"2i,`X%NR!Ji1a%
-*G#+!p83Nh)NiR+)U35V#eNj%JLiD+$L,qN&"%9TZ4@0"aI&-!K#H0!6LZq`'CYM
-CfTmAA2Bq,&b!F$i*4b1"MVD`%"AhD!m"Sk14HblKJ#HLSA)*1@iL)0-Pl1&%9$V
-iVrj*%p&Lm!+Z6-4jHSm,6QmKp([IaiZimHkr1Y3$$h`&B))$VGXNZcVp")TfiX3
-kqb"d2Eb#'A)%e#p5XKVMCfB!-51EQ-NQjN`1-8&HCSB6ml,+6")a!3R%0"ZBk8Q
--@-c-)'*DmSPTim`-)@C$+61$L@N2CfBF-4X,LB6,DT&F`eP#a6B[Lb&*H"NDHmY
-BBqmbB1&PePUkM2akq63,N5S[Xe4j'8GhQHAVfZU1P!TLVBH&lb0mKBAG%2CLBCc
-JZN'!Lh6MIS3T,1b0-*!!KH-&9a8$ReAh)'3jY@SB3TDEUp"b1m&5j)NY#,0BL"E
-'#EDe*fj'9F0%E8!6p(BdDKY["Mb!%2@[S+AMU4p(Cq29Q6HKSQP%GVS1#(NpR'5
-dkrM"X6&CPTj&SHGC0+NEXG[2GJQZCiH692!X*(ifNV6M6L*$RJ6BDDb5TDZSeDq
-L9Qp%1rJUZ[9H"9[MBYPeG3Q4S$J!b9eN)HV9BJB&Lj(JLPQ#+dB@,fE&Qf+hi,V
-'#LMA6L)XCL%!bV8%&U*UZ6DFKDM8VV&+V3**Ui+GA`A1Vi,"l`VX@`@$p49)KaA
-X*#['!jLJ1Ua'iRN)QE-DVH5l82#k#lPC3q(X`Dm&k8(5d83"8"JXZ*3BN[r01!)
-cZTTebC*j)@*mjVd(!!&9VZ8)AJJPZbb$b%N)l@BmdUT[6IeMj'r`Vr#((p400YF
-V-[)*YcXZFRhrb!AXhcMm'iYrEYXrGpcRa(pI6TJ%2plc'62M"K&5,b[G*(b-q2A
-[aa'd"F3[QZ"f6r"iaL2q[#1Fr4dCL`0r4c!,daaak*6iEadcILNRI,-M['A#BZG
--TmRIqSlSH@GfUj(hVG(YNH1F60%26UZq@fDk6IiL)mHjaaH1Lr1i)cbH*H4HN@%
-H6jc(-m'"2k&Ekr@mb-J['0i61'AS'"mjQaK#qXB@-F4&mf`Lc)pmaZ11("r*VM%
-f&K`@HXBjN!!HqrHh(M$iAD5$m-`#clM)#4khKl&EkL&(&"IjDF3&YbF8[$c1QpQ
-f22eG61&#XVB5PYMQf!6maY0aXSqYr`ZC0i'`Q4NCZC63riM96,*lZq&rPfhPicM
-Mq8pd-*T0SPZXV1jd4'2RZYHXHe@`(KmbB21lXHU1qBmY9(FZ8KpCT'lVQUPDj,D
-2e3ajhILTr+QrQpV3H0RiiV"cjmm22AGXk$R&FQkS+Mr0rYi)ITIpkr[%L#Fq$$j
-f9&eal[AJ1iHIQV"3hH8)`S29)h09qD8&Ecqai-kjDKBc1i-r1KDKVRVLjYm-Zh"
-U3Zp6)p5papikpYIJMci)2[jk4)3kSTXDdJerkUqB#9e+E$Gj-J[8T4&Z6l4kMTJ
-Krb3'rq@AejE['IArjpqD6jh,`q*QIErq,qYrc6EKCfB#"rlBNDRA[e&Zr*q1q0m
-[r1qrEhCrjPjrh10HrqGrekrIMbbdrZmHpk[rG-j`ph+ZhqEm@q'5#aMpTpXGjRC
-rihEh`fClab4X(R',DTRrf+,BK@VqXB@p&ld9fpeK4h40rr[-AmrX'ccX91@rpq$
-8E9GL&reef,(aBhYhb4qSPSMh)dBFlBSifUAZL2ec,2RlI84%a$Za%HmX'V,SR3L
-6aFIMBdH-rbIa)dkp&r&@K(TSk0#KIhrLrIl(VUL2rrj1G49FQVTflN[BI@cj)f6
-IHd3F'krZIq,QIcjamrp&I$MNbY[RZNip(a(m9N6`XBL)YiB(Mrf0fM3L@1fcrV$
-k"pYH6lIC#FlAIUIQ1iFlIq080dhJYMq,5Q@I[!RG"fDILik*+Bb*14AK)H'jmr!
-VAMVIiq1HKFI2IeKi*HE+q3plpZajrVR#hX21AbRX259mlrac-HppG$k'J'`ef49
-"'!-!!"bl384$8J-!-(8293eQ04%3)H,Z3Vqm[+D2m&6HKDT6ip)q45&k5Vqr4)K
-KQG+"N!!'H,affbT&8UATk0kLNXLSK3bRkrCBaU5dK3UkZkLfXFcSG+954C&9ZFB
-B!mGSSZpR9Q+mJ#@-Y3b(Z30KM'5[c1*Deb0rrlqA0'Q&0*kChGR[!"9Q6M-M$b%
-L)C!%%#(P'qIcj5iA(MacJ%&3i8b8'ElM`q&*TD%T8-0,!PENfc6*(k,**3XRVqf
-[IZeA5jD#*9BG16-kGcLT6-S00DDmU`a""ik$FhBa*K@I5`qZbG((`YK((DRUdqD
-5qJr`SPjiMVhB$kkj8)U2Dl'2`YM(2HiU`'-%cc&`6S+!)N'#R1`!b&keHAJF"-V
-Xbr5&BQ`p"%RBX&T-+qqD+T,R$b(qPdDeN@#UEBd(AjU9[bREbT9hN[c!9I8U6Ir
-TDRHch&bqFrh9G*Al,Ll-FAq4mL`2"TE3rhP(!NZ19I+V!p9rA1')M)i36*FiQ!R
-5843X8'L@MrZH0`AG[[b0rQir#[lLN!"ZarF-HmQKSppcPVeXS1+V`2AMp#K4Nd'
-K9FFH5LV`11hVa--i%m6MdDI95lclUNq6)riG3Q5kD[b'!d*LJLTAEbrE5J@+c(V
-(!i"[88%l(NMQc'$(!p2FP0rFiME5KRQZ98LHG3r*,6kVq"YkP)IpB9hMMrUeeUM
-SC"0'44Pr&+pDaGZYdHjQrhEcR0"NKNmF(i03TFAM3K4r,p&QaK)Rl0!r$#89-i`
-JPYF436$2-'8TD@-3"GXS*4if#j!!"`'dS11l)ZHPmQ'`'#[-FeDrUH0cVhXSH4h
-SI5664`A*b(Q,1e`,lDMFBE"I#bdRJ%,YZICPX`bM4&+a`!*3[E$0IdrKiZeYcl9
-GUYMH#1KFkdJq-(*MS@TQUpCcaHC6iN%IC,YPjZ"F0c,)-T!!!+dKC#QT3rh$f-K
-T`1,l"UTA@@B9!PcA%GiDl,MI2@5H-pX)`28Eb@j(H0FRA'1[@3T1HMrK4XMjh1[
-,lDfkH4CK3+HhpVRfjFf'),)YBh+@S51iGpCXcNE('aA!%S0`b%"j+,Mi0AHI1)f
-3!+!9-`8!"qj)Q-)RZ,ARMTKHGhDfVVC8!5ieS9*,!ATASM!*K@EJLCLk8)Uk-0X
-Je"R#9%99@AG-e-ep[U2*EXYj(L!A`QL#Ee1hhGFM2ZrZfpV8hE,hL"Q&NNf'VYT
-T3lemMYf[Q9'aFXlK%Xf#@+@MhZCP6@GfLPEUNGj0KM$R-"[UR$*dZm-&Q+YdC5!
-`&VA2Pd-LkI-D#1T1GVZG--KJaqF,@a$#d6044l3QP0%4B$M&k9@Y#5&8m%d3cGb
-p)#V&()263M3"p(*1a18HELk'J,dF%Q5%JXc)Fqh*V''BDST"@'CQbKfrrqRAf%"
-B%K)h2kpEdGeYTMC%)@`14LCmSR'D1m*NKPm!-Zm06QXl$J0dMqjX6SJQK+I6mTT
-$%kYkZ"QYlhA,@&K4XM[CY2`X4iL9Q95661Ue,kGU0CM)A&P#Ff5XKK5#)'("KMD
-Brq`fT$"&BXSb&M6j$B)j%*B)dSI'Xhf*3%3K!K'&A2G`#M9FkA*Pqa4EA8Z"PSm
-J!j6e9@RM92r9H09%U"1""S3ANG'3!+(bH+!@JEjU%!b[c+q2q&V0bZkKhcX3I#U
-E@aeUK`'#5B#(HC'U#GiDb`cZiGTi*I*E#2dA8pK5+BcqCU"@aT&A@6,fM`M4H"B
-5%a)5r$#1K(fY-NcMdr+`Y$aZ46-DMUmGU1dIJBLhaLZIUqb"%6!c#2[a-(ikD@&
-Q38-6XS)F&[J$"1F"6S2-,+2T&l!K(RJ$9h#2Si4J6Kbh1%+K2"*BJJ2&,&',(KL
-KiG6&YPh`+8HRPcTp&BP16!jPUk"q0$[cU9TA8,mEJDHC6hPG`DFP+afi)89a`D`
-N1NkKSq60kPP*kMK4r@(T#@6TNlN2bmbC@FPGQ("%%XBCcUjR`Y)l"m&$!iQT*&r
-KURKM`5NHp+phbrFH+BbFMeb,&+p'KQ$i$$`L2[8DPirlk8AeUHH*F01,iS1i#*T
-S*,dJ,kp4Q%N[6#9S3ZTPVijGeSR,&!6(dR`JG[JTGYJB5j!!8LPiLD$Nd-Jj5KS
-%*4&N3j8V`FrREQpfY@,,Rq5DmZ8YHhB5@*fYFT)(P5mqXT23p[*0-h0R+qr-RTP
-EUEchIZ2lpU&VLSBU'A5%YpZc3F@'C#[&S(cPRIbCZ6HJT[%@"[AdBC!!ZViTUbQ
-fRBG0l`Y`&X(M#PG*,4M*8MBCC&ZlI(h)p#)CR,3jPU%JQ6YN#QNKr&DpkLS)c8c
-p1lkdjDA3-d4,cmcmj@E90!mIQfE#eNP"6M#[CCm-NR(%Y0XC'aUPSHB%U&SB9i`
-E21mrdf#B)CdJ!j,"jB+'GTqCR@PSVb[iF+1[1&"GIq-N*ZX$"eqURqliEqc41@E
-N!h(#BFA%2U-GkaZSrNk2R'-CEG(Bj,+br6*RQB5"!B8)9ej(YA,kK[)L*bIUP8P
-2rHM*+lMQ+GH"5DAq"PhN@&`[bMPr@TLTPbm*YND`93#BBqT16&%Ap%k)#kB'+B9
-X(KH&l)4Tl,3II+RK8-"KF1q%2X($"@[[*Vlj*,JaNA8bNG@CX!C*62fReb0m68I
-,8a5q-)G($-l%lpe8iC-#T(HlBZJ4VjJHZb+8RE#-q#8b0Ze(aVr6,Pd(N3q+0pL
-PG9MHp06"[PB+qCEe%*Rdkh4`bY+rbbT+JR"Y3i8fQFKY'eMf@*Y3GCUMU[Ej#1U
-NUGH+H-m)c'bI5NMS03$b*Xpmk[0c9I@#m$$(PX,&!Jiip!)HUGrG2h,aE"CG'31
-G@h(d'QAlVUej`cIYa25JQ!6AN9R)1Qj2i($"dRa5-P"G5L4[Dr`&L5d%RU"AZKB
-1$ajX*)$#fM8Q#,SN##+2A*1'%F-Rmp%41'fG`Q)%15JY+2!%PQ51MT!!B*1UNmr
-b3(dJ8&#[N!$)eAG"i+EAcp3IKDNL2NS1e9mdIR"U44#(UC1)0X"LlmRFq1lV)r%
-P5!8"TG$PSX+!0SMKBP,*K'[q!8iJM9L'Pi3C#kf"8dFR*PZqJHcr8aqbLjXCC,&
-Jbq#13*GKF$eGY*llGL,4#ZUR8CaEGm1HVCV0CBp24cB5KC&lXe9L(3R#Bh0QFmU
-+T)6K+KA&ba4QY%lT+M,F58p$ZjKQPGd6@d3R60'CSJlJQ,3iI2E!T%kBP)$[E5`
-$AeDkCC5b`m*BaVd4K)%a@DeJq",%fi+(KPRT[eKHJSal)fAFZ!DZ8EDhA"Z4+85
-+qj,PU#LRC""hhjdU,E12E4T%(LDV68eU9(PCM[TZB)[ScP5@R2Q(9eM5EmE2B`j
-HFhqfbQq5#Qcb-B$cQk'LIiS++H1ST3T40$ZPmN+!8`Y[fMG4H0ZG8RM#S[Dd8l&
-&3E@5LM&mI19Rc"fjU5%*CeQbfb-@#Fl,YZ++bfrIY-X64r2P#@64debYJd0-bA4
-2fk,hcZ`ANfc3DQP334%'15PMSN(GB&-Zff6ldH#,4rlmeCfYLliZ-G`9eVIG,H+
-lIrl+Vr8F%K@h-iN*Fl#R2H6jpRacmG!e!hN4XTr"0lm+'82A@SQKe'ECb`@BK3+
-2ej1$2BIk4d53!'MP&6",be`"DaqJ8mqEAcQdlp[ZF0IC9-Bf5m`l&LCUJIF$lhI
-Rj&cjaRMRX8UBBUB"S3p8mQ@,me+B"A,,f)m+j2Mq5`hPISMjGl++cH+LiDeZF"6
-b9Q'p*T%3[M%rUR`jhEHQ@ElL$aBDmim6+kP1m+iJ#"IFe$ip9LR30A1JdK'lFL%
-jI33+'Mi,9$Gm,&pK#6cJF,lcTF9"q!jNXJBf&cNS(9[XPLB9M5DaU6R+XcPXF(%
-RGDc2+MSki6)M+6C+S@iB'CA(Pd`S#4)$0bH%RiRIj$M"&$PHhiZ#[CNbk1Ei#i,
-(D@0aaF(#dC&*',+K(S+M)mXU6$#4a,633B*"L#&`i`9NIY-M'4$Cp@H+,D6pI0j
-9''(bB-2(r6!)b'pV`fF&Ak4R'Mj@iIUdcJ9SU-rLHpS4XRl581(8TKmY-V8plIP
-2)PXjDf*Jb0ME-CPVq2L[S3#ZSTLkT%Y6@J(A'ck,$pp`a3bM5&2382HJ6Ha&"FE
-&[Z"XZ-#+'KjU[TBkK"6YYC1DELLHlG3p,TI[Uha0[a,K*C[-U,F&bk[jPfD$kbe
-%l!U+-b!lTFT2Ua[UCIcdM"4`pB-m6XB!qE&L'8iEh"6,S14'5Bj!e@!6bMC49,J
-[r[H04HVm`aDCV!NNbm9-%"ic34KQkF@JR&qAYYJc)R*9Laqi)"eB0hCJAF0R33m
-rH2IN5mHfG*kIMQqTllG*[PiN(j3Y4"*Qaj+`#iQ5A@N52Vk5*)`0(jH%dr%Nc'G
-*L)Gke`PBkG62)J'hj!I"*Pca1Al"Er4e(mjf+ECVNCqrp6qbf1bjG)b9@ASMLdd
-U0YT@@iifX*BYiUm`h(Z@Q1pHAYGbd6RGp9%,[DCC*RR,6NAq@iH*p3kaU9VlG'4
-CBlQfi(K"`1cc0T1JK5"`)@9eRF&Ei`*AF6H"kmhMHM2V4&'Pfq0r9q4PG6"(cB0
-[@hMmm-ZXCfYla3jd2BDZQq1Ck*2)[*G@hK-4NpP!L"AqFA%G@$#0A[#KdXF,Fe`
-Z-'8"2G#P&@b0CCbEL3!!Q#$(1S52LH4Q1"(Vlk$DRZGj[*!!5p2Z(!MhicZDXjj
-H''e2qqe,"VBVE$+3!%f3!)2G,,Z[U"KZ2NU,2Z&bqEAcA1`PmRV*V'dq(rQRDRR
-LiM!*`l&0KJV#&#3JTfF%PqRiY"'jmRV)N!"e4`TZT3)&'3d1-dEKZ[PAN8bMV9Q
-&Ahj[c5((1YY9)8ZAKl6I[,l0ENAqr8`+m+j-6*LDPH,qZ)i"-Ef5+j-!"erpD*D
-+B#5Qph$aG&DP!KS4a#IK"Q4`)QkVQ`heSE0k31!&"d"+jLHl#2CGjl+k8)dq[Y'
-RI1[5U[f05!)eMB2k#lc+8(e&CKq1cU'A$60,+ld&5bYTkXQV"KI,kA2$#rLmJdV
-@j1[0"UD4B**)r$Z)K'XcUKhB%e()Mad1"CplrBAQ9Qd$J,XT`e8!M65ml'l$e3e
-pHpZNN!#"rfBf%$rd!PXDXTKIT`*2K4bL$)*+JJ6bQ(2R`$LhrhB9Yk9kV0)+U,4
-I8H8Nm'HGDeSL6ULl-'C`6cX1JNKPVk55TIq!SrPGbTGQRdDZS&8k2IS3$RiUHe)
-0$[`V-+9TV[-L4!+2mKU[KlRhYGrAC""`XVelr-6mf#ZV5*KB'#0MRGQSGi+#GAY
-H[kqTP5F1M5GN1(,mI0GA1(+pQETfXkjlU@Z+#R)*Kf(ATP`[Rcp'4bq&(fkN`b[
-BiIrrfahZ"#QbBdJ83qbYR-*'HpTD0bPFDI*1d%"81Vkj)brQJ,QRrIqf''UXUke
-J45CmM-J#Bc[rpEY8F"KI3604+KD5fQ04JQ04N!0Q066&MSBDQ##@5',9bVCl*kL
-USjLcr-ahh99@e6JJQ3$E6NP8cP-KAaGETF+QY#@U-2Ip#Hdl8,#NJPaGFm'"FC[
-E*'eZc,h`Q6KaXkEj4kE(l,mK+0qkIMJ1K0"4JN(FLJ5`![l5c(f!H,SJRQm""PR
-Q+`EmX3r&,4@&NK#FXcpNRE8cj9a`PH*4i5T$+,&-X6e[4aKc93"ZQrm26!*q0K1
-NkejY6P3+bKIHimQ*kiF!jr&)"@"G$F@$Cr#cUUD'AP'!++@IQTp"`FEETrLMVYm
-j,MM6A,rm6MVbVYd%A2R(KrKVA2S(+*9pE1)-#5@"jQQ#LAJ5MblZiB5-2XiT9Y0
-$$X+JiR6X6U"@2%r!-lX8ee3ak)m+NikSV4NZk%[QA3GJe5jHIj%+1Cf!U&qM#G0
-VpVq"3pc!!c`6JAP3J-*F&KY')j(U9HdSX!e,aqE0B8U%f1[IXPFe8%XZXBV0DkI
-+Lfc(Y[23TFkGMFQFGf,"fBYmmpV8X-A"09`0HHEpLK,Y[r36i%h'IakQaFpQ#Z'
-k0Z1RM*B`lhDf+bk3!"RGZSK34JDKBKeJq%@ZKiC%cEQpZe&Zp*HD3aEFf8-AZ8D
-"0e0PcZ&`'AANE&Gp`ijMlpN"&2`KT2lmpD[fC#6e4G5QGN1jB9ie,bH#4&E-h6M
-`lF$28'aK!DdVhi(p0b(C`fL1!A4pdEBcR$pQHRHYjGULq85'j%qiIT(cCmbK0lG
-CKKZ*[[Z)qHK1"'5XA"U`5'rdJF2T,M(V$QjYPX)1#jFDr%a4l0-Sd9R`BQLA,@f
-)`R68HjaBNZlQ1Fe2EcR2V5X`4&$qQ'Yq$H5R$9Frp!4Ud2Xr-+I*@CdXJ'$"8%q
-lZeddF$''ZZh*lZZ(U(J'0Q!4jd8pD!F$'HTR%'&LNU$XrK&ImF2i@0CdTa1ZV+G
-rIJ4'1Rdm*ck%%(8R#f2EcHjG0PbUJlJ)$pU`B-h20cq6B'!S3H4jA+FQ1!0rCri
-H)AY"FYY2J'T8Z#96)9%4&&N[C+05Q0@AaB6JITBf#r'KVGA)J-Rp3AUC,+IZjIe
-FS--SlVdQ,U00X8aJ0FaIXc1A2FQPE1!MEU%bIF4RSkSS["p94q62JTEhBj,q&q+
-qMrKa&MV6a8Z16[Ca+MCaaq&N(mr(2Vba!A*X)Z!SCKrjX31EBJ25XBr3+$f+D(R
-B)TScl'QrT1pXC*f*aBbC*Jlp33beE)BEYM*T'Fm)#Sb)KjdHPpR,CIBLXaHC[3b
-bPd(l@#"'%PjLmXVjE(2#l-mA%-lmc*a)$[jS$DjJ`CES!9pk0KU'j!A&)Qb5h-6
-lhVAlp"F2%6bjTrhc@X2XRYJl4""@qAiiK&HKbC&9+14ehH8"(MX3T30d55AhpFk
-Z"-AU%Xf83m,,Keim"+D4#9p9FR3NGP!VIrMcEMklj`K"%*mV[0,X6J!V*$MZLa#
-2$!,-%"J8eVM140k[U#eN4NIA![[4X)N-,cQ)3NQR'AhC,VeF@FY0',C9X6eJphA
-LabQNH95a+cBaQ`8iBKULC6V&*%$@f3qq26C8Tq'#N`ddXPi-8ddR5kb8S,GEBVC
-e*T6ZZ1"@P9L!jm!-ai5Bi%Ir$LRTaBFSmI-&b8MF&4IJk+Q%!%FIK`!2i0('jd6
-8b0,)#M9IV99ILr`LqMMlck012'iJi)b'@i$hX(83!C8!*E-F5Nj)SJPBJ8GET@%
-)hdlcS,4"Z+*)!GI@P4`2$j`B(BQ*-PFIMPm#&4T8U(%9T#"cYq[86qJ!UGbeJUY
-ZSaHA)X-16dr$[6iBdZL`YQ1VA44Z(LHeF!-j0h#LZfPd4'ikZL*@`B"Ta6BplNS
-hMdf0,F1+6iAM8lhaUFli&&`28Ll'YUe([MbbKLi2q+CHMrqiL*DGBZE1q-)MXql
-+82q,JqGM5e9ANMc@A@bM-d@GP&cac8q[c("Q$SN4(NZ-6L5'FiT4`RGK&)R3`59
-RCBV[,J)%D2#D&)%,6eR5m#-TkBQ,A3PJ3Z(lDj&&()e0HDR5@"#V(i+C@24,hZq
-V3%B)Kdkfk3SS--J3M2#kaijR(iN%5a83f3i[m`6B-XXU8`[LBi&I"2Q"YL1l*1+
-5J@-"Be"*bFFa3*JDch9k@a`8A&%Af!Zf881k-DH6p`R3*H$6HKEZrb1Z8REi'Nb
-ePEQ$Vk'*C*eX4`BF!ijTbZSKj@$`rKk'FUB-3J1*F`KE5bEdpK`%@c+mbYd1ihG
-LQr2Cd&+mEVk#B*K%CZ2$NZe@1$D`,M'3!$UV9VJ0ZZVP,5a)&T@f)"dM)"(0abQ
-N5-TDX6%R8r*q3JNe5QD(kL6caS&IbY6!&"K$DhJT`-SeD%0J$H`D#mib!ZU10Bm
-JGiQBB1aNa(J&L1[2Z,,m&E$"'Kj$h%"$hJTc)[3X'$B`2FVr3@'%(9P1B'X&VNd
-%F,I6"F4XB(-l-QKd(b2(ElPf**J+%'i2Q)Pf"!jha"ZLd[qC8h`f@%%dk+@"YpH
-X4a!VKGdSZMGAB2U+Y4`#BUeidAh1lTa['$qUD-3)[4!r2Uc4FC%D+C35k2J6#$'
-@Sh(2mQkf2*5aP`rbIJ$MRr$qrmQYq((p+Cr)YR)(,krk`YK'$hk'4*1DL01e#(L
-T-)&RR0KZ%$d3[p*iKb4HrQ'DC#CMSZ-@D2$BSTa6&X9GH4CGS#H1Q$[Gf2*2L14
-m`T8R6P(LiB(%3hAdk!*2NdVrDA1`[lfrRCK*G#M8--1e(Fh$"C&0l(S+Vp3*`8*
-5"eQS*#`P06P1a"2kJc*qAIN9@[&`j9FZDMlj6CLPK&GQ,[,V2)G($rIJ-FS92%3
-qP&R(PZ@3!*c&5$`B#A(L8NC#iNk!k,c)f&318[-*N4VTHJYN#XR%i@K9NIaRmpl
-HR06NP$&H)!akd`@AkpG2"lqh"H4BF*5&Y&FEhlAh0&U4K@5fSM1R6BdF'8h$c`E
-a&B&D5qk"mcMIQd3&h(!,VQZGEZH#TJ,$SSQEiV#E2Mi3#j1$rBI-`9frj*UPZ!h
-aMYXTYeam0E#)MSRDeZCN#e`MhrlqPK)M[3RK[1DM+aBdRB&M@EppJIh-m2eIdF$
-lYj!!dTY0bCB(hcBeMceTCpHAQ0'aPji(haD$F-m,rZMY[f`jFm[GM@*dNrQIX(e
-clM$#rSB[j+C,2lMrDhSmmII8K6!4A#&B!hm$B[&UI*Nq)lC!pAYENN1QlLq5kA#
-YRiP8ZJ2*6FZV(6J"GefE+FGC2R,*cS3PKaZTNE5[mm9$TT1fLB+ph&(&50#D"!P
-+10r%#E5eBi`BV)P2TV-a!TKb0(CK(4%-'3Zp[4G%YRBUNEdYM"(C!q1)E'NUNEd
-Y*0[GiEX6im[8D5-5kpfZX#U6),'hKEXNX5PN1T@ii@F4@1$jU408391#M!@fT`C
-1M*Yi*Mj"4@QcZQ2r'a"aVZ%"-'"5kGK2a$V'E-p'dEXSm!1`h+d%SL#$3ek*+P%
-K-F3-IR[$ClaXKqZG+SlqCCrrFF&Cp`erVhkD[q&IK5bceBaH#NXXK[1ddULmXmh
-Zf,R0lSkJrGiErVe@#j41Xq'253rCk6Y0&hU2L%YPTjmb9Gelb(X%LPIlQ(-1$2"
-h+H#5!4Fe$d4%pfe+6lT+V8PNdAeaYJB9aCC8X"(RMljN96b-,&JI11&Y'4e"Y9L
-V[#*Pa1PV25-*N!#*1C!![KSAA3,1e9rhM-$Tf"ChP%Ye%JB-CJ2F[5"9m'+6bmB
-QTBN[TN`m2'9LIhb#X[m849[M(3JXf2`9F*SFkicN5i`EFma-6#G6R((S%'Z)R6*
-JG,`6,jT04Qf0PaEr8dfL`a&&-eIpRX9r-`p`&3eU6&Nd)jS%1JdXqh(TIH4NU!C
-3R1SC594!1[3[e"@CiM"Xm8JUN!$F+rd"!*EjJhK@i%rK*0e"r$%Fd`fS`kpC9kc
-J`TDR9A+C!h-3cR6"*!qGKR-*&DKm'TJ"%k3J@NRZ*Ni+j2MeQddrH@rj"%mL3c8
-a(@E6QYabG%%f10jKN5G!(M,k2KDkb)06NF$8Zj0$+$J@bpkMC9NRh1@dV&-X0SG
-'fbGql&KYr[$Pq3LZ$SfLX2TT02%RCXBV6UL!U(E'$iHfdq'X-hjX$$!GDq)1CeQ
-KN!!A1q8dR%MZ-%HI8EbS[Y0be&m-FkZC5Cl%McQ`E&ICI6NHl4r"J+LI()&8IaD
-ZFH%dZQGH!BKB!EECc26"kD"#Z3HCU#iPhVBKN!$UC''%&LYSiadBT%3fCEJHdY#
-E-!qU`VrY$TcLaHb6rG%Ar2NGQCLZH*AJIaKifR2bY6d[c6hiTeaZaCjC@h2prhE
-KclQ42j,rcF,G,mfY`DK(Arlk3Yjl"aHp920QS1fP*@rQI-X`I@cJ2fl-hCXV[h!
-Vpm[F+mF2I[f,bS1(9kepD2FIGrr0MYrplRIIqXH$(hj`kkQFI1'rjkl[Ar&I@cU
-qpi2F"aGZrMMhiS@rcEeqi@EZA0Z4lpA9rh9ZbBGYK`lRZ[pa4If5h#d!!%5)384
-$8J-!HS3393eQ43%3-86Z4,p[qac,@'6)BKHaqQ8Xbc*e,T4B#`CNLScK8BmDDSJ
-R@6Q`@D+bBcMH(KjZZS%3NR"53ML8FVM2$3E`r@[J!%fTYCCM#+9FP-0Y##@'dY4
-b"8STS9b8%LmLlZrrphhI0S8%R[YjIpIc!KZY*bNANL!)!L!)$5rZjGpd12$JKj0
-N!"#+9TjF5j!!6ir&VCRmCcm8[4'2+%fK9dAdQJ!B@RK`i4ZKTY$(iKd"a+1#Vlc
-Zq5$""!P--h@0)hpk-'jpXQGL48!Ni'JN,$B4DDE0BJU!J1&HH"aJ,`+l86"I5b5
-!,JeMbEe8j!YP6kR0,%kXGfmdkHTkZ4+*%dKH15'f!e3G!#R%*Fi8Im9GBY3N"Am
-&XD!NZ+*aPMaF,rVE6VNYN5ea("&bCr*%b,Fa)XA[*1+rh'#bZb96f&d!-P%[$mb
-Tj)'$JIJG'YCdbPNmbj+p!jh0lNVZ-N@IkV'Hi+k1HGYcaABETM$Y9DHpQ%k`DDp
-0aa9m"'`&k%T5&!!XNhJ!$C)B%(RY8ceKeqPkJ(EREEF!B!N3A,rIPQT,063TG$U
-S-)cK"1J8VV5+l5B2A3TJ6DkKLklY4PIRY"%NG!MXpp%39qaeA*%Al'hMJP@U#dC
-0&3%`,83!LhJaNfY(TdaUbTibb6d'4ZBp!VrLJM4#("2Ac`'8219lf1!3!Y11AZZ
-8@Y'6fa-T-%CbL0[Q6DP01*1+ipC%Jkh!X$`bJL9rUKHPYK4%d')dh@T0FN%iE$q
-$`lDb`dVd$a0!Q,bKIc!P`$hP2aAEcie0q41E,#JeZF0pbJ44"2#E(b!%2BIXplI
-4G[#6`rN$qNLAE$3e1Z9lB&XXEL"Km[D26YN+0#EQpK"5Q+`eCF3&"jcirpmKf'B
-&Ckc#&E8ShLqMjFRY3A1R$5J3@0FB#!"MC1"0a3A`jKJ(m2GZI4rAhdbc$*MeQKi
-M)('8`+lh$M4TG`GF(Fm#I1h'rc!IiA'86iDjcDele4hCK##JaHHGL)i#!cjE)SM
-U4"Fqrbl5J-m#I(C%S[Mdi,-R%S!Mq'A8k()MN!!eV2hC$`(B@)9&fQ`+CGS46$F
-MD%A&JMR[(`b%h$2Aq@F"$$F!"eSP!1&$&LBN2-C$ZSK8b)3pb(dPl-$Vl-$Q6$Z
-@IA0Lj"IVZ"3*9jhJ*4&[45Ah4+53!$X4e6[m1I'SbD0r39FT!$CP*N*hh2)ff!B
-Zi9(!2CqLU!pJNV[l62FCX$N0fN&PMrDCrpj+`+k`MMF%14AbZH1q4C5D,#(h`r8
-AIXmE%J(E1IAL4E+i%b,-ZDT8!0)55!'A4pf9LYI8d+p6[2fpb[@1HBX+3lblab5
-p2D"id9R#1NX@k#a"C`(V,&LJXd$8#Bi4jP(Q(T'4S%kjDl+$5&Hfm9fM8(ENSB&
-I!$ja,`4*(Mj+N!!eJq5imD+2CbTZ#CPL3F6M4LG&2B)5J*H121[(#9GSd1'SIC'
-F)GKZF%6+h!R3MFeDdhJVIB`2mM%#k"XD5630!&`d)GPmE5IG*m&QqQ1HFCE)hQ$
-Jq43Xk999$#abqLGC-1%6!fL)#H%UPLRNk5mUR#9X6I*2CS#ekp&HhXi$h6d!S[m
-T`IdK%RJ8p$ip"SKh*cdi#"YK#2P23G+IqRXH'&K(iT5QQLc*'Nm[[mIM*Jq["15
-%+kk'M9%r&dd&H'K086`q0,R`q#,5L5CMKLEb0!f%,bNZ*c%$'d-+YMELmI0l%6Z
-E3SE&*PddbDi4k4!E&TNL!5*8Y$k#E+,+GamX8YkF4hL-@"2KB%[TTMN%,22PU!e
-cM!h(d&$Ebq0%I,RY)'(`b9QK5d4AH'2@')L4$66",@`LJ3QAFmaFUEJm'i'BbqQ
-K&bb+)M4fLSB*SA'B0DE&8[!UdH[EMr$eLKH2CU8%Mfe+!4iY5J-HhFS)6#KFbMf
-)eQ4-6&6ZiT'VG1#48*SqI33Fc%8mqT4"2#,+4$`1+Q0iZ*9Q0"T5K[%)+4SmG-T
-k(&DX%*'mQ8AFL5`I`-Z9LSfp2Q)GXidCAY-"B*CIXJfI'Q,XIr[CU41+P8hdd`5
-p*MKIc"#N#fhX`L&P[B#)HQdc')439RMa`Nr('+*"C3a61MCK`d5Md[F4E@J)8D!
-9b&mIM5NAF&4V)1'Z$#4-Y+@-`%(DC##0(BXPak#d`#0!Cf2!!JV@lBr'!ZQBc!j
-N1jfe+@q2"A+%*B-Sk$!0'KBZSYc91q*(bP0X3iTmL()4dimSMp-KYC@"Jfq2+4P
-[prQc-$6(RiP(c*p%C$kMm(,-9CRZJ[dFT1M[fZBl0SaQ6pRUf#)(X[aK"1)4@rK
-c"%$(dUNV(EX@qTUjY4j#aUAe*rLp4HljMLf4%5%,rmB@&&@hd"3bFCIc&KVX"01
-E$d!S"%r0I&i#"VU1(A1&MSR`HmF!6Pm(4hpHZ!,0YcK@%LM6a4fV2bHLpA*LZN1
-55%ckkMRRMhM&iTZR`#bYhUr386-#`4c(bXCSD!KL1KBmH[9X5-*9l$SF[[V5+@T
-'`Vl4)`ieKpd$1B@8EH*bhKL0hTU#IbCA*J5)DkqlN4G$m!h@`[$&Y4M,fmJP-+T
-fr)6a%m82GEq)lNPJFKY-I4##$3LHfRiA#2+ep#S5-8Tldpc2a5')4LdBGT!!LfR
-#U88Kc)ZI%K!(Q2#e,d*!MRfHMZ,k1"XHE)KS10!L6"L2[1'"Nl@0A%4"G4`Gc*!
-!r3D3!29K8#0h!9bb+-I&$!'qDhq25aqPmf))bh6Z89aiZ#!bmH#"Yp1j&d%jRCF
-S)hJ8)+#Rm`B%p(3qJS#HikL$8kAc6Ll*fC(-TJ#iqj@TZE'4ajb11N[%+`[)4-2
-E3a!$k3M@(AMSi-lTA+0Fl(ipih9R5BhPNL@4JBiBk`kaEQ4V3,"4bF9M9(RU)cB
-!MhlPmDqI8()G2c(ja+'TDh"95HdCF@aJRC*!K'NF2dR@8$DZj'D9e*SEqF2e0@F
-[RAA$Z50"ple)A!Xc,Q[pR22C)q4@c"8$JLY+Uf%@Xa)ZXdJ,F`BbaPPG#(IH!(I
-HN!$EBbUKDG%MhJ&JCN1bKPiE23p[04`Iar'L8kUb(&M`k+[bd3LqIJ6IL&1*(4e
-R-A9qp,JLXZ+Yq0(IHa5maYKVM&i6RNr4MCpBEXT6jdAT*L)D36VZ2U(%6!!pDh@
-+@&ZTa$%CC+ma#$C-lV%d+MAQKlGF1XZQ1a&8+Q,5!`"fJe2R@Sk3!&-X5R"*qX9
-+4dAkF#0!fYIhd6BHh[+h%dSRfd`-QqPdRmpCB#[qAI*@+'VV%EA8"'*MGEMJG$f
-#4d-E'8BPXmFLHJ3JCJ0A5l-YB4laB"$3#1bA-bU+R#J-1*6e"lS@Z$CA[MB4&Sr
-HR1pBq5k'3e3XFUa@Pa,%rS(I1aaLFE+QlIAJ(43Ae@$Xlm+@[SU-X1`-4&96@-d
-8eM-$Pp8*Pc01(d')LJS@3($pSS3VmaQJ9r3jXQF%66bXk6`!%-+LrQK(9AL0PSU
-03M#,bX%X-$G*FHB*f6ia!ZUQ,43i60*KQ'mFKZPH**!!a$rU8aV&1lPRBZk"2bJ
-D-UfKrq)GZ,1G68k8*aRbA-NeS-q9&Q3(m8!#Mb$,9KS$D4$lQX!*22S$Me"fa$+
-6,`,C2PhJ")D-6&h&e`qX#f4Kke+b"J9NccY&#&p*%F(FZ*1L`5R4iZK(KV+C)L2
-KC9f,U"Y,[mjreXQ1j[2ImHKEl'M4F,5i`0&CkY&LQD0&(0fk`-%ZG[!J1lE%F'c
-*!XGfUFH@,(JX%q%q"2"&*Q+-'eJ%Jmfkl9&"@B8I`*b*48)cbmaM%"m"DheYT6q
-,-QQ@2AH*ZN#1R0dQ5[5E+"NN*R4N8!SAMf3P%@d8"MS36d1-@B"CT#Q3!+5i8d`
-`,e@'6Np+`$fqhZHSlj+!pJE+MUdR&"GB`!hM)EMkMq+c(Lale&U[ii6UbJGd*0"
-YL0MV0)jk8mP(D+)-8DBG"M0-3BSlMVKdV%!$d1i'--$h+*Km0"0&9eb!BUr'X3&
-(@@&`KQ*[K#DfB')iYdI)NY9-1-IaLKSXql4qJkN8-4'l#'K!"G+b6!+!"6X3X2+
-aH$QQA-VN4II80B%XL0@9*+3$f5B[K%6"GbbQ%S!*)%DF(+c3#83A'AZXTKIKHRQ
-4%IKA%jK%,iS[)KSb6+hbm8T#2PjjI&V(+lR'ij9FqAJP!k+dUHcaT4DJ6hrl-R$
-"B5-'#Q4MCP*"aN)!A0Ne'Zl,G,M2QS,paH-PbXVr4dR)+Kj&4(P0G[%1-5-$HkM
-BZEk'LTe8d,E@QlJr$U26NY2eS6%JAS)IlhG)N!#@3,Jm$p("Q*6!#J#jXkB+**2
-$6LF3hXp32#X@ehk*ec2S[%MS#da1S0+Tr*+LiMkj%hl'C5VlPDJ',-G0NaFI@Ra
-!$VZrM)b`MJr9MLm-(8*ad*ATh!P6Kd`1`2-ZX*MR#@5+Re@iG)Xi0+HFhcdNiB)
-YL)Uj9[UKiNd1LS094b[d#c,i!1Rek!`XKkqrZ0mV6+aQ,X1+0FJk9$DA+k[k[34
-FhRkTQ@Id3(3YqpN2IldC3jj#J)d$'(+2PKL-Ch-c4d"pLJ8&$`*f&`SIq@TfbrP
-UC*SL2YBpf60H`[$@MRPVRGTf)42&"[D"aGSh24BbJ#QCD`dKJ1`l-ND$!'T5i#E
-afLm*K,Hf3@d59`rFelm4dddd,6G(-'S9QV+)b2NFfEE$KUbI3l$BM*F'Eh4Tm"d
-[YErcTE3Bf(!+)U3E2bhiXH+R$`#66H)G!YZ1YMQk!B3mLJ&""S#d!L6S%eYBCkZ
-M"Ce43fFI@fi0I6KDm'2&6cFYIVqhR3!*c-PA,Q)Z(U6-H+'1!)`i6XFL`mj)qkr
-M4F3P)%k*qbJVCdf2Udf2Xi85%@bk1UUH[N3""Q,C+`3K*Zad"+)S,A`%J"J"HS#
-LR3#Ur6Tq8!C1`0+a&B*cM"9N@S8J355X5*5kDATP4hH22T!!L`%E5*J"$%E!#`J
-5!q12`!L5K4,-G1)4bp65!DZDh*c!P5`Vm!L-jdi,3$)Z8G,2VNa@QP"JbKPTCTP
-!DB([)03Cm-NeRJ13!(J2%3`6cU-3p$XYY1f%4qM@1pc$ZDP!Rr(,0Hqal$5VM"L
-*MiRikF"2)T&9"Td$c[K1#fhJp`rB"TTBpYE#K2)*BTah@K)6b`c5j*j+k-T-MMK
-&0,@AQCDF*6XY4K#X'P%5'IpM83%-D[UXkBcp#M+pX%Pk46,Y$BG2eaF%6Rre`+*
-9M)!I$#Sf$S0J$3Y$fmkESMi-Yf0i4F#dLJfr)JrA'3&(b@3LQqPiXUHc`[YBZ0h
-(BHN03fi)b'5@U!"Q3Nc%Vm$RFjJHjr3N*lBKN!#C211,[rLV0j&S(%mX!E)`4%K
-bqEPfkFTI[BmKZ1P0)`"ibdFS'!VGj+##'5e$SNSZB$2aUh&mM)m*G!6!CMQ1#B)
-J%LkPVJ3[AQVSVN,h#D%l`SYhk@G()-eiDbXjC@6j9&L@8&JQ8T4D5*l[U%)a@H1
-S%JV+q&c0%KYX#&NTdcH#elH"8&GmME*-)G06,cX3IErYG1Z(b$iUJRH1+G&ICEA
-mj4qi&ee@J$qS)&Q&Pd&@P2cBrLZBUJ(S"TB8K8H`T")"q48GIM6i@3qh+S!E%X%
-RR"Ka0S!3i@'2D#++3@(jPE&M"@U"@L*'ZjLF2dS%$'qhq!5*jqTEfRDBKX*3Rb*
-6+26Q065V84XGF$K3912+FRR3l"p'!XGJL&GpPBcAf`jG-l(N&-*KrmA)8CaA3Y4
-`2X-S$S2FRA,NQYMfD4U#@CIBpRBh%M@NB@-qTlF#45K-TA%[lh5'+bcTfm$bGDP
-!H0H"4J-32Slr*IMIJ)*b#8#4!Gk9S)pLI,L%#9XUa"2%hCSJ`*0Gb1"mYK-!YTc
-Jp0'!(cYqZN"'k)5KqP[[h)f2')K1*$VL(9AVc[B2rYfG3rmXEeABD'Y24)H0KSc
-Ea+8aX3d-BCc%#)mPDqJDVL2)Sqf%3SP$"QeCrmph&PLb1!i515@58Sc(YF!0mFm
-1`&L3!!l#%5(ma0R#rqMD`!,(Y1!B+ii4pBr"m$J0Tf'2A[[Rp!@'09#f8'T!L!D
-iA5B*dAaTr,hUUf#5NQ'XYb9ijr3UIK$1&,CQrl4FB'ZIVA52I3H!#S#m``K+NQ-
-5Z9KL41Y['ZMk*ZIlHG6&YGNH2(kA%pL[E,d(3L%9"5E"8)$)B6Xa!DS1MU`$1ld
-&!"NlMKAGBpdp##kkjPjq!-A&!m&HrTMDi!"31#KF(jJM6c+3!-j""L4#m346"e(
-!*j!!cN%'dN(3PN%kJ4hE"-BS"XCS`b`FE[*XB`91TFi3!*Y3i'YM3E#9"F%-6J$
-DA!5YJa5d,XpaeR6)N8E4V`EKp45-8IaXb`VAQ`(dZiK%,P&XIcN&1IT"4)`K@B9
-2lEK8ZX08%Y$a2h)&3*Tp`E&%JpM5[FmBR$l031+I$!5NNJmUHC4G)k+3!,[Td``
-PMTm3%[*&FbdS5'PB4KF(Nkl"khVf'Q,CATbb[BINi35qeQ&S%!B5B*eD"VA-+9Y
-22DarJHGK()5Ip3bNh@BL-(%A"3H3!,jF(ehAaTX'K#$4b#NT`ea,pVU3!+[TP(B
-!!%42+93pIm04q&N2mP6dS'XEJ9EL5-iN#,-4%QD-+C')l#*%U%+%PJC@p(*4J@a
-KZb$`93CZJXV!!GK$$AL*pMb!@KrV-chjGf@Q*h-CB`YD)9VGq"Rk$T(8LAP%i,6
-Qj0m9XKI'0ZU!"PJNaKS*,&)865lUXdMI@Yr-L6dU6I5crLC+*MFXbFA!dl1BUHb
-`2D($%NPad&I#[PKJYMPJTJ,Q([2k,hcFqT8B+,))`2#I`1"G,'il$j,1VZ'8PVq
-'Y5UM03'%IZfJN!$8V`6%RC&rh!$`5%U%50e)AB*08,&hNV!&Q+aX4KETC56b5A$
-p9l"!"5C2"CEjAlPb2i6%-qArAqS3-V)*fX(TmpiDJNR6"#)rL)0((K9&*'$D1Re
-Hl!`6pkmj`r8`4#6f@"c-c#l92G'TX-jQF6$V,pRkAA%j)5##lYDE0ed!ZA0),a5
-`&53GFe@G5Jq%LSQS$l54L)er[IclP1!(*&S2a!HK(eKm#JB8,L5qX+6[G,p*i0)
-4'*j'@JLd65B@D"`eNVe,$AJ1Rh&U5-BAHSh#mJXY%B!Xeph&TK*@T"S(*$V,[mm
--,0jJi28KBe'HHm%f0!%XXJQ&ZG89T`j++0kUB"0KX5-Mr8Il"6CR*BTIK9F"*-%
-abeA!#$@4%&heT5i8e3Z2rq1'4"J(N!$E&f"i&8X!#9,SY*Xl(@!S*TN++0,9B$"
-*,6VK+T!!+j*8TeNQ'`L"!%kQfJ@rh[bc(dld@lmA[+H4R[[bZC6$5NI9A`F*U!*
-R'XMaSH"k&Zc!,*J[92fY-6B81j0,KFM*a#6$PBS%))c*Nr6MV6"Q6(5@05R`!@"
-fZTkcCRD,pTk9KLfVYC!!3BF'55+AI&ml3%D-f&J"5k#@hil#k0qfM9"!mVU,)ai
-k!%kA,akP3SGME8I9XKNKJ&TS3SimS'3AS`#mh%2hf5"e4r@lq5)FeB$M#rZ28L)
-"6J@ca@4qR,#aj)VjC0T%(54X'#,2`ibC#K&VK'%`0"KM"EP9TM"$k8356%-FCTJ
-0$5Aaq"d3HTFR'Yd&!)m$1%j#li&&9+DZi`VBJd#baTl2kr&MD4TSl3-6rQC6Am9
-!GLd@pk*f)1JK82QIGp(bLN0a*&J%#fB$Q0`Y%NK`Q)P#BZ%E3"LN#!NC"PdU0BK
-)b9&e'-!-+"CkL!RmmaaD,VbJ#2MR'6#DU(T18`B!YCJF!`#B-&MSr&p[ETCqpN1
-@05lIcbRL#I`+eRZjZbqR+iNcdF%$&mNTrZa$mD*!F)Z!P83F&5B!`4-F`q[mFIe
-jN!!dRNh%bVS'6FZZ`3CDYNR@llDGTb*Q)jPhV40G5mL!Dc@+iXY0&(dVEDP)F[F
-XVKh"F!T+AR)$E4mYaSVATZ%@Xl4p)L[ma1iNDc)48BPKiB)jjp0e+%C#,%8CZaE
-T3Q34D9ZK#,ajYJfNEGY)@emENVL`#"ZBeCFpLG`+VV)1eiN,ZTP#4B2m#*QkVqk
-SHLB2MTd2N!!J6HShLc9J%kFr0Qf+AVJhhk6"aJ!5(bqTEVPX)RGI)0H-f,(Ncl+
-PUA0B*JlHQ`pM[d@d'#MLRiTdP4hS(U0KTVY`pj0Xb9UBDkqNjHNrDR$XaDUlVmE
-,8Z%312H`f0k)`LJ1lQ-4,epX9LrH$i203KEa"dLSBAZL%2(LDGAjh'),A!qGF,k
-*c'@pc'9[XX5A0$5Sl3XaYkej[XaJfA(pj,MNB)jm"P4&iXUDYE6-JL2AV$%kFXd
-bFZ3r4l45kBbG-N85F)Ij-3k3!-*e)6Y8BSb*3"Eph*PK&8J'iUY%J2c3#H8kh+B
-%MP$-@`qbDEiD8aSD`2I5-5MJGm)`C-hE9Z@k(*9dN!"`#*pd@$QQ`0J%aL-[KN-
-!p@&!HNM(%iQ)X2#-BI#AC4Gq,kR)L"%h-4YSFS)CS1b9NBbXTd&J,PX"D*N-N!#
-!CRY#)"D#@8Ea0'p#lIcYlqfdN!$64Pbc+J&!I)fpL,Jb3d"T85%Bf!ah-9K2(p[
-55J6@%V$lAK(A,6`1p[3k,D1F54$$dXQ5p-K&`,KDE"`N-&N[YrAhmVlqSm5L#X9
-f+M5#'GKR+$*Z%,*QZG"iZQGU'J+rK3SLFE8J-N`CprTSRf2-e$Kp*'Je+JPiL5%
-Y#mqalGQ4&BD402`"0M6[4Gr,9SSLC#&#!FC9IE@X39kRGPSEfPCf3hkp$5@9hSk
-2E8G0hPi'3@`&j'&L3-"@'MVl4hpk[rTAP'RhUmC,,hUkZ0Z&U*1!r$bK`)h#N!#
-,d%i3mVmHAdc)4mXB%c,J(%AG$[FBJJXPBai+M9CiJU-9dGkQ#Nm[5#3985(MKc#
-SiT[FBaQ)lYi"G2C94+%@)lX#!Hpf[M1!)V)A(6jdG*%KJa(!K!c36iHSM@Z&a!,
-%F&qT!qPL,m`VL@#9EcKZ2Q@0p)-QP`!k@6X,!4GZfm93l(3M8*XDHV-V`K8L([D
-+H#q1U3MMHVZF#&X&8P(#-3m%5%[hCf&l`M2(aa)qZfErVd0VR8V`#D2K(Lf&(T+
-0@&SXc*8ZFE3L22X"([ECP9`!j+,MYJ#NC)X5,L68$%$+GH``BU4)'8!0!9JBf&!
-4TJ)Zp@-R2YB*,j)Al0dkbL*J)S9%Z8k3!)$'`ka,2D5F!V,a!MLG#!BVM'[XDT-
-X-Z-@LJeX)PQp*-YiLArbB5@*@*m4&+JK,ZR+X(DBceNrc+R3IETq!a+V`Y8p&"$
-QR$fd3Jq&8,JiS`G4QU4[`1G$!3SZFC))qj`-UU3pPT!!)LV61aQl6'5ZJTKE)'[
-5Bf!e-jk-#J150GBNL3*C'S$*(L,K``615`,ih#d58,ehTZ`%!pTHfTL2$11SZ!C
-6cCdG99h0-N)JMZddPE$SB9hRdM2)6(4Rk3K'B6q0VSbIS8m)ci+1H8JQdr6K-G2
--ii$rdZFIrq9ARi%KaZI9UQ9j+&VK-lbq0C2EJ9CBha"8F'&(-Q9ST5pL341([qJ
-N9mhY1H*KiX5*6-CYL-J+[D5c845f`XlaQShL"9di@,adheB,LR!Z-Jli$6%UGEA
-RS5C"DLU(N8-EXX+k$flL8C(epFAPBYX(Q%jFddT0I@,EPH[F&qhMBj'$5I``6`c
-&fh"3FBL+JZZ(4mJF#a'eI[MF0Gq5kT-@0[h#EmpBc#LZ)iQ[IEh2Pd*A5dZ)8&A
-ri8N2R#*h*Si-(hU&b*YL'm!K9&!qNi5-JK4a!1b58SVKUj!!#`*LdfJhc1ZE4J&
-13*,km@*6+,cdp5f@k!!I6[F5Xj3dI0@5B)S8NT+Z@TSKU"$mJK6!mSSb1A0A,`4
-5%k'NSdem-eIHa$GcMC[iCUkm#3QEq+Dk#6rE4!AEa%"Z(kiYBCZS%*Z%6I"*G%P
-h6q*`N!#Zm1[iNM2L*Sp(+"c6F5pBI,Q0"@)a1SC%VFG6G-EBU9'Z@(a2SD#@caS
-JS&!6'+1TDKDZ@*)ZSVY3l5jNh6kplXG9Y+4$PM*%Nk2N&M%@9%#b(SX"T,PaMLr
-Aaj['SQ-mR,h+pJAR)GQ4kV(J(KN3(lS5I!0%l6HiTr%0Z,%dC+Nr'j2'R6pT3@3
-8lVRT-MpmBNE56V2SchTKFAR-rmI26L,3lN`4r@Kk2ZBIPh,5SS(UKMeIZXaV[[I
-,Zm[-SL[,MUDZDe&DlNCPf5R4KFBT8+Pd#XGL+4feHmUjaf@1LmirVc#,a9Qh-D$
-ifK8DS&0@J25*!DGLaH21XJ&4ac)-L,V-AreJemSDXbKPH6&!ZYC!!i*+cIP5D%1
-"LQ-0"S4GjQmFZreI,idkQYZ41+HFfehQ#epZdGd)r5$8XZcCjc+ADiFfAJEUABl
-01,c,CGiqp)r+CD!Z1QS`3(5CIf5j@R0$e111jp%mlM+rh[ILIeh'`JFGHc%Jk$)
-l()r2[Jcd'j&`U*`hZXbIC6`mi6,3ecUfBS$@CAlNjTAB$G(Ij0L"jTZ`1&Irire
-h3Tm!4(TE'(B8BG#`bccjR`GHHkFYB&#phMB'(DX`D0"P2[f+jm0TEU-B3+**f!B
-'N!!E,qTmq`"$rabKrhXCI3R0kS%q0NXZ8$rfNc''pVFCfTmBd*EB)VTSQdMLNqm
-bKaklq0m-f3+'E)N"@6pE[Q,D(*S@ZXarQ2@p5SCLP+&S0k$SBNXRS)KN3blcc[l
-`[dm$b@)@i3+5)1Hlc)%qHpYPS,R+CDkC[Y4m'@LZFCPrmp#c@bm$cHGGjJprqbp
-,EiKQNF[mmGIZlE`-0*Hjc'[rp1UAPi&QMFXmmk,pkFY!FiI,A2frre"m3c4VAHE
-m2lj9H"PSERDC68F#ce`'QPYGjRr5YE`j665PReYLVYPQ)ESGbhpRBbKf%BTr-!5
-SAeKLaD`40[cPIb`b-r3qBZJG03DMAeTL%QX'CmcqIrm5BkL&#6AV90Y81H$m`",
-cXfD)N!$Y5iDM$+e2'&VIAJ!Y"*-C%pEe[545F*8lcrhIe6G!#XZek1Gh%MG!#Ui
-miGrUR#q*&)[-i0r[hr+5D#'BVC[qm[)ES!9Afr&(lIQA4!Y#3$VcpH)E))9Jm-b
-1fYqp*&*`K+9rr[@5'b#&30UHI+c`"NX&4jhdhYe$dd3,VQp*-5l%fMGL3K51%'*
-2kcQqjC3aHJCdMTmae"SBDPjpYlHF06V0VfiG6fA)A@&1Ie[Ik5hRMFkFrrl#hc(
-dMM,d2TSQHPL53imrpI%0d%-dI6qkqF%0dB2l12kip[qk!AT`k[-Trrl"$C&$B$Y
-5[VrR"XJKZ[)DPaEG!$Nid9[+J2f'#`IAl["FQAj$j"$SAQcEIr)'b%%3r'$EkNp
-[Z("`*Yh$Hhjq3r6Jj,mrqp#ldd,[iAHIUHE5RkZjjfr92!U#NC`iq#UB8!,AHLJ
-CQr-f'23VDmcM,%5iYGDVK3QcKiGIb,TGEpB1a$a,2Q16&M#e!f##`pNEL"RA55[
-1(hYe@FVqSmmKLmk`3+fCG0F5((0kDe1S'#4+hF339&$#,hbmi[b%GF`4T9DDH!q
-%6*SS&k@,0$%$3,J@U$a3!1kb8c%MkrB$balcNXm'RUj)HqLVK*HBFrC5Vad323+
-L3Df(Lp,cCl*ZMcZlj,1BeXHAB0PMCZIYqLm"0(CkZ'-KQ(P16H*(*jQA["Q(aIq
-50e-X[hhcr,[1fl(S1-Z5cdDG2Zki6X1Ir`bX4Kd+!4Ld"-88PL3'$6&GS4ji96j
-`h(c(+mC,RElI9TrkYA-mkjLcj,1ip)Fh8qEiq#4,l#5EI!q6'XG#HCS3B"hPV11
-kh''ef@aUe`c@G9AZ`K@9jppY'N##r"Ri+@mLe3-jMMRiH38r&ILTDfTTZY0dS@Q
-Sp6b,+*ihTq@[2MRL'C!!4LJ)ma%"B+2)J!Lmm$IPJV&F3%&al3@e%)@%3U,&1-%
-@jUCa!SQ&p&l09id[PcA`LMV`TV&J*5-KAM%@a-,eH!hV[mU&2,bmS0ISmSDSeiB
-Y4N"*HcM%L,-9DD'0aj5BreVlmpAMcMEkPjhGCiBK!Nc2Ba+QcT2c[fRH$j!!-Lm
-ALpHF#4CIkeVbhKQ,q-,X&1IiqK5ijp-6eS6J+Xla-DRS-h+cU8rAV6Q,U%3J$H-
-30P8P6rRNU3Sf&5b1[I#6&1'JIm08kB0qX-""2erJS&m)"lNDLhA5,mmhABKH))G
-`Y)V&Lmp!R,56Q!Kp*EV`kQ)[jTDrHJV,!Z1!8&V-1[!(MJ5&iM)!iTB(RhLT4X'
-DdSdF5D4%-+i#6Z"S53$#E"NpTKbIDA)8MKlll&IrmNF'5Q3Zq1c"6!'-%#E#&J*
-ii3YcV0`UL"e2pVT-*4%-Y8"X4F05eSrVcE22f8D%cR6*9a"C"e)G3(cEN3#hZ`F
-NZ"hZJ8LYHUNQYdG@,mJ3@d5)"3A!(0X'!dI"N!#aAqUBpkh9EXk)+0jf8Sfm(U)
-*S$&Y3BM$,-"$LGTK3,)**K8"`B9!k-e$B9m$%T51Pp#N`U%@6fhJ)'-qrLQ5P`l
-Am3!Z#V",9V$$KmN8Pkq+NN&DAL6X(Tf4"K$kh$CmS+-5(HI3iE%*%jF`NHR)-hR
-`!32,5)Ea3P-hJCj$C*UkR)akqJGECqDfB[[,UlH,-))!)5KS02B*mHJT`CaG5*i
-,ik@RCrb)##rR"QDNN5PTSK'AY$[bMX5MSp`a)qeJ3a13!%"Ja@2Udc25VX`RXRf
-#NCQVYrB6X&@b#UE*LkcCbH1UriNpJVBQ@kZkM*+YRkpASq%DNK!M)[)@@A2bmXZ
-[%CL`r&%3ZRM#hS3(5hl%i3,m5KfI`YRV(&apD,&XrS'"br'MGeRjG(Vd!b%3*+U
-eSmQ6B+TP'Bm%q-PEV2AI`@Ijqd#2PkH3!"*-I1aMaPb@$l,40!NNrJ2XQ'5mI&J
-1mKB3Hj5KkS,$V-+5%TKiErNe*)11Nb'9N8aFr6T&N!!eLBa2S5cV(U+hL)J!jBr
-#j&TB'$*`A%9+"kVr5CJF6q5hdEN5Qb59F`#6cL96aEcUGbNE9+-jJ'KH5J[1"#)
-PD1)`,[0@Ri+T9MX4UmXI&CVGC@$Kq"-K3q$,@bX6$4T'8jF)#`dlmZ`T+9MH)$0
-e-4V'R`(CpMTeZS2+qbBE'MbTNQkEK5()0c2T%`PVNJC@jUd&5$JREbe0@G18@ae
-9[mN3PXbTG"-*1*HkM-G%ZN!FLG,b"'#!rDfP'6eUFc*4D@3'$9K1U,0``e#%baY
-03#R#elUX5Cq%+F)!D%ab@d!fXE[pT*UJHDIa%'@01MQ15%,N1!bB$EHKT-PXq,b
-e%f4dKH1H2F!-eN,#YT4EG$A-9M9`3dqCTX03N@6FkPdL[d5fAYl#,1eM"QeKQVU
-#J+#mRd4U0E4B%!kc-&S549J56)mBSX#R&`94H@N6T(hmXKH@lhLTKIedNR&KYi[
-k#r[TIVe$EUU6*pjTBBd145TTPXiAYXk6K+AT*dA)LM#%9$%[AFP%Di1TNaf'aNL
-LGF[TJL*cr38+'lDPk'mV,*8fK0C6lL#@9Hi!Y4XV3*M92#@BbaBN`LS4b)-Mmq#
-NGRPL2*SL@VXT%1S6h+!LD6#k3RY"p%c[K$+0CD4bZ(q`qp&$eiLX"kA06i3m36H
-#e%#S'eR605b9Tf[Mk5eVcLDNVR1RYabq[H&Xf%rNQJB1Xj-B04MCH2UlDmiRT*&
-cTlm,Y[,m9HkE*$G+V)m@mp[6EPLMhp!E,MjGri5&*U(fjN,kf9lhP08cebP6mE&
-)r9MHr@EhQlZ2mD06mRT*DE9M-Zpe6jD%lXNHp51U0RYeFTLD(A9-,X"dJpSpSRj
-dUXe+*XHSf8E(j$LQJfThSrUKPDqF[%QpXKR6fp6ZLHU(M68C8TYB5`2644@8INe
-*P$44iX,`PGQ)@Gj%CS9AeJI)J2$)dY*%d5"MD$e,)EaR`8aUG%Sj50delY(TX`A
-L[LelFNdL(8S`bK-(3K*PH`iefb0a$8)2M!R)G6p*Gh-BpYT%0pcb'Q@&IrVikUP
-H[%aHdcX`H483&bH[hCdpZ@9bN@hHj"h@l-PE-Ea)(DjK`f()PA0Tr1KNU+VrT)Z
-QB#k$)D88U%6lMmC893jN$!L'dblD4(XXr"0,l-TXFmJX)U%dP'*,Q!"jB,EjjDN
-J*&f*ErbT*3i@G2E*')Te-+ilDI)ZIT1I*$Q3!!JXI[1iM8ZK*r5)T'V#$CAKedb
-6m&9#*+pT%EaSF@mc3J8aENL%&6k-)TpiZ[@-V9Tbi5G`$BiS"TDFB55ENp'6*&U
-b9f*kQ+BELIAPi8fj[2CXM5@3!-+B$"#UBS%PRhd)GYE(kIA$XaKm[JV*SJiE$kN
-[3')l&&IhkNGd#@2-ile5)0JVZ@*h@Mp,0$HG$*bNJh9I02+Dmm)PM9qdm12RmA-
-@DEH,Dmq5FXcB&ef-P0NdRdGr%SDjIlJ0#VPJ4MRKCCX8H,P2FS(eGFSEYme,Y4N
-@bXm%FKUrb*6X3q(G((5cPlYZqLb!-[Q-rL!Mk[2HX94EG`mYH2mS$URLfdMdJi6
-Y!0Z++BS#0#kK3dX2JR'+Jcj&[e%P14QQKJ6P00&%')f$B!j08"RKJ&Lq6kM-MCY
-FXqDp9CLqq%Q@2C(+%%B#CSDH1qHpPDmfmiTq*-I,IaF[)+-5iACd5NT(eHB5CLS
-8CLMDM)F)C(054)*'ffT2B918I@BLNCG`S,hIUiTjDZ+MJlYlbLVHNCQ26!lcNl[
-kQ`k#2@H-GTA$*b`4P"mF0#C+$FVU@%45k9*k+&09NVacM'AG9G%8PRb9$N"LG+@
-C-X8a(JNd$5`i&#,rcE++M*U&K)BH-[5)k0cCUIY-iI'MUIYBJ"ME2CEk@NB2TQm
-LS)`QTdBmM(@l9rib)[qq#@ED-#(dBX"VBREUrBkEf[EaU*S!"K`$[%&G$-BmFP*
-3KDZU[bff4bf2AMXBL63`3q@`B*,Jb'*$#m"-Nc+G!ME3+bX(#Z8)K45'`K"$Ci`
-+)rpYL3`6qmq5-QZSfb4PHQ(ZGip-'mZ$CDGX*U"kXhUr$8GJ!`p-A8p5-F%VC)&
-X%`pS%qeMA'5XZULU'!+VcSMf30B8!V2TK8PD*d1%%TK!J3ch'SmQG9DTGi`-[Q1
-eDQ"YIiSUG$!Z3Djl02@1D9Yi0,@&XV9QEX-%@f!b[9LZXXbV`5j6iU$Xe*EUak!
-kcQYiIB)UL1Jh,',HRM#KVQ'SD`c,(aDFm8N@,'QJl@8pJrS')*&ZBNHJ-ae,-04
-a-e%LLdeKJKhNBCYT)N9,1V9+&EE!(P,RXqD3!+$@CqpI@+81,6dAB-+cN!!-JQJ
-EeH&3%b9aKc%SN[X`Fe"-JcNUX0C[#L+"cVKEPP[QPQ0"9*6!!jrE(-PN@(DdNJS
-R!)Xe'9pT)+S,#&Zr`N!l"TT[@B*0@MZ14TC"4aX2JTVS*KbfF$F5#+EHa#1@ZUm
-AbMj6lq-46(h!NK+'DG[B+T,0[!(&2eJm,!K&"(jD1UTdPpJQB8C)*T[96kK,YdP
-mSYHD1S6LLUJh[8deLDF+@fD-(eac#&'e%)hXq!%,M`!h1THaG2aHp6S)b#(p`H*
--+)k[&2ZJK1mpjP3!Dh98"A2!0Xi!BMCfQ(S"$U)'GmF2l[d,AP!e#[IM5!Q*'c@
-1M)kUPm[9)a)iSK&(h+9%Il)k+m%K@,(0K#$Ba8cjI3CcIN1'Q9GJ-&CKBKI&AK0
-U!kS#rmY0GQc)3e9H-(IrHhV--&%6IH%56e*D%Q-XmB1,!3jF$(!3`S4G,E+2819
-++S"03a@-#)9T-2SP2be8ZNfZH"-Bi6UMD"@%LD##$PR4p8-kS03)0hk)%[))(9Q
-MY@CN*YF6*I*8KS8Qj%T+q[ek4b`mP!j402MX[j'"-be,H5,F$RE9(aQ'qpHK)T6
-$BMF)Z3%!Dp+i#ii,Je)SDmK,pe'5IRcQTjI!&0lP@$1+!3k!D-#q8N%C9GZm@T,
-E8`U*KD@-[CMU0A9j"e&*a6$!0C5eDZ'13He!2`,X$"J!V6e'(iD#0VR3H5S8U-[
-ZcqL4-mfm)JUJXNVqN!#3!"LLJ#A((#Q6[C%a&$1,KhND*6Ie,G"J4'J!*h)b"8c
-0JVRT&5MM3I!JG6lceRC4JNmNb)8+&NT36`@FF#8C3%Yl@#+3!-GBJiQNI%`r-k,
-#PUc%iYc-e-PbS5p5qUJ%1qS-+ED"QS*QBQNMfbKj-V*`J(FS85'+)hr*ZJC8&L)
-,S3*b1@-k5arNB`H0XBAJ2!mSc%(e0%P8B(baJSiPSeEjB!6*!+)[K%-[UBHfY[D
-`a+cTZmH5AqNp%6LB@S4()R9C[pGQBPf2M1H##J,K`hp+r6L[GU6MiiIe8(69$h-
-C'"FLkrGA1FGS#S'cdq6U2H(IRlU-R!&Qe8F4N!"$(9AIVN2Q5jZ1XN5LK&),NM'
--*PI-14&)-c@bjL(CS&PeMC0`$93%F+@&KX,dd5@i5AmaECB-K3XfX!MR5TJG!,0
-IGXQd&Z#@X!$EX3"Ph!-U$P5'L")TAa3@4QQLK9%kD''S'HYm5PJ#jA&e58kU(bP
-Uad98"mBB(bLGqTTaH3,ANE"'IhN1Tbi$mL@PPkMKdMX[%G6B[H35KA@PP`L,0SF
-GaJ-&,&#1U-M-@dZ*V,bd&2QSFJSJL*hNr)YUh9``lNAb`-P3Se#*j#q6N!#XC3i
-+pVHFRb3RQ!)*$F!1Y`!D&Q8P,!%)$dFG40B8Z0dQI+5#H5Nfk9M#P3QQ',+FIc2
-&2"V)a$V65#!Rcq'SFqA-,R,8XmH%K%ZB4#5Xaim'#1jdNj)q%Cq6JT6P9Z$R&D"
-2a[#el,%"@l$MQNj9%9N$3fkLLPbVM0cS#DA"X3b2%8F4EBGYaCZFB-1D641"h!5
-6MT!!Mm3rlmY$Slc&!2BX*F(`i6KNDT9i,F),UGB2Jj'3!*F`,#4K-6AJU(Y3SP!
-LZaXkhp1fUkS9MJ&d'f5Qq8&b0e(RclTC$R0a,V$VrkZ9QB+()kd!jJC0(@Jq%3Y
-[Bm$-4KcPCBNkY@!6JNca`"h(4(U"+CQ3!!!JD&""d)hYC@"lMFjJFS)01#i)1B#
-!4Z[r)*KQ)XRm,,L&VKA"CQG,k3`8`"%Y"'`"9%Kh3HPN*`3Z-IXadFqbXldQ$eJ
-1Ar*mX"6CbI2"'*EE4T2rj)c@RiT%@518kK%)'hCIQ,*#RSLih"F`k4)!A-Vla"B
-1FNSS4%S$#2"15I03q0RRlM1j'U!F)#%e))NpAMdKpiAI+`Q`BIJ)C#%3'`"il9K
-Q![!JHSUB5X9jhb)$B(ZLldE(d"(Y3B!!dj4rI+GM@"$cS*)5"0TSM3TbXUP!93)
-la41ah606ba%SAk(UTdLe(!TliAIRT4CTCiSHqNJ8X#Eb+kP5A3(@@bEDVD$+ElB
-*6#F9fdXb&54ADIpA#FE(l93a(Q8elAdA9MT@0,d1CZQ%B9),a52R(%@Nd"&*1I$
-*`("&L2JL!08eA!'J[8JJqM)`h3V+E)9'64CU0V!Aa08lE'T&XLBki2m0UcK,4a-
-ID&L9I%8!r"Gh9)d-Xk+Neh55!FN4#$VR1K%XMGAPE%q6$8dTFpD4BA#CE(&dE2X
-*Y4!S'P@JEIr4-5SD6#EcC)"AEmSJ6'bZ2HqQZMPm#Z*F!X!f$`T3['$9AUeA-cH
-Z2)HN(3e""'aC+1@&p395(K+hb8)0'EDAK&(HL#Q3!+PmI5$[+!QT#")pj4dYe5b
-X)JYX+C%FDqaeDr+mU(j,&5rEAj'[)E3%j5Tj'JB!KF*R3I"#U9B4%`I&e)LTEjQ
-hGM)P2TL+l5,KN!!JA'H@&UiNMKI9-C!!%rF[400`@8%,9)kDA!aj&d[U1B%KCjm
-+Y"B3I$10`SiGI8!pHXLJp1@NEAjHR)46ARaD`QP5K5UFFYeSD'T#mfd3N40*118
-&$F*TNiJ$5$J*Qm[E4K1MhAN%@0ANa@8"PGFb1M-[&if#JS$#S108-GXh0JL)"HE
-$Q$`,KC!!5VM'6lBK'bd,BJKaaTUR-P*%NJ`m`G"VT3!R5r8"*hR4D301mU)#i%6
-M0i*1URE3GQQa[Y'X)M8b,H")9Ei!(#N,MJJ*VP48UR%Y!l48ZG,F-pPLNYV4-9,
-iC`50D'635+aY*LP1TSTAi$bNNZ8rpb'B8&"KL4QjFM,k*3113-Q+Hrlf%e!ja"Y
-FP"M`h%$UC,H,5%S'pi,E15CpIJcLUC5,VEdSE%kC5-j(&6@4Ub"M@3EPm8A6G$Y
-%L-R&Fk"#SqkG(@j"jp4h[fmp,ec,YhlHYhh5k-cY@mKG%*`f1-FS'3)"#,C2!S2
-i2-!BPFMkJj6e3JLY'H5C#*S*J(pQ$@8[9kI[!U$(()98FUA10cAJf"`Fkd3$*&c
-CRS0'!-%PFYYQPR)(8A!(FI5Yr(IRjiR'jHkS@Rk#@-"qU0%U(3RIfUmA#5*MSrM
-fQhT+q9(Y3TF+&#-3$V+4(FTb6K+0mfp$i3GplX6$$pd*()R3NNJ0"NH'#`!%`F&
-[+kqaTJ%#IU#L`h2P++*N%PRS&4(+e@BrR9U(k#V(eZV+(j@"3i)S29e2&4C'YCN
-+Bq*5p!BN#32JHJrBB@P")P`cF#ST@k2%me'*Dd#1P2Jj$,#U*0r4e((XmpqT8N`
-B6DadV&fi1fDK$TZTqYm&!FH1",J,bG"B)T[U4NTZT5ffeJGj'a6l2F@kUMmA&,Z
-l,5U*!mTN#G`KS-Kh%YJ("#QT`K*CMq3LhY(XkF08j*`qb#VjbPH2Ae2pYLelpLV
-mV,6LSpb*b*fED(Ak-E!$,hY'S9CF-)-Tr`p@"@QKURTQEh@kYKdNI'mN*P405Te
-JQY28kDL`DCPC(XR!aLE53SQXNX8f(Y%#**pLdJR%BBCiTl#`k)$UF[eSm&C50)4
-*UBmH8k8@2$dU%#+XCiEJB34d1`0ZfI@!DhN-L$RSAj-)UF4R[alTHA3Z&mM*4#j
-Z'U"Xa`LJSJ4VSLHbY663&N@kdG5[%&$U`*E25af(+Tm4RG92)K!4JeYAEFGRRE"
-**"[bS&$XCFRA!%*kiCS450&I$2""aBG`GAi,T)aEm5#rrSSj8K+cLQr`K9"[GK@
-CbS0AS25"'YV+q3ckL&Q2Tr&Er$SH9rR#q"[mkL[SbNjcPr0E4cETF*!!@!`Q#Y8
-UQ"TLJ5*cbk#29&*m9b`ZXV5-qC4%35`J6lE-a%3JLdG*QF*hMlKLJk`TV[PL+Ym
-J+Nf@PL#JHVGDMRRB!&5$282A2Sd0A2drF3288!YRqL#0hjc'j!1pMG,8[03YL1i
-Y4cMI4Fh%dG3Y5+E%YMiA(qN5+JDrbVEiImaL`&'hk239V&2LVa)8V6FB&DSM3fG
-"P#e0N!#rKZS4L,eX[fp"PT`Z$0Ui$X@q(b#E#4'iRjT5Tmh82hM5ibJUrbNP4k@
-L""*G+DJ1Y`-X6hEp1M)Y'HD8S3J$D',1`"(YrEi%@kDf)%m[fjfcP)E+Nae9Le'
-PB#NPm3CNdD"&4Bpp#)BX@GjD-eZ8-IjDQ8&%9N8ACG9JU63#1(b"B@ip3Lbj3C!
-!Ac83SdJ9"ma(##MS$[)F*)NQFI!4h'DALFKGZj!!),D,6ED$lCi$`J1)NTN+6EA
-lj5ijS`NJb9m!9F8VLr'a$5$-LhV#*PX3pJC#@"i64b*6Xim$X1NZL'3TJiP6&IA
-0B*hSLKJLZBPp(YF6DSD&!b&[XqND#,PI5ak(KcGj%Kkfj#eiI*!!["9CaYT+Zf"
-)T#lc,Q&#0LP5(@8$!1jNA269(JXFF1[ZUAJ4$)HbCbq[Y1q'19(b9L*cbaf*lRH
-qY+cC%TYkkaf[%SBN'iLd8-L%"A5TLl8)"-[4e!e3Hq3K"Dd'3#m8MKa+Pem"L0d
-J,!U3!"KQD%e0hN*AlNlM@j-R#4GR(Dde!l#eYCR2`V4*mm8!hbTDf4+5'GrbbKH
-%l3S)'CEAa6VYqS"HA2"e[Ff2'Ljl6Gh1@pMm'c$rHPpfl[+8dJk-)2J9MQB4K1e
-kbKjZ1&#pB2Faj3hjF'2J*PFI6pRX'iDVdS@Vp"d&4hbLKkl2J+jE$efl(VULm4"
-%J%'Sk#-Y('Si5$dBD2Vdd4`1SM+9[ZaKS([6@YmX@6qqEh%2C!ZJF"M98I&FhBj
-EEcYfCY5fU$c&+#`%aS!B69B-qSS*jV!Yb&[`NiiIm3X`qpc+(JmJXQ'ZLf#%Db%
-kEl(T$56)mE-32pHr)%9VE[Ci$BqM("@lA,NBcABiCUq+Z!(Ff-8FG3q4S#L"@pl
-$,FGma03'GNqG[G*)`%+Mc5"HM5EA%[%UUhU(6+jblE$XYXeHaBjF$B!RQ,ICHhI
-MJDJ!-`HR(%dHKderKcRP&X'dcd9%P$I)58P%J%hm6i%a3F&`&e[q6G(XHcaj3lD
-%+QHB`BGh*U[k(%[15!S[)`%VX8fSpVab*KYB"a1Fbak%UY,C)%(d#'+(,A@3!*G
-rFHal`h`AHp5b"GeM&'!P'3X+-&9)HC(42-B#%`k*E)1MI*-ji`8Q-*D4kbKI6pl
-k&"0h6'``pSY9Mi4(G5Y$D9b#4$)kUjp3RE5FLLH[LLMQG-R(bkbGM$+aH&!3pb9
-F+PVqTTi5cha"p+YZMBc$*,M93iaFq""P#EJLA"d8",Gq450#&A08U"TN3,-Ab@#
-Q(L$"@6#A0-'daM,&b4lTZbp-ES'Kc'0NV'2,RMi1M3CYmkD[X-e,EY8(RTP!pRk
-F&+&[HT)Hfe#mhkF$8#kDcD8T+m#)e$#P*BjJX5K0lk5NkK(IiK5B#I!I&kD[3X8
-kakJ+f4mA`X62-I2Tj%Bb@8SF$NN9jip!j45@Y"%J@kBJ&BBQE[E("93p[mrGP&-
-i(U*RLCX963pF1S9+MeDBiR#c2jNkRIIU6d'Yh@KU1949Ri*LYN"`J)amS"VPF(F
-2Q3Q0[mH![9A&U*cNqBR-F+K+fN9N5IGjS9K3J!AjcPGpbZQ[S1bF1ja3f`*&'XS
-Z'1+5STJY-V)ARTiqYr[elYG*c4'TSrjaBEBRa,D8B"YJ4emcE'4dbM'3!&U',jd
-5'Y19fCkJ1L")!e!XN[UXfG2R!T!!4`0J+ZhhA!+)ihrIGjqL!@!+jf)"mXH2*Jm
-#IDYD12p2YJ3KYJ6L1b`"ZliQ8fm4")6bh5QdY%Gbh@edm24aZ'i[1hLSc-+QQ,c
-0G1c(1e'p6BJ*9d+a*XB1lF#KNSSd+9dS%BVFH@Z%KI#R#a[d(b3`%$m*&ei'"i3
-UlX3eZ(X08j&ecjVp2l[a-ibI-IaB1qEpcjX%IN0c'(&pBa)eTF3S4-KcNLRaV#%
-,K-iX'*eE)Shk"1!%9H$R,89X1@XN9++brRN[eS)jQ*9F85S"IU&FZ6P9p`j49T6
-$6(b8LF+#"RNY*XQ!(#lXJ4P4%4E$*83k99SBIjd80DR!Th4aG'iFfAeKqS(4l,P
-a4hjT`b"'F'"+MTQ+E$[-ATi"X"qJYF91Ti-!!haV'81M#UUb%"8%&(l`J#S#T'Z
-1Z0MKKD81,b3&#R6i-&H4mG!!!Rr&AkG2URjGf*+Zp*C``AdB1Y,(cp!Kh[RJBjL
-GK@-JI"DG*!9!1393$[--e-J#p2,EV5"'1N"E)NH*XU)rP+,Y,!!$L'em5`2Jj6S
-Rcp8$2"-c1m8jqqNTk9#8P$dP(3jM`3G!!hNT$'JGCHC28@V@0'q+Ni`1$C'6,eH
-@4-4N8M`lLd83)CSBXY&Ml+8@'YA6Nj+DBi)#Sp8hjF8&8$VY2VEfm%T$e!%J16H
-H-jHjIJ-&+*LR58&r`M0-LcDTjP4)JT,*k+G8m4DTRQamq`lqc)X"(SI5MB"kL23
-c2+#dVB8@Bc@Bi@mmajC#Ab%(QC6"A1D[&FaFdLqB`qUC5a,M(ZZP2bbNTAFJQ4K
-A-6NAa*a`FKq*&@bKTKN,6%j600MD8iUJci`+58b4`&#VX!*l@Q6(Rf*4bM!X6!j
-I`&!`Q15@3@*pb%f#MN4%X`l+b#VTMq)J-"LVHL`1PDmLEf49MrQBX9D0J04IbeY
-lp#Y'3iEPLi``Gl'ca5e4c6`JcKpD"VHK)dBB5+A!X%"K%"F8'JK$cKEMJ$b@G3N
-*92S(H#IE2"Y)PI$c+)V40Fi`R(Z(82@JJIR12c3LL*2rN8RLa-#'li!5+QelpJb
-6#Y6ab!+"rG%0p'FI4#P`$fq%#[&#@PcE,5%3TKBG5F$FSXK4Q-L9(A$m4ZCkAMQ
-)-mA,!eb,32a!F-#pBD-$S[1BiaPdAb2(E5lRBh*!*b,8RqSrZ'8!JDXL*IZqULU
-pd(K*fD$1"!T,ZLH)PHG'J-*k#*B5S8PUd3Hh##PM%K"DG,KE5I,%hH4d0VaiNc1
-`d0DTb2))%'edR!8ElJCV9EUT%)QCR&@C#D12rX'FIdK2CiUhk%r!'25mAGiJ#-"
-3HbPM(3D8K8&XT`TDPH5'#-"-Y4#XQH(i4R@H4S2P,1kqL3VK!`#&5*&!PK*@M"9
-##B%#d9L(RhVR)+P8`1G@LYM%B8DkV529R-JXYT9rRa&*$NER$hAd06Pf4#j'jrr
-Ge)%f4dfNQaRI$E)"Fp(iDfTMR6#P([0cG(fZGSA"3[cFj,8pF!DJp%Y+H10!!T8
-0eA-bXI%*9f2!X$!!IaM!0HhJp[+b!C@%(bfM-qd[r`T$JTHeJm@MHN[6&@qM*!D
-'*Pl@4*'Eb%&4&Mi%IQ*UkD'@9iJH0Sbb64V)KB%*YDT%P3'YCBV(15dC*D&"3#5
-&GmrMJp3T33PN(K9)B4k4*l8,aS-l5,JcJP3$`0@2U9002Zk@i2S&iUZkT%mNpJH
-DS2T)4d0Z$d2Pd4`#-Z`JdblfKkdBR!8SGe#65-l",$cq`AQ3!"U3!,SPiFmSd3i
-HY4ZDaJ8NYjI6+`5prFNH`INSH$S$jFF0LmIj(+EHMK)3SR2K'h6*Ap*rp#LppSI
-Cj0Z--2Ym+@5b@15Yl4mFa6qKfa8fG,F+Ll-pU#,3*c5R*5*KLbJ2#k"L@kTfm09
-['`Cf#BZB[eFG'"8@0lq)h*iKSk0+AL&+DLPSjfR&iUrq+B1T0'5UGr-A(PH2Q+m
-1R5bJN[qI`T,NhpIkLDbPVp$GU#"+81I,#pM([,9cY8E&mrQ#5Ypq3@9@L@VJA+'
-9(@3c&'ca3E@5fb41536T$iqJ2c)#6V-'2k51IV2cAR)#bSr#9D5%8B)5`m90!qk
-qb!j5H-F0LV,N"!JbU8VpE`#L8K)lrFB,MqX('%EF)H@X,K*!-'Cl,8'N6DqFj%l
-REcR@AB`#le$58-dTr#%SdX+iXF)+Q,H5)A1$FkLP'$PGd`Ie!l@XfS5KC+DN8jp
-B`!b+2D@8K3mCL8`q!d1C*0VDU$!X+$rNpFee,)MJ$j-K%J()HQYYP&`2(q91iFp
-f3@A5Daf&p'I$d"m03mD++,M6(km$)"6q`)4m6$8)DNhC40j62C9[%$%JNF&FVC!
-!U@Z+8D5A9m,%GT!!"#VFlYA+4VaUe0IEl&9%eF9TU1+YZaNJ#HUbQDJM%V#ecHT
-,$`clDI%UHeA&HJZCDN)$-l-GjQ,*GF``qqFQFTihBCJC5##ijbfMK%hNT#$[,52
-!QY+,TAU0AUQlSqTIlX0N%H"ETX*h(9aN&AlfJXbiM#V8adXKL4ZicE+&Mq(SX!d
-J6IBU&iVh*XL%4c!9fe[p(f'B#F,!Kj[@U3e@XX9BkA6d%iMQGb4Nk9KRJ&J$BD'
-S!AjHP)8fM#THe)pJ5L*Br3Y@S&q+3[E5K@r3ScpFrYqXd,(%f,Lm'`9aG8,r(`!
-!(*C"4%05!`"%f!p9$AFd!4!KrP!'Ak&LaFEV'$2-%(dbl$U#P*M&)mBS)(1e-bf
-TC1%m6b[3)NkJUFL)f59e-1H-fH'f)pkbfhRHSZLQaja([-EE1@1FmaE$c-ijXaM
-L-82F00k'$!(EIrqrplhAep)#lZjhprX,'l4&j9##)(J#)$066STNTa2ra1$(P%J
-CY`J(MNY"pJRJCkZA#NHIBkZhfRGH6"C*#*[b`iR!+pHRR,48!Me2Y'kq-0ip*Ul
-SPeU3!%bd6E6D,8p$#)CSJBFG%pSlpp[XR@d)Xr@fMCJmUPqkBX#fTR1rF`dEAS[
-#k3Q+XX5+-+U+PCNq5[r`Pk[d5`H4&V@)mA9@5KVeiG)$k+$%j3&-UV&ZN!2Z,#f
-Vlh,VmjT,DFKbc,Vjc[aEUje1CA*c+BkIVDjB@RV8NeQ&Kb&S0'jHe`KbRDC2%PQ
-BIX+X9phjBD4h86RjfNrb`jppG9eM-*e2Zb&0-NL6[&El`"JQ(F+N!9bq@Yrr"Pf
-@B)`P`-CkaYLd%BQapCBU$@-*QE'mGBhM$8L%3jQ@&HXDVIC[VH9!0'EEL-&k(,U
-6UlSHMiYBGPP@`lP$&eh%3iH8-#UAYM9Bj&MYBqhdJFFDUrd,GKb%d0Df&J0hi0A
-CH,@-[hS((JZYpXqik)11SD[9Vr5H!!R)&9lV9'A#%h8d'4hp'"lL`cKiGP@5Rff
-$*Jfc"9dabKCdrC0X!EC@9,-&f(e"8J&Y4RUCYYN0GG3(X`!ZcEC2GUi@RU#9,ck
-LBXMX0LQSEmNB2QLi2j`jG![UX'b6QAGETji*Mk26YhPTUDZm&[m59FNI"mZ5DG0
-Y+))JT9J6LieTU"iT%m5bLrb5aCT,X[V$#R0F$,eX!I%H@FLB*Y&Ic6S!(Tp,ZVA
-Arb%f-FU!%RKKjSqfah5[*'A%A#NJE$0RENp*Al!JCKS3SZG)6[+PilRTDVU@"+V
-E8bkPa'D+SJrJC2)mZG#'@3)8EM4HTF8'Hm`Gbpm3PE%KPl2f$9'@k4hqTZVc0BL
-bS""YDNFANYMQBr9T0@FcbXa9mar01)jYfE#Y)(h!Z6*Chir28MJI"ZJ$MrhSTU"
-X2ajAX8KlV94Xd1GG)&'m#Z!a#6K0[FJ@1+)XKbhSJP03dc5!9EX'p+j!@%FYj@S
-(#V*+rd1pS1-Zr!46(@$l@Q)RAMk0S56k`1-m&MTFraM!LpJj(h)pTME[jq"P9&`
-`eMhK25PUGN,9AFV*M+Qb%YAXM)`p1PdXA5MDcGk6FM-lFC02B`SrRTfCQh%cTY0
-Pkb)9J6+@G5RpjUAMal-c)TD58NL1ENSl%&##qH0QiA,@!,A&SY@q39+lFe-mYEp
-5+VE)DUq-VhE4'%rY`iVDKcLU+HH)SP*5Z2QL@KPCiDpS&9iC8H'[)[ASrV0A1$N
-&(-b4NcNK@CKp$!LUMZ*ISLcCEbc2p(,Nd3j&pC`*'`%mf@kq,9GqQ!4(f3Khc9b
-c9%U(Q3q)+[9DTX25K46"0Dkf")8@T!Uq2%9(R3PV$aZqDEiT(8CZM&jb9%bGQ5X
-#)J#"$kMl-XYm8lNE5N4Gf)8,!lK`k1Kc#3HBhAcK8e`GS+2l#c%GIC(DEcT8RlI
-Z0RhHXVRiH-5kH9NeL+SE,miPjM&Y#J+"0TT)l[V1khpXk6hj0SiA!Iaci+JMXM)
-NeSCSf[$*`NaS0P)C*A$Y*'VMkmEAQF50-hU4rJdcjTf05+3V#!h6UI#kVUQ$hkj
-$9I0FG$'UJqCqC6#4L%)TSqUJSGr5EKN4PAK845%83QNP6-",m'KN#'@3!!PiB`K
-#+C%%21L@N!#S,%$(%&cHFBD,6!p2ZKFYSUa!E+a!PN8ZN!"5&FUB)`N$*C@rC1L
-m[N32m`Ye*G*q$L'-l-0+(`0#q-EA#!-H`hJmMmFT2%E`k)BT3"J)*#NJF%N5MVK
-,XqMV$`GG8@MSZ)5'LJFC'RS)h3hdJFFF,$UJ,Jr3N!#9"N,8491Y*M48SY1L)3@
-Ch"NdL@ZfJLVbBRRCZTqUZ6PUTfjl,#Fh`e3Vc0BY@""K9-`XNMKU"(CF8Ki!D!3
-XH2$4c6lZBKppp$'H5FUfY*!!D+-i$KF@Ea6-40Rp"5&0%Ujp0Ckm+YGSM5Fl#U(
-lhj*81D8dJLSR+kVdec096Lj)PF@'D)313b9$CT*Vhh*qrA,PqYhXqYfirJbr(Nk
-(+8r5"jQTX1[*A'8*AAqNe1pMebp"F'Zk[P9c2BiSAF-@ZkAVDb"ZfA$G4D[8Q0S
-I4XHNAIjIEiEJE9'2S9Scd5)*h!LUC42CSYY`E&iD"&#(JlFbaVG#!+pbaUpDlBd
-8S&l&BcTMI$SHDiPa6'XGFc2@eeUfD9LIVQ%GKdcCc4CEQ3KZj#)BN!#U6lNX#XZ
-*[DaQ!@CI9,IRlSU*)J4-HLf@P,Xp*6FR8rYZ`Dp@614cFh*64!@%h#B(J15+"4S
-mVDQZH&%SdkM+-Vbk2`b$QadBf)'3!*8)qK`ca)F+#5&!PaKRJAk2GHU)J1MFJ!Q
-)F0hURIH$$Fi5)a!+)Fq%3CrNG**KKSd8@dFI"#jMP5`8TZ(cQ(TPr$QkbQTI1CJ
-ITS$6rP`@K02'3-0'S&&#K@b$B$Hed!FH$$4X!!hED5DFT8S4fdjVKG1Q!3dkSR%
-a@mLJS9crlQ+MJ"V-bY*FCaDMBdi-"4HV,rQH8`q)lJr5h1*SUM%eX6micUDY-3Y
-86J@-)B4f'Ve'(EhkPfVlR(hXY5m-1SAbi[!T)((PfP&qVA"+&3G5pm0UeCQ`&)i
-+IePji&M90[HqbQ[H,brq0mF(l5m0[A$i-k02A2PmcaGQce*RpVip[0,mVZ'GVXq
-1V"LcG(pT`ZIZqY21[qhleS,[V[lDY&X$RH0l"erCmCVqL2(93pqhK[Yri$[DmD2
-R[j,rekIqmXaIhEJC[*59N4j,C*l)2I$LmEbFE0F2GGY6pL5rR266A6plmQpqmQ2
-2jFG5daipqrM*Cbjqmp`hR[l2kUP22IIaIp9rGHlrII6e6rrrNrqGp$m6rq@Ylka
-Gel"Uc4Y[EYliMlA[Vhp[d6r9I([q[pZrYr`I2[cATDp[qF2#2bkjEm2pQrljiGp
-0rQhGhA0qHHpr6lpRhZhRIhr(VklqTZ8A@rqZpB'$[fllqHP(EVZqriZlrrkK"jX
-[00hC1+@dZ'5CcDR!5RBbiV`p1@Vk(Kd"8%JPU#M4ejSJN!!EcpJP9QFZjU%XS52
-ld-,qF*,JMM["NCEpR6**H*h09[ZG3`LY4P"9)L32CkGiq%SjA-@I2hTf9MR-L44
-J3&AB"c)+ip*6K`lJ*+[amTP``X[6dK$lV[lqm"Jke@fmffHmR(#XH!d"$+lJ%jV
-l`dJ#(DZ"#9Z52hM#PqB+c2IN"C2%+#i+@LYqe6X(qm0GG08ac9@[D+kkL14ii'L
-DdC0BNb5-Ca0))$+NKmdfk@A8E6F-8BJKQce"NFA98X"&kY2R&0G"IBXY+qil6p8
-$$,4Li#)3bj!!&&j406Hc(80AD$SP6BDAd,%VAq@!0`h$Ed(NPp!#R3FaY8IcXS1
-K*E`iqbc3dUZ#3'mFVdh#DhC-GiFLT&&4H2!+$3C#"hAlkLkMBL8F!9eRl@9+A#F
-18`(SYT1jB#L4,TkXS+,Lb4)U+YjNY6rd2(hJX89"4F9Em*M,L(5MJSU+jfU*0*r
-+8"%Gm@!D@db@89'jT9*18$LX8erEApckfL-"Yq&9%,jmc4C'V912HVkbG&#m-#"
-@Fc0-diY)[jJ&9G9#K['+JDS,!FdJ&)&VKd-20U+UQINa!3!k3!+,DkcfjREk)2%
-a('*-dh#2,*5iP%4!N`"+iZ'64Z9Q`39Nmi@*04jF1jC*UPh%9,X)*(SV9ffYeEk
-lK$l`D'#UT8Fe#b42-p9@KkLf3D0D(2&3&eXXdL"j#&M[(0C"iV1),8J!Pl)&",L
-G%5J5lJqb+0dSKHXjf5RU*CN%Ua)+LU8M#k1,AFSV#K(YpHe9-dl%-PlF[LG2cF[
-GRRFT*H2%GeA3H"I)I2UPP%YUlRD9"3Y&)M98h1$ZU0d)dimUQ,@iJi&H-LccDbY
-b$9kPiY"`,8l&B3$)F6NU`&+!kQ!9I([P[ChAlaXC2VPbVh#J@Z#Q3#d4RB"SNJ,
-@,aVPJ0AZhF3#9NVck3%-$ReH-9@LlSJ+@1hHKDD!GAG5G-#+F(#H@Lk(JJK4H09
-$%l++&LPNhEmT3XLkA!N,4$-,r*BA&,*qX9%EX[+%*3)rE(eSj3%NZEfmdXDVqEY
-LZQ`e@iF3-2055Qjb6-hDNdM%G$bDS`KYR+pMk8Gb8+a(Z@4!9R)J)hXb8UJUFL5
-X+GU#5VP3m"IKl!8,)Sa@3(MNbSj"+@J!#!Q(5kR5Z'fX5P-CVm)13dTZ+JBbj0K
-k%Z(K8)dRUldAbN)3j&A,*iiTLM1JLbC9TeN%ZYakPjk#S!"$$!j#$*6H)U(-$0`
-$KF1iDe5E'+"V%&31*GUjX93D,FLai()'KijL34H#)(SG$X@mG2LQbGLc4j8%'k6
-1G-L!jT!!G"$,)AYUZPNYVhl83XN3Vpk9(m@N3G6M&@+5*f6i&R9UlH9BB1*BF$%
--h5TlplA21qT*P2CfBK2HVf,k[&5kc(D['XK(-"IS#`(-+```RiJ$Q#IL!DCES-#
-f9"3`(eP[!Xap%k)!XcdHB1iE-3(QE5h2!M#h5S$jb)3#!,1a)S"j@c!5B#V#"58
--c6KJKMQqM3#CIa'JU6hG"*[Di4N&cLh4`&PPVLK`![JF($66-JeUS$V93Q,Y$K9
-YU0)K)6NPh!Z-bJNmN!!9J-Y'5VQKL8(!40iM!LK22$N42XJJ#H*%)"U*14*U!fF
-Z3q8[kPPb1B3p(R$hN31'6aU'X(Ae%[MP9!3%YCX"X"NBd,dE"qKF,+()'556[q&
-(Nd6`a$K-8SeTQ4eU!0CcL+L4S'J-6Z1T2V[r#Uqq9C+EGqXh[jFDV&)qb55'T`V
-YSS92#Aa2-@aYh1UK!eaqQ+Bd*ZaUi)'6+p(P$[M5['PdI&ie$lf`ACLc'[YPe#%
-PDQGLki'!TJ$+DGKX#!68mTD6-1Ve(RPpZ2bpamSH)f6i`-AKEN2JrFI-C62h"J*
-+i`$f)TVY'&L#Q4a"`b1"!,BjV"l+2qPiiXM5hV,h,jGGjSFmSjDeR1cY(KA[HBE
-&dE4%bc[MJB"KPN&'Y'LSJk1@9KXpcb-N09d5V`1&X*-9aTrL&-CFNh"*U'qI6cA
-U6e$9iX+mcZXE3,6S(pc#`d"$3q0GBP3edK%Q!L!$dSl#,k!51*V*4GD,"PTSlU%
-FELmrSB$C2T@"Q6GL8XpQ+8H)kdFK1a8`qI)N%$+r4-K!@#V*b&SK59V&'`%8Q6h
-ijmJmE*%3Zh,%$AUC'R&SK(D3!#PUEaa&E5LX+(HAV+K@E0R10fk[N!#L$K9qJ5Y
-U-Dmd-1$AULZ`Ae(AYSILUd[CZ,`TVMCjdfFeb)DFA9I*JFm@pE4K56QDL9UPlG!
-SbmH8pB-ibYUY89DP)NEhV`BTjFi,eCJI$R9)-+A-9UBT'r8E)lPXY!#U3C6H%%6
-*')qDj0"1![0"YSQEN6G42"Ue#46ar8pAD"025jXSAe$3*QB9C[,CE#5(E53[cND
-kSae%ppX,GK"4J`PbLZ)9EaF2k-MPKDDZjQ34l,&F-c&V3%!jRbUaP5qNp3PIDXf
-MX4C$1D9`[D&"f*1-bCr&BG*9#,J3a(4Hh`483UJj!J$09VUjSK('&+4S6$JGc`%
-A28$#EUT)Da#XM&5*F$QkpAP['UbEQpaQLA3[8VE99&EMk3qRAq%NPMV1+4dA5SE
-4J"!"j%lQiQV5Z,KfSl,G"4GA@d3A9j[N-PGFRbC(9XDPl5PaNR"EUI%9U5TC))K
-XiUBUT@$[#[Y!!TDMce(9Cc#)Zq!iKGQB8rJm&+U,[F)[Kk@EQiE1K)0H'P45pAF
-'c6lM'hLTk[%AB4lNGIQTNGPMRP3X$ElZ%@4LPdiB%6hkelFJ`@EGl*c2!mI4%)'
-ib!6LQ6J#84dYY*Ym43RYU#bd4'6aQJSLf`14(CSeS8pSaGDAHLCFNaCV8jV#-5%
-a)EHjM,Q[aQ&1)CM(HPRSNL*d)RK&,AX!b(c6J6QeEZ&M)8(PPi4r9+ar0,DeDjE
-QJVAXJZr%Z@!5QlL)6A`[cX6D`J5Tp',RpGr@!5`3PZ("Ubha!BK2jBLUG&G"!!3
-QYM"QASr$6&d)-`ikY'Nf4eiJA`%!3ZQLcZYeLCAkJ)-qqNrLdmf*Sb-#Fhf&*bZ
-%N!!IpC3#p%eU8B63K'!$QS6Z,*QN0BeSJcZcE(4",l(,GKP61D#dXj!!QEe)JfC
-YSGBa"IdfXS*+(+B0BP16#+f"V!-m,Qb8e%39MbBc$dI2D&864@$Z8JiJ!'@[fEG
-YN!#A!11V(a@P'18`'2-Gi+mM%,JPX%!Jd(bJHjEFXB4e10$KkTiP&C5Y6A*qSj1
-fF"A05!4E)*!!J)-+$6d4NSQ*Bd!CD0i,9`ZUP-dlU$Pf4cJcbZ%NRT3F6RHiC)F
-6R)2-iG5Q9+&&XP+&TZY$(%lf+DG0$UGII4,YF,SeCY[00P6&+cD%q#SP*hI'T4c
-+0'DlBMPU)[FiVlcZ`!G-B$!f)p98+'E1M#S'5NQ(8[M#X[S@rT4rk,K"bLUN+TZ
-NUYr[-+QUF3P6eAQQUK+QU[24UQTFDP,9(5R4UL,M6PCF@kALiLb`G)10dJfE1!Y
-)&TaI5"pi))hE1%JIH-aK,#aK,)3B)2#TdpJ#4rcq)EEBV5QXV8TK(6Y&KE@X)d*
-KCD"QRa+,+LjPG%B+,(l4crKK),LR*F-QC31"8iUV8A`UJ9-JLF!*LMh82@ZRB)0
-k-RV-jb!4NP6+NC*+Ypm`*C@DVV+NdQQQCKG,+Tf16LSec6-PPFkILdiU-F,JP3)
-+5E((XlH6'LJr(U84kTT"K4b8&),Q$`j8alZ%YaSAQ`8eLch1Ql%Bm8RQ#*++bTr
-R#)FF,,a5dZ`M9C'+-RAH[FlEZCT+QCT+S5BG9e16e6k2c)qEZ+'GrF*mCT*hN!#
-T+F(8G$$+%0*qB6eEi)ME%kD!4e%6'G[I$CC9j8FDZ+SJ'E!V)"-iNhCSF%D9)b%
-+AN%9BJf[SJSa89'@T*!!XKe4#XQA3$*%$5Q5'ZkCB&*$mrU+UU(j6C-DjJAMUB'
-RVV`5+,kXb`8)+TT3e-#(CN!02%JpMDSZ*l@dAEq"3+C3HP8fH*VHB3+&"qr9JJ,
--(l0N8+J-"B8(*jY!iCl(SN'"rA3"Ujj,KL1KdXp-6QDJJ(P!F*8&",q+%a"dbj@
-2M8V!85J)@K`jh*9HK(PGYC6U85jG"H)[fNPSP$!&2i#MH3%rM9%Q$A563hNT[pk
-M#@+B)@*$L#%L"T!!2#iCT95CFSPc4lrFZFT0RA$Hjke#LX)jSZND99j$Y5&[e6!
-k(CT1!qXX`q)Z*1kEqddU@Xe80+!09[K"5Aj+DC4*`Dl3G9krHja#+E`f&+mb6P1
-8)&FN&acNVPUJ+'$9Yq)8@Rp)N!!l5XdTT'#hkM#ZDQ$*JG'iJHeXC4T,,MF9`C!
-!RM(d@Kb'JPUM9'CNj#B$3RaFidD`GUG9-eL'5K!&L6hSf%PZHYB4B"epk*LYkA#
-cMJjd9'Nk(+c$KD,EciY4k9"CacPd60Gd$,#1"R4mU"3Plr#`$M4AX+eeqI(c3bd
-J6+e)Ql9a&8l5'Xl+5N5lDMRFT9FRb8Zki#Pj5@bNb8YL0PPHBNZf%r)5'lHGNTG
-3Mqd3-aZffmCC-0dG1CJQP-041CK1")Kp1Adh5ZNl,b8P+l1%[k[lZf99eQ)dp&$
-4mLjIC)NR4EfS&3q,0Rp!((BjDIY"iFmKNe%rIL#-(bRm0hJUV*Q-YI`qhPNQGil
-ccRQmFkHL3(b1J(cdQ*MSm&!(Rp51VMi0Hh)Ah%-(4)HTUpr8G49G,P1AcP&h@Hl
-FJXjcQNj9dlN@R3fDcJ&0jd9d,M4e9T'5T#ZM#8#k4!$U1L+BDA*MY&FS&&$F@p%
-%)-4-mqj#"#!8m@rrD9j@p[%iGRrIlpMarHcdf2%&#c*M+D*#ML9,Z@3J,&3H$RV
-K)'SP)9(,m@0aAD,&2#X8U4XE41X0,9*R$K`Z(Uh*rKISKrEDi-TTi3i-Ik)+lTI
-@S)-[ba*ZYEc1!h,G1Tfl3jGPQDELqJh+Y-bP"'"`'E@'1Rq*!CdJ&Y!!aeRE)&S
-5C6Ur`kp"5-mcK25M1!M**4dd)m3-"kDcJc2L(1c4%%[(6*jqMB$X#lT%FU#h(rA
-Sr,pBYE*65BmN#d0lF%MM"N0kS#je1VR9&+1Y9R,pKLT+`lL1-Il$1)`hD!h&JIS
-INT,(q$G%2p"'lN!b!)GaLIH"NiAF[&T!f#8"`Zm1&@$iR9B4`qr*Zb)CIXZ)#dT
-3NYYac-"2`IFEeUA(G!`J3JGQc2KlYU)@jR6e8"(Q&j!!m+HIQ6TN`#N1r1bN&iC
-9E[ci9`$'1'd)e2e(,k2)QNf03bK"TliM[(@VK12Y!IVC2e+cLXCSRE[G!Pf1ZkY
-T3ZdU-C4K'&q&P!ikHpr"NHd`-2A!e-,$$rJkIefji+"C%fMSZ)XT6fNXJH-"0S(
-M-YK)bFj9(LBS2iiM+20TBZIe1G6-fpel8J+K+'80dC3LNU"jUjjQPhdMcQ9e)8i
-0HrQ(1$D,JUMm1%P#kQE1M$9&"#bIXXZr(ZIbPP#(5P-Y*lK),c@YLC1Nl*,*-Nd
-EN4Vc0%dSd'(Bb#T0P&"lLaaJ8UUG$FjP!)$8Hp-RTN4ldbIbCQ5RQImTGQL,NY"
-A'LXfHI6+6dV5BKGEd"%XUH*XSH0i`j3qaAL6Gq1R65d1%jKaNpG@eTPP-XRJVe+
-L[T&Gm4CEd-3cKi@@I@-j0B9)I+6G"P[3Ua1dL8VD"+Y`1GL%jc8EkGGXa+MCb,P
-#'aNXB#260"Xj&l@4Tc3Ek3[Cb,N)'cQRf8K)`YA*%j!!8V+I6&F)hI'#Z#fU)'i
-MKG!KI!STXNdaEj'RY$'&M`3lT'*5qpqIJkVS!ViaLH%XYQMQ4jf9MAK0#QpN4`d
-(+pP,*r)TTECE+MUMJ2[R)j1*6DM`+@jLXaDJeM#!@K8(S(Bca,'K5-5aS8M%-Cp
-GpZh)PbecK#+16EE1klp-TfBl)+3hiMT$Zk4T32%h6)ei(KEac@U)D%Srf%B0cFL
-)&UqBc@)qQVA`"LaVTH1-DINd8,r,rr20R*!!(Y13!0%EY#4LASLBZL4LZN383%a
-h9B5BhMF@LCML4e30DVRN")hAV'3(h(FchV4%qHQif9a")l`K(KT0P)1`(4"hMC2
-c+G@EbSeE6U2V-$@530)C65D8+6iqTHCXl##@IH29bIjJVjQU"Hb)h[)(RZRph'J
-*h&JP02MZCFf4dh&N0aej"3H5!EG"1EC2lABVRcGQTS+d"T4KqE+(34`GbJ3$TZi
-51-J+"C(*["%Qmlf+J8pMU@*F$EG,Y3`DpXB5#%SlADXHmcd+Jk54PfS4)dRAm#2
-j04YKK2mEEj)'J*B`SIjM(+(Z$KAU$4$AHiFU)Y6+Y&#K[RpN4SAkIPr&K,V1SaA
-U1Nr"3[f(NIqS8#mmpHb&qZMal*HIM9!A`kNq5aEUX6%+c[pF"AZ86HfMUA[h&jH
-mM50(6C0D-'P#Y2"hBU)&!NK0#B$%Yj!!80+J`Jk*'PMDC0l'*L`hJ!6``XHLLej
-6&P[-!F1aQXFTMC9S-@cE4FEl-'HlJ+fLU-FeS%,032L250qCddq0Q[VB%69M3MV
-B)!K3`1V)"imc0SE!KTdCfY2"Dp4Me16*fkJ"PRXCX2`b-V$BNK"fcaUX'YL`SkI
-ci8ll`*+"M`IU"l)'dJGmRHi"Dqh(!cX'UJIG!e-(MJcSar9[$TcT(+VjX,1KT[0
-!CleJI`!!-E4"4%05!`"BM!p9#ffA)*&XUrmN,b%+lqThDDD1UlSmah%89e%EGkZ
-kCRY5+!Ae3KGbDFh@hUlmA0U%36SZ8h0GPZeb3Iemk3P1@b0@Tf'eAJkc9QA,GDf
-6'DlEeH3XV'&C6P0KK,"Fqc"#8+6+9pXpA`qAj[[lrGp,8m#HZpfGfChp!"9hAL3
-c)cm4%K%#%5)'pbTP+T(!Mjah##$&j!CX#SbS-9[4F*)&9,k*fb#@SSiqd,fj3-k
-hBS9qhjqAb9E1hJC(Lb%U$4PU1D6Pjm%HZA)XNUp+*(ld5aBmD-b9Dl'D*kh36(R
-!iIY%Sl4#D,j'&!-Cd3fN8KL)(`D52i''G*k2AQ%9jbYU3fJ3PXcdb"*FNCS6Pm[
-SfrBRA@r0,!3@!,Dr%%MLTe6E8*1%X1L,KD6$0`F6lD[l"m"R%Ei38mC"#Tk%#CG
--TQ$#*Nch@CJ0@Y9iQ$0Ekrl"'H9NDCNPBd''&PG1HkPQALE&5f3MqF5$CK*)Sm-
-hG0T4$[dSZ3%!mBJi$Je4H84UTKAqIAp4ZElEiHSe'2B-,4h4eKmA!p6IpfH9!Ih
-k!(@alE4M@X8a2Jj'$(L0[(TrMf`p@1fVd9BXeGNMDp#BVJ')(#ESH!40V"&IeLT
-l`ZN+@+NkGHU8M!9Hm0CS`j6m-HHT5mi&ZHTBGF*`"kc`c#!!JJK23b214p2$a*!
-!"kbE'DK9kQ"M9S#0c&KNBDBDNq1&9SBMkYpNNhr2i@fc3KV"P)BpIA**C9C4#c`
-C6ENiQR&fpqlmb3fpNb%1Ak!*[TQVI-$aLYXk#8%ij-jTV9DUUac!m8PPb(&P5!a
-6Jc[Z,)GQ"Uf`b`&SprDaX(EML3Fe0DmqG@FbT8aB&4-1VlG5!YSR)qeN)q@QC,i
-S9CKLh&Nq9ZilcQD,)+,D'&hr8eZd`c(YXiV5l,T+59@8mDkVq9apN4X8KHLNa0,
-),&0L1AR5!c"K-SLMZHPKCq"N$NElfcXNlQjCZ5U#45Zc-V*hff,Bf*C)q&)@*6M
-JaDX)Cl@#+(h"ZVQ@a91R[bMY0klQ6rP2hR"BT`KFBiK,[H%!I$*b4*DUJ*AXI2L
-l$XdipBA%5+$JN9""[Ffpdm-fGE5AfBA`MHT2)SNLPUKUIQc#F*qA%4K4d0A,%mf
-#4$SSC[JX-l#@q3`GPTbHB)KBTLHC5#,H)TCf@SidS3k`B*b-BQPQPLYL15Rej,V
-AV56A3"%*p5i,89E'Jm4k-H5%`RSTAkCNmM',I2(Pm0UI&T)3qV+qM"2L$BI@40Q
-)qE6P-'q`J0!($AK6$,#C[pq1F!LaV+Q-Yc*kqj!!!jXHBJE$p(UYA0(dq[NBJXI
-20"4P4%#$8kU8A9GjBi%bRdM1"l4!YLJYEmSbZUUCi9TBJ)DFp*-iI"kCj!5I0&'
-a@B"'H)Q!%PMh2N`(N!!5!*BVpb1$rM3M(3!iHAULAq)XCC(N1kjQ%RcJ,jA-U!j
-pMCc-5U,bLf@4U&ip+dFbQEBYRpcF!l2(F92R28'TeLD#2cJ946+mU$#j$pNI`KA
-)IMkRBA)qpd@cIM)Yia6Fq*ZG5YBVd`dZ!bFD$2HmbX)#L3&Q-J3pR+806fbF$h$
-`&#,i4N0`pF'ejG3)BU,SEKD""k8"0'#G3LK)j5S6U2DU!36Fa!@Bq)CIC5,+IDS
-Kf46L"![FpXE249pr`CXp&m02eEN3IMcDqD0)Q[G[6SC*Y)"KLDpMfr'Xe'E2IP5
-aS$aDGrDM[S2+)q[X4ppi6AN8TUdpiGTS92-@IC%10+Mq95EmPPT,K,&!*3('N!"
-BR*0EQ%5K+%Y@R@29Lb9jGHdGD`U!Ph0$IrjZmE(%`0aMLEl!),*r+dhJr!"XJc'
-r@PB**YEIC2Db5#IJZ%JJmJ+,9ZqieRL8fDC1"NNp-8-0C285EcX[Y3m[p2KHPI)
-iGk((hrL"mYKreQ0!X9Fq9"k'LHaiJJQ-p-bE)Z$RbR[bbp)Fl*(aLBHJ4*6,L3N
-X8*)k@5+8d'5)9+!&!J6N6!JbJJm)Be&JSYP`RQ+ihKZ4jC!!E(L)"65r&4,"[%b
-`N9`R+,6PbAZXae!0lJ#b3[@`TZCA*b16FDMZaq63QSj2D')6`R'#$(X[P+J*`ii
-,!m4dY6''DPf%i6CECDK1H`Z253B$R-K+K,1%"MA!,'Q(bDQid-c+3$9J`KKA,-Z
-K)Ea#bh,mQ0qk#e'K2SjJrG6I4Ha+8c#1TU!85Xp1K*QZK%pGLHhRK[kT+p(hX"M
-ihNi%Z@!@d42IfqQ,dm9fZRM)+VG*22#KXR8#B"ffGXqZSX%GRjE4JK"f)Z`N+T[
-GA+d@)3X1#,P@Il,cQ$#jriP,r1*4A4"Q99+RNU'aLDdMFeXPdlX%)r4TK`9aG*m
-5LRL8#Hfqrh-[aFBDBf[hLbD*CAi1VidHbE(,[ZP``aF5&GSUATMmiPLiS5pa6k[
-8Nf)TVrD`fBM,ke)lfX1j3l,"#B+e)TB,*F+jERaUZJ)'@62+F$XRXF-k1FV0$dj
-S"bPH)TbL3r,rmrqLrirrBQIp&e,q8r&I%2rT&a8F##Nj3YFXaa8iBlf!2lT"%e'
-5)8KKd#SEmTpZ93bjmdqhAY#3!2GaU*F0qAmckf4dFrf3!"+d'c&`q5'j@-@,lbH
-QQrjd+`BFUFFe$9'MA-TZZ@MaiZm5drD`)j()bVV88qeGj@&-F(09'*QGBU14$N"
-HkT'SjZ(2L+62Q$CK#$2Kca!)&B$SbUHUjBdH95UI3FeZp2`$,#da-UdH#@ZT)c%
-1'b6Z*8DUJL"Q`Y6![@-YL'SS$l(C2HeNCa+[QbVA1UTF(UTF2UTFT95jT,`1Y6F
-'3[qIHCZ3!($rE@DhYCZDib1G&#VpAre3#6qcm-LCTJ0$aC!!6(AaLb&2FbMqUeF
-E)Tb3!0E5Z@Gi!$%A)I42`M45XEG3CcR8'Z(U6LU1%fD&NX5Nj%PU0I)YY0#NYX+
-,+#X!,')brjddT`81bjVa([N`Zh6%lSBPJa*fU!m1@I*(26mi&C@iPLp2dH8a,HC
-+LNFd*9Vhm)lp[P5FS*SN([Y*L*Zh%9$00*Si$%c+)S)'RR(1q1i,"rlq8kFid%Y
-C1'[chbj0*'4-3c$bfcNX`VBS,aSHNl&+*1,""DpI#G%$N!$i-TUk#2$M)4-mcph
-QX2@AFc)-iXrdF91`lciXq91S%@9$(c(4F8+LQ4P+I-3+X-""SZmpcP$bAL4-h%S
-5'0)-adiSSB3cIiBG,,`'KqVBf4-[Gq,klrPNV!*Z,Gq$@V0Bc8'e*D'S8RbG*Q-
-lS2,f6BDHZJ1iaQRGI9mK'2jY"iGbjL3F2QmL*2"#%PG`BJ!)hG0%41p80#,MFiQ
-R19'lEMG'5C3Ii#BAV[`HrRa8L"Xj0,LB`#9A&RD4D3TpGi+CiR)FPHq(36V8-&&
-F(ikGUK6-1VPM2lN4lUFNAkBN2dm'"2FrUQC5lU"+*k0$9!8"5`"qX"ALGAmqGJT
-+dPH)cqEU+TbRS0Ll*R!a!i0(BXrmQXM91pEG,k14AKpRb!l`AX5D`!ZeNZ'0)Lj
-CS8[mKEJV9aGeA1L5J4DA$,5m4,ET'j%r60p)AE6&*5-Y,KNjkj,YqNENj[50e-9
-DA$,FiT,K&TGSpI&D"BX(16KNUA`*Xm3l8HRJ%26DAI[Z!0c-NQR#'HCe0%eX-Ic
-%0!Z'Tm*!l#e0Tqq3!'ikc$+RB0R+M[eHqm5T[(bZI--Gppe(6L8UkZ2ikC[*96U
--16CJ0,*IKqQd`EAd$%bMQje!mHFDrP`'@(L0Jf*-8LDZJC!!Zmc0*N!`$4"Def"
-8Kf$+er"ak(-F1S26*CUrl5!LQY'3!,jXSF)QpUjpDIEf+)1%6LePh')ajXZGN!!
-!!IGU44BLXpa`fF0%fr`UP0B"9Q5c8ecGjhIMGGaQN!#6D"XfXrFJVPk8IFmU@cq
-2aU"9Ph2HpRf)`rH1mH0C[6V`jA$`LqN9JUS"b,"e5'kp'LJ!4-aB8#T$UMjdl45
-56U9+J-Ef0lK#)X3UKij5'2A+`I&0Y4819Gr4%K`5)AV1")#`Lk8b2c@rfchP#@L
-c12#0bA!qr03G-[DADb[d#KqbNT@!%Fj!,2`2JZP3"C!!L1pq'5S@F'iF$blk8J4
-XAAam'm+hfa!i'V6+aJDRIm-28GAQ-1NU%Q%8(hiNee9AH4C"B`"N6Iaj*2V-ccI
-LbN*p36lcBRep6SkG3U5#)(P2B&f5iAr2lN*CNk1K&iDq"r$$eIb8CcFqGPC@bF3
-bS"5Y*KpmkJj[V+&3N!!(&jE8bY!FB*-1($ZpSMm-f!V5Ym%+)mREaC(3X`[XpT5
-pZIC&+1`f9YJ%l(FcQ-`$m2($jCYD96ji2,VPjb*3JH!Gh"Ec3ASa`LmJR#--Kq#
-BcGL"j-!$*C2$P$1p(B266L@"1lN#`P'+$qLN)6f*(dVT'Qc'9KGPST!!cV5+3cT
-3b`,l8lQ+!ihbmEX9EFZKZ9#TR*LV'#"&DpD&R$$NLQ(mkH3QPlAlk6E*3Rh"[hV
-I&QR#6$h%)M!F4Yh0UQ"H0frGN!!2m)H(6Ed0)Ri"c*[b,N(&@&iBID,le"FUqQb
-QpIfrZ!C(CTJG0hM3)%bK!RT%Xbl4$D#J&#Bc9*6H2%pJ*hA2RpK-rb'HCS@K&(L
-bA6K3$UMMQf#-8m`H9K%E4N93&0NqA,&R-[LqR#4ipH490N2J*h-91pLmNFeZdEL
-d2)!3l2'jLJ1X8+DL148JNITF2`6!JZ,QY[UT`iRGL4b)r&8i9m+X[A'#RU)qEL!
-DYU6e*'m1SF*9T@NY'MJZ8L,MT$amT%TXT%#1N!$k1&jhNj6+CM4(Eh[VkKl'6f0
-GLPi1eThNPjU0NlaL!%6Kek5X'0&Hblb)dB[ac!Z9ANaPAN6S49AQ4C4H&1H#@KC
-'h924TPPc39Z-@Dl9B"QPT9&N8Za(BKUb(DJii1SeB55q4J4r$q4G825[@F(RqQ&
-fRQrGN9)4U2XimI1Q,8I'l+#QEpPleC-K*[qkULFP#Ke!$(GG"(5DA02aF3C9l%A
-TUl'5(2Kf-jQilh2XC(2S[VFJ5JG*P0D85ThJJ100K$ILPIGHT!e*13a@$,'!p+C
-Sfhq'bY`Y'Zb#U@$f!@EfP-bT0[YABfXDfaD)ED[%YUNd`RU@f$C2E,Y%E+XMTVQ
-)DCH)D4UaE&CcCCLe*X1QK3b$eQ9B8mJ`*3qQq"@QY'DBBQDB%KC-F9-eHm)*erC
-X2MK6I[!@A2jk[8-@*C(rjR0rrr`A%V22Ip+8SfrGeijN+(-l!S1q&H-@ZmNZLQ[
-q$+qNh'AGG$QifU2SMRTFLUUXP6#J6Z,l1PFL!DT"0$$4'(&9lleel)I8j)P@Y"e
-E88!B`"9rmkaR%kk`!`K8@G%*CfqikR`-6J&iq93r`p,BiPa&jlEEcYZ1RSTKYb2
-Q5!`R%[JBF6ZJFR+kbZ%YDAB5'FN,9Iq@EUlNA%bZBLc8U*N3Kh[m#,[(q`mabD3
-)[JLU'c0hMTJE)EC1D+9`S8I!J9cCbCf"-r5&LHa4"C3EYhBce*-CB!KL42BV)&l
-9D3-!DXNciV&bLIe#Kcck3rd3Er)cH%e*&rr@iF3!XJpe#+#9NcM1%0HMGCj0"!B
-*b2!R""$Ddd!b8XKFj3))9(MV2mhX-$`k*!Z#J*J&Z'Qb6'`B)"DrY&ZcDdEc4l9
-Bi`-%[%Ad5kNaK8*)+(a53P#Dk@5il1H5@lJPe23i3SmEp8C6BP`"FLd)BbdGUX,
-2R-c@18$'0%iLF(ac&ijZ@Y2a6CYR%`5!90G$T&cLUN`rGUpR,U3ej'mqGdFRQ[-
-Q!T1&*B59103,H(M"AAiNHRm[1kI)*XX6b%Dhqf)ceefh8&6*r8(jiRF&")$3'ek
-J)0!$!-SUiAEe`X3li[!I[`[6j-NX"XC4D1+mr-"+H9F`!!cmm3N21qp26l`$N6F
-1Xkl$bc2dmKL',%Glm1,Vp')*bE2-S6BIQdD@TeFiZ6SNaMFq+aqJSMjGmj[iSF@
-AC@A*QSjR2Z6M%q0XkVajlabZcFT@A+Z+4rlcXYAk0`a!!!SrU@mGPN9CJjq#4"1
-3!+rr,(qN2XX2-!J96(mGPclm416K!)cHYj,CB-Ej2r'PMFp'Yd0YX`[JZ#e&D[X
-bIDc3al8XIp6m6!a)dXZGHIiSHCTHRQU6(q"P&`fSS`%XrXG*l4rL*C'kh66!4`2
-fL)R4(N%Li)&IN!#pp*'RMdjPd(Z+'p+ilB`S2N8IKqN$!B"BK0KD)SL@XI,T1"Q
-E+F##H4J)JXeZ6()'61m##)V,6!SMHDjCbETFefe@3"DJp-61VZ[iL+rTH2B"44R
-*k$8VcY#X&BHDq#M,5ZQMced(DI`PBZp*[JjrZR$PHAC"4*0K&bDhdQ3E6,mC"ar
-#`Hjm@DbF33D'N!!!%X4j%C0H3`!8!R$!i'i+%1fKU`qXkGKL-2#,@Ma)SU11Xij
-L&Ai@@XH@'!T'NV&,dcA,8f#hSFk#!iVi2&b6pYQ5LSJ8@4rLiPC@(*9Q,p`M2KU
-Y[Qq8'a&+aNilZZekLk-Ab(!3`2HZ1aipU[)%bj31D#k*4-Y-&-l49cMB9&18ReT
-)00-&2r'Tq0!3K!$8N!"SpXiUQeSKJ4!(R,2h[P%165BZZcP,bFq08UD5ak0Yl9[
-DX98HQ14&BJq'M#K$"X4,X&XX6%8dQ$K+hRY@()iP6aS2,+0U'3JA,(29HQ6p1&8
-YTDSEB1Sd9mp((KMIK)pMY9ApN@CkY53UqL-p)#mI%Q,MN9hMQeLK)P1D0d,Up#G
-DM8+U81B#SckKCQq3!%",N5##Z@,lB4C#D@jE"3(@X`#[S5)!#(kY0&V0j8[eV$6
-("Rh,bmNR"c[+&f1Ebr2"jqj`N`SL)!Pe&RbURjYkAdC5b(lA$b38JRSqVD#$UEK
-3Vh"K0JipJ(LUXPNGMU@'E0QKhNCV,kjpSjc9268NXV+I(GTpGP%NMFJNGQG"k*U
-F3"bLN!"D*+d`NQNe8NMBAIlCZl5"50T$fJ#%XI(A2jIUdfpCCBh@')lmklG`5D3
-fk'QhCfZG4j)8&&TjAd8`5b%J%[9-XU23(3Z[TF"&AcdUhJ!&B&k$!M2CbHPV,r#
-J[26P*mVqJ))+-SSI!'6iZ5G$'JFK9DlNFSlKJl`-P2[XNf9R(eA"cJBVV!6YpV-
-F"b*9Facmjq#VHaC"U(JqB"YkfRN#iD)C"`IZPd-lrTB5lZ0)lQ'3!+$pqH$D1`a
-(&**MfkEM(-JFflCSd+"K$2UiYS4QB'M,cbRacE&YadUXQe[D1FRjFpUdJXV9mXP
-E1ri@bV"fH*B[@f)AT8jP#VeDA!(jH![&)$TTLXV(J'NIpmR%15b'[8Y@F+h19)E
-X4Q)1,KRQ6F88m&Ql9!Kck0`IA*Y@Z180KhX@lTiMC")`ZEc*5MP@6T00EX6(((`
-"&EZ*2`jSmNIGL3&+VK&Nf%Km`Z*#)L,)2p!#5#"3[mKZrL$eB!"Z*(Df%E"1&ZB
-Q#kJmFl*)BIC1GJ"LdT!!f38Pd!GhY"TEG'[ZdUm@JUZpUlp#SV2+0ed)f3M(,R)
-fkp-,$4%81!45HHAI5`'X$qG&e8hPpG$`96VbkfaH6+D*BKqbU*0XDcV@PP)iAIS
-d*R4"J,GDC9bjrHEBEEJ5X3SDJZS"3$ecRE0khdAD2S"Z92ZLCPRa@FGBp63VUH*
-XMbbLk6imHe(6ADe5VVFBkN$$I4e[aCIAc-b9jP2pI+ebX&&lm&)h%@fk%m%H0YJ
-j*#B5XPL+K-6!V#85Nd2fYj!!P([SYGYLGbFN*a9(CT)jFUT0ME1UKGL[BE'IlMJ
-%F0+[*bm9&MKJP`b#2kH%i&'djbilKQbq6N@i#2+$Q@(M(&l,j`TP!SU&+e5B4GF
-bLX[lh16L&#H'V%HcCIf4Q#*3md@G,4e*+L4LXR2GDGFL#pPmNV,Aa)@)P5)@He$
-BP-AM(AE3@G2ah'9&YEr'9HDqkdJ)K"@b1Fe0b@0fpBlG1LC%q5qe9Aljr9&0VIc
-qjhZab3%PdBFSdF`-`id-FmV"EMadMBSKBch5@*39qeSd8NB83C+IZ&[*"2&bSA`
-LK-@F@IiT0*@"0NEdN!!#ZhGjAFKX$BG('#DV&fkedDjbEVM+eRc1C$!r"VFi%@M
-p%8,l!`'mp)SA6q"&'`D&`+L43KNGk0$$)H4b@N*#`f4(VN!j&9q(#aSlAP@pkDZ
-T4#&mkEIZ"'Dpja6'[DDjf&AX0USUNYXi)8ZNjR([RYfplNdcL@2q4CJ$'m2pYpJ
-%$MTmqFTHjD+0hU+ib'ZBbc*+'AGSpJR!XeT5#3IGJC'JH$HF%pX$XlimM0!NdL0
-ZLe8kk#)UALBUVH+q%UYe@d)LYb['cm8FXa!QK9**TV@A$,jSNIL!kKq#kKqbZ(!
-D(1hVc2[q'%EIEZ9!G$+ipD+@SNCN1rkmU,J6f5&!aV$e9Q6eG@bYPC`+9&X"@p$
-`mSq3!#K05(afBR2MiSpBJ&(e8JVlNq"U&B),a+X2#QK#0eLP@i*ZFQ@B5lb)2qf
-k%`")N!!r3J'A-@i@SZV&MjU+Qqab%Bi8!#ik%km$`M`%"pBpL@kilkj2('!RhN3
-E(MkDk!4*P&+)-4NGX1)ZapLYT39FrbMq2)XrklP$K#pbG&Z,Sb[jD'6`%#QA4fY
-3RHacLGF2UVk93!KQY2-JAQ0aH@*M32AD$kVHH(h3Y9%8E!#*f[cPCMJa5CK5TlH
-HImB`hCX&d"e0G,*l&4#+ab%JH$(AK+R#aCDQ![`%m(CJabSAaG@BX1fH"I4C-#m
-m%!lN"f"-KqJ`[h,BSellK6Bd)H$6CQkZF-&52J,X+qD6HJ'e*$1iXVEaR[KSmL3
-*S@iLK!&@rPl6Q`q55H`4L*Q63NKT#f4q*SSp("$&05%Lh"Q"Sr&Mr5!3a'CYeKU
-FRaF&!!riRX@'KL#'l+4QV)`)XL##,#'#%J03+0b8kN2KRdlAaAcmi+e&HHqp&S*
-S[qjSCEdLKl,XcX*0RIfNV,G6GAQa895AFK+1jI@2#AG$$'JAT"+5k50V5UNZHbp
-3(CUT1XM3Eb"8#NU9'00Nk$dUNY06+SN)ZXc`1jZAD4kAGUNiN!#JBD+,254MZa"
-jLEhjA",L63Q&YSTLVJ6Kj!QH@bCJlP9YRUkq(`bpV&fD#%'dhSmrPl@!,LC$Da5
-42iLU!&@f@+)lUS5DcRV%*RjCA+KPa'U)bIll[93PA)0J6Fr[f5"lr[j`SNHi)h*
-#+D,h9aKm'F6Ad-6c8')pZK*$-aJN&-)A,eY`E`ICQm2MAbU&"Dl"SFjmfSP!VSV
-L$0F1,N`2`8%S2,D`'&m'G)-L"-0EHa,l16c3iDJYbTrB'T!!2M8`irXZ#'8ikDc
-Mj)Tfj,aK@k`MjrZ3!)-p-,i3KDKfdNZ3!&D*R8pa!(FRc-$JVA$i5VbqViH!!@I
-"*,'081+*@%%SR9-`mDl!H5JE+DqG8*RXiV$cm4##cK%Z'Xm&8I8Vh3bVAL2(5f4
-*Z&iqjhM#bA![L,iF*SArI6c4jBZm1J3R$DI'K'ScA!*qK8cGi1+)F1,VeTVF8l0
-6kiC)eI`L6G@)d!FVQmLV3EUJ59%R9l--dhG"$(6"QEp%qi#f(m6fNl`j&#lU14&
-$T@FS`KPihTIRJJ6H1&kpb+p1a)L-r8PLZfE3mJ%XCG43a-,0M&#Bd)&[L)%a#-i
-#L38RL3ARQSiI"43heqe`HiH!*'$lZUJB(&D8"@fE)KjZTJN(FHJ[q9$j"JQ)Qd)
-m-&-J(*cFl*F&%*'&JZ2ccb-$ka8"BHPQ212iDS*#CRr%&l9"A2a!@kE!KDM@HkJ
-bYb6m$U$6$VX1d[$99$PN(iG'YlFX@'qhNqJ`5A3B#Z$h,J!r(`&q[aE0jkmj'-D
-%1ZVJX+ChJCV)#`6j[CS0DHkmUN"q['%Gp(-V4+8Gj&qjUjS"2M4HpedBi)[kf(Q
-f-HSXpdC5"&6,H#e!aah*m%BHhM02i"m#A+q!A2CB`JR56Q)P3"$r%4(NPbqbU$V
-kQ(a6FG%c&0!lcSS5A@#i#4B#UFm'-)P3jbHcV#LcA&#JjkmbF55R6'cmbdpM![H
-If9&`$K0IrDY0r*YKCD,LK%T3G"U)NEd`L+%+%-0ZE`PL!""6LS*4jb6,*&#k1"(
-"lMJlEUjq38B5Hk!D5V-"lRLM9(+c14ZDUGEQd1KprYK+0MK6[D`q1HMU431f&8(
-41dU!0$Efr&*0-HJDj-FlrPCre&bpH,m9h0,2MYb&XV(RTfASCDlUBmm[bT!!)mm
-L%q%!&+"BBC%*35&$CeLJ8ZG-Db$LZa94KDjNY#5*qfjY,[!+ZKR,XL#Q5iH9+pZ
-8#dH8#dG`i6jY+d4@0c+9e+pL!SN1)@%CHd08AYhaI+d$`[83L%!("9&8#$q3!!`
-02#Ldal&1aMDL6'mSYS$5C8'P5"%Z&FdHCD1T`)aAaREa"V%P+R#QE'N!@pV"$U9
-M#p02BT'#iVKaeXB8)4j69#i%Fk6PeU,VD@XKfTU6#KZ""#EQp8'j1-&DXq[PI1k
-),)Cf[0f#IH'CkU,DhHXDh2%ff"IHFLF$9i"p(&VRac[HeKpeJ(hjm('9B3d#5X$
-!k&D#5X$!U(-qB#A24%"!lm1f2,9$'4T6XV425GkNb-48&AN3'XJ+6aULV-3S+jG
-E*R*9+,C0*J)EI@cD+G5#Z$E(Q@e!pJjZa%BQX*(Nf%CXT&+`3LK3dHN**YJ$YpJ
-"L#Fpm9q1b'aJINUcTaRMYZN)'FkfTBLVedU1p8l[i"mi#,3a'(FQa8%B"XfeFr`
-LNk&`ZVQdb*!!F$5-)M[V-PYpRS[ddPD4C2*YN4aLUrTNhV!Y,J"kaFAZ#Hde1%Y
-dfB)((5!49*J0&r!pK#"ENJ0Q@K9h)&C)-L$Ai%$$*rB(1*GK%F)LK%83#a@,#"C
-","lq!lZ6SBJ&&MFC,%4A,Z+SlTD00(*NYbZ"+J-&#953!$9U-6jAeRc,Z`,K$)H
-XEiA40G3YRhY[,ld#['H0F'G4[Q5H36mB,,DGXL811QUlGV)2e!*f+&E3XA+$)5-
-VPrABc*mjMm0"`'aL'!2NBpl+lIm-NmYZ$m,8J85I$S$!eDj8K"Vb!Df5(8IP2S)
-M'B6FjZ&Z[iD8d$'j#cr6cje`f2EFjl3L'0aZ-jjf3MP"J@hJ)AHj!cqM'L`),Zk
-&BfL0(MDXZ-+AqH)X!Q%DD-3K8!f3!"AGBA@RIbkZJJd$HGIccmMV)1eHY88E',)
-IpUmf'Vpid&C!KheSN!$i9qF4&Z821!lLX485$kcHLCcP3XMf1KI43*GJZ'crXQA
-Sa5i%+$&8Z8i8dPSj,Lf$%a4G!Qj%NCYG5-3`!hJ03HifDXYYC0R$K-+0r[`T%2J
-ThfX3NbRIedPS$VKIJFS(S'iP&abIFlJF)03'6!Ch'*ETHjq$MQ$dC"NkUEXXh)!
-+`9AR&JGYeF10m+lqI1iK$*B''S#iERq!J3D[q2J-`TiV,KaSm5X)0!3[e23#*++
-3!!!lDEkbENh(RdqjFpa*&`j`kCIcGVhU$(jSih(+a!V)'d1![bH0q8eTK4VlG!!
-EP6J*SSL*E(Bh3FJ!M@'*,!&1VQJ@F,+[PC8Y2CUMl0EJiAlaN!$KZ8LQ8!)RHQe
-(@!`YT4q!$rZC*$+CAG0KQ*cNPTPeD+f6I1b3!(+jA5P``JFI83l@(b,%8C&9(Ri
-i54[+2%3"K3T$H6L"LJ9QI1VGl0%-h&PecPCRiqTfdmp")!`ESJ"dQ*Q%+J2fSJ2
-"%DPqPX26%B)GdjaA4E!i26ZCC*UHhj5@-,2cQd5i@(Gk26fKD5TR0*ZCbPPVcAa
-5CMJ,3drQMbTE4hGV0rGj0Y8'&a#NB[JiJU+M6"SD@Jd"3*k*h#-jDCm!R-20AV$
-K1dc)c&-AD#a!c%T,Q"j2&Q5P#E*b&XCEbQ)P`1+5KGX(bU0e0[FrqI1VeNQImIP
-0Vqk0@3e(9ap%1*h$$&*qc*UaQTN!4RJA40HE@3Sk4k`lf4N14(0R3fr'+BcF*d,
-fl"McjJjdr!K5e$H"*XQ`p56rrcYf&(Rc,j5Z)GqXYSj15VfMb$H[mqI%1eJ@41H
-)22(a9@4ER5J583J#m`U)ARI15[N%j2a$EGC+#C($e@5dIkU83h[5qJ`lDJ6m8h#
-i-#"13-VK&BVFL!*'NbMiBK[L"BI1q[D*d!Zl0i!Y,mpcS!c,eP+%b8##)kb[@V[
-hIj0C*l,E1SdJA)J66cJE@0ra+0h2kFE3+"qk'hd2IcEEj%1jk'mR(S[ZqL+-E4+
--T3"i#E%AEJRiD+41RYT"k!F3V(k!UrPcJIP0Cl1G$2%!-jk9%MCm0Z[hV1Q)[-$
-&[dpMrIe8"2lqIr*R9bhM3Zb29PZca2jGa25Va(*deINl2l&m3&6%hidSl&kbGZZ
-G1[S2@E2r"TC(Ya2,NA#rZjjK1ArZeeRqZeH*jCd!d$YYZArbqfHrZ3V(JFMT'i,
-M1"[Nl!6F$3#+cX+TS*@C0A#0ZL%p`%@c&G13!()V0iRG195V39hiSa",aNKiH[3
-hb"!-bcj,$JX(r,0hYd4I*k2"*p5BJFhNSKpB*LrN9VKI8d#*A[pJiL(h,#YJZ%K
-m-*Q#mZV$p*l*Km@(VHiA6Rb!D9HfFQ!j,f&BI*LE$FZhM$$FQ@J2+KG)Yr4'krq
-&Np+R0iQLKi!XEm`,-i4bXkE)$!F%#rl3I5%cc!JP!C+Gp#EG-k6BA*E*484ZrYU
-V0MkJ&GCdK'e3UJC)!KF(djlTYfD&UZ&#4Ya4k*91'0l-rQpbf)S,c,24k8FT`UC
-2GpV"4FRm,,[1)d2LS&edd+Xi+-*9&JFKUp(Ii#$A@3FeSe,28*JlE*f4VHKfH*D
-2c9l`@+%XfF!T$-mZFK5`J1Tr3)2J#@k'%3M5l3-Qh6+#ZSf*"Ee,,LDS`JG%elH
-q-*&+kd8AY[b$UQJ(BdH)X'*!FX4@&+iGf4REqCmjYIVD4Mi'h-8@HY%K!6AaQ@L
-cc#f#Y"T@5+ZA-f49CdZbkRK8-p#9FDrAC$,298hQS)e9,cfV,aGch!NX%9'M)+)
-D&#+UVCCX3R@Vr@Lc"%&@V4"2SaRLDIK#a"-R4L-53bd`UB6+`0hLVJTKMYIh-mQ
-T[+kRerG%ic`a!P(j)S!3Q&"DPEYKp*ilr+9r"@6IbbV0'p%-&0-dk'G&#cGb1+`
-(h4E)-hD`d!6F*J!A"eha0"k2&P5&V"US*DY35$4&R6"-%HQcM8LfLJZ3!'`9lYh
-X@!M#VF*E3i8D)h$+KB#+QN,)kk3C+U#Eb$(H4SS*-V%4LlTQYSV#M3eGE*Gll8B
-j)X-2)%aXH!eF*acRLTj0LN*!8X4Gj'U"a%N-i(1"+fD,`X%-,S'SMfePF45b8IH
-h+@mG*5C%r,eTNC4HM4@hi9!5dD%NBS!58H9%$#bm8Y@J+U3KK%cAD$l(cHLcL%0
-l*XR5#%6Cb34LZX0G#9H)*&G`G'&lXHSSY[J'+LZfT65pYR9GcqBm8qKqf'!RCGZ
-Irm#elUJY!I!9S[QPAeBHA@83[2rpi%Y[k#pmi`43FHFX*RF[RAG`KF`+"ZFb`aS
-J@J+6C5pGjeISI$cf8J+[2TZA3Z66S#5+-i"jTX@!'m3I#k0%FmkV[KpqkBf1E9J
-%ApUFGS'D+9*9@j!!+K*i#ahc4M"j'Arq*)e`-lPc#"lbDA3#QlL(Jp6m85JmG[@
-j"l+Ri[2Sh0BK*kX@Mjml22%3"Kh"Re+EE2mQZX3P"a-+1Pa&Z1T)iMe!-CXRZ*[
-(Gq&+[`k#icT#@U8)I*hd0YM,d-h,ERm!%$N+,1bIif%JEabl$!4i8'cZ+qGIQdl
-XKi0Vcq,KBif*l6k'lUP$C5mU2(H"TENc`mc-X$!2JlX#(B51L6+AHQr3C#JEFkr
-Y#8&Ld$DED(!$Zq-QKM#m#8,03VDJD',Kq8d0F[9",`KSm`9Gm)V1G@X&,alk4"I
-%U&6E5E#(@E@`U-ed-F`2qc-2%I*fIbFcb8B2)N,Tk0-8K[%!MclJ@qcmTlS9KY(
-$TV6*N3Y-MVHB(%QI,!I5*KZR6jD(@N`fh"P$83EXE6(!E((jZfQAabp`H@Q,bI(
-dblN6q*2lVHr`SjM5'0&I@PQm5Z[)K09G(L&Vq)Q@0D+,h8,5b%AK&1%*Z-S29Lm
-1(kaH8Ue8bij-Z+0TN!#3!$e%0$2B8%-NC3qD-$NL&"m6E+#ZT6-1,C(+i`QP)f6
-4)5["qBNIFjHdd3fI&m3*5#&6%3U94ppAK3MJ,XTCP3#Q#"p2B(Jl&fbRcNM3ZAa
-pFl3Je-R+!D&NU'[I-p)F4r&*%%d$rVqBra2KqX)944'a%+SV`a#U%%UKmqqd)&A
-j3-k!1"69Yj**V(Y(i+TUF(IQ4"D+4c@f!K'-5ha4bRc(,cU'qfTAbI@#6,hRQeF
-)eY"VYGI*$f`H8VdHN!#&"K(4eMXYQP#RAAL9ZL4&ia&%MZQI3G0NfkijG&3rJm+
-J%'lX4-XAU@*V`epeD`fL`A4['cF%#%laq"ff('e&4C2Q*,Rp)2Xa"XIKA2E5jSQ
-F9Z3Q$"2EI6Id$-Q,)TQNKUX5HeQ`BM"hH!a"DVCXi!VMXjNS400(cV0pH90V*E@
-6TQ+ZS2%d8di+UGbh)lh"`iC)"1Q-'ah23jJ(Z'YjXD9[l#6J3Rk4`Gr-$$k82TL
-*Q**+FSE'mFDSD*MQ2GbGr(mXIQATr5VT82k*!`"R3QQY1mU19Y($JX5JMX%j!*Y
-D&V!LrX%%DU!-V2RT5,Cie!Ur8j*G&BcJU9kp%kFjDJM"0)e@BFTmSGrN$M[3GFH
-8&8ihAk0qI&2qDU2lC`pDaLA(m6jRG6B(Th290XpGG9pb1+[GZ5bJiUkV$q9%i5C
-DdMmh3NZ6Ql#dM"0ic8XlPR&D$Q&TTk@&j4!Yh9KDY-aLkDCP%FXX,3YB&QRCK'@
-"PT9B0Y'b#XY+@ZD`V+,P!TBj@UjLZ8$,+5aADHR"FSU@XeKkD$Q2j5`Yaq'bjXm
-'UD#4r%me'ebSIQK"Q[J6aamlrJcKMf8&ce,J+@+NVqiVJT(ZlbJ%rmYX&[JR%+l
-V)XHY11pAR-YdNX4&6,M+l*`mU4Y)L%%R)`p5!U5lrJ!93"e*Ik#VrF[R&Sq6fYq
-&2pYClA-ce&Z(cblHN!!YLNlRIMVb0Qq#(k'+$qU6rr9,aljbqQ6I%QqTJSX,GU'
-+ak#5GbA#j&*J8$Hl&SU*$0XHhU@a)[Bei+@&!'V6KDEC%KHH"T%H3V1q'U%aRcX
-RLJ%mI*a-P!'9,VqVc[f,2dibG&iVC)GTf0[M"#a812L)LTG4R1jY*MiU4Np4jjS
-9JhaF"3H4DrlpF-A,LA%krN0qM#Er0#jY&jIZQK2N*(HZ$iIhM*)J)B0JZkiXP'6
-EI%+kCj8#f#2,5A53!&3jcfkMI6S4kR'3!!+CfZqZK31JNX!X&PJJ3+p$X$2`UQ)
-cirRJ9&@"HdVCYZ'Lrki3Xa#+#Z%HcBRZJh`aebhP0B[+Mp@q4P!NCFfkd($L)fS
-*cVhE[%Nkd%K6G$Y&SVJ1Fc*9R#2L5eEXB"H%&NkLh$fkI8jd"Cd8hBmJ"&bcj8i
-f[U%kIjG&TV93j#l'DK##B8GRG(P$BE$$h%"apI+3!)l"a3-GJd[XbYaUp@SqDjB
-l$'UZpP8ZUcEV53H(&'dQZX+EXN*kBLNEl@2&J@6D+&8+A9d8KqC"R$hd[&5rM@0
-3%*D,`k3BX+,Q8+Xeb!PKNFZd[BA$ke&bH1AUHHlm8PfDQ'9S%Hkh-*,h@$hZ$`K
-`,Jp#!Zi9eB[U`HTMBS#0"V3Nq2%2M%`URCHV45A)[TUj`L4L`EAKjqL,k$'j0&B
-1pq'!&GV5AhHqklDHBH@L*)LYZh**KbI$M93&4R44%2E4LhrKbk(@iVTDBa!1TUL
-KqIjb0XG0I@S@HTECTDN2)616QkK@'F"l-)P"aSQl2liV)rL$F-k2NA"`*)PiXq4
-LaFCPSX1S+Ql1F9MShJ$$3&RjBrb6!$#hDYmDQV5#5DR6*M%Jc*-ZTdeD`D6@4[2
-T"k&)5"5kfT%B0fGZ-B'41(08G%@*$!Hr5`h5Ia(C$Aid6LVrT9qRGmJNZMh9'IN
-I,4RCTM-bYTP""@*NQm,)F$SMBqGS`&Q-M(e)M!4)&9X5M)a0CDk)CaM*S6"$Cq3
-crAAQfBb-e4!M$4ed9(YD-P,pEBD4E3TS)i*KR4PQ4Ti4c$42BfBFCMMUCK1BbMr
-*rj1TC3NU0K$bE39cc)NFIT,%U(J$$-#lh**4rh(Z2lr#M1SE5Q08()c#2`&'dfV
-i@Na0AQ!UQF8hGU40VD'T+Nfe+e2MTdf&5U5Tl@P6l6a9EU@TVFV8QJY-28C6$kG
-0ED@TSc4e5*PU2pXJ-99XYbPYkK#QAU+**9ppiRqP)krdT8dX`F35!2!piKm[b4K
-c4$IQ#YfBfB3qN@l-X6BbjVD@aL`k1XN6X'H&-Ke)#KK`JfB*F`$idhV)mHPb%+H
-I`"Di143@3mlZa14S*31%(cY1S-`b%mNI+e@D6%-JHQ2H'S"(h*e9a'b',#-i(QS
-hakmQd*Mqf+X%M!hC,0&Fm6*V3Y6m81Nk0,DCf*FALGM[ihqS5lB$%!jiGXmP5lP
-a9kBdlRDM+2bYaH(Q@li2iF5J(VcPmbb(CRXKj)10SEAY(NH,+Y2SR[dXK$ahaFJ
-1$TlGaCYDFZ*Z3rQhll,c)41GG'A[iV-Be#m'0D"CjVT1S8Y9G-*#QpZ1"Nh%Dh*
-BD[J+QJJ,r%*[P"$d%q'((dG3#eh89E'Lm#jcjE)mF&'1CdKhrC@CrJSr8i+Njm[
-*)FI3#a8ah-#GPZ(K*kMT$0#3!%Q8i3'&#9,qPYJJjAZ![-LY$bEmFKC1,j6B$J`
-fD'UF*hkbLJ-SbR%QVZriapITXD'rrXF2k,8Q'ZSdk6LpDNelY3lAc,E)fQb,E%d
-aD-e*60fRk8(&P2KRRJ$T5$MV"rErGfiX81HX21dc&+L,@%R404V$0Zj-jceFj"c
-Ua&k$3Gb9,'$M1IbE&4cB`kAlPp-lHH1KG9pchUjVIDUG1pq*h@ErPh2QFbmjd1f
-b02N&#LR$H4)"6H(dC+5$kIc2+h(a&l`q$@L218)*+HY-rLG9,Mb!lD@Zp8)$8$%
-Prl0lA)J`N@#$HI4q"J!N+AJa(F@FT&p0fb*-3GT2ZiJlBc9%93CNJ"!E1DbB+(#
-#!X8%C+c!Z-X4VZ,#P'feKB[61rJ#!!!KJ8&%3e)$!&[e$e8,E+N!f@b,rqiZklU
-XcClDe"j5kqHkI#kPG"Q'j(BF*[GVE@(GpVE0ET90dQ0f)Zj@3f@2&cQ0KlQXYbe
-X5S-YV9#9'!*-j(N,&U1)6T,6A)LR9cX1'S4U'S1j+19jbc!1JlfNf[IhrhrIlVI
-ElU)pFqCdR[I-m`FDE#8Y3J!N34!N35$2@XAXd""ZiSmhU#,&c#UaH%@B9VQLRP6
-r#+m2Tp`APrl*mda(hY)LaGf@YqHjkkkP4IUdUeS%Tei6iJFM,BZ@RXDP$*GcZ*K
-a1BP,0B5h'keYH@YI4e'#8A'lDTC1ZIif024L06S(V`d02Ghl,94F,[d6XL`")S@
-H[i0)PT0)PJ@4eh&TaU8HPrQic-0PMSp)@je`1`NGki03S8cS-dDSa%QSa),3#Pc
-UF0Q&bfjF'R&TmL18j56dZci)IFB),9U`2*!!dQX@,,IPTi9BjLSM%K#U[ZjDX,`
-MEm',@&ldVdI&1,U4)2hiAc[bPN3`QD@DM-$4)#C,r#HAc,@FE-0LEmf#&apeL@l
-qBfQ3!(lSq"$c8E-P4!prX@3ZIl&J1DVSSh#eLbVFM(p4rU,+p"5['JfdNU!php-
-9[VKJ1A2Il+TC%U(2he6$LD$fZ@3Zrf4("a-rN5,AD%&N9RFErC!!Kd1-C,8`JX3
-S2i)YUBM)E$Tf5ZJKjACYJAj#"&%9D23%#rmK(I1kp%HF&B%k4(eSHX)TMZL4XXJ
-XUYMTXcJZE0'Cf8$Xe,Jl&!JU3D!IdN1SIXK49i45&a(&8Jlcd2CSB+*-'(r08"D
-3!+-F%8G60Zi1"S,a8$T@0U3(dpH3!+(MVV+KSI"eJ#`3(+PedhBk!X&63qN%3dI
-LZ"bX8S*%f1%NE,%*fCVc#Pb1c!BJ6Y@H[ShSBe%r*X##b3em1!M"j&P&8!EiEb0
-E6*@@@+b&HF,K3dbE5GNGRZ!(X8Z+)2FMXbM)'8T,)"&Vq9Kl29,V%ia$F!FG1X&
-%bb%@mJRU`I`+fK$eKKYbK$*DrN"9-)T,jiXJ,NP$Nf"3e+JXT``dbKRSZSNM6De
-5A'$))Ak%(-S`m8$Vd*!!H`N#+30(KIL#$ZM*pXmNC#SU*bNK!mP+0m)aS0"aU,V
-0&A99mV#DANEKi!Q@S@)k(Q+,UJ#mEX$P@9`fiV,Fp4*Z3lJm*k2ENL-18pES(Z1
-63(R"%46MJ3aZ-EDaAJ"Y'eS5Y*4)X%@Vr"HTJ`Z9Ne4-5jAl$P4p**56#*MeJAl
-c1*Sd9)(%arm*ahDAeU6-`FUU3)'lp-5SHFJBE9Q#$9iLNZQT8q0kd"i0C!lMNXk
-F3NArU4LbGKdrMM23rCIPK,Ym!@5Xd&j%CY&dD9@8U`J)k13&$`3%*23$A8MHJ92
-Q)DTXE9XqY#TLMEYDmZPcaMU4E-Nh$c8A!R`GSXk!ak%mY4dIKlHfKY,a-S%`IiU
-p51RA4E!jbm16ZN2[`%5b1Gq$4&XHG)Fm#%hpUE!)Cd`Fi)aq!!9aKSi`TL8B&'Z
-K%%+V$Sp6%R3'AYa&38B*f&f&8!1B*1D'(DU!1N1C'!kb4-XfFfUB*9JKMV%#-"i
-fBe53!1RkGaHDAZS@q3L!Y59j3*9V!C9M!1804iJ&8BJ&N8JE%85VR%%daS1)-dK
-2N!#bQ,-SAYbK-3CIY6m5@1)GN6Ch6L$6EK,CZIqY+lRGHL)Bce!!GJA[U,T5&6r
-JRGBRpFcGH[1(Y`8AGkC(8B@FmMjHd'52HMCkfrCYZA-*'SH+%a2KP(lB1q1p9A4
-0jA)QJXh*3D)0lSKkJ[eJe+G&qCZf8RZ&Zq,H@RfG1J1iBiSFi((Z@(ARG93Zr9V
-Sj0J11+CNk%KGS6XUHL[Jf#3+Z3`kpZR@I8Y&[l[UK"FZS')h[&jfVhXUPl0#X2q
-8V3%19EQVlXfbG)J!*0SSD[C3@1DHX4UYLR[Q1-q3!*DbYVbp0X8DQFA(%`!EJ[3
-aBieB[6D[9E(4JYc2lR1*Ei!jMSB,@!ChBAT@Dj,E%HQK44'C6+323TrZiB3qhH0
-2+#+6SV!f4%lEj!4MV2Y"80c!JQlhA0Dd%6-B*rEk+a6YYp`N[2Y4,CQ)L4i)jCJ
-c+2$24M!Q1D#MZ(3NRd#+ZrL$NFMXrQQHU("ai*,!aBK,(*FZA+iK3$P)NIlqDF!
-X4bRa1C+UcHj%Z(F+(CGqA(*`b@BGN8l"NSCLjF,QFFC`aR#3!'lhS[SZ6mUfD1Q
-'kc9,0p4h+4IV'FJ6Rc&1)TJcZDY&6%rHc4,C1[2f++Ur3[GBpC-LTTL68'M`6(8
-X(aTZbqYj$aeeqR!EVCJDNkI'j+Qm[FqirJC!jM3P-"RiLG",H4PEcT4&TK&!bIB
-"K%EpT8d&#3X!R5C3RC*$@8iU1LMZGU0*C9[3BLfDl3X!Dap-)2L(63F,)qRP8bU
-L$TQSidN5e8Kk#B(4fK,J)%q,P4B@cIB&,U,B9`1@N!#pFU+-6qAD00!N)B0$#GY
-m39f`!XZ&-Y'M((6R**q[dP2%EJMd0eVrpHM3%$X)"rk,qcj)(i"a['m%KSrM5eM
-%[+JE3B$QUm@"E1Ufi-1KG5eH,IB%pHQdJZBY&8K`Ylq6jDCMm`BZfE*8')h6kGM
-lAqYZr`4#+PUZQJ@lU92bE#mqmfLjk1C0"h93U10KLS&X1L5Sfl2J1GEYNE4Z$h9
-G$,%qbk#1Zbc$QP!ZQ@3SZe8Sjfi+T@l6DpXK@Qb*D'P`3)M'r"%Kk8l+bQcr#Df
-%qEcDLJH%UkBq`c2U9l9!PN5MbPKVSMZFP&m-SdV6R4kP`KZ'F!DGR4Fe!*d+G)4
-$Bf*!!U3cXjEL6Q%Y#(XSr'3#mrX+[5G*F0JN`6(haIT[H9SeX#&4Mq11XXf*-Q#
-PTVkI"Iqb'@H3!*&MfS)I&&1AZ2jEf-$bYM`)UjQjaD'G3"BB+*U4!Yk-'(Nc-SU
-T-rbihpm'BLQ0a+p863i*-q$1JFi)%llB6-)kZ6T$%q8l)$jU)9l3mM%T'r%P5T`
-9#UN@[6eMLS55pLIaGTdTmIXFrZ)j8C2ZPrQ,rpmFNq+5KALc59H+r-A2Z%`L6eU
-)lcBPhVA0AraECDE%iaDZp#G-LPGCL-mhk8U[[rJ$NNPaLmamS-RNTQ6jLrHBqa"
-2Y1AYhS!QE`Qa`0fVU5(b,ENpD6+dG[N6Z(f1b3bpi5qZGjYdhQ,6p@dQaBhqiJp
-@Qh5Pd9rF+daZqJS,m9k6iUrlLcpkc@5`e&Z)&jX8hq-[ENbEG1@dKILB5I&@Ir(
-pq5Mq'TYT+'T`eHaGc)8Ze$(J8@D+LA`e)rh9I#$Xm3%6%!3J4m"%#j4Z#%5PbJ%
-',$Pi-hHaK$2S[I0Bp5CMH[mj4jm'SRieF%B9"S3)P35Sc%!h+T1l4Jd56`MUDUG
-[i&A-D1iQX-4S4cKlJR&h1[CZ#F"SX&"H'5Q$DFQTh+*C@e@NBNITEF8-52+j-*m
-e@mc&cRTUYQLM6U6NKTBDVQQYbN!$D[UGDK`!jUdUB0i+B0k+#T!!GNj[Mpj@MZ`
-3HY!@T5iG)cI'`'m!p`#pBTp@SXPI(e$LdrCk1S`bQBkGrb`qM8Pq')Ik-(S(J-b
-JXG4AQG(1XEM+X6JFL`m5apTeIJD*BcG8MYf!BcF'L@04P@041"BG*)k9U4`VJf0
-PJm5aSbV(MX+aSi2%-E2+-6-F-`m5akT9MPA$XHT"iPLVbV&@10Bk5"acU4ac`6(
-A)(%XVA)X$FI5Jm5aL-Ua#"b,$",(UP519F'aUN(LQ&(PQ"'1'3H*BpG8MPf$BpF
-'L@2G+XHki9Mh)((XY-Uadh$Xp#"al*c+XA0`l0`JF8a515E"-@Q3!$Kf8ZAB56K
-fFT!!1(C@jGKC1(CfN!!i0UPbE"+163i5afC8MXh!XCP"iPL4bV%L1&Bd5"`E86N
-f!XG'rRmijMh"UUNfH+f2RK#Ml-GFpL-TNNqG3''J`le!*$%J0fr[MaqPSUG,)2f
-)ZX#&98#`kScV+l'mb'MPaBYq#LG8#1+!H!kUI41jRbP*'Kb3!2Ye2,QpkKBULVj
-AC1[(FG2e"UmE`ep$KJT[c8ke'R8"MFU*C@ejhrbk[42Y"&d3$'jDF'*9@pjGrr%
-N"+'@GPI-Ap$m820()RP,3Jq,j$dSI0Lh5dF"ip6RHNf6B!)1Ii'QY&-JRbR#i-A
-G$Ki)6'!C&qM6JFQf['mI-qh!R6NDJ6Y[p1A!R8i(lmMZbi%lM)BGZ)4LdFB9Qpk
-S5r-J+$d*`CQf[&pQE9S`MU,@1llV,qJAe%Rk89IPY9,B@K6UkI3+Le1"$+qd09`
-Bf!I5%B0)4`D-e'J3UA'J5(HZ-S4djkS")fddL,4a`%Lh'%5kCF")jaP%1Qr!5!d
-'dmi""p21-S0)b`D-p+4"T#F(M$5Y)@hrmZE9*PkH0[%bBrMP2EdQARS0[pbehF6
-,EX-[rkhHa%X6#lpEBZ*Pa2$,qeHBH,RGPi%`2J*6+T5&+&D+iC,"*B@KXSjlV&f
-#e!TPpC[e8"U`2H+R[[*!)Qk&HYfBN[3TX$b3!2!ql!9,[cmfN@4+,%fX)')G9f+
-4Lb''QCTZ%i#0!UMaa#l1NY)p8lea3'dR4Urr-3F+0E'[hN5KHQBr9'X%$D0cT,e
-a#)5jmV-C4Dhiae'6'4AfQ5C&"M+JS9+8d!SP,X5Ti'&5Z5kJe"9TH(@VCb-+("c
-'59q3!-T"keq%N!$d$9rR#RYNGND"@rUd[mU2)RC8h1,&!0$K!k`B"5TZ8&d&H28
-8Ee6#8Dj5Yk2Ll$@)VB,BUMJ1UJHK*M6*M,+-BC2(X##E$@2LK6PT@UBb)0#V+G4
-"P5S4%,%Y&i%%JkcJ[,p$T!S*Nd3CE'BUplHq&meBH*X30-"k&@8d#T0f-r*l["f
-&aIVMDX&EcN*GFae#)J%R1h)VHD(62dC"0-1-[66+,f(BK9j6aVR-e8`Kp4IRH$B
-#G4-T@(&4&aTl,'aL)K%FcTMqZqV91KT%bBN`T5aq!"r5##1pcBH3!"2jUK,$`lE
-j$KNQ)Y[BNQBL`S@r3SLRaIKP('8jYNbp95[SZ'G6EFY&JJ)mR@bM!@8ZCJaRf!Z
-LKE5jcXhCPSp&PII3i)YH,D(%NqiU**5rBfNGPKE,#D11*BalKiUpP'"fB@U,r'U
-Ar'S,6c5BQZ0-0KJ#2M6(,q(8q4)1KTHX9&U4G2l+-Vq%"Uh`l)4$bmLNMEc0*A`
-V&CG6`@fpR-$iP[mla13Y"S*PY%aE`V*Q)Yk+a&,lfQHHM@c)H9p*Ecj2HP$TM#N
-2XH`C`k)++0L1HFEF4`+*L`H'jY'3!$`Y@F'3!%m-56qMYhkeI+JAL6c9Yf*Q*`f
-h4U*P`(f*1U%4B+qHLJ[UYR3*ecNF#!QFNK6pB!'3!'pd6@!bhX'B##Ap%L4p*%d
-HdP$8b9#4j&G[HJpiVDU"4R8UN`)1X)T4IG)mC)ZkFc`E&9*I&1KBf8HX4KH8L[-
-$'IYP$1EmmKfKfmhM-$d@dd1fU0(H$)CkbfP+KPfKe9GYapCFhAm35L%CCr%ZP-J
-m,j'DFTI'5&HaX$M)`Q@PFhUPFaUKdZ9MVbYPC&UBV2+&L@jrd)h$f4pm'%cG$J@
-h$$T"Np6P-p30NPNe-JR*T-HR1M14C+Sc8'XhGTM(SC`Ck`bYrX4fC-dRq`rJ1!p
-aXDkNqjKmR"@GQZ-VQ1-(f((UR00ecQNFTp0hR$SCQADF&DV'iL!D!a`&UY%T$(#
-%-L&-VQ@m"qP)KJj%DTNYelU&8QUTI2P!`P,jNNh"(9A$j95qI#$4Tr+P6jPl&bR
--%9-fcQ8+U8%NcQ%BHl+Cb46(,KUb`map1BIZ1"ATA(%AM&S&@A!D&4[V@V0%@Tj
-MNG$U9%dF'eC&Jah3`#Ieh!G[&8(mJ2UJrRJJCXYYTk$CM3BVL%C3YaGkq[h*D+U
-b6j[K4-U`qU92-9"6jYCYQhm8H#*1U+&-DXrbp-FjDNGIU)f&qhp0EXUZa'b&[U2
-!@3F0ciLMDJ"(5X"JA@l%ZVR%-aD(UD1`)dl(e&l'(Y9I+dB5IS5rp&ZBmHC(IXD
-@EZ!#2(-5C#k1Q@iJjj%jBqRqLb0ST(R'$,YX2$2X&C%'bJUSLqp1HbRaJf%FIq9
-VcdD,c0M&-d1YJ$X`3Tk"%T)(Uj!!i5'CN!#p2D()F8lSPDe%L"aMl0`J)CBPbAE
-+YMU"M8m1Z'qhF-A!&Rih-X#&*30Eq'rG!eaB2l#&Z`C)F0F!-q)Hl`!ApJjXiFf
-C!5im2F#&U`HfF'Ikb5kN33!jh3$qNlk'84kB))691-dEaP-k'UP42E3YkJ3,AET
-$EKD(RCfPB@GRb@!A5P&hS8)'Ze#6FUH0QVSC[4A9RDfUcX)AfN!T9MPFLN'5kfM
-a(h9YN!"N9iJ'TU!lm$83Iq'UZCq'p64b&5rUS"LRI@$*Ep("TpFq4I@(dEcrGSP
-LKHJZTqJZ,KTh4fUCm`k'VTQ,SSPYTB-pFjB"ZFiQpVG,0#,XJ`hJNTAIiS&468%
-CL(B8cF)%UJESj-KE`PdQe6C((pRcKTBpmG$U@P[9QPU!S+0kX-p-DSTVfG(%XU1
-9CG)Hjr3Hjc3b+Hl,T$ebae6,T#Er6(+#,MR)KQ`dQTP`"TdGeP4'G[1+pfe4PSd
-d@13!-T)2'&QT"J!Cd,*ERYVG"p#bf`*SF5jR*!li!5eI1!HJbB0@%3BPlF-!AG*
-9bU3k$"3H"Y2qB4#h3R5A8h3A&p@RSDLIC)%3p!9#h(V!2a$@Q`S%a6m3eJm`%**
-aK-%PK)'4EHi"LmePBHbhZ3UjUGlFpBBh9`XYhIDJ4A$*e5H6f*iQG@La$GZM$LY
--U3RZi8QRVj!!!KPdS0`9JAlGTJ#`$j2C11VHb88jIk4"I3l&GKq"rJJXaDDJ#'K
-ICBZG0I%jrc8-!TNKr+m0J"iY!")dJ*30"CB(eeEk3N$1rUdY6rQbR`(c08XhdJ#
--S36-TQ,S#4m%i4YqJ3%AerEZCEGpl0E%ERHbfahXpNYfDf5hEl2EAHcf6GcQl0h
-*ERAXYTEG9V2E'RCEJ9Ykhd2XPQ5hapNYa@lVfBdTpC,$'04dK5Sc8AR*KRLV"aH
-L!6H6!)EQ6+!EeD2$X101+cSDbAf9U!i)KP-YpqRfUAal"H[L9(MZBYf8#@f`&4Z
-8cJmpK`mlafF8Rehm8eBZ,[F($G3$TSDqC!1QB+l%991hNRGF+H(iGc(AQPN$@KH
-q@,Q"'DTGS6@P%1le$mDeCTE%ERB+$fZ*MB3Ib9[,!Z@rP,%U!)F@P'[04)S#KJ!
-,ji,jQK-iaN%f21G,hr!FAeHE4)YQICdb$[3`8pfX`iH0BJe@Dj&ZKc'&P%eMFQ9
-SUYeH1`U$-hSbFDGRf$HSTV9)!`,`BjY2%Cf5Vci*Klaq"!eeT+FH8dGD9fab3Se
-ZUK2GCkIfKYbT2B01EARF*Qp`e0HK4D'JLHiX$D+Q!aq'-GlV8RfY0Y%"eAdk+!V
-TDcd(b5ddrP6CNQeI9*q[Akc2Tq,34A0BF@Jqa2,[[9N@1dHhi!j-pY*!@,fQ[RF
-U[`8r`f%HaKec)Jbj"GSXS-dLY28qY&RqD#-R-EP-4VZ-S9ffB"9hG1kFJ++j(c'
-$')DScCe(2erSGEii4aA8V"-2`a*Nj)',Ra)G')J)4ic--%qd%PZeh18EL"LlkF9
-$)KLCY9@BhCp@QKrG(UhCkeaq,M,,c%jm6NBPD0J!)HXEP5e*3aTK9Q0)MBT-'F"
-FK$q#Shi)iZC-*E,dZdNbSKSiN`!6@*fd#imTa,r6%"-cSUS(Eb+GirLIiRP2TZ#
-[-&@8`Sq8*iJIcpYqTSrE2h4(2EZeJKM9JK4Em$aEm$aEN!$bAd"XlX&UF8CiFHX
-4#K*FHH9m-C%lAbLB+KFAk("JJ+Mf8%i)fI$(J@Vc1!VIqp(J8-%*&L*S$f,J2hf
-F#4F!`(aL+Kq$d@2ECA-E5'3+!MLSi!-0#KN-mH,"#!UUbX[aJ)1J@1G*D!JBLHk
-C@6)"$HERj`"3He(mF%C*!Xd8`&fPcq8dq-[5T@q3!%[kHR,)cj&Xc4(RiB3mM&X
-10K!R*U'i*l#*SqV-PFecE)%K9mV@p6"P()@CKQl+m*YCKRX5hkG(3ca2#*J`(Qb
-!$,kJKF'D*+allij0L0Y&mN0-dQZfUChBX0$K+%aJA%JQp2(d-ea)d--JNX4XC(G
-V&H&QCNXm'3$qLNFK*c`1(pPdJLpP8`lCNB5G-J5ED9XLb)a!JLF$fEM+#6,6SJh
-9M*5jB9#JKSc%a'QVD#QU2dHej@8L*j'@e4PFeMJfMjYQS2$P#10K9&3Kml4YDSm
-F,TeNQqH!N@NBm5!6#fc)p%Zd)5GeE)JL1XPjjcDN49*$Q0EjKbfdCRdXT'hRN3Q
-I#'hPpkZ5L4Bdh'5f`CGS0HHB'GASQj5Ydml-$U)4CeNmRU&3pM$3jB9DRRQH+@G
-'aj!!X#AR6c+fhbmES8Rj'I$J*MEHFKj#&dNYk#+c@NJ%,%1Q3@-J,`LqlC3!0Um
-@2CiHMB6,34XC'29E1U21j%59#Xd&l3GF5Q'V650+XJrRYMQ$*,[2),QJ#T*X*rQ
-2a&-)P,"i+Jff"`DI6F[FCq0L4K8Z'Z,dC*qSZe5S%dl8&8!F5SpUaSmdT-aJ$S9
-3!9KF`[D45*3RA"@ZVCjja&DdJr6JB3-JH8hE!%l1-kTf!!1K`b,Z$41BKXDaN4*
-F),Y2CS$XM4dY'hpRh*c!"UqV5`B+e#)`6a0l"ip,mBbU-J2'IVU#FNMeU&P()1'
-Aj(&`,ZD!PGqckL!"fI%hr4XCF[9J-ff8KH"lB+,'-MS#E2-k%BCZZpZh"AED!M*
-Z`PiIMQk,rZ+0C-()mC'U&bV5"EiAjFmP%lBUHi8K9JBL$Kq*Xqra(bm)MEda*ki
-`TT9a(m12"[EMU*Uj6@#l@0)"@hYV%f`03ri1GZ*MqrQcXFi+Q(C"L1K['c6ZXUr
-Tr*AcqYYJr"$,jFd"(2(!Y$3qUr&j&Z$C'46qp+!3m3bDQKjQ31X%!IS@lRNhl9l
-6HB#0Ce#ie+-PHCS'J"p%D-9Cm@+#'HiTBim(3Q"f)Z33R$Ff%C`2!F'e*a@DhHV
-*&jcXM!,fY)Q3!$dYX"Pq)HXIa(B@a"2"rc'f12l"Bf#,Y1!QK(*F$ZAPP0PJL@F
-35U@BZ%YMNf!C2IP@9-NTljEiJX2RZXIS2Kr3`fr$-GRSbdKMA"X+Qp3RE6#`d'Q
-&d!8[KG2dB`SS#ZGXrqhd"*XUdYqJ9f$P$KM"PPhak$i@h)80pfI##1d8#mp5K'F
-h!6liG&0i6UM#8jrqDLX+ZEfZ`hl-219$*!GKKf83UM+A!fV"E8IX8Hp$UV!Fi`b
-cRc&S2F9BDj&IN!#4d5Dh"Y,'"31j@UEb89V2!2#@b`a3!f!@F'KJ@XH+b#`-K&4
-4YX&8#'8Q-ATQ$!j-ZPX0N!#!+%0qd%a'c`b#BZpT!BI-jFeYVBV01G3XeFQ3!))
-qjST!5h%K,*j4%d!fb`!l'GXUNkZe66DF-K0!jT6cX08D(J,5ciN,4mHMri3#eH@
-21-DCkDYaQ,l+Z#q*jr(`TNH[5jY,b$"-iK*,9KRp%KlQp,Pq+`*lV6MM[53ZI'(
-P,rR4B1U6IUCHJ#P8(FD%Y!kEVC&hf0J$)%k)(!!mqLq1DU!1'Gd#8@`R3#qC+"*
-AbYP*85b1@+ikSR1"Z--m$M!LZdc)!3"@p)lBpj(3%9ba(G&!YCBYKd@J50[iJ%c
-QX2#id-6f3i@Kr'a+rVa`0XQh$`!&T[)aKB!kme8PK6L5GANqZKq8X09CQXl`Rc)
-VNY"TrJ8k(428&B$*-64p-#"9b0K1)T!!hFG4')#iri6Spf8C(PEaH6LNK+%d"P!
-44Z9`Bf%``bUqEYF-rV'1&m6`1$&@F46Q5pL&-9VUPL9B0G2R*!LfRBap5)qRS39
-I9GULkF`EZLFfp6P#E80ZXCaTK$`a%4Bj!'A$iQfcrPEdYQI-SALbYDSikUi+*$q
-S5Qbe9hNf)['8kb'Ae#*j3qGblPR`(e%pG,meqZ'aD(cGkPU)CZYErIpKfBUbfiY
-,Gp(V$*[BD!jpM3I%"6*!@ZVCb"l!!dIDb)"-dh8A+J1S-rB%LX&cZLEGb!*@*)8
-0qf1$qF8rAcier1CPaEe[UrRC2aIH"b2G!-T'kI![e4TGfNYh[8$9Ak$9(+Zml!%
-V("SqfHdZ2(P$FArRq"q2Z`Y42@"rN!"9HD3cPqK$GbpP$lr$$ld3j[$A`p"90KR
-FTNk(6!#GaFP[&[%1fhT598$M!$ArL"9+0m(lEX8`J#55MJ19QF&(Tj&Y9+#rAZ(
-Cj[MHMj!![1c+I#D8j#S1q!cL%i-)&&Bjd(m0i[eP`m@&aZP2Yd`8i$LP-%MBBak
-[,)9*1`*TQ9'CPp*0&HC3C@'d5N&b8DlMB5+abN,U5*c-h&IP'NjlMG2[Ee8[f&Z
-&"CHM&FESrSVZBCMmBFU!MQkYmdQK4efMQS`jXjdHZc582XZVTDMbJkSJUGTPmcB
-MUPh-ikp@XJS@0Yh5R"41dA2b5mIVH%J$'Tja"Kk,G!kIi"8e(DfSjJT0ADB1X0B
-K$)G1!A(cSXeeB+MM&2"!'Z,NhCK'&8!R"b4JbKJI+2k64P!"ESiK8G@P#bKiRV8
-LH*C4*GAQZP2M6J6Rp"!4SNG6%BYR99P@9%b!%+Z5U9Rl)Qp1`J9DP`%J844U8*G
-jKjF,QYPMU[T'`TDbDD(cT3#Kr"Bb`ja8+5KIY%D1%Pfl"Uke,&d--'Qe3`m'8M!
-iH3fAH,U,$&+#pIa8V'1-D&dki5ipkA"1k@+GXJjQ+FHGjPbl141J`KXeNaLTpfF
-5l33UI3+N)NDXBq3M%F3$K*iMjr'hAIUST%3kLFXldRq[qq3h[fP0[#IG)V@mp42
-T`"`Tlj!!6ITaBq1q6cq@rNpMSh6Zr,[@mi@e,4qZGIlYA+[kZhRYkTD2TEC2([R
-R*GUIG*IdR4ppI2c(Bffkp-kK0k6!rFIEa[-1e8Xr1[6@SAGr,'dZ,5cGr[3LDD5
-`G"Rlrr)bpGr#j6YHq9KkjG$[$he`jHUb0G,#qG+laBF@AENU(Ibcp-2jd[Q[fDr
-@VG)Rak9h'Rjc0DYqp3mAVkQGpr,LdZ2(5PmZG4eXkk(RAA88rV#M@[U$02PBrl8
-&*DPPjFqP@k801pFH@VaLPI6YUe,$dfdAk!!rP`)2rm[2TEmXP)iGq[h2TGb&8R@
-ae#(GY&$bI#dph2D3!26d`eIE,XjTZil!5%TC*9p+#prEX%(kI&lT[+`IcRPrmBU
-&+cjHXRMl[Jm@r#jIQXQ9TVGGIAAIb`ZPlhh``8pHId2km+fI[(CecU+I5YE'IIZ
-NK8G+Vhc`h[RDfX,c4ckaj[lX%f[IrplYHllKb*&hTHqmmYLh!2pDXT!$*2cKh[+
-rT9qrh2E%cN0rqV*`bFihT!ET9&[4paDeI$P2@LLPTApi65TH*[e0qQMe-UR-fP#
-BHk5`)ZY)kI(m6kl85hrBr02hT-1EVr4+IhJh9fTYP+5A,rG+F`jCRjBm8[1KcG+
-pLjpHqR[TciGQhT*ZqkAdpk`2T,B'kCrRAC(ZlTAqT9RkIh@[[)r69lhId($XmR(
-*PJm!N!-B!!!dU!!!AdJ!N!-)!*!$)!!!2c`!"kR`!*!$#PM!!%U!!!"+J!#3!aT
-Z!*!$!AB!6R&+JfBL3Hd!)#!m2c`!!#)mUI!!!8T"CJ4+3'F+5%")35#!)8%!"%+
-R3IVrcY$m!3![##mm!!!CELm$B3!#V&52Cd"#1!TH3UF[2%4"9%%r2!69U"p`!4(
-!#Pj+RfFB6R%`2+P`TdC$qJ!U)SK"qJ!J-$bTF+C(5S0R"(!"6R91l3!L6R&+JfB
-#UI4`!%jeB!B!N!8"6R%I1[rf5KpQ%NMRi1""q[rU80"1ZJ@Z60m("bmkrpj1G@"
-b38a"4%4$69!!!`#30&"b3@e)jf$`G&#I`Lp)!#!J6b*8-@N!&!!B)8!!*$&m!!%
-!,0+4)8%!,U!#hm*-h`m'6R9+1!THC``J+J!)C``J3#!3C`B[1[q%6R9)jam'3IV
-rRR!-)LS!"-+i!aTKT'B!!6j)H[q16VS(EPK2X(Vr@QB!!3kK'Li)##S!3!!%C`B
-JH!+QS"XX+J!%+LS!#"JU!!5Ae*A8)$Vr9U%H2cJ#)'B!!1a86ba))$Vr4#)'`VJ
-$'PK"B3$r6#!krcc!Z!-D3IVr1##!5S9Q"+%LB!3J4D!RCJ!!Y#T))!j3J%(kr`J
-JJ#!kr`T4J%(kr`!JJ%*R5(S![#m95(Vr!LmkrZ)[1[lL,cVqbLmkrXS[1[l+B3!
-06M!ICb!r!%U&C`JJ6D!US#YJ"#"0S#-J6U!I)%HJ'c(I!L"JB#"1S"mJ4k!EFJ!
-5"1F*iaRN%3!"!#!#!3$J)%fJD3)!!"q!!5"0S'V9e0I83IVqGNU3!'F)F!'JQ(!
-$S*JJ659)!!K`!%cIB2K1G8cIB2KJ!2kq2`!J6U!I)%HJ'c(I!L$9e0I8-$J#)$(
-!#Q#4b#9)!!K-hf$i6R919J!!51F!1#KZ!!a(q[iU4IVq+L!8X**Y"#!5+)"+J'm
-5)&-LEJ!)SLiJ&0'6NC*`!'!%-$crf8cI(!"1ANje6PErb%MR(MJQ,J!)+#i!$#K
-Z!"""q[fk,8Mre%)ZrmLK'Le)rma96kJF-"mk!!a&!!"[A%KZrq``"90&2`#S$e9
-2,blrl+J0-"mm!!a'!!"[h%)RUCYC6bmZrq``"P0'2`#S$L!I,8$rm()"(`'TQb"
-Zrr"+N!"R%&92,`LTTM!I5-"b"-#"Cm3[,[r`UD0J["!Z!"4R#PP2,VJ#TL"IS"X
-r2+$m6VS%KP42,8$rd%U!C`!"RLm!6VS$ePK25J"R#R!"(8!!&Nlk!KK)E[rN5'l
-ri%KZrpK1ZJ9U6qm!$#!Zrq#K(Le)rp`J#'F!!@3J,[rNS4iY52rS)!KR!!&8,bl
-rj#m)6VS&Z&"2)!0Q!!#Q@8m[2%024%9#CkJI)"mY32r`5S"R!!#1)%!L8()Bdm%
-[#8kk",4B6h)$X%&QGL!0)%"`+0(!,8Mrp#*Zrr!N8A!BeF!Y5[ri,`T1ZJ5k@%m
-Y32rm)'lrm+!T8%SQE[r8*dS!+&P2,blrm%kk&F`J(h,Sd)&4J#G!!#a96dKkrM)
-[,[rd5'lrr#m-,`3[,[rF,blri#mZrqK1ZJV'9%m[,[r`UD-NE[r8*@lrd!!-*@l
-rh!!3*@lri!!8*@lrk!!B2cbKQ%kk!eC86bC!2cbSRdkk!dT86b)!)!Z`J@B%F!"
-J!R!")!!P3!!F*83!)#9-!#4)H[[-2cbJr$mmS2a1ZJ,i9%mI!%kk&9)r2+'B6VS
-$$&425S"R"(!"S*JJI!!!!9S`%%M!i)"b"V#"CJa"qJ#Z)R`!!!-m)SJGI!!"rmJ
-JE[r-S"Y96kJF-"mk!!a&!!"[G%KZrq``"90&2`#S$e92,blrl+J0-"mm!!a'!!"
-[h%)RUCYC6bmZrq``"P0'2`#S$L!I,8$rm()"(`'TQe92,blrm+QQ-"p)`()%`)&
-R##mZrr#TSQ$#*'lrm%U5Ca"96bm+UDB`(dM!FJ6!J@HU,`UTSf#N%#lrb"e!!"C
--haai6PiJAdr[!!j1d%j@rra)j`!`3Llrr$mmS2a1ZJ)X9%mN3%U!Ce`[!%kk!B"
-B6dS!Ce!J#LC!)%![+!!-2cbJr$mmS2a1ZJ(H9%mI!%kk&$JJ5b"S!"#J(b",)'J
-!'+!I)(`!!!&D-"")`1#!FJD`J@B+F!!JI!!!!c`JJ"em!!(rr"!Zrra-h``!6Pj
-1G8j@rqK)jami@8qTG5!I+J")E[rSU(3J$5"!)""bKY#",8$rr#"!A%K$l[rX)YJ
-Lf&P2,ca%394"2c`%eDQJ)"mS3#"!*&!b+J!)NQS!"$`"0#S!"T4U!!)q!MBZrr*
-)`cJZrqj)a*D%1!&)a*D%DJ*5Jq+$282rpMBZrr")`cJZrqa)a*D%1!*)a*D%DJ*
-5Jq+$282rp$BZrrE@36e$rrSb,[rddN)p3Iri@8p#TdKZrr4)HJ"QFJ%I!A)"2`&
-brbm"3LG#TkN6)"mQ3#m!U(-'K3#3!hJ[$#",F"$4`#m)U2CC6kPe)"q`K@3#B24
-96kPd%"pQ!Q$fF2mr!%*R)"qJ-Lm,U43[$+QM,blrk+Kc60mFq%jH6R8!!J!!6PB
-!!%MR!$!NEJ!))!SQ3#"!)LJ!!Jb"38a"4'B@)LJ!"Jb"4%008'B+-#J!#R)$X%&
-R"(!!B!*`!8cI$!"1ANje,`TC6cmmU'j`!4m!6VS5H#"I*%KC6cmmUQj`!4m!6VS
-5CL*I)%Uab@B'-$`#!'!%-$`%!#4I6R919J!!,`-f,J!)-!0)`!+!!!!)!%U!E`4
-`!@!#F!!Q(djH6R919[rm51FF!$BZ!!Jr!dkkrma86ae!rrab!E!"CK!#3`Ir6VV
-rJ,"$EJ4`!'!S@8mr2+LIF!%I!%kk%I!J(bS!@8mr!amZrra1ZK(J)"mS!,#&CJ*
-`!%cI!$K1ANje6PB!!%MR'$!i,J!)*'i!#L"+)"!Q3#"!-K!-38&%CLJb+!!#$%&
-$8QBH0J4brlC"CaSJ+!!%FKMLU!+!!*!$rc)$5-'`J@F%F!"J!R!"(8!!$NcI$"K
-1AL"IA%p1d%j@!!"96dKZ!!K`rcm!6VVrNK!ICa)JEJ!))#J!"()BiUJ#3!$rB!*
-`rdjH6R919J!!98p)EJ!)F2mr!%kkrf33(fF3)'i!##!S!!3#J!$rN!0J!R$r6Pj
-1G8j@!!")jaJi*Qi!##KZ!!`J5c#m!`&`!#4-*)!Q2!!!!56ANJD5!!!#5!D5!*!
-$)#Jm!*!$J0Q5fC)S2!!!"*!!fC,ANYQ5"T)!N!0m"T)!!)!!F!!NEJ!3*)!'NJ#
-3!b3'NJ#3!b!'NJ#3!dJ'NJ#3!cj#3%cI("K1ANje6PErj%MR(cJQEJ!)+Li!$#!
-,+%!Y32rSF#6C`#e-rqa`)0R!,8crm(")fF!Y62rdF$lC`#!-N!#,X)9M"R"P6[S
-!XN*!2J"#3$e!rq3f"h!NYN"N5(!%YN"N"(!!B!a`!$!$@B"U!PD!j)"i!$J$,86
-rq0LZrqJN4"5!)#lrq0#!d+lrm#"!-+lrj(!"&"*b!")#if$4E[rN8NGJX%*!2J"
-`!6`!0JG`(lC!C%4`!EC!C!4`!'!-F!!`!e1!DJ*5J1+!H!!i!be%rrcBV[rX*%3
-8J#!Zrrc3J0#Zrr3J3$#'F!%8%R)!%J,MB0a!8NGJY%*!60mFq%jH6R919[r`51F
-I1#4Z!!JQEJ!-1Li!%#KZ!"*#3$`!-J9`!$!"d)!d"R)!-J+`J@m83N!d"R)!-J,
-5JG+-)%%`J&*'B0T#3$`!F!)p32rb0JDf4@3!!,K#3$i!3N!p32r`F!!`!q@!d)S
-J3#!3,8$rp$)'F!!`!G#,)%!B%(B!&J5f4f-!!))`,[rfFJ(!3G&Zrr"`!$!$8i!
-d"h)!-J+`J@mq1#lrm(B!0J3Y3rrmeS2@M#"$5P"Q%L!Zrrc3J0#-)%!`V[rb9'l
-rmM)Zrr"`!$!"d)$3M#"!-"!p32r`B"B`"G"!d%Bd,[r`FJ!b!Y+"dS`J36#!8NF
-J,[rdiSJY32rdB!$rE&*'B!$r4%cI(2K1ANje6PErr%MR($!NEJ!)0Li!$#CZ!!i
-b!h!!-!(QJ$J!-!0b"m""1J"`!#e!rr`d"()!-J,5LL""%K"`!"!"0!9b!$)#iU"
-b!F#"dDlrr#)ZrrcMLG+,)%%b%(!!-!%Y32rm8N8`"A))X%&Q"N*!1J"54$)Z!"*
-`!$!"d)#`V[rmB`*JUK!Zrrm5,J!6dJ'3!!&-h``i6Pj1G8j@rra)jamJ*'i!#$J
-Z!!`k,J!1-J4`!$!"jS!m!$)%G!I#3Mi"GJ!f!0D+)%-3%(3!&!!Y3[rmF!!`!63
-&FJ!b!Y#"jS"b!V#"C`ab!E#"Cb"+J'FdB$)d"R)!-J*8JG++)%%5%(!!%!&b%11
-SJDlrr$3'FJ!b!P+"dSSJ34)3F!!3!H')JDlrr#!Zrr`d"h)!-J,LU#e!rra`rh)
-J0J9d!$3$NS,LU-"Zrrj-h`6i6Pj1G8j@rpK)jami*Qi!##KZ!!iJ2!!!!564VJ!
-5)$`!!!*)dDi!%L!Z!")Y32rXFL$6VJ!5)Li!%Le"rr!N2!#3!i$9VJ!5*#i!%Le
-#rr3N5aJ5GJ!@"#e$rrMQJhS(aN953ce$rp`Q,[riiS0k!mC&9%-p3rrQGJ%k,[r
-Qkf-p3rrSIN$)"h`!(!3p4[rLH!(VC&0%286ri#SZrrKq!FU(C`Kk!$S%8i9J!RV
-r28ArhRJ)286rj%T'CdB[,J!5,`!r!e*+,`T1Z[mk6qm!$ZG!d@lrj#mZ!")[,[r
-`2`-[,[rX6VS,#%r[!!i[,[rd2`-[,[rX,blrm%kkr+a2l`!13N!p32rB-#lrf,"
-Z!!aN!!%k-#lriQFk*%!r,[rS,blrp$mZrq3[#dkkrBj2l`!-%J!J#R!!%!%p32r
-DG!!d!05Zrq`J3K!3FJ!5!00Zrq4J($mZrqBr,[rN,`Y1Z[h`8%mp32rD-#lrjY&
-Zrq3`,[rDX'lrhQB@-Llrf&*ZrpK`!$!"d)`J3%)3B!$rHM!ZrpU`E[rJCJ!!P$!
-Zrq*R1L4!2blrk#mZrr3r,[rN,`Y1Z[d'6qm!$")!)!T`!"!"28$rfR3!0!$8V[r
-X)%)3%()!%J$6E[rNB"`r,[rQ2blrj#m,6VVpD&"228$rfM!ZrqE4E[rN9QlrfM!
-ZrpT6E[rD5N"R!2m!1#lrf(B!0J3Y3rrm8i2@M#"$%"!L,[rmdS`J34#!8Qlrf'$
-1%#lrhG!ZrpXd,[rB8Qlrf()!-J,5M#""%)"J!2kq-Llrj(!!-!&HJ1D!60mFq%j
-H6R919[q-51FI1#CZ!!JU,J!-+'i!%#`Z!"3Y5rr)F#6A`#e,rq"`)0I!,8[rc("
-)em!Y5rrN,8crP#Bm!!!"*0HZrj3J2!!!!NM4V[q8F#$4V[q8+$`!N!1!fDlrP0Q
-Zrj3YE[q8rl3S2!!!"*!!fDlrP#eZrj6rZ0HZrj3YE[q8rlcCV[q8,@lrP2r8F(c
-4V[q8,@lrP2qN)$`!!)!!dDlrP#!Zrj53!)b`K@-+F'8p3!!S6[S'HR!!,J"#3$e
-!ri`NE[qNeI`!!)!!,8VrU#eZrk6rN!!YI!!!J!$rk%KZrqJ[,[qN)'i!*%k3!&"
-2)#lrk'B+F'Fp3!!S6[S'0#4Zrj!!8NUel[qSBfJJE[q3!&*)NHlrU#e)rr3JE[q
-3!*(Zrk3Y52r`)'lrU*(Zrj!!,8Mrl#!)C`iJE[q3!#*Zrk3J,[rXSLiNE[qNeHl
-rl#e+rj!!5'lrm#mZrk3JEJ!N6T!!8%mJ,[r`X+lrp'3+F'Fp3!!S6[S&`#"Zrj!
-!8UlrN!!3%"e!rk"b!")!dN&636e"rp!`,[r3d%!p32r5)'i!(#!3d+i!)#e!rl!
-N3#m-,blrZ$mm!53[,[q3!%kkqr*2l`!1-J!J#R!!-!(4V[q3!#m-,blrY$mm!53
-[,[qi6VS(ZNr[!!i[,[qm2c`"*#mZrlJ[,[qd6VVjA%r[!!iN3#m-,blrZ$mZrp!
-[,[q3!%kkqk"2l`!1-J!J#R!!-!(4V[q3!#m-,blrY$mZrp![,[qi6VS(D%r[!!i
-[,[r82blrd#mZrlJ[,[qd6VVj#Nr[!!j`!#i!3N!p32q-,@i!)2qX)'lrV,(Zrl"
-N!!5S3N!p32qB$'i#52qBC!!!`M!ZriaQ!!#-*'lrN!"55VAZrkKMD#"Zrj!!8NL
-4l[qS,8Mrp#"Zrj!!NHlrT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)QlrT#!
-ZrqbL,L4Zrk69l[rX,8VrN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T`Cce
-!!#K1qJ4#)'lrN!"5V[q3!")3F!!3!5i!F!Jp32q--!Gb!F""d@lrQ$)ZrjK`!$!
-"d)$3V[qm)%!`%$e!rjJJ"q+),J"6E[q-B!$r1!4Z!NMrQ!aZ!3$rQ'33)'lrV&+
-Zrk`3V[qCB!$r#!4Z!3$rQ$JZrjKf!$B%,82rq0D$eUlrc#"$-"!p32qD)Llrq0+
-ZrmJJ34)3F!!3!6e!rja+3'F!!-)-EJ!BriaL!!#B*'lrN!"55VAZrkKMD#"Zrj!
-!8NL4l[qS,8Mrp#"Zrj!!NHlrT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)Ql
-rT#!ZrqbL,L4Zrk69l[rX,8VrN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T
-`Cce!!#K1qJ-S)'lrN!"5V[q3!")3F!!3!63Zriab!$)#ikL1J&"ZriaJ!2pLF2p
-b)$JZrjaf!$B%NS2LU-"(d@lrQL!(jUJZ!*PZria#3$e!rjJ`,[qBX'lrdQ3!!-)
-`,[q-CJ!!M#4Zrj!!8NUel[qSBfJJE[q3!&*)NHlrU#e)rr3JE[q3!*(Zrk3Y52r
-`)'lrU*(Zrj!!,8Mrl#!)C`iJE[q3!#*Zrk3J,[rXSLiNE[qNeHlrl#e+rj!!5'l
-rm#mZrk3JEJ!N6T!!8%mJ,[r`X+lrp'3+F'Fp3!!S6[S#@#"Zrj!!8UlrN!!5%(!
-!%!%Z!(!)28$rM$!(FJ(!3G&ZrjJb,[qBF!!`!G#!d+lre#"!-"!p32qB)!ILL#i
-!8flrM'!!rcB`,[r5N@lrQ$JZrjKf!$B%,82rr0D$eUlrj#"$-"!p32qH)Llrr0+
-Zrq!J34)3F!!3!6e!rja+3'F!!-)-EJ!BriaL!!#B*'lrN!"55VAZrkKMD#"Zrj!
-!8NL4l[qS,8Mrp#"Zrj!!NHlrT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)Ql
-rT#!ZrqbL,L4Zrk69l[rX,8VrN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T
-`Cce!!#K1qJ&D)'lrN!"5V[q3!")3F!!3!63Zriab!$)#ikL1J&"ZriaJ!2pLF2p
-b)$JZrjaf!$B%NS2LU-"(d@lrRL!(jUJZ!*PZri`JE[qX-LlrRR!!-!'4`#e)rj5
-alJ!JC@!JE[q88UlrP"!3)'lrV&+Zrk`3J#"Zrj45V[q8%"!JE[qX8UlrV"#!)'l
-rP&+Zrj33%#"Zrka5V[qX%)!`,[qD8flrQNT!C`$lhL"Zrj45V[q8%"!JE[qX8Ul
-rV"#!B0a@E[qD)'i!'0('-LlrRR!!-!%LE[qXNqi!)*!!LC(!,8MrP$!ZrjTR*L"
-Z!"M4aV(Zrj4M'L"Zrj45V[q8%"!JE[qX8UlrV"#!8flrQQ$8,@i!)2q8-#lrQP0
-ZrjT+3'F!qfBJE[q88UlrP"!3)'lrV&+Zrk`3J'$F)'lrV,(Zrl"R#("R28!!+'!
-8)'lrV*(Z!#!LEJ!F)SK#3$e!!#K-haci6PiJAdr[!#"1d!"`2!!q)!!!H#!q-#!
-Q*L"i)$`p-c)!!$T$Efe`FQ9cFfP[EMT%C@0[EA"bCA0cD@pZ-$-`-5jM!!!m!$i
-J!!"i)$i`)#BQ)(JJ2$dc-J!!1N0[EA"bCA0cD@pZ1N4PBfpYF(*PFh0TEfi`-c!
-a,Q-!!%j@rqK)jami2Li!##KZ!!`f,J!+F!!`!cJ(FJ!b"*!!JA)"X)&[!!'d286
-rk$e$rqT5E[rS-#lrk,"Z!!TN(()!-J$5M#""%"!d"h)!-J,5M#""%K#`!@3#B0C
-6E[rU-#lrkV"(Baab!$)!dS`J34!30!Gb!$)#dS`J34)3X!&M!Q$B-#lrk,"ZrqT
-P!Q"b1#lrk(B!0J3Y3rr`eS`N3a)5F!!3!6e!rq`k,[rUH!!i"5e%rr6BM#C%%"-
-8J"DZrqdJ,[r`d)$3VJ!3)%!`%$e!rq`L,[rddS(5VJ!3)%%b%#3Zrr$8JY5Z!"!
-J3M#")Llrp0+"dUi!%#""-)"J!2mb-#lrkV"(CJC54f!!r`3i"hB!0J3Y3rrieS`
-N3a)5F!!3!6e!rq`m,[rUHJ!k"Le&rrcDM#C&%"-8J"DZrqdJ,[rid)$3VJ!3)%!
-`%$e!rq`L,[rmdS(5VJ!3)%%b%#3ZrrM8JY5Z!"!J3M#")Llrr0+"dUi!%#""-)!
-J,[rm)Llrq*!!J63Z!!Tb!$)#*#lrr&+#NS+`J@`H,bi!%#m-2`Br"%kkrPa2l`!
---#lrkP*!2J"J!2jF,bi!%#m-2bi!#M!ZrqT53$m!6VVq0Nr[!!`pE[rU!!TJ!2i
-i60mFq%jH6R919[rN51FI1#4Z!!Jk,J!-*Qi!$LKZ!")Y62r`)$`!!!%NfF!Y62r
-d3N!m!$B'YN9N,(J!1!-Y42rif)SJ4"!3)Llrq0+Zrr!J34#!)#lrq0#!d+lrp#"
-!-)054Q$1,blrp#mZrr!r"8*R6VVpXNr[!!a#3$`!0JDf4@35F!!`!p#Zrr!J3%S
-3CJ454Q$SF!!Y32rN0JDf4@3!!+K+3fFb)#lrj(J!1!-Y42rmf+lrm#"%&""b!")
-#*Llrr&1$eUlrm#"$&K"d!"3$NS,MU#e!rq3d"R)!-J,5V[r`)%%5%(!!%!%q!#e
-Zrq6rl(!!,8$rk$!(8dG+3'FJ)#lrk11))Llrl(3"`S+!J5e!rqJJ,[rXiSJY32r
-XB0Jd"R)!-J,5JG+Zrr3J36)3F!!`!H@!d)XJ3##ZrqK54P+Zrq4J!2p860mFq%j
-H6R8LAb"IS#8ZJ'S#3TG1d5*I%Km`(dS"C`5R4Q!#SdBZL%l4)Pm5(c!I)&p+!@F
-%TNGJ!U*(6Y%!N!-+!$LJ!3!&!*!'!3!!!ARF!!&ih!!!"$d'YY3d""B!N!-F!l)
-!%d4*9%`!$3#L38a59!!+!8TfCA*c!!%"cP088L!!!3(Q8(0PG!!!!Ij%6%p(!!)
-##P088L-!!!)Z4%a(@!!!!MT35808!!!#4Q0TBfi!!!*558026J!!!Pj*3diM!!3
-#DNC548B!"!+Q3Nj%6!!"!Z*"9A-b!!!#qQ&eFh3!!!-'3dp%43!(!a*%394"!!!
-$FP0*@N8!!!0q4Q9KG!!!!iS%!Irr)!#3#)Arrb3!!)!'YY1F!)Irr`#3!pB!N!@
-'rrmN!!%Q"VE6T!#!rrm!!!'R!*!&YIrr)!!#"3#3"B,rr`!!!RF!N!3$k2rr)!!
-#e3#3"BMrr`!!!`%!N!3#!2rr!!!$f3#3"!)"rrm!!!3A!*!%"%X!+!3!&+`'YY1
-m"+rrr`!!&2`!N!3""`!d)!!91J#3"!3"rrmJ!!4M!*!&J[rr)!!%F`#3"BArrb3
-!")-'YY1J!)Irrb!!"*-!N!@'rrmN!!5M"VE6`!#!rrmJ!!5c!*!&JIrr)!!%``#
-3"BMrrb!!"0-!N!3#!2rr)!!%j3#3"!)"rrmJ!!6e!*!%"+rrr`!!&HJ!N!8#rrm
-J!!8&!*!&!Irr!!!E``#3"!)!N!-J!!8M!*!%!J%!"b!!"6-!N!@!rrm!!!8r!*!
-%!qMrrb!!#AB!N!3%5`!3"!!5eJDfdk`""`!F)!!5l`#3"B$rr`!!#C)!N!@)rrm
-!!!R5!*!%!qMrr`!!#K!!N!3%5rrr"!!6#`Dfdl!%5rrr"!!8-3Dfdl3!J2rr)!!
-9q!#3"B(rr`!!&[`!N!@#rrm!!"J!N!D$rrm!!"N%!*!&K2rr!!!D#!#3"B$rr`!
-!'``!N!@"rrm!!"XA!*!&J[rr!!!E)J#3"B2rr`!!'bd!N!@%rrm!!"Xi!*!%!3$
-rr`!!'d-!N!@!rrm!!"YM!*!(3!!!'jX!N!@%rrm!!"Zr!*!&!3"2(!!F"!DfdlJ
-!!J"C(!#0%!DfdmJ!!`"M(!#Tc`Dfdm`!"!"Y(!$Z@`DfdfJ!"3"h(!%+p3Dfdf`
-!"J#"(!%mV3Dfdh!!!2rr+!&H-J#3"3Irr`!"AP`!N!ErrbJ!@2`!N!6rN!3!!9j
-1!*!'rrm!!AM1!*!%"R"bEfe`G!M%)(0eCQCTH!Y*ER0PFR3J4'PcD`Y&H'PcG'P
-ZCb"39`Y*ER0PFR3J4'PcD`Y&H'PcG'PZCb"39`j2GfjPFL"bCA0[GA*MC3P6C@G
-YC@jd)$%*8f9RE@9ZG#!b#90PCfePER3J-`P6C@GYC@jd)$3*8f9RE@9ZG#!e#90
-PCfePER3J0Vc0:
+[EQ&X)&ia)'*jG'9c)'&bC5"ZC@9NC@3Z!*!$(J"Z!)B!hJ(N!!8!N!J""3C6G'&
+dGA-!N!BB!$3!&!$m!AS!!3%!!3#3"32S!*!$P!!!!4p"4%05!`!%jJe6#Z3L!0p
+f!ijaTdl&mUcH4,(Q2,#(q+cH9#bRS)Kh8fIe-m%!(3BLcP*d9JmlV2,rhrHH(0l
+ClA4B!JZJSh!C1CSEIBc9-`eYXf"Ff#fYQQ'1,jP&KSEYjm6pGcSAFZkN#TXV,[2
+qG)1bS4Qe!@`Z(5aUJ)P9k@!e1(J5!34(NB2(LB1,(03eclf$l3L`iF+X%J6F'S0
+JXl6il#@GkD58+,c`852HDVRR[`kmdL4l)`0+SX-VH`PN#LR5[Prekb$B0H1"HRl
+Sb-b0H$[Lm'Y,QFJ8JNX+D&I&*,8a6r(j0cd$)jiaM1pda%d1,6c8J$XCIc6R(cV
+q1QXMZ3b5Gj+JfBF@rQV*&dhfI-"IFkGepNBLP"U2&J!!"`T"4%05!`!-+!jG#kb
+#*$lU$0r[lMJ*S8U(8"UT8H%%4d"jA`GQmk$CJS396f3i9T6&AQdmXj+5fTjY@'X
+lmI[U3fJYC+e#"@Y1,T!!K!PlLpp[GI`qaIAlb-+J@E@NcZ`ZY40E&*)`,mQbT%Z
+&%0,h1lh[a1,DFq[h"`hRjc3a!53d)c8I4Z31T3kNrfV)cfB)`E"CDAMH[$jm`Eh
+R45H,`KpKrA+I2!Tf$"FqLC@*(Uk$BF5(K)QYSFSSU$L!H&mN#)-cK1H"L2N3'6Y
+3bQk`+kPpM0MZ-2d6L91I[hfmJIfmqZj`[2rfCi2MVZ)rfm!hBF98HDNqhlQ5[@N
+NcfG2*mq%PCmZKV,&30d!E*Nmi2Q&q#FhMHQ&iZQ(CmB$c0lDEFAR$E![5(&K*Xl
+cR3X3E(iK'iRPNJXTImKA*!1$VCElqHr0a$19pHPi+$+FZc'b1,MT+Rp6+f*P&2i
+&IAXASS&Qpm)&fid25YMA+1a'aNrQF4)CK$q*5pXH#[M1AJ-[LK(UcI!caDX#EP'
+['B8h-8FL$H-6mEPR95lQe8qIR"PbRq3q(YjYi"ZANZ1jBMC9PTiVG[LPV9qF6mU
+qf[2ET56hblPYb`4m9-'[H#Ml5L@m(VN@JXa3(i0EGcYL"VkdEc`jqF2jd'TjlVN
+C61[pUBTqkSG4q!rmV"@`ANGK&a)L9,bFRJ5"$N)bpqJ#(85Ld!fVi'+bQ1GP-EF
+SLrU2C"(RC#%S9*431)3++GbQkN@U9+AE!dqcj23V-9P'qjbm,*QrjKKC5UrRNV*
+FIVhRX5aVhSRZ-M!rVM!`T6pd',c)l(!B")hq4$$i)$I9+Kr'#rIqa)0Dkr$Lb&p
+@l["+'bE$-%Q'b60-ULlC"Vr"@f`@"MiYi[LiX![AZcA8ThZaI%12UYeN6B'P4p5
+ATP%rD,851XZ(kJUZ6'pJ5@mji#J9,PpBZk!f(&dc)qPZH0'%I+L9f$k)`3lDeXb
+08lTE`%P!9MEJqaDhPZkP#!kD[U)#mG$A3$*(lA!13(#D)QUEh4a$,E6LNG%-lKP
+!X'+-ELY"0'I'6JrKeNV6Ij-2N6!$$Ym4V`l4(1Rl9r5$CE9*V-L-L+3pUQA8MGS
+qf*T$B3djmSU(YILq*'jjFekp$jY9ElbKfi6qi85e!p9IHmc5Hi*F6*QNUPbr,TX
+UZAM43D@H"Q1[rmT"2-Lq3$Id&S%1jP1LFc(Q9)HTSi+MrcmB(H,A`i*6CHpGqFI
+*(D23QV[h2p!+qJ11M5Z&rKV5e(CS&-LR+'aJe+Qqp2h-p+%2"4r1LL"8,9hPrV*
+2lH[lP(,eBX!TI)hdhLRYc"ae)ZZGfR'!D"DIQp@1$DY!$J"aIi2HNGPT"3[D"S"
+RMc@E3FN%6JpTYpf[1*'MS-AT*L-ZRqS9UAD4HJfRf(X@lFrZbj!!N@R,5i0fYq,
+UqmTRm%&Je0j#m`0hM4-CbTc9()i0peQfHDbT636,Y%h%%Sb8NX1Np@B0ikJ*FG,
+aeNF1$2Q6b(,3[S)kTm,G'GXSqML[d*a5S#"qId[pqdKV9eU)B94!(J2dAK-XV(!
+lp!IDJf%UKZ'Hj#)"AZ)JPJJ"`)MrZD[R32$hlJfHEfbd9EfhqZ6T4*rrrHq1rjl
+pMQ[r6ApehT20I,2TBQbp)Nj$mlikI0FRmGHdE-LBA&)hTFM)GZR0h()ifF)r+SD
+b+5D4N!#$ep8pZFAe50ULL115&"&q*h(4j,I4&Yl1K"jP'-Xq8r"fAjf8U*3N[`l
+R!!pd5&`ZH4U#AbU'fK9QGYi8h2DiVTC[l,(P8kYM6j2pUVmR%Zq9dTdGirkJje)
+TP+L1jKYS5KJ8fZ!X6P-q`q*1kqi25[iC&%Ca(9$qfU+#mcc8'P@"3p@(V(AqKU)
+-M#ZarpR4bl13!'Qi*Fl685e5iNaZTXl4J)NlYXZ6q@FZjNIjl40Y9ip8pq`XAli
+K6qbBEade`DPLBc!BbSBh+iemhE[5V9NMeaJF-Fhbf-+2QJr+,aIp`@$Y0K&qFN[
+5IQlNr-%Kdj52,I)C&LJE+Xl1dlJ*b9p*fB"TqVI'eF'VYL%T[qQDM3BEQ,D%p+a
+a1cFN"8aP!6lB51%[a#Sb-!L%[ES5RTL%8r,q#l4F!%CXlE"%VqYXchi3AE6pX%a
+!J,M#G,NQdlBaJQ3B-ZbK26DkBBC`biFRiYa(Mqp'SThr!iMKH#KMQL'*3Pq292p
+lheIrM8Th)pLj5EBVYED$YlQUc*k*pEIY*LU3!2h-Z$3ElGTaXkPpNaL9aCC+[ZG
+D+#5%XiC8RA'*JiYI%B95k6m"PG0U3L[KP%aGST6#m)%)4bRZ"bf9LCar-F6S3P9
+5kYKBpD[eb4&29fQb8$e''VK(eFIjY[abU#Qm(,-QcB&H"JQNM8!a'UT%(,Sffi%
++Xm+#`8*DS4[UbYFrIQXL&[Hp!!!"Y8&%3e)$!!,)$98,P+,%l'%%6fI9hG8KK#T
+VE3N-Q,3F5@6!j!5S-MQC5!B")YqKT#8IN`iP0aaj4AiQbCRmE@$"0Yj1RfPhKB4
+*-K2C*!h)*pZcBqiY3rcNHikZZ@16JTYM[DbS%!2Y$2J5,dk3!$a4j*!!l(JkrRh
+pM1h!i,9"F,Lm2$iHaj!!GR6dr"bSXeJ0,5klPS2N$lpFhZ"LfR*Tm$`jcj`A2'p
+jDdUD,e(Aq8A)h*DS*"k!q[rmh[,1DD4iS8D0NMVk&2$A0@ikiqNk,I%ki0iRDDc
+ZjklVJ@m@h+URcc)PUA[Vqkk%$qUGTVa8%C85rTdiRP1pDFkU'96Icb!ZAZrKjD*
+NJ`BULMIeM*Jce!qTH[Vf+*a56Y)@m!hC9X2,ic[H$YbNURj4`V3pV`E@q2qV0%8
+LmbGHhh#SUR[SES!XCKB14DcA$CYUpi"+Lq)5-P*q8XR%"jaAG49Q3P`Qp*+$Y5N
+`1bZD36AC19qB#`E$0U%8NP#CE2EU39RCCN@*i5`kKBi6MZS8p8203jaCI*lQ0B8
+#KVi@GBD`3LZ-'rr!JQK"Jf8,44+h(j'i,rDm$mj(!!!"Y8&%3e)$!!,d$98,h,,
+!V3m%*bHdICbfbLeFk&A8ka+IfckUi[jp4HX1LJYe1mDP$K#Aip@ViEKIhECY(k!
+9)5rI5h+a8A(E"`[V-3TF*'@dADrmPp,k3UpSbrd*p580Fl3r'j6@3[Dpm8'ZDT!
+!DSFB&c0GA*pH["p!'VA"SZAkqZ&KZkeGYK%E0UH0,m)rRDH[hrc(M9,MjjVG*h0
+QI"2pDrb2NVYD"DCJ'h"8!5Nq!PJCG!"1*XSZ*NkCXT3`@L[8!U81Va#S"FF*Q"A
+T&F04!31&UCk2IN6QaM)A#5YGV8,E(p2"`UFN3Y,fViVrHZYN5Xc*'J(T%PQrI(5
+2,Uc)#(rVm5kV-5HTCAGIiTXI6q*ci5*0e6mREq*bqr4l51GXmGFP(Ym5FXjhP9'
+,lp"l4Uk8La0r'rVVGrimaNGiSQKECSGIHqp3A1pp[,b(JQDCm%"S`FG)8QMGqf%
+ANc4F9(%66V8RYGi[G3L+9!AQ$X@hk##B'RK$-QYRC'$DeC!!+1BT%&+HTh!4hC!
+!'KaQ-Ckl&Z'!TmLDUB0j+4ENcMkMK+a))HmE(rH)EAH)@CQ3!2CFlI%8!J!!!BT
+"4%05!`!#Y!e9#j`8aI94!0mNH8NDejTXll9CVF"r6Th+90rTHeCq&GJ+[!TX"3#
+q9SffYEQjEqk5GGF+$"2C%3-j%-eA"ZIhc2'6(lNrGdrX5RCcE(mE+%ILk9RiqRh
+e!Z5,SM15ch`Grllp(9GNV`dLYmqa@6)fpjiTl0-[c6Xd+Me[@V()DAEKh21Y#UN
+qU@Ra5mjF6fS8(U(kIrlSqC5N-M`S9@U8K9kb[Y[U+J1ZCC&*ekblPqK8fl!X$AT
+FZ"DR@m`PY'PVbb3IaC-8ZdQ%a#6r,Yc2&&Fa%c&!V3d!9MZ$9iYK#JXN"(GTV)9
+c8ZrPD-'j@)Pq9'rN4@JI`"k$j%M3Z[)a8BYS%kSJLrD&$fq!LF&ZKA5UKXGB216
+r3mG1lL"BY8BUb#KfN!!!M9A(4e4N#2B(25`c,4Qj6`M-LR[bN5S3,)YFLP13!*K
+eF(&!1ShC3+&i$`YSficAp!VDL6U1dX*Y(VB3#TMRDT8""j9(BGhq$aK8c4BFHKK
+5Z2k-a1[iY@Yf0!)!!!3c384$8J-!"RF093e$)K)4jPjZ%'3Y'84UmN3N#a"CUkB
+Q*lFpLicJGZI)5EFc8r+CIhHrlpZ+2"[Ic,He3*,9cZc*j%RB[MZ6%C,P9Z5*V-M
+[(j%rNjr*[0R@GK&*&K1b0bh*)LK!iJIr6PQ'N94%1+J,1hML*hBK,0+!l9$&S4C
+f%PiIcijT$+G2[eNUFK-MbHfpC'm6p0EIcBDF5mJT4aqj[p)@X[AQGIR'*!P,+@R
+BhU3A&C159eN[%2cJbH(#&ajm5X-QD0&L4-VGcEkQ`r)XP,P*,SMR)FNFrFAJLaU
+$lM`9cA8P820dQ"q1j-RJ+KhQ[L68+ciKBT!!RHr$(BZ5%%MI@aB0YUmG+cH9Fc#
+*FlDI2+6+KXfGMlqi[`EXLf[bq5DTS"GBJ&RSpE(k4UNSE)5VZ#(4a%4T(NC4T5D
+'+#Hca)G5#DG%eC'a54-U)Z$aJ`C3q')!Y4*YQG#!*634DR+,6CR$@+QN(kF-V(@
+SLpVJf!+P0U0c9&M$',E[r55!`Li$a$PLQ,KZKIc2X5Gal+,YACH#6FZ"UHV$eS-
+Ujc5-Gh6@aB"d'i-,eVDeLc'L6-mKjM,F%r*FlYZBmf)r3FhBZqB8*mKFDkBmH&M
+*CEjpUU5NcqMUMHZl,G$)FrP&YX*lJ%6&V")5fb&&5#AJ#$hRCZLJ)NBKdc[fS@l
+c&8+41k84G`VH8bAIPL!j2GVYU6-RjVbF3lRZ&DPJc0[DAFTb'rRhYdi*$'iYhrb
+A$q+6*eD"#2hXL3&E#6aS*Xkh8XD5XZL!8d`D3&(YeTiH)j,QXMTfCIrBQ',QaYK
+L5NVMZKb[jqBq*1K-Xm!cl6p*FZL0,qj368Vlrpap[%LPH%SI@AC!''TAaj91(AL
+#-@"3aPPimHVhYlZRfC3AeqX$cDJ8$@fJmqd&j*@%XYf`G)B2KUU3!"Si!i4'pV`
+UFE3TZ%Vi1,Y29L@qKkdk$`8SRBhC9E-k+AX1V!#*JeYF)Z3(X`,GA!A9[Q0'IDa
+q[E"flB1d$rZ$9epp#4ZUUbq"F")bcdZiN!#&AS+9c([M)*1*kmMQF"*$DeK5eBS
+,0G(8$DlUGG,@)I*P,r@PJf6iV!k3!+U,`iQMEf'*D&FHY3@1%H!C2CVf%Lk!`1`
+-EZQV3EfDc)k)alY-h[lIZ!qhTr,*MDZ6TKGp,[+bNp-`jPQCpEJ64GUkaD!DXF'
+80&)2BbYeEc[GB!TTEhMfk&f2mYQTP@l1bb2j`E4mDbafS5aG4rV(QBS,DAF-pIP
+CbZIRk[pq5'N+mhpAIXl%CM(qp[IPf*a9Cbj2D@i@qUC8h'a@H[,JJMDNfrH5e-h
+a@AMdST,jr-qAljL($06eY9h'+bI[Gal`F%%Abe@eJpQRlELVUi0e"4+H`Fl,5pZ
+Ha$lSC'#l'ZAeThN#F3DQm&#m#9iTh-1AH$!(GljqYG"C`e[Aj!i!N!--#e9Z8h4
+eCQBJBA-k!*!$#!FJCQpXC'9b!*!$2!!&"#"[CL!()'PdC@ec,J46G'p`'dPdC@e
+c)(*PE@&TEQPZCb"dEb"9EP0dG@CQ1JY9EP0dG@CQD@jR1J#3!be"4%05!`!!-!e
+,!eYX#lGU!*!&U!&ElEm'"J2`%G[bI`KB3XQ2"YBE-CF6!*!$"J#3"3d!N!-r"J'
+!!*!$"6BZ-#ia-MBZ-#ia,#"$Eh"jFQPRD(3JU5!a16N`,6)`-$%J3@aKC'4TEL"
+6HA0dC@ec,#"*EQ-Z!*!$)JB"J!#3!`8f,M!Z-496G(9QCNPd)%4PE(9iCDSJ0Li
+`,M%!N!--!#J!+!"r!A!%Ve99!*!$)"qT)$%j16!Y16JJ3@aKC'4TEL"6HA0dC@e
+c,#"*EQ-Z!*!$0%&9Fc)!N!-"5801)`!$!*!$J!!"!)%!!J##!!-!JdC548B!!`#
+3!i!!!3#"!!)!JJ!$!)-!N!-FBA9cG!#3!`&*3diM!*!&K%C548B!N!@%!*!$&`#
+3"4!"5J!!!3!!C!!!!4)!N!LG384$8J-!!+J0@`TD3!*hq"a@G@ITa$j8l""l8cG
+eGYLKMlFEHlVGQfq(XapX@&9L959B9@)pKKe@"3QS+DEi#q$Kbe-!CQRmTQTq!Zi
+``mf2ZkL'Ld9k''%[lENXFkBX&8b2crC)HHcSaD`df)"XN!"VQK,Q&'Q)A6F&@rG
+%"d@fP0"GLc#jbB*P-N%ak6ATZem5+jHST,h!2bF2)QX!N!1I384$8J-!!+S08`U
+F!J,[eZ8-S,kJP[&E'CpCQD@Y&Xr+1VFhGlAHVGZca@qF!B!"!'J!B'4c@4N!!`Q
+S+DEi#a6T`jXZT(iHTmIX+fkNG)fEVG@5Ne4'kQM[fe09jBc#*)clFhe!EKZmQ"@
+M#m+PF)ED5!k,d6C0(9`f!!X9GM$5Aj03pe-%abL$LY'cdGq3!#CfI@,Tfflb+rV
+M'-Rl$J#3!d`!!J#3"3J!0!!D!4Z)'e"XC@&cC5"TER0PFR3JC'PcDb"H-#"hDA4
+S1J#3"JX!#`!V!#ZJ!J4,!*!&(3!d!#d"')J#AM%!N!-k!!%!N!8f!)F!5J$""!*
+25`#3"3)!43![!6q)'9i`)'&`F'9KFR-JG'mJBQ8JC'&YB@GPC#j,!*!$'!!m!%!
+!Y!'B!!%"!*!(!3F!!#J+!*!$'!!m!%!!Y!'B!!%"!*!(!3J!!#J+!*!$&3"8!'3
+!L`''!!%"!*!("%X!N!3(39"36!#3"JG6C@Fb!!%!N!3(8f9R-`!#I`#3!`G6C@G
+1!!2r!*!$"d&38%`!N!8"!*!$J!!Ird!!)!)J!#)%N!!!*JR)!#)6j!!L)!)!)N!
+"!##(i)!K$r"!)K``)#3Cra!S'SS)-M++*#BbmM*10!Bj*QAd-K*P&#3)Cr`)"($
+!%!)ri#!"!B"!!)E!J!"!!3!!)!)!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!*!
+(J!!Irm!!2rrJ!$rrm!!rrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrrm$r
+rrrJrrrrm2rrrrRrrN!-rrrrq(rrrr!rrrrJ(rrr`!rrri!(rrm!!rrq!!(rr!!!
+rrJ!!(r`!!!ri!!!(m!!!!q!!!!(!!*!$J!#3"`%!"rrq!!J!J`!*J3+!#N)#3!L
+%!L!*#!)3#p!$q!JJ!!J)3!!)#)!!#!N!!!J+!!!)$!!!#!J!!!J)!IJ)#!2m#!J
+($!J)"Rr)#!DJL!J-S)J)$!')#!d"L!JCI3J)'8F)#"Rr#!JF-!J)$rJ)#!"J#!J
+"X!J)!!!)#!!!#!rrrrJ(rri!$rrr!!rrri!2rrr!$rrri!rrrr!2rrri$rrrq!r
+rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!r
+rrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!!
+!!3!(rri!#!#$!!Z"!S!)3J*!#B3#)!K)!K!,N!!$q!JJ!!J)3!!)#)!!#!N!!!J
++!!!)$!!!#!J!!!J)!IJ)#!2m#!J($!J)"Rr)#!DJL!J-S)J)$!')#!d"L!JCI3J
+)'8F)#"Rr#!JF-!J)$rJ)#!"J#!J"X!J)!!!)#!!!#!rrrrJ(rri!$rrr!!rrri!
+2rrr!$rrri!rrrr!2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ
+2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ
+2rrri$rrrq!rrrrJ2rrri$rrrq!!!!3!(rri!#!#$!!Z"!S!+3J*!#N3#)!T)!K!
++8!2i##!!#!K!!!J)J!!)#3!!#!S!!!J-!!!)#!!!#!J"q!J)!r`)#!F-#!J'ImJ
+)"U#)#!bJL!J-!BJ)$3')#"Pp#!JC4`J)'Im)#"``#!J2q!J)!'!)#!'`#!J!!!J
+)!!!)$rrrq!IrrJ!2rrm!$rrrJ!rrrm!2rrrJ$rrrm!rrrrJ2rrri$rrrq!rrrrJ
+2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ
+2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri!!!"!*!$J!!
+!!8!!!!)J!!!%N!!!!!R)!!!6j!!!)!)!!%!"!!#(i)!"$r"!!K``)!3Cra!)'SS
+)%M++*#BbmM*10!Bj*QAd-K*P&#3)Cr`)"($!%!)ri#!"!B"!!)E!J!"!!3!!)!)
+!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!*!(J!!!!F!!!!2J!!!(m!!!$rJ!!"r
+m!!!rrJ!!Irm!!2rrJ!(rrm!$rrrJ"rrrm!rrrrJIrrrm2rrrrRrrN!-rrrrq(rr
+rr!rrrrJ(rrr`!rrri!(rrm!!rrq!!(rr!!!rrJ!!(r`!!!ri!!!(m!!!!q!!!!(
+!!*!$J!#3#(G"4%05!`!!J!e6#eXJ!`1QB-1UDV-`X!%LBQ!h5l(E@C@J)',$(ZV
+C`*K9-3YM+VVhTe1X#JZ*BmLfiRI@!&)SrH'p`)*+Z-9!Tf0)-Sk[fIFQ)JkrkFE
+qqpLI1PG2++D4"4f4ZS)CZ+2&'UkSDLHN6c)+ldA1"3#3!eG"4%05!`!"!3e6!Yc
+@"T2hdNE0440Y!,6j0bkmfddECX*X[UX,hi6GX0[NhAE9eA9K!!NiTBMrG!Ak'M5
+Q0Klla*eVf8k#LE$6%2V!XqJ!D*!!aElq",i'!*!'!5*"4%05!`!$LJe6#TXN!(q
+'4E$G16N6X-81A8Y16ahE!48$fl(kf!a@pFiq++KBI@c"EUcUaX!rBhp8p,rrEir
+cGPBCaZS!#jNe$9a@MI6"MNEhVP-Dl!5cmbJ8h-AL-N+fe,NJbA-,N!$IEi*fJZR
+44(62+AQc%pfmbHiVKB3cc%YDkTT5LKd,2KqEdhm%m(Vq1HV+dqTUrjpIEXHVRre
+$rrZ4PL8#Z$0USi*Y9X&)*Va&Ufb-9E9H@cjLQlH&l@%9IG`AaY*D6+58Y!*a(da
+qM-2AVK[QKkBCkP2EpNhG$lS3D&U!*`6)!*`!6,hk,3$qkJN$%Am!m+*bi3)3()+
+!!B*LB#diLj&"M0m-3Z351Z,UBj,-[5Ka(dcIG2P&a#YXbaJ!N!-`!*!("!!!rj!
+'!!%!N!F#!*!(!`#3"`6rN!B!N!-'!*!&$`!!"!#3%B%!N"k"!2m!N"b"!&3Vr`#
+3'S%!92p8+rm!N"L"!&6rN!08+rm!N"D"!&6rN!98+rm!N"5"!2AfN!08pT!%+rm
+!N"+"!2AfN!6ipT!&+rm!N"#"!2AfpS'3"PEhp[BVr`#3$S%!pIEfrIq3"[a@pT!
+$+rm!N!b"!2AfpPErIrH3")(rprD3"#[r!*!+J3$epT!$r2hh9Rq3"DZ3!hrfpL[
+r!*!)J3"8pT!%rhrfIbTr!*!$9&4r9L[f9#[r!*!'J3"8rrD3!eErq2Gr+Rm!N!0
+89+[h+rEr9#[r!*!%J3"8rrrfN!2mrIG@9#T8N!9rUrIfp[rr9#[r!!#"!&6rN!0
+8q2ErIrCr+T!&9&4rIrIi92q3!e6ir`!!rbY8rrrfpPErprGr+S'3"+a8UeEfN!2
+rre6ir`#3"2mV92rfp[cppPDV+S(fN!1"IrrhpT!$re6ir`#3"[mV92EfrIhh9UZ
+Vrj!'IrIfN!08q2m!N!Mr+rEf9[jrpj!%ri(hN!6fN!2hq2m!N!Vr+rEf9[hrN!D
+"pT!&prMr!*!-rb[fN!ErJIH3!rD3!rIir`#3$[mVpT!$rrrirrripT!$prMr!*!
+3rb[fN!2hprMhN!2fprMr!*!5rb[fN!48pT!$prMr!*!8rbY8rj!&92Mr!*!@rbY
+8rj!$92Mr!*!BrbY8re6ir`#3'[mV92Mr!*!FrrMr!*!Hr`#3-9Xj384$8J-![YB
+393e94")!)@,Z9Xpp[MQ2i`K(#'NU`Eb%N!!Hd55Rf%a'SLBA$HH4*XFP5Q3X16r
+Ih#NNm6B'59hrR&1L""%3F4R(-M39"T+!)9L@C9bA#BcY@0CPa&,'8TCD5kPPaE(
+@X6E'h2IhHjlhlVdB46UG[rr2!"UPTb6+J5")JL!))J-!AC2rFGAj9c@L-`Kmhd+
+'[J6(q1Z+$jQDR`!TmAH2rm!G0q9pqYpU+dC[8UlHIaY@h2#0fJUk5X4"[[S'%EA
+9"aehkAlc'3AN81hq9hXVl%r[hIRZl*(IJGKC2&,llQa-X$%q$eVkhrf$%d5U$`F
+k8Nk3!(ZI'2MdTf(E4b"C[[Z(82+ADja$cFXr(0KVI[Ff6(r2daQBVZ6TrI4kY#*
+qj[0Rk29S4D+0TbY"&+llr*Q#I`))2NLIY"-J))jBqjHF#mFYBD!#0Ckjr+VP`i*
+r!KdT$d6Ql1D9LZJl5,kIcbmrTE+`4+9Zh[2RSVp35Ic%mC0S1kAdAre$f8IQPj`
+*%+ZLiF*iVrVRcPpNpPTlUaHlEq(QXA!K6cB'aXaj[mTccq+Z(VCKF&'JGpp(EMR
+!&!E"6Pele0lj(E("jmk%!a&3*il2'R-qTf)&8d'3!(3VQmT5Kj5PDNTRRph12lr
+Sr!8Pc%66,d6$9qJfifGjaK4U#NcKjJbY16"&$K8[KMB1U@ZE[a(Bl0LX%VA+AU`
+r8TA2*)0A1Y,1jiqF8SiprePd(SXrMm@I9iR5Er8SGflh0de*AVTMHY+80%I0HIG
+(hDip4fJS[aS,1jcIqS0jlKLr+Y5ZYhhV$e2Q6Y02)A2T8*hhY,Y8jL6VT-TfI@G
+9IQN4%8hEGREFe@'MU""lY+2rhGQLdi1*R&*d5KX45ZAJcImUAJ4SZ+HlZF2Qk64
+S9rjIKA,jiK3GU,*,Mb+a8I[ZE9BXd4I"G!BL'@fj2he5CH5$")arL*DVd&m[H+A
+hKdTe,mcV8kD("e2,#ek"b*,BpV1-I2-ICmrHpEiU"N)8krh[hK+fk@-E333[@*V
+aURqal4201e%MH5KI'BBY3H3(41iGkVlAfR$RJR"%(aXrVVmarVaHS[[ee2JZN!$
+p8diD0-pqFF4mcbU&a660eNY'I[Ic95S#XR0m*19f[(bP!!cq[&R&r@mpYXLqa!U
+[4*%N[eb$`fihXT6ldpflV3h*rR#mfFl,S1ai(D*bE&K!b[%9EH3lkJ!"Am9UFaj
+I*!k2Al#-50@VlJ"P$"kf6X2,qfXbeVaFU8FpM'&TTFLBGJBaZ-l)B&Y*hBp4%,a
+51RaGK,`[!Z9qpXM,+D#NjkD!JTG'i,Xlp`EHAE&ab'l[3!5%MJL)JU@AmpYUhef
+Kfh`h8h#ErqK82I'#U52+EFY0+L*[1`THD90QbrbVbj2QhKrNhGpVYPJXH9I2QLC
+I"PdCp9a*@LaQLbqV%8NpmeJi&Vhk!$Ca*QLLaq@J!rc5E#P2jPalrl4lSZd[e8H
+@[K5)2rB0,&d-+[LKh9lK*$*F4i+L&C01[H5H2RY69)hhMamE[HRG#Q5@elG@YMC
+e)($XGSUJD1jZGMB[4#6(rfReReEMMB'A3"51eUl3Kd)jTiiKBUE[Pc0("KZ9cd3
+&%3LldA!X&2mJkNX4QMB[FMX+jS9[4`C-Nh@Hb)09(BQpY62pAIILNp&eDm(-aAN
+JjMNX(q,D),,"ZCIc3mP4!0lM5cqUY2pEecmm"q#lDiBqj$ZRkpUaeM&I+K62!d&
+2LmllD+cV2QGre`acRJ-4!E[9jEc0#Sdr2keNjNl4RFMHCb*lAfGI"D,rd-P3+%I
+Ed*bR44Q!'85RdYEKq1RN4ldcVmI4PFGcYR[dVr5KFch(I8'$NM8'65qBqF-ccef
+j6R9G`jqmjklBl9hc,E9Gecph46Qk&KA-r*SEiSLDKq-+Nk@iB$)2Sd#SEHr"6kK
+JhMI(R%8NA%5&Gq*9r-QI*K!jHHF#$&q%U%j0a#Xk+'S'J!b5,488M@UZ[H'VjYF
+l1,T2fCUr4p&bbJCf9i`r0a+P&bJk[bHZ0`%8FQS%p3BB(U`*N!"hA!V2#I#Yb3T
+59ALIm`&cAUPblP84Fpl55EPA8T4Va@C0FKqJ9iHd9j0(e1bhk'rG@p1MFimidGL
+QCNqK[h96lSr1"5JhIE)cf8JAiZDm1J9JVBNfU(&aViTKZcG,eHcAk@rGkrG'jdj
+DIH6H0`qJ'*beqHXSXVkq3m@GDHDm@C24MD%B-C!!`bQD%5"#E[ic%%ZUHE`0N9r
+)m+cMcjF(L1(pa1jh9NFEdXcc$d81pXrdQkmqd$mc`hc0fL0VXehaf42SEpf%'G2
+QCZIBCKcC6qaqjb#aGI@b5HDVkj,lqfF'c0r"T8Zi0'RYNG+iKp9TFbFeCY25Cdh
+@!iI"+MiDXfpb8icCfjQ4U`FfZP4hmhKr#8HApieE+IU*SXV+EJFJeGre$f'A+d$
+4a-S'BP(r0BH+$LREaN-+dF%Jf5*#NJ+cjC(b%VHV[&X-60"![4FaE6CX(c5dqIm
+[*e'8kSpi3@&%!0U)SG(F3%C0F4(bQH&j1lS"b0kR@e'ifC!!h8P"9p"`C0Sh`+Y
+aKij[RVbPa0k%a95-Pe,JeKLm,'M`QpXGl!XD2#RG`8X)p9[2'6c!%SkkVE3[ERk
+G2Ke$pMjlAfXcXVQ%5V6q@6BUNc+eYQ159-R@2hXfJr$J%5LLUVYFI5mD0S95b0j
+Fm!k&&%85hJ0MRhKlPdVj1NNd1,+c3c*lfTr[2K0+F*DBKNZADDL-S#aA1AFK!L0
+'VhfE"DZGJY8qBVIjG3Tmh3q`hD9ZG2!e4(2#icQl9+IhQ,kb82*b[SbBp36$BLF
+#f*`(m(daAddl-H4m,Li"ZF[+JEm$p)0%ZSQ3!%bCp[UlEYi,3,Q,!2mqIe3I3p0
+kEPVZGKA9UAdiVUa)(Q[#mB9kEIX-CLjM)f98bi%'*Q[rqr@q0NVmK)[2BpQC%*H
+ld&cEY4ir0f2B+RmqJG4G2r1J'3+)&N)$D#!+LTJA"9Rd+&K8jbe[Clj8Zip"-(%
+&'D2ZRj,j%KeFIBYhm44e6HK0#,*4$Pc6U!K*ICY0r9h(Fd`)Y1k1rUl6%U@5TNB
+&!ETfj@YS4GGKp('9XqL#aNmDLj`*,BXP),f))m""[,GG6!iRRp[FG@,[MUl6cr9
+fA4kpkAhIAR0AeHK0A31KkqDi84`SYGV$`SZ(`%*(M+212l#1AFi2Aj&GYGaFqlk
+21c0r1)iSQ64U`1'EQ#&23qGd&!-3r3r0eM%53RKDB20&31Rf+mCKAkCUA(YkU!J
+4'P8EBh6e)U,Z-[*abHcF$4$"krN6Tj9(J22XCFaJJEG*j6+6AK'2Xk$kZeV%-FX
+m`[-fMML,'T9NQ4J1&Q5@fLq0VQb@Q9*SFcUrQ0PefVF2aER2R(F`cAceJUM2`FA
+PC4S`rQ9(C'-DYQZP!!`Adc*ac)#cb2M#YmTS8J"!%dAD3d!U4!kh`1bRNVb"EJd
+p0-GY3#!H4J2)D`!FaZFK[p)j+c89c,Yfe8-PUZe,X+,kj4B2A3QGI+9D0@#VND#
+YlT5Em9AbY-@Y4FKXl``hm2D2M$rr8#C[M%LSDjIaYTAUBmqfa+MB&)0,B5Vb4&Y
+*HBP"E"b9bP&(B+f4XT!!B@4"LBkKREd&$m0S+SdMrdi6Q%$0Cip9(r!dZp'F%-d
+0RQBVQL1bqCahL`0S6K20hLhfS$NQQVeE8(4L0U*229'q3+IE21"A(kD[INMJ9ap
+!Ec+Ud1HiJ4LpUT-4SJGJp+@*'L'Q8,IfVT[BK)bQ1a#G8hG&@EVXKIMTh)+VpZ,
+4G40[aUBMS@*NGH8!&q-K*fdAMMN6EKA2dHXQhN)CVNRj%'Q2*MHZ01'+f!!CS-e
+qd&*Thm1AVc0FEJ5KC-4q%8"Y13jm%$p2mk9a,SbRB+(P@dSQpPNV*rEj9$a#Jm6
+Q6f2$Td!DZ`'E6JPpHikEMjQ(TQQ8TFRV%h2-`dNNImEQimS5-[[bC$8f@)-P@rG
+Y+@PUSQRcRjee63#(+,)("-De-2%DXK4XcQfp#i@IfN)Q99G3q#N*mUTNV8TH1Lm
+')F,S#Nc)5R$)C$Eb!r(@2TP3fMkjcGmIX%pcY"#US2!UGPRp%jb(#'$l`f#1EIU
+%k9&%B[HjLh@VIj!!!mlPH6Ni2HSDa6)V%!hG"q*%&adi%0JaS1mJi+)9QE&Z!rP
+PDAQJlJ'BPhhY0!aJ'V#jHi5!b)-%D&eYcS0a@#'EK(eY5mq"P(fafe3e*G",3"+
+Clbb)RTTZaH9`+@e2E')jLmAQCG6Tf!h`CCS8D"m93)8hG0N[KSZG-5'-X@S(PVT
+Na2r`QmG9B+"U%SLb&95X3Q!9"edD'kH8IB`&8iS0*cFrJ@%NdLX(5DaL5&-AALl
+a(MKeaNB%5r0U0Uc%)H-21qXQpKP)L8fF!4CZe)UVHBjl#9MC#0-#eFf)RLUiY13
+Lc%fGPUkTeaa9`dPT+1J052@CZE)[Bf1NpGV656,pkmXJ8d($J1KjEYkBD#eX+qQ
+`JE8QA$(Kjd"cUk1,J,Hq$0mQ#8lcY6GV#`hGYdpPHEYT!l@GKQjPCBb0"b-!qDb
+"AL-$)RK3i'JX(ia`Nl,l,3!"X26qpTk1r[D3!(Ri1K-K-3%,5&U133`hHiZYM2`
+`HmYB06,p#KTd')NFCAN5b4be'4Fb!$,-S"H@9R@F%N%S6LU`m3bmQ#@+[G64C1M
+ihV'ZLR3(1(`UEDjSQXeEZC+2!QMCa@!B$"c$HbcITUYJ+@99Eh"bmIhkbi+eY1R
+@0#$bXPhjG"R)2BC%P"rQTpFlLd,((jpjJhm['VT@p)mYqF!lL-"!%26Q6D``,KD
+X9"NfUPcb!3T'C!'fXKV$$Mk(&ee0q-5l9MVlhipV34iZ41*`%GJbKHalafl`$k[
+bL!6$('F!Y,lS'm%f,J4r&5C1+RE4qD4JhMXI(%f5-1"92cLUq!8#"Lm3bH2S9j(
+hIIlmBjH3!-Rf[qpl)dU!bcej[H[k$J6H#NA'kq"&)hd(+0[V1c"kd`dCCVrPfd9
+-J,SZ$Q2'ICjA,hTIT9E"4#jb(KZ5jmh-#1JEKq**5N63B%Si[$1#!q[k$Z38,BX
+H5XV$firimdp&2KTJaJp)X1'G1Mm1@$+[B0iEYa"V[HZ@c1[p8m3QVe#K!,0-"#!
+CCbkCCkkXZ+CMD#2qb3qZ$CSVTrk!LN9kLBBm+`'$Km+(4-2iFaM3AVQhFZULpUp
+'edhp`H9",,k6f*ZkN!!1U-ThGiV"235m[Pq2*T@B8$![--"J%#8LSK$(FFRb)cG
+3`[Sk8brBa6B0ejPS'rPbb#@Z42M+3GPXZ5LDdlJj5cD2@[I@YRr9$Q%XH3d#k5b
+BGhEG+)+&J-VRDYXVZbk$D(!#blX'Vad!RJF+jM@X#pREJCC%EUc1)1(['!jPN[P
+f@`Pe#ekT(D"Z1@@L*MhJ-XhSkR0NCZG@MNAkB$!BlY3c$rV*V(Y60`N0%jZINEE
+FT5i"JD*'&,2#!jfU4L(lqDbZTLpQd9E4h%UPqK`c%!%bX3A0'qkMk5I`EQ-Q"63
+H!i'[6'c3B-kVbLG$ibfI3k4Pb%"I)fmjTR`fHIL@ekVbMBG9VV@q&&Ea`Lq3!'%
+Hfk4(PQ+5@dF(GLJTY0e2DkM$*"2m0,p0*+8)Y[[pF4Pm!2C9mRVV$TqEa)V-i5Y
+N9j@861!X`qBE#ASalpGGe'cdSXN*R-99dL!D$,,-9`Li@,"(6[T)@*B2+5YilLN
+Uq*Gd)4XDmqI$P$U#(bapIb-#HZ'1GAe9PkG3GJE@BYBGiCLPIm'VlQjQ"#"9H!@
+a[Z"9mJS9m!UM%%C(AF80q*QR#4SLU&`b'3FdH!p!dd8d+34HT'B`i,K1hclM8S@
+SUkJJG@p,1+jJi5aC&LbFF%S+fAfQSflLCaee66p)j`K#cc)@b-8,"(+PB0lQqrc
+jR*!!l0B#[eaam+ZQ@cVUPLc!6aH'"L#)@rhj32SA[GNUR"Pd1BX+jK@mLkcb#pj
+'NK6I,*Mh,aY!8J4"e6&X-04P!$U8,#p0a[*H#X1BaP5DQ#36fll,S43D1iY,ilA
+)+#-UiV2b*-eR`D48lBjAKaY#6Xr&E('a,45KLf@PbEr!`!3ZG[-NM8cKk@)5@E@
+eIm%%`Gb4JRRV&Ph1Pk,MS*iJ$Dd"4,0KVh8irYSl)miKYI5*J4%c*J#PIlXSE+*
+S0L4hVKYIZK%%TB*A%+N"XV9+MTMGXF3$Gm+p$EUQZ@1CBjBU%-$l$Qj3F6JSkRV
+j#S#3!,M$"EZfkm)@+d#f5[eP5Xl%q5MRbq5`#Cdl4ljU3bF1Z$R,FTD[a$%BK5k
+D)fL1BC*3FEb-1"T820P4D6-e*$X#B`q-UGfm@@'U38AZ(!R((U"08ilKMIEiDbG
+NpcT63h`2SMMqiL!ba(EpM@mJ8RIdj9&PXcE%(hqRZ,XK149VZ0B"FSc2"XC[Hq!
+-+,Th[6`F0kP#kh"L4HeQ(&f)kd1@--MFIAVqi@&EP5S1THDiI@f(ci$)86CRYfr
+INfI8LmVjj*8GJCf2U+a3%UpM,jp4CDS3U(K8hcN#Sr"0'fl2,VL(d)+LHQ8d)%h
+(Ch*%B#&-2"dJkJ*G4JEGjBM@Dh31hIiB6$dG#pD%BpBei@lhLYi+TIpm&L)hD9L
+8c4C-C,,JIl9J&SB(h1Y1eqHF!j+iDdmH1i2*mA2I2hFDNd%LT@1bc"Gk"FB*kYR
+rI9bRbDTh6Kc(*,R[C%re1jKBDQYT32*icXPDQJa@BdB6*Ii"FDD0))K$%FGCp3U
+FS(8lcXC2!lb2"-EF-91$ilHA+6,I$@*@3r*&6+RBjb"$aiT!M#3l`JdLd!lSq8Z
+!dVrqY[0EG@E(@&&aZ-`aYV%iE-+R)9b)TJDBE#Kh)BkeKB!1S35K,EC5-U!VXf5
+bVie&q9lL``'14PHI$ITLZ+,F-6CIT)MkUb3bU,)4FhGa@$90Ak"m+alrKTl#b`@
+-c,(GNE68G6"CC[3S#d+2&+%(`,VG'*iY8E'fM*EQq04"J*-$Rd4Y*(0--YMN0M*
+'b9'p)CRkE""1V9k&KbaVI98[`V$pGab0$5rR3!3Pa'!U0SqC[QRYJ+1p3RaLiFK
+63fl6q*!!fb'lR`mKNR[)"RD+J"CXaZ*J*cKA!@f"-(!k!`-+C51%b3$#2(De1qk
+r@JjiNJESKiNF8!cNFMcjQ'UcR&'(!"EA@C1qb(MF(4p2i(Sh[4jTK5(5*b0dK)e
+3fTl(@pK80ap80[iPKKE5N!$,Vr)!bB)$,0a)VaKp@e9@ZN1+$82U,KK5U)Tji#&
+QZ@jmXr3#)q3&5&J44,QQ%-Q`$Ti#cM!Ji++k+#*KaL"!NcYL@U@5b+JU,#Bah0r
+m%iJh-M+)$#l&8A2`S!+NI*L-1TV(DFQ@'r@Lm!K&"cU,BBLH#TFY'$Z"6$Gc0"`
+c&Gq6jejK-JA'aZXdc`L'&hBNQ2Kj+a,T#qGd0LU3!#)F--1Ibmik%'AM*)%b5F)
+3@!YaUG"q+`J"$[[FIL)(p2%'*0*Z-G6'3l-l%KK@CPq0BGhfcrMLJdJ+2rXaAIi
+aQeq-ih*fD"m4(HKB(2md(e[X1GCdpcDEBlZMV9$NU5eN(VHDL+SJ5Ac'BZ$YH![
+iICq,c3RPP["02L+61-M!&`XQ`XCRr1SZ1#1)i*!!I5#`&BYMZJd-Gc,$*Ml#3F3
+4,$DQ,4BLrSaC,21`+"fNC@qK5k[jdQGmT*Hjkbi8mhD'MpkYiCB,KLpNFXpF#Z"
+3I)lEicRc036L4FjPBGh#JF$)&0SY&JNb2F`*b3P3&j2BDG'VdPhdHL)#)*V0"L*
+H)FLJhCS61XGB608f8QEeb`(TF+YeRh4#0E9(1YaLXQFD5'ph&P'8acjR%D%YR2)
+XZQ)h[L*(KdL3!(l@@14c%''#ZP1c'iYJ9T4bp0Vr(U6T+EZN!lGeC13)JXTY'0c
+$JpGTN5Fb%XSHakXAD6JGJ+'Vd!"'p$[(GhA!84XGf$ar#!6Jj[FELaaG+*ILpX@
+q6Vk#lB6cJJ804Hj#V4(X9$@!(9qm%F6(`cqeZCda@SS%e`aHF$fCaE"6$1Pma"3
+NV0)JBAdNK99K&X*b5)'dIS5%6*iQ(L6r@6KpDic#U6J$eR[Y[r*eH`Bb)0qhJB6
+Q1aSXV+RYZ1a,6eJ6lm1VA+q`TQ)$R`f%h%qh,jkTDi2&8l%r@$c53BdAA6PEC$*
+6aEX`hNJ4f$JjG2$BZCiF4DD,&A2)-4d%e`f!Yq`d14PZ)`I$PQ@@4e&m+h@lG@E
+lF*K)dIhY`a6CJD6'A%3e(h5"iI+ZLP9YA4AV6bHYABS)HfZYj$`BbG++16*L*0P
+N9IlmF%"EZRL&a%XbKa2FTV#M("kKVFZqq(65l4N)XS(El"G$c@,S!F039lT$piL
+K0Zp3Q(!&X#5(C4QB+lBmLX[GQ"D@EmMB8CA4YX(I@j9a1QP+5'H!XLJ"10j&C!)
+!5)9L#N-F#+6Fd8AAj)[MTmkG&#m+V460Pm,(!FH+5@fMmrP)!JkM@0UC8BmSL$L
++SjJ&!R8h5S(#@6f4Q1Ce2UXAqETPSb58P*N!DTKN%`EXei[S)LIF$fCmR`hC214
+q$U*LEI#hU[3Lcd8F5F%23cC[e!"l%cec[iQFDQNNT'Sb4$$$'!*0TcB0UlE-Amh
+2Q-*4DK#XZSD$XC1b,le&a6$Ta!5'%1l1N!"T4K6%f650r&FlRa06"XHDMQ)A!3E
+)mSC9FHH"#"&b6af(N!!2U$TGq3,11"N,%+P`@64`T2[)F,)mpaqq%hMElA*ZENX
+pm*lG2UMf(AC4X+5TNr@&2$Pk)KBj$'H5+["fB$2!K"X&UA%K!CfC&YUdmQPLTGM
+TLA5*%)"#@@ma'80'!KDk5+S)&N6C['2%'Fqd`1baQ-!f[2LQH''6,hbV3NQA*fV
++e0rqJKD4B3Ph$2P194qAR[[ApeY,L*`8YUAUb&MQdY9jbFd+6NhCqcfqXhHAHI6
+5MS'G"CX(mR-hl`L`#6&[FV,kl$QabG,YEI+Sf'3dGqGSjZp'#dDIdEDKj9NS@5m
+RD@)5imNCZIb3!)+5#TYi95KH&BJ'2dAp%qNDdH0R&",6$cLPZB&bM+j5bj!!P#N
+2THNrSQ5Mmh%UhN45"XAIi-lH3'E'D#"$UAh&[6Re*h[Up@1R+ReR`krNR1b"aE4
+qmYaqBV1TBcH@bpP5l"!4"#pHjBjERR(ZTSKTjDL$N!!*U(Z60mchmp*HSk)5*LN
+9)c-1,S@*EJ9!$SM+IS-%FlBJQ@T[JBHUa0!5LV$C&#8#0'dSYjY`#H,D[(PR)01
+rSjFc2rZ8MYhBYM"SfcQml3BklM*&Ecc,3&dVEce"fhT6NHm6!9$0SFQ6b1j9(%%
+9XEGFbKY"T-4SD!'-f#pG(8@bi',5l566hUCp@'bjA$TjFfcj0N8DK"bY$fmUZT3
+AVE1r$I2%C$Kq-ERP'G9Gaq$!VAf8PEmeN!#r#`Lc-hF(Xll%r-IG$*TUc1[5LjP
+!T2b6#S5ZP8(%E&GS`VBA!URqG[0ZdfjIhC8NA5(8N!#$0XENS+EE5@bPL"3**GX
+RKHqe6U)V(cp$4DkD,4K#N6XPXhHd3-0IGT!!cSK65!XVNXB1)RV$00*I)N%SZ44
+iJ!!KIfpq`F$1Cca,ZYhmab5CckG)9(h[3P4l1SBSEqU!19QpMcEYF*LV&4*U*#k
+h#f641*'bU"KFYaK"8QB*Se$XNm2`!UCP+d+ELL"+4qj269&LS3TSqKUGlNHFP)&
+pqqH)9Z6MbI(T4F9HMaabGi-)iLI2Kd#jb[SQ[pKMhIbpUj'mkV4Z[R5004iZ,(H
+mmAIc%p2L0BHp34I,i069C%0L0#q*jK4XQ!TTQ'9!'rM&`#Fmd2+K-hCe(db'HUK
+)Q&KB9d61Mke[SN#p`6*J5F2![1idZ9ABbB(DlEf#"Aq1DlIX+j+0C#$A#h0Kr8I
+1al(40DBd5Q,L`!D`B!SIj'"IJJ#I6!&HThbkh&)BQY"QUrF9m6EVB#D)EH3@[)!
+4H*AepXrK9H"SKX5%3HmLH`$LMF`Ja$ZD0+AjBR8`J*ci#CCJBZ6SPKXA$YB9X@M
+IT%L9'd'JkRq'&&#B&JXN!I#l"NMbc)k#(B(4h*Ui3X'e!XK5V$QN[kLXKj4ILYi
+hY#A6[U,r(3+G'""E!C!!DAiG)L2dA2rJ#&3[D&RA0iR3P'BjT'+5N@p+4N`S-+*
+DKVD@-L$N&MX(cYGJ3A&L"CQK-a4*2c0FKXZEG`b-lXV0S'X&Slr$eE,1RC8pp6Q
+9p6fk(dKGRe0IHDcq('pS)Q!mQJN66[cBh#D+[S8M"-F@)U6Ch"&,T6HC-F'r)r#
+lM2b"6*SB'#*NK@(K9C6TJHLL[*RIflhQ(Ef2l#c)h,PCHMFB[598PXcS8aC#pF)
+0Z2j'ANjm!8fZlNPq&R[MQQ[LR)%Tpb%D`JGN#Bm1mpZlUMNS8e+%F,!MJl`HJZa
+'GT(RpI4[$q3(HRGi'C!!#`j,a!#!8IJ8-SP#`A5KTScKpF#1h"fMQ8%A1mJTE)U
+#r&)H&iJ1Dl8U#*14@d(cDJXk#&5rUd4EH'iq0KM)pqmSi)8[0[ra@N)Efci`)&(
+R8Tiel3h+U#8+T8b)M[E&,rk#[4k+&$DIJaNGXT9#*',5i'RmcL*+3#cjC+J)S0M
+ldJZ&IY813H6mD-'E[&fP+Fd6S#Qhfc)!-EiB[&d(&a6b8c"[qG'')Z0V!!'Pk4d
+rFESmr[HcMFH$AFGI$DL#Eqj!%Aj)T6Ph4mEXeiGMIc%@MSZ!1BQ!JE),dh*0`&4
+J@hBmXl0!HUX+$JjNf42EUFMALSfQ+4qAf+G5XDLKdf4Fh&'`QDmeNG-RpSb@ZUE
+&Kak!X9Q8`-53!&f2KT4VM$FYPX9Gdjq`HACGd4Yjj&$-#U#$XdM*RSmc4"L`FAC
+,MRF3ZGDdQ%"0baL4DFaj(8S[)Y,ER$SHM!2IZ0SkqA[A%0Kp+5J,4Y!p"H%JX84
+()3+JS(Q09eKi24Q-3I!"2ah5UVY+[+peKmr$%JU9$cYJRVcH9&S8LV421L9I(FH
+V6AVDq5J@Qd(&lXK5CL,2qLLc2l,KdHS8$chKMKpk31qXLRC)JlDBYS50NHBeZL-
+F)38[3NKe*+#qQb(ma6JJ8JG$"J4C&V)N,@[X4-(,@@-'&@"+mmULi%4#9#rkj8M
+GS1[(P[#Q,q+k@'iC(m$QHF`%)JaY[VSLajZd5&pR4bGG"%'c63+(H[5L`X(&@U'
+*Jd%N@ZSpf$`+!a+4&4-J`XGI*-&"q!b1VH3Jq&`H,%#GAb-V4YB2Y(,JX,0lSPP
+&',B[Q$QT5!G4CTr8dHXp2,L8R6f[P%`DPiBK1Jpj[ZB5a6E&G88GMU+BLDjq*GL
+TBeBZPY)"mESdRB,Y63ifQ-aUSK!#Q1d9J!Df'#8JMD&Cr#5i$*-TE`0&p!5LQe3
+('f%551Y&@qVHXeB6,"86VrIQqmq$CVQci*RmA4NHNC+(kS6aPXRbM(iRJ3NqPr9
+4bPCmZRA5pfK5h%%!&ic$rR4k"!Ui[RGN!EpJp(r'&h$Yq0(2aB",KiT)J'!ajQ@
+&JlUXrBb+Ak,YpibB5@h1JXFqSFfT1(!F0*Q[hR#%0ieX'V)rJff4X*GE-8R843E
+C`9[+aPN6J!*,'*!!3&3+-T!!HkNM%a4*DVMHfa#RKRRHKJ3eY(JE)Y5`QMH(fLJ
+i3eZbE-,5)d`dLflK3#Sf"0,EZ`VmSlf2l#M)#*cAK(NY#G0%4+&dK*NG,-a9T8+
+Bf8(#h+`*Fj@Y9!Sc981BUHd+-dA#R"FXc!'j%5FL,K5PD$bNET[3%5-a!Vd'[1M
+P(Eb&!I2Lj9l!I-,!D'B'I+U3!)*@f*-BZ1Ld%&U0Q4k`M(Ch,KLV(0Bk5dH(!24
+I6++KXrfCfJ#FS)fCARE$,00CK%L5Nr9+&@,bIq$N-"B"[,%TbN-1K,Bca&R8AN,
+&$j`"2Z2qA'lp29PX%k#9ThQ$ehCQJULb!m9mIX'P83'5SkK1T)6D#`GP,aaijGD
+e((KlN!$adk5-!`pCp#f9&(J,*TGiLr*LbQ`k1'&$a#*NVR0NaL'mGjiAG9k6fG[
+[4[eH`69Tk-2+0e#mp9(#B141cLb+1qj%dG&(iJXZQJ5MhB*4'iUT2J0i8@dC1+U
+BX644f,jS,I&GBM"X$"&9C4['[NI*JJCU5L%KVllN3Y*&"&3kNPi)MeAHM5AMT36
+L"V*`hCA'k!22FQr8[8BN-3UY!m%&VDp6C*LX2%mQ`qZ+T&Jmb!5ar&q)4FKNjij
+-,ab,i&Q**$aYBS+Ma3b0Y)P)pY-!YRAjUS--m6c*`$4NkG5%l29K(0AT5G`kT2K
+aN!$hK06Zhm(acGR+-"dP%!&CV#Y+4**MSFSHQF(2VBE`D$&$P#e,3#VdC'ZTkmI
+@Y6i8`&%9"D%3!cJcCZ-D%*&D5qZJdJYEGBC5VD@%%SF8E5l"Ie1HJCc4+mJC'N,
++4#jYKD53!0a+JNRHVEKBLI9cST0!B%()k283-V3#fd'-BjpP+,6hA&"S`hK*cqK
+)#4#X!L`ADJY"FVHBLNF8@*d3Cj'"H8r"JL-&ldB3`EU@R&%4!'"heK@jEG,VV!Y
+4-8PEpAZ5bJ,-NeaV#Ba#++4%i0+d`k3Pm,')'#I+5bQCljE!KX'im9pZ#8lq!j!
+!5#G*a`Gdi`!A(p$GB8*N!Id8'JkbU6hLS$,h(TQNV$N-B23"'Z"05[lVcYjYT#6
+&X3iFQmA(1MT-(N4*L+0-lQj*%*2ErckE'M8aJ`bA6[T`Za[IZBf0Zi`E!pLi)1d
+SYV9jYV@aN!"56!C*%pX@LQeY4EcYVdh8U)(l3!S"lB[0LMd#,fB@[3#8h0LNBQ,
+M,#(`iTV$F%J6$I!#U'q4`!9m+JlUa%&YI&!R(f3ma+(Da#(&lKV!S$cJhjkQPd'
+!D%diE1X1fVIpJeCq%(c3Ujk&H-%pNFaH'LlQBe)iKV)#QpMDi5l8NP",&P#$p%L
+6G[CbDNPXB2*i)e1(N89%p)Z01S8h-V"Am4Upm'DCVqrX$FSaYdS%@GXA`3m,Jd@
+`PJqj)2IIZX-kYhrBBMhiX0GCh0lb9cLKF8+PKS1-r5Q"H9S0Uk1+J1K6Tl13!0"
+da03rRdM"XAK[)0YG"C*pM+-bCKd[KkP'R!#fkrCh4Z(3`d&1bM1b-hU2fYh1`*4
+!GXEE'EeZ'TEJBCdmV&!k2Eq8IBN'TQMJTEF[pG+")Q*M#Q90HVBccHYiN!$Bh1-
+F-V!jV"#*%S(DZjJd%+p@UDIfJ9e6@S30LjR*Ick"NCUc+e$d#T0CbG*N3h)JQC%
+mN3`P,bBR*&FR@j-I*1FRTbGR*pFPqq+fH('m2(iJESRlijr%Uq0(ii2a"q02a4I
+%mq,6il2Mkq*p#9XL+e'DD%J-*$)5[N42BPTLE@*1SMea6@*@BQjLC53H-89')JF
+L!j'-L#r5%jN@@4Tj0[*ZC&jN8H5qb+V)LV48fVid9eTMQMRY8YVaY*bdD0TVD8q
+RGDAPT8e2ZcPY45`9+iZjBSfacE&,X61aSl%*X@GMlE&VBV0LFf-VGmGfGqiHfHh
+F[@PhlZiAGjrCIAThpZjPZmGh,pLGYrZUhEIY[RhhLP3m9CMDPbT2(8aY5PP6Pe)
+R1[[8hq%R1q-PYpVY%pe*h+d5h6HjDaAGYlJl*,U2FlG1G"rNVLkk6h1h@h4rbGf
+)k)j60lC#G1G`GjAS2XAGHdAh#HiZ&0erjqi0S[XKGpY&YjQlFd5hPEYV4EH&Zj0
+&pchZ$S[Z61jq*EV[F[Hbk(CaYd"dhqIZQ1KqbYf$S[YElVD*lJ,ZPSRZCpa0LHi
+(e%fV%0hr`GheSMZ2ZlH+lMpaGjESrMrZAL1k'lMl'DCcm4-PS9kL*K)!$@VR!@Y
+&Pd@F0PPd@DKT`k,,BNclbV$9(0kU5Jb3!!aV#2"MlJk*PbbJY$V4j5")dm9@fCk
+Y#X8!&N5D%Pd1SXJ5-I`YE3Q4fH+Sb6aJZZLZiHjm-A`32mrbm!9L1`k1b&1'lCl
+L!FX-6Ir169&aKC%TNL1k("#4iiB$T[(`J+(TF@iD-c5pbNdNJ,mRiI%QZQ(!Hca
+!%`#MB836!!GfJJ4`P5Dma-eLZCpcpcl4rB+lLm6&Iq6Z20&PMj9i9h3CI422'PK
+B65`N*Q$k!r`Xi`%A$8)Cj!(9KLZ6ZHP&X59lPN5Zk$)5*MBCN!$PFajq5!aJMjh
+B)aKRJ54-S[X5Gq1LqhqT'eq*kAFdaZ+hL1kMh*eK11C41LEq!d26@QibHS#RZ@Q
+1SHNrZ'QTS@N00edd02dR0e8,Y[iA(rf*'2#[q*R#!h,&!"CqI*0JP!-QlK6$Ma$
+5mh!5`,m3qQY)(AFBM[`RDNT@'*VQFG-UFBd#m`Jhh@GSBR4-cMGFqb8hD4k!@8m
+qC4M!3CpFCQKL,j1-'TVDZDP5,'mDEq)@h5RF$BMZ%HjZ&YfhZGXSZS2FGBRZkpc
+G*lU[FGFKZUp59c@*lJ6Z,KGG$RCQMETVZAZr%-%6*(aL9QNC)+1-qNad9h2hFp(
+p-hIAL1jrFKHUF04mN9&F`H4rLL`Q*$T8A"dA`U5-[NUmS)`R9h4SUc(4S5-2L!Z
+%##laiMr3b4)GBX3N1P5-4MUr%hJTm,B44+P9Ah-cD!09#8BMH1()1Z8NKr,56#6
+Z8j',j155JCPVZ2'Z%mLd2%l)Xf"*Nj'S6$`9H9(q*@lJ5AQ%6$P,9C+[M[29)LM
+LQq'jqS&k9TQ9Aed&,D&AU8ZU4je4%e5,HJVG%qSD1%diLZP9UP*0KN2e4@S$1XY
+81cGHTGD8$DPINT!!-CQ$b64-RR!IaHFTG`mqRlXVm@PeRm'RfAd#RrIFPr&jehd
+*RdrGIR`qFe[aq4rZcIMm2rFQI$Di'r$*Far%jfVh)AbZFCIMmlGZ(Cp&lRhiA1r
+Za+I2ABM2BRF+RjqiB9PYJP24Y"c$SLASYr'%LVXmS0rRb9N!mGl&NJGKUVddHCY
+DNl`qH9pbCA*ZFP9bAAb2'Sr(NK9aH$,9'Yq6A!SJd"([9Zha2HK'9Clk!U+BS@D
+TfFNeDT9DV*B$R%`PLk(R5%qk--LC(!0JD8j@*Ih*,j,Mb60*0`$-BGlJ"M!,Sqr
+NDNb1N!"(a@3D*L4%mM)Na'a-5)b6--R"C$)QAf(b*LBNaN&-AX6N,I+SQ%c"K-6
+i0LB@6+$@-,NINpFa)6'qKNNT*UpL-S,*8[+SQ$b156FQbc#aBI)S*R&-eL)`+c$
+j[jJX`H4"-NR$j&r*Sf+b"T0l-B'D6c8GNp@BA)r*RmQMB[)d*[-`q3p-&Q$b,#B
+YQ2`BNcQBI)J*#D!,%a,!q`+*EK")p)q-42q6N@JK)p&rBb5kMj&S"L24(aL*EQ%
+NqL-Md5T'SMma%Yh1526I'BR@-a,Ga%LdMT(SAaL*IXp)Y)54k0H-4#Xe*%V8554
+Lp2R8&c-0UAq6aZU*6J0k,3XANNS&lM`8"L%!Qec&'ripErJMEF2iVBB0Pr''mq@
+'mIQ'$5H(4l#KQ6XhFUF02qAiUF-2R(1&GEF6'krJ*Af0Pr4$AP)&,fNU,fNLXp$
+%,0Jp,&`fX0$-,2`A`B,&m#V+Vrj*[(,aCm53!"R"d$"Z+L2eJJPZQ!Z(9H03SBd
+0I[)fEa5(%l-%,5(k+"`iPfC5T5LPjqR6Q1RpC1bL6h'Qpf1Q*V@81dlkU!Pd6Fe
+p,-U$kak,mXZ8r,#3!+iRGA3d6H`*(qI*E$4Pmm@Rj!@9MH[$@JH[FKq,rN8dR--
+Er0I`DCi8Kq[`DMm'ED+'Zrj!4T9NPJS4MJYNrRH"c#d#Q@F+C'iAb,a!)20["6*
+r)*!!qAma-Rr"b$b2NIR['*Qr`mMm!dEQEc!bcf*N[SH4H6SMmmmCQHpRC2i9)r-
+rF0$Ibd&r'`IpIq@JRme"2jH$rQFFp$H,S$rK#DarmIPV"TAM*DAHR4Bqa"1S6U(
+*%rmBYY&NcMLLd)ZaeA,Hr"HmqDfmq8r&jM&@Sf48G0,($ZVl"1'"9&2XB@8I$Tp
+$'%Z4J`LR9pR%a-QDfS6qVf"1[fE,9c#Y*bIlFh6VR0f0&'em'p3GEGjIUS#SF+k
+qLBfiSpbTBp2)+"clVi'bpDHKkK2Qia-R`i$XFe*m(9If&RD3!,q!ZK(&T[+6aq1
+mE6D)'CAQ[8eahp%lhJ$(e69&b((Ma093[9JhF8l'NClVrY$-M[)pfiBM8&93"iH
+6Nk9h-Hm04djIjGlh81A%,Z@8aZF62f#QZbBZ)#&5iHp4c&$4B4[23M4Ha9+BYF,
+CU+qb(!+m&C%*RG+FQ"b8Ji$bF5X8SlP*bAhUhdIDc1i86Aq*U@ie+Xd3jQHYH''
+$`fU6jGY-+)*MAhCSC6-10rqa-0@*3#1$f[#*%D(%)JXPRc[52Cm8mX&T8@,NZQZ
+L[ZA&-AFXFp)$f98U9*3hbEF5,jd`-BhVNCm-$NEeL(R--SE*6YI1(hhRY`Z2GqV
+cJrmqA9Lr(J6[N!#fE(hSP%'&'-ch+majF'!'Sc+U-NG6eH9G'!a[Xm-(B'UEhI`
+5c(1cmA-&2h"mhpc'bJK58Q9$FjDeIqEef+UfIB0q*QQ$SVQClA"8K+Z$V6r#P8%
+dE!McJ(%bp0f!9e$[hEm!DPVk,2hYViG89Ej"T2dB`N,YAd((XiR[2Ufk#pU'RGR
+Frb3jZCP"KJ&He6L,RD```P4Y*UE#KkcplHrlbXPaBI[lZmKX1%S1$k'iSr*i26Z
+1VQer(ii&Ze[11BXm+RNUDDZ[,@DRidlHU*3f!N'`rikh)3CKF(SE1l4Bc)iZqY`
+k1BdRP9-85F5456-A&p23!)CbG3-INR2Z+*cZ3UQHGq"b$06*bDV(UHM-a5kT!-$
+h,V1f56,8I)+L9XJa,&mb1#l9Y[0HjD#*`TL`UEPH%fY(`L2BK5cB@IeRe2eB`"N
+e!aZie!cmh)qI@IKCk"Ad+C1mD&p-&f&%-i[C'U"Q422HCXlEU,4VJVRL4M,BP30
+ZeFL2*)5`L4P,0"qMeiGleDdHP@ih5`E*!pl6UZC$k%qfRQ#d+qk[[@(BI[1@fKZ
+ZX2,pfe[f849J,9r#L3XMLl99,DSY(M'A2km@2BM,eTGUT6)51$HihSH!JG(4MIZ
+JLT'mrI,Q9hRE''rej6BB@&5$JB[-`,5lcm!hET%-Q&EI!32V@E@6*%$hYbr$cfY
+!ZYI)N6-G!Z2%KD6%fc2)'rMVY8&E&D!0&`BSHc"aU#(J-lkE!Be-i6Am,2-U4[)
+5dqea1'rI)&mdV8H8,JF&)SQINJ1HRdkNEUJ4ZL5&f,5NH5Pp0$0NkH$JErfQ)T!
+!`C@kT8EJC6HY4q!00LdRX``+[+Ee,9q5&jAE&RDK5UbQ"f&#$29c2iGkM(*5Yk5
+a3"'fde,ffDhrSk%SI)B-riA#LXZlmZ&`BiVChcUKSBLGDI1&eJR1)K)%UeCTH(!
+cLK5mbR5TTp)I9$PEEU1pa(+,rIQ#04mY@(YP3*`PK$LD)6mCX'8T-Hbi&*PVR+)
+3X%@E%0Nk&YQkB*(pB)m3fA5+MQiPY5ECVHGUL1qeTP83hl+Qp@5Sc1*Ej4%IMVJ
+V"+AF&3eT,-3G'KZda&N3DB#FN!!el9HVd9RGDlK@j3f!ZqTq)C8i,Qjf'CSEfCL
+p#B!%[fap3P`0')4bA!U&(0fcB0DeI%Q'9P69Q+BB5iL(!#CFJQQj(KU$N3-k!&V
+JV"l+jf-hAS%0#'AJF-EN@1)9'DRrU#QdqEG$-BJ8fETYL'`YLf`0Lfa*$C(4%C[
+5%CQqAC(4YA,43@CbCpm&)N1c)j+1b1LUEK#CAN0N5eKNki`L8ia-`L(X`SI2)(%
+H-460f6#LV3c[Bk$K5ri8dDGJhVF,Le4cPMXQ'`PdhBD!9YZA3d$2XXR&#Xj-PlI
+`9V3pXTILjQ%*E[#!,`&N6DGAB0r86'U-qPV2H44j!Sb6acZkK0H-N!"D9(18-jk
+aC*cC'8%QBq(T`jS534D4B0"+TVbXhU'p#iE+rHeG-Z[MJMHEPS+L2dj&2mahf1b
+A+bZNjYh8l#lh0+5iSFc$X-YYmhDSN!$f-#q,d8)%%Jb4EFq5UVViD5%`+$-9,lS
+KUQT8iY*r3c8bf2iE3Z6%U)2-%HF5%-!Q'#EPcIj[jqarRCEpHl,c2DFUF6b860M
+RNR)Z4([LLL%l[aG$68B`4)!`+6Qm3cVIZah0dfX1V3(dd%XA$)8rp&ic!#El06C
+U--#(D4I5h6+&T-9L#cNiT5,h6$+1K1@',9F+G2X+rUcNca)),kHPNd6BqNXf+*8
+("B[$9!hK*UhZ&k@h5%EN&D%HXePM3)UG3DlT`5#A%*QL6!AU&Q**p4`q'%i(cb(
+aX1IUI!l"Gd1)UZ!*M$dhTJdJC6154H1ah26%pTN'q@McEmaHb-!HHdPmpV3Hdlb
+p9l@`5G@k'$e(4!@2-pXIV#mMj!5+1eV1bHE,dEeMl3pkNMh$T$j38h"Tcb2LUpl
+I[KV9)U53!"$,%eYefI2U95*'hEdPlD[j'*IRQ'IV9IcfG!m#f5XqUkEhL+dd#V!
+4!U%U(B1m#B2+*0$RcL69$G8NA[BSUpLMV%r(Si!8SRNV8@(B+J03&0+U1NMA'pe
+rKpk)0d6c`Uhb4LTj5$Y`'ak'0dcrXPSZ2''0493VGCA--*+&aS#"PSi&jr0ECj!
+!ZVA@Smre#R6p2a,!5hE2'XYC2VehqYKcShL&i1E0Q6PR8L$L`JX3N85LDSKN2M9
++P*6,5YViU"8iq2[iqC&fT$N[%)ALC5JA9kR$SmPZB[86cYUI(%X@5U9#DTk@-@M
+X'**$@V!jB2brR**UpTAm8RUJK'"lrJ9X,`aQ%DJ9!N2+!1*fKXF1pk,HCc0R4AX
+imlQ&2cIcCbkfZDhPQj44LqaSMLIML[(,cL#eVV)J)[A(-CQ&'CA&5T!!+(,8Qj6
+EQU6(IkQ@J%(%BP#F[3!&m,Kp0SU9Te$G@Zd0Rp[[4DI&ILXPdPQ&5HF[pq`eYfm
+!NBQlrmjG6[,L!2`X`Xp#r-c#crhiJGSjJ-NQI)lM4iHhM($a28)1eG@djJe3UBr
+V$jZ60RfRj8bbfp+D,'3LJTA)$b##1SMFJ1bJKG!2Nd%Q,UK%0ff46+0NXphHI!@
+[X[P+SCIXJ'aK2CBaaQS2qbMlJL0+ZbmNc5[h%+#AMF3*8!NQc@@8,9"9PZBm9&e
+8!6A@dE9(jNlEBV%hEIVLcKC+AY-&$)@jm`%AXNNSakC+FXeA)`YEi#3[PVIdb0*
+T(QAJAIB&!0Ik-[*hj@YE(#4'VZjC2hhDJQKeQIBLKNTqD#K)B*d5C+(%16RfJhV
+-McJE(++-A'CXm5`"H%a(iZ#hCRm4+pe$TZ3R4iV0'4"&P)CB`XkK4+6PM,1)RIU
+6QITXcJlM(814JNJZ2VN49!IbdDh)3VmJS#pX388Hma#NRc%63d`)Qi@I$D3U!!V
+8460AaYEIrKNh[dBI5G$*JXSkE0'1,GV&i1[`'UU`l&rJCj&RLqZ`a3r3DHIQef5
+P$XN(FI%+)j0,c6jmj@mENK(qa!l$m@XbPF&**!mb288)&E,$UDmE2al%'c%c8$U
+IXN-!9[GV@6b4C'JM4FMm[VHB8&G484NB%b#KBN#29'9r)%((H-qf38Gi5K4J,,S
+k0&aK3P8*HcdX`8I!lTAQ0`4`29XQ[MjUJfVXBQe3@!kUdTEY!B2IYHI"klAEji1
+9@aJ-cT0JF21ARS6H,D*T*!KiVC!!##5*Q16dPG@&[qj4kPhM0B%L)Q"B&6F3X%j
+FHLfG5a9#5IF5UD4Ebh6B8aieJ[@)bNLKX2e-*Q6$Hd#ZQ#18+PmQ,dS0V6pp$JQ
+*'cklR1pCq!F-rXql%2bR5`,dMdR3RlDS!I+,4*@QRTQZ%hSDe*mcSRl6*a-hV)`
+daNZ--)&&ZlC#1"2&0ICq)!Zc1JD3!2S!I"5fp%"jJ4r#UT!!hVjFb3aQk8["D[Z
+R[l3afISS#981G'N$XfX-c-E!ad@LAE+dR04@D*83$1Z@6-VqT5TI0Dpa!cXj@Jj
+KfeV2JB5rdL+CAYP+)-MbeR0EU$"E6*9j8eAH1(EPV+p8*f8bU#i!K(p+4Tl2EhQ
+HbEJq9Zbl@!m!68Hi1'U"mq609+%k2-PG,H5%[9&dVq@Z5`qJb[-bh3m5Mdk[,'&
+kiBYE-Ve+E+[M$DKUSm2@XTH1mDef4S`U+))R9-'BM*`iV8MG2%FLhBS)TG2ib8%
+hJ)PH3K&5Rcd'T38!IQkPJe&jpdHY8#-+T4FUZ4!9NF3r[BQ+M@5H3%1KUTiF8ql
+-BdH0)kH6P*a+2QXB[N`1Kk(bpEc90"HTUmmQjbLd"5PR6%,&KLQb8fB'GH&#6qF
+ME"#3!"9qN!"RjUQXB)+FmbrR#LE`JLUBN!#+l[J)%PZTSN4XAr1Kr8@NAJ,9m84
+pqmlcLqBYF#DhR#SZ)kHRC46XkmM$5BE9A)RfSFJA8Cm6"[58[H,4!,jeQF%AZI'
+UjSFX+2c`Bd'JMVA##@E6)0409SB5Z(B'h@Q)#,+*a1lrjN6UBYU!9I"AHp6YfR`
+0r*,!*cJkEMjMH,@(+qaIfIbLAN40hpi(96-X#VP8(&+'j4jNjAmSH(`%c,IT*Eb
+-,#Pd9"253Nk,Y!"D2Sd#b15*VY%G1bY8c*9KU"CSJNcH@rp+U5Grlf[EP8p95Ee
+`"BKC,$Z[0*)k)(Z6,r9!(`l'-)mU%Ei8YSQ"T$*43d3de$S4"B5%Z0,aNj@Z36L
+'93iKbmpbPaN'mL"qZ5CBPETRfd*#9qVQ2!853+-Pm(8UM',m59N3C*E5*(lLq%R
+J*i+I0*ZP*8BrK3m41Yd-C`M*)a"@+-kI#(pqHM9prT%qm4C!0rmX*def1CPS*mF
+,04@mAmK@ccMB)S@fAbQU%$p#RXVDJL4j$0l%02k`*pU4)JUN8q`i4aL&3,L86RC
+LNK35f8fA%I&R)m@"9#Af+9DpiKh)`N4P0ZGdSH*Q*6Zd'9B$P+NjKd`fXB9$%f[
+YTDTm!XM*-aK)a&$96`(DI6dYa)-%F9*fS`eV@ZXam`'B9je"e9#F+V"#&EF2bQ#
+J!J+##fq#ikHe5#4!m9I6@SU5C'8ElI!HFI[m,3&l#k)GedS9kElZKiJd(UHK)pE
+,Ed'&Hjd49)H$*jqKmjU"R,eYT*Sh-@SB5!ej`3e0!iB'`m@QN!!h-TJ%m)j,&X(
+NBIN`cGP$FBG8X8iAG4TkcXmLlZDK*UU#$8J3S8DCYALMMHfY8%lS-[[aD62$1E'
+pP4)1cEH,D0*@4[[l3jb4+hARjRSIkJ2S+6KC@bmG&CPB(3p9)f)*I*QTiPqq!bq
+C!-T(m*2fpAG8,L+rJ'Vik86!a--R52N6rViYNA&h6+#$PG5r%pVSMc#k5B4Cl"a
++255'Z#3#Xb0E[)KG*er)iXf$eVeK1KV93MP5BSP"Mbd!pA#Qd0S'H[L!4r"i&&"
+`L%qNl59XSXLF2RiCDS%ImCY"0(d%$J-Fr))Udq"SZJBmB)Af8!+V5dU1pC58($k
+BqIhD%kHUFdqGHZH9d'ErVQ1lUTAh%4GB@G%M5+UP`[#!EBp8@EQJME5m#)$h%B#
+a80,DFPjlV)8(5dU1AlMTDBp$5*-(D*!!&GaEaU#5l4&p!kPiSSKH10JFJZV0Npl
++Uj`*hb&@aSA(Ni#RaH$DaSChh-9#3CGS$,d31ZD10%+9*a[4XHLLccp6hj2jrA-
+ppE@M1FI1R1fT2pEc5Njp1NZ@#fk#8lFXMk$KC,@cR&99prFfVD5Up"d[8GHh4iJ
+q!Y,i5Uj@SGbI[ep"E9%%kYdqGh34JddVI5QSjcEC*lV,(&h%RQK+SLQb(ibb8#1
+q8U!0d,jTC5J*4ib29*NjQQda1BZRSUVP4ASm$5XT%E"+*d1qX9e5m"(KJHL"3UM
+DU$62i"5VF5KfPjh2Eb2(4GdG%6LlRKK5,HIeSVBS1D$)iX)VZVIh9'8Pj**a+[I
+XLCb61Gp2$amb$ZqUp[Z2HCcK+Fr$($$)#K%d)G%J&di+dq!9,lR-)ir)DLe*aED
+E'J089B'a@AZdNqM$#+L"R*2Kf[T+pTRTF3%Um9d&*dqI$E-L)l!,ij`D$3)XCIC
+#Dj&9N!$MS0P`)$NX&1Gp3"(Qb#bAPjYGCQLZ5Qf12KlG(%9"8dE0a#!91!!G8`9
+,b@ZL#PNP,Lp"&Np+&4h5qdK90UX,4Lr"hBa`,,CjjbJUX-VhCm!CEDC5@I[!)*B
+QXTc0Cdp@R`VRKiMIFjiUDlA(@5((jQ#m%f)PC9eCSE9$Y)"VlE5!+a*mQVT#,'!
+99C1-Rm9"LfJ6VrSidi6$I+VLT#10)b6&NSD8-lC*bHhkG#aT0jE8CULq0`X+$V!
+Srki-kCE1BF-Lr+rd$*bYVKF#cQ+QZGSPC%-Nj!3a@5N8lJ@f+H4LSj!![8b4XXV
+p3Xa6*i#TY#hX2$QV3A11pbTBkXhrR6mAVUScSA4,G9m,YUK@i1VkR[V-NkIVYa2
+ieA,VLRQrHH"AV%J[m)QYc6XcrG"[%YMKccd[fGTmpPcSe,Rk3(fSq[[5S5ka45b
+&S'%9$&f@a*f+8X(3bMCcH6"$hG6X)S#N*M0dm5["6%V,aYm%)lRjSjZ9E6FBb$e
+emRLk"hmL0rMKJYrXi"mZUAR`@cKi9`%IlEJ14qqUV0B1KbT)%am13YrkN!#*'4!
+)mX1$@N"F`%!R0AXC-"AK83$@im%0eY1MLiMVe9Ajp)JU(dY'T$Sh-))`Z!4AIU3
+5+l#V3(AH#)Bbkh01Ri9fRpk6PB&A+Md&N!!Hr1JNBAj`%S[b2"j*,P@lZY[HU16
+MQG$MT"6-qh#mjZ1CI2LDH$b6P&#8c!U6)qTJiN$5I%hlY-U)4ERV[!p5mZ%RfKE
+DSjCmQ#Zfm$cX$*)8[+6A-h*1KNC2RcaEII*%GEe36XG9!lDm5"@@CY#M[d!K*M,
+HY5bQ2NdSG(fY35#MPdChjSjD2)idYF`E@3`jV-m#J@j$fb!U0Y,9f0I*U-EeG9)
+9A2Te8QKm#*pZ9BG2Th,L8kB1IMe$(IJkP(ZT4R`LUZ(VQ@Sr3+5i'X)RJJFHD3(
+Be-)90$N)D+,#)AD[EU9+Bcf2mG-RJA`Nl!p*"QKBr$M!f6Cl(mc6BPbahX25e23
+86,K!)[0Aj3FEUAN"#6$4b8b8-42&q-682XYA+JXrHkKL`U9iM5S(4kM+`k@CQ1S
+`H4cM#Z)kNA`HqB1CAjFURDFk%KB4Ab8$Da%8V$SQR9UP"93&%i+k$%Uc2fk%DZ2
+dKb&Ua61)!6TX@Bk"U-DKl(ZS8NSRTmMIHZpMRL6IqpK%LCQ81$3PYX[DlU%A$%[
+Rd"316@hh8)Fie,&9KcUfiP!($R9Xpe#6106%P4AHdD%A$%[R8"-10@hl8#mSlDh
+f5`4(frQD9q,[I3`#4B3lNIFq&N'AfXlJP'&`5Lar@i-GKX%1`IDf"TX-JdhHbXA
+XT*,*dHpR8kN)Cif,+BUKYCA"-9Rai'eLm#e8B,F*TCZiY)i[,@%&ZGUPGH3"qeS
+)"D&LY*[32q`Jj)$bI!SZ)QC9#+,Ml6SjP%jllf-Q!cNdYPdPh'$5'XU,Z#(L'5!
+E8Ti"*6$Z2@#[`+F4d3TIU3BBMD#f8VTNZ0V0!NQTf(XISqU04Nq&X,H)+PcEZ!V
+A@m*Cb&M6#$NTUS'0(8!!*3rCqJ49e@'[!$'@Zc,+Q&Ja-'3iaKLaV'p'mZN"pYD
+8QE#Lf0EeY'c$iVGaQDkd2J&`iSd4rmKC%!NHGk8k)YbmJJ4P%0GfYd$PaiHD0lL
++$*HhJR@STHJ9c'GT2khI3X*j"CNRT([P!Cd#'#TdD$!VJK),eT)+4,LRBTf3!1R
+#`(-KmiBbVFlb$#ESNb,JdXDAie"Ckfi--9'C6+AY&G1Mh'fDG84%3L@S',EEL6M
+hcrCMXFC542e'm#QPST-Lhl4LAS)d*NkHYEf$ifaKU[lUBBlQDrrPb,I0D-3,Pjm
+U00ZBB,)0NX2*6SifV3$"HE'pDHZC)E2SBl%$la&$q*4Q6!Qm4+E`DNEY(#p6hU)
+)60IKJ@YD9*ZlR*3%jrCQ@,#%FDSiX*c%FbHL8ZjXAZC1FC,a)&HMlYP'+[jbQR+
+(C03Fb1p(eKdK![cdk1`MXirmA4qTD5#P40S390)lEGddUUEhrZMXDE1RI3FU*qm
+Ij8'4E@dchH*-HL*K%NkU[M1PTm6bfmajC+kY43k5mE@H%0(AEEPALQP#$YC',D0
+D&ipRdZFCG1(,TPMPPl[X&IcTidq68,THFCLU@SXB5'98VC!!"3@p@CLS1iX-a#K
+%HR4[&&@ENU+4M5)LK%6jYG)fUV*bRfic%K(CH(fI!$1kfE4CmibTJXF['dbjH@L
+h4V)5Ja`&M`F0F"J83AK*BAH1#"#Nr%G"Iir,i(5B90'aL'Q$+[*@#kNjI-L"`ZS
+!*B400hjD$(N&MT!!)Q3S6llGD`T2&Bh8-)ARaa)L0)e698'J8e8(QF3$Y%,a4Pi
+%+,C"1KCS+8AN4U#m9Bemqi`U4c9rR8c5TiHmk%1c#FfG+U*&p0k6D5KSeM&K#Y9
+@G9!8rPqe[NS9Ke*"J1lIH,Y#fESGc9ZSQDVRXRXHZ!N'Cik`%"iH6b$I,4`M**'
+3!!NTlh+0&AL,j8+TMl'#EM&iGJFrd"482"@+VA5Up!XHr8VP+pA95"KIqGeSEkC
+p0T(McTd09r+MPJd6Z3B2lXA%1#Kk2mM%1Kb+cbXK8KZpRLU,PqV[R%0hGY)`AZ"
+k,f%1%4YGC+Ua5h1#d3He3`pM1bH$V-r6TU4!QVSG*Sjk!1MrjdYNEUdGc80,X9N
+jElqbBkJIrq53!*L*$Z)A0hZ1T@V1"8JXV`K!D*3"Sf&L'STVKqlkPZIb5ZfbKd5
+DS4'CG5Y9S@E2B%Fr-5,#)0'9`54PN!#4"8'CLFYHNM)UhHa&C5q(3)cZXXp(F0M
+G1Pl2eVq)1a#Yepj2@HYm[Q#M#c6F5(+'SP%(4Cm8DF6Mfi1*rI#LjD2d%!@TYN&
+bXN'G'fp['a3*!"Y&!0MY0C-!l$&e19K@r5-ZL'J3FD95*STiB)@Bc%l[q"XclXl
+a2-aDde[VMq-"p!#bi406X5H4f8!ap9QUdKP0U-!DR@j8pA)@i'XC2X@Uq-DcDTr
+DKmp(kL1mcP*CH+%V(Cd40D+Rr[+1Z*'2`1GKpE"q)AL-`pSHj349K"08XBIHSF2
+``@&S`Q(Si$"dbMMT9Fa*,abQ2`*Mrk`4+ib9XqLad16I`4Q849qB&GkG*6h*5cV
+-bd"RMpSM"B@QFP@1MdZjm!(iJ-mKG3LI1P@(38j8-A8@98iG3&1$DN"R[pU2cLB
+i)IXZ#eQbGb1cKdq4+RT5#p)f2*EJGTNmc%bLdkJDM8bLJdHQ`'HcfSb2@CRab9@
+jIcN)BQ6i5BeKX2SNXaTm+-#0e!AH@4qpDGETYN%i28$5IHSCkC8ZjkHIP*IA4$8
+(-kHkj@@ZAKRCP6qrjP"j`0m[paaJ[PX(M-R,GhM!jhq0!clILJ-fD3G-,0kU!fL
+S59lN#UJM4&4*Ir1V&SR0jeA-Z)20CE(F5CGN*UTPQ*c*hD4PVFCQDN*&AmqVPR$
+ab22UFcfjY&R0HAK8cG&h`Z2[HGLXRVf!,4"kVJUd$G)(JpV`8)LGF[N9blI()TR
+kD-lQ+PE4GFQ3!,B4GA&JTk`!!#,IaiSB@p8F-IQF*MH5)Zm@QK+$iY+cI)QLVD0
+bZ*Q)MM2lSK3Y6kC(SR%1)PUH"8&b(a&%b9$'-*J&`qCFFq44JZhEYH)@dB8YB4X
+5dA0m&+AA`JfGL,"q0Y#LR[hBElGRYV#bK(%-fZGM&+TB61#-@K1L4cPE5B3H`9D
+Ip[!""'aK%l$85#ceL8'$ePiNhc1)Y-PQK$m+Qk8+IY@++LP6L)$*jHK4'*C@&*Y
+VTik,b'di[jUkaLq(S!*C1#ZF6D#3!"K+aVKl#+!6MdBJ#RC8,A&FVmr*1C@MRkh
+8G`ac"-(1bY!V2CNpH&QlIcm0F6d2B`BmGFAqrIA$aqSjjZ2**hGijc[c$6f2HMH
+2Jc)K4J+jdK9PSha%J[*50HF$$+VQ"e%LmA*@#0(!S3`qpd$B0(PF#RXH#l[-%e&
+0hPD*+RMRN!!5D4Mf2)L*L4kQ84jK#)B+cF5-eI"kJk&LZm'!DS[X)b)B"MJB9KL
+#J8&S3c#m'"3-+l4JS%AFc3!iGZCN6ZNKrGcCSr8P2FrIVF!J-*H0qFN,dd2D,+8
++)I!)MXYNp5K6mm5#6**GVJB+V&e`b+jcp6R'[C8d"`Jb&*JjYDUF!b&-+V"6)&+
+KqMDU8)FG+MYJ%L`*Ih6d8LL)pNEq9r"@Y)@rA)AX(e#ed3FqlS8Ad6DU)!)E'jM
+Df5'XYP8&E99'U%h*HVYKdffc4mQ'K%FS+8dS&4HP8#VH&8,Tp!T&frKZ#+E'FJ$
+8$j-"l3A(TX5aMArGB`e#Km%89r3K&fmb#Ti8C,,(k+`KRQ%Ym)9$#TMq"5@R6Gl
+N0&fME0jV'Nk1LHRa8ib2&L'+$4H-B5+NE*R)E84Q*a8#XX#J)lGCU!8G)3Uj$#X
+FF2YXQL)#Q66)E1A(4%cjU(+HP$[qq#)0"E`LS3&)J&&PqK4*3mA'Q!S#JQJ)*A$
+5"B5@D)@abYUDJKlAR,Mf@GXJL8DhLXFM+THEr$Te4mZAb5)K9LSfGFqa0Z(mh*!
+!,!TfaNU!`+`P&aEjm[AAeK&MmV933Ci5l0PUESM'&`04VN"kjZ)U3Nr"MXY`A#Q
+pU(RG!mLQ6$rbiH%bJ`6Y0hC$8-0Y,IC9'"Xlb!P2ZGJBbN'mKNjHp2)q#L4GU4S
+-AUCp6MU#B4ALPU8e'G8-3`fL+%2KlH$SpCPIQi&18ihY'i-DCLjf'`Q!*0cZTHN
+E8RNAS&@J"H-e8ilHIU3q![1+3RSNQT(VZQI!3,0LC&6I'55i-el['4`&*aqC3Ph
+X&q!&"kb'G2Y$56)[J[FAhP"i`@k!E`jqX*5X#lbG16fd)L8AM$ME%#%#*C%(a%@
+&[DP,4jC&pD44,*i1Y[c6)+-8(a0l(mAVHV"8XH)eEqGVLlbGIlYBdf2GXcr)Bk&
+JP4lVApUhll%B%#89YEI6*Y)6%*!!#'q45qMQ3B'C&IilmK`e!e55F!b!EM$5Zb)
+4'cX+-6E,c9-[eN6qTX+D642l,QMbN!"Ij#2'',2b#VIR!B"%9MNeLc*1HZ`fP3U
+d5RAjEM0Akjq8AVhT1"0J(IhjM%!Tq4!Sj-%CU0V(3dAM$j[J-9B*$l,F)1#E1fb
+XKS)HIp%KRH)eJ5+Y8i68L0MD*,044#QBq'&SdCeB4aYk%eQ5!1SPB(3mJ%(M'RU
+Ehk&NNa6Ha-[TSrI%!icHh9cXl)9J5SRa[K!M[-Y)`$"QmrFXm#5j'Zm`bD84NMq
+RLaGQYc+Vddd'Xh0TEN82%Y,p3IEaH(Q%5+"pLmS9(MXimX'NU[cM!4)546eL33R
+[F[TmKZAF+4Fcp5P2XAUR(,EiqSGk9B3H5m$Ye`,(2I$"T'-@ei9EGKUf&1+C'["
+X+BVTaF2DPYlS)dpKU6R'RU9&ji#`q*j+eFId4bJTj%%Z)%&IbSYFj6D1*%$ce&Y
+F%MA+m8+L$)+@&+P2,@HN+`3B49f64)p-E'qPKr8GSbS$++1U-1Yim!1!fiC!VTM
+3pQJ0P$@4"`p'@@28MbkCKlI)-"Er@j&a)f'bdiJ5B)XbiQiU-U9AY#m11JB4"4G
+ipLk$!Q4&963F9DH6`mSkqG3H!r"9A2!i9G!IMNpjk@G["l+rQ&`l9iIjRc*@Y-m
+QRLb+[EJ`,lR#T4$&PLS(Z[Rc6k5UTYbhl)2XBiYj5%*2,&h'JLZQ`VEFpL$%Hr0
+,%2QGAR"26d#8a8E(&'#5(8rJBCP6TE(F1VJ%Fm!*J`Q*0mHD55382+42jr&#-Qj
+p%)Q`h*J642m(*qRGZk*(NcqCqF'N%hYqpMC($(ZLD%BLH2$4U#Y*AZ$BA+#F!`m
++$-1ab("`-FG'e("%+31@f2ERXe'rJapJ&bc-(84Qi%"Lh%5!RLFld4i[#"@GUmR
+"KjFV*1&6%N6hQ@9&EVmI%i"i*5IaqJa*2%ki'j*iA`8PmISm5Eb%6'D2hR5['j9
+I1P'c1)6dNqDA`+bIf#YP36R`)'Bj@P,`,+AkG"r5IhTpjI&cqLZ9pF-K@(6@(bF
+$Y,ZAr"DC'N4#M`S"JBjaej6l&6N@kH"#1$0+M`@KE%E5&LQG)FD1afL+aa+Td`T
+ZqbS'5IGi`,0$-S1XZJ!J64p`NNU*1'Rp49"'dL@,fHr1-Abp8c[-'&(iPhHSB@Q
+cYRd-26B!GI1@'T-Bk6@1h[3VFh"aiJ'&EUTBl1e-9BBAbqA9qmcE"2[R"'meYGM
+3d3dGTk&MdU*pJN4P5*C-cGY@XL4pBE'3!&hX3-'3!&3NKq1H4#K9JSK#BGXE!(b
+*'"I)6-%!lVlbS1LME5564()a3J9BcH4LqS$GKBhdB,2+m3GkE,mqmFUKqqpCC`m
+#d[b$GfpEH[L`Aee[%-@X'NRIf,BDJJ[NQSQXV6hqVlr3#`kQT0*fNRi`J8m&CRl
+aQNirRS+ab-0)%XB9C'#Ch%q6'XbYP*RFPd4%2`K5B*Z2+d`&i(+3!+Uj[Tb2Tep
+q'6r8l@EJYif-L$f15f!+Uji5fIJK,m&&C-DRcT@F1(QZA[I"GK0%1L,1(DZZ2jP
+cB8E-$GU&rI[&MH#-Q"-Y[kS)*JBXhbG"cEPp@d%+`G*A0G)Qk5AFP`GUSMLU2cV
+SVB$Ea!rdL-T68p1LTQ4k,kia["!E[+`K3C%iV!LC)d85-c'&"N9V(JZbr-(Y)ZN
+C20"R6E!lPaa(FXEE`k5G3aZ(%'ZP08)8p$#4bQNG)h@()"HM)LJ8iA&iN!![B-L
+m(G05-JVL"jRN"6U60D+l2&9C#j9+p'#6d`R4H,%N3&5hCPAHV*N58dc'lJEK1XQ
+40h%#D$h-hX*S9Z"Tq)'HUXVRD!,Cm!%60*Ka6q-#[T6UK$0E!#F6L"(YCGp+2%6
+,F&!6(YI1l6-f0CQN&fPbX[#iFNM2bkmN!D9Tk,,R`)QcHBRDN!"ZHAhL%QBMNRk
+LcK0i"fU!XK#50IT'--LX&ETCAP*K5&e)X[%@QP0RA%Kq@EGQqq5ALQHeM%3mp!%
+b2f-f9A%a1*Z5"Ea@#DG'HY`f+HhZA[!JXi@6MXUk&1)XCa!9NAXGR1$piHhD9*d
+3K+dpmM%kYih#fb#"EVFJq)d'X`Gh5G+9kG1&afdM5kX'Upk#8Xm982PT"!p4((K
+*0pj+C(A2j@1aKr92&jkS-&i8KkHmQIcGB8mDGQfl@#H!CHTL!PMkG%2(CHJ8'dP
+c`H5Vh`JjXZ6,L@2E!K@0dCj-B*Sj8IGlb+F6UlC&3!YQaljdqq`%(H#ki`2BU,K
+64KGb3[@52eqSkqN69rQKd635iME!JjU%hR6%UMN#a5)d!qBqcc%J*IVc[BGi5E9
+D&P$cm26!DB25aU1'*4U1XAF&(E2`JUXc*cCX$b$b,1fahmib&!0pQXNB48D)5pd
+'NG8!H)6kZXMf2+FFQKl!f24XqSX,&Q'6Z`D!,B6I0$qG4IZh)FE#G"CB+PiH0#b
+`E&X!RX'4mDTY"-NR3@c[[b2fM%&3Sk!a%U8GfbG+ema'QB$cf*25q)*0E8Dk1'V
+!p141,a!GFT!!BQJF&*6G"3AEd$rA)1IUTZdMclD43PE[D$$lAh+Kep`@ZJ3(q[D
+pcEE&jI9ip[RT#,V-Fa8QB0X6pGC'&KJVY,4rd9rlf`SiJkMpEC-SdQIqYZ**G)-
+pMPHX-0@)b*HXI"bQ8L2H#*GB"eAGLFH5+18(i5'5fNKmqU5j4cDdCkRk5"ZFLC8
+QpE5Pda$*FSXH,bdk9"38EA9'AD+L$U$MBC[kb9YSF1%4*`kR92B429jMU)Z'2Y#
+P(NK4m@LD28MAkB'&ASlZ8qN*5HY%YjbVlcRaLUqNj,'$,b-4FH!`%K"RMj@FifK
+rH[1#H(Ai!-AqPr6NR$cEF`l0*32q&kS09G9[hAE(dYhZ''eh6'i(!2G1$bJc2(V
+6c8q6SFqI$T,4qrpD&0i$m0k254NeSM11MM#UY$Y4,0R#"h'T%mDA9M)Ea)23MAL
+51eNdE#S+-MbQ)S&ek%V!,RhM6%QFMrk0G)%Z'ArjVq55L%#fII'F6RFj2hY`DjI
+60&YEcXrq2e[1YS2RY!KU`h,`i)Ccmd#qMp$%2eJe1")B'5`2d#2N2IiriAaL2ai
+Ee)(($8B$'#r'-$Ipah[J2i6"bJC2B'iL(SAUlV0l5Z,6(3SrL&dm4Z*F-c&!Nf"
+fUi`-MmJQ!mX1`E,M0fIjl'r#-J6mNl95`$pCZc8#rXRqlkk!laBk3-!r'C%#rXR
+)eJUB@IiZ#RJV@0BBEU2M463E(f`!FLm`dBkq((6Xem@aTmlGc52RZ[rk4fj&PU-
+GZIQlPAN`5hpPC1RZC1hT-IEGbD+hKV%lpR4%@MDcFFI6adq9[($fH(fPYPr$XCl
+[KqSa[(IJQ-I*Xe3+J)8-)%)cATj4YPFG,%lNT#dkBShip-Dp9!8*4EcST$T$)aB
+aHMFYV8SA[68Rm0&0BM%[hkd-Vr%Fp&cNI*p@C#"KX,-l&QLVr`+"DUB3dD&`I8r
+eU@1r3F$frZ8FZ-ePLJ-&5FdK(m#Y2SEJ+m6MC09"H`F1H"C"@(N5KS`[T"1',`L
+9)dhH,C+U2NBGGjPXr"Q+jh8j@d)Ta5VXQV40Hdj9RhUK2LHpAEGUdqATE[T++,6
+G66I+4e[Pc0`HJX0m1j0,(83ZYGZ[LAi-4h'QT!ED4jhBpHbjG$D8#(AB+CZ)4(b
+JpZ5jGekSN8@0M0ldKfafYK+ML)cY19Vj9k1[maa&3832m`@2[9mh24DpjhdNCH#
+djId&aZEcRKIYl[5'IpUGr["2mfUbZqVbeV%ErED4hi-[Pca6AeQI!l`lGZTirE(
+62H!GZ@XkQ6B1q@2fGqQ3!'2"Ke$L!)mp$p-d*"iiBE00mbXLNp!4$fd,ZimKN!$
+p[FI`rc(r-81fYPd[3EH1(8Z2RFkYBZIKEH5@AQid&6pp-S[P4p6Y#d6Cb9HhG0B
+hHY2Y143e$4D5frGXacbCm2Bhr1rTE*LH4cYQb05PBm#S#k0V6`kA90GAKR[1P(K
+cSU!Je$)qUZLQQ"h2Gd*d*P,iBYBH"SXmE+Y-L%IVX1dGE4RS25YP4TUM$#cYaH@
+6e5qFr2kjNXT6H2#Ldp[PbRLe(&Ia,$+RMZ1C#qjJ+@3`ajIkFHQ9bR0Rc[TkYX2
+V@6p#0Z!hS%ka,NNAECKNLFd18QC8ZGepH-8"4K5aihBfI"NERRUPjflZU'Sk'rR
+M1[E1TUhhf-mDrAA0FfZ+rBj3k)8l3L&kR1,f`HSB(&8ZGNI)!DYqiafLd3[E4#1
+eY@Md3NddLQm&'Ve`pp(SK@fJN6'3!&CGV`A5eQE`f`LN&bl)FS0)89're&Ihf-Z
+(REqVlmQKA1HGFhpc[,i(XDIR$[b0pYq&8(qm*(6bE%l*fGU3!(E'bbHV!F@Fl$Q
+98l+VZS4q$TF-N!$B!3!!,Sa"4%05!`"6E!p9$88d!J"M4Zicljdl$#-L-T-4%H'
+JU%LN4'CN,Vhh$YI8h%pQCUk@SSKLXG#&D&DQlldcXKp489$4h%pQlKq5QC!%$5k
+Abe9QDQUZ9-4pd8c0c!M(iIHq-q#iRrlUrc[RlrXrhpR2Gmi"'ef""-%6j*+8d*a
+[HcSaFBEbJ2aiM&9qR&[p5IHR1eZX@4l"%8*hFfIEHT'kK-!kT**9I*A8-*EUY5h
+@MUdG+eT,aUk3!+qZ&1@AfiRdT%"YrX*%@92qSqRiIM9*R+CjE#Rd(f)brfrKC0Q
+Tc09LE9hS9q)arRhKE$P15H0I&RiKVeIqU5fcZHKmFD"@CRZ#rN9mKJmUr&BZ9NT
+jIZ%%qEBb9R[59Nd(Lp[jN!$#SI)$bRIDIECb1P`FSGPYpp-I4#ZI96K2,P)@D!f
+f0a2Tdq)Er*(#UA+GFT(2,(a3IP&j@([*GSC1%FpaBf&c'3P"@fYE4`eLJREHpJ*
+Y)cl2(bp-NUZ8'TjEf&mHS$bPI@kVTm2%K9S,@`qk52bD2eXi4kj34QNPYNCdM0L
++MbYF,$G6f[,4K52PMXTiVGEQThPLHbh'YMZ4[Lk'mpF+ZmUVPD@m8f&[HBRbYKC
+U@d8lL&'mS2"(qGr+(pSQ@c4Y,'CTRpNqTVh%jEaRB4mj6,R+@aIq+RqSr+DpE(Z
+96K4RD#GY4qNhiL[mpm,TmLQPR4CKfdar%MrL2aHfP+mTNEa*i5rb'Z92l9qfME5
+TZ)9R&pjp@RjIbG%qX'fM9m6,fJ(E1r5kq#kr9*JTleHkDjrBrNElLRYiYm,1mPl
+P)1pAq*Em9q@`pTlY%-d3Jl@9YK8d3(b1hbX-NIFT1rQ4`K[b9Z@XYXZfJkD,PGa
+5H%'@P#$Y8pX''LLUQQ!c8BGI9"ab)CApLJ0e$dh)dVM18rJaITZ[j8GjSTDS*kB
+N(NZmREJfNEZFXHBd6jbf,,Q,[MlPQ+JQ$e`[bBGFNUc!f&`E+1,9&%Rqh#2*fj-
+P14DQ'ZBCQ29!&Q(Lak3+3Q8`!jG9UZX(aPDU'NfV9$edID@U%hZ-!TP#V*-#"-'
+Cf5d42NCX#V(,'1r!@%Pf3V0QP[aQ58l4*9Ph5V)V@G%QI8klq0m1fKDk*M6b@ZJ
+UrpZ+qN(%C[r5`"84rTV`!@rkReGIr"V"8Z8AShEl9eeC(Zhri--e%D(rAP2KAa%
+GhU,#(qD2N!!hR[IhU2h)d@)h%8TI(VhQ`c8Yd1IeB-T#9N6dk**@c,Ym'KAUM`l
+dLj[A4#b2r[m%D@S2T8H2R[4Ve#P46I4VIUGI8e3Rad`Jd53lZ9pMeZm8(8lbf*I
+)b%j0SNl4l`c81-%k49Pc3Mq4K"iX)BJ8bjeB`&LBP!3N(K3lU@EbJ41SNh%3B!,
+9+KNS4S(JJ$C0""6U0+P1TT!!-J)a8k%Y(JaP8URA&'qQU@4*&pM-@3QY38k+ETa
+b+P!U@M$R4C8"IPV%#G*24E+Ja%"%K49T8@83%q"&9!cd#CSSVI3TS%@#Jk"&kUq
+8LkJ3j'-[-XP!"6-4`LeHB"#+4"AhJS1)L!5#+CL"K(Ur32d-9fPK5J"ET)3NRNT
+H%&Y!Z&,e8SL(qb'-HUm1JCVp,Vqj8R@CZGqP80,8X)NS%ib)rkU,Qp(GqXd1c)#
+NCK2KNJJMq%@r@C&GCY%#&5l1f&8cQBQi*$`ZJBK5D)+%3$3Te'8L+p&KMPHZ%$!
+EiZ(ke%!%I$59[(KjTJ94*R#BK8U4N!$QK5J5!UPCB&*qPm0,'9a&0Ym[%b1N-`I
+K'j8-3r$)4A#Rc&`+!5TA"T*lbR)B0JZZ*Il6f#kE`#"Hm#SJppijf9-aN!$TKBT
+l-[GTi+HeVJ3%)F!VcVJYj2SdA4B[-j9p8&9#AB"ILkH@8#Skr,l0p&(MeBrGeR"
+kBN49))N!EYDi)XJ%SlJ)4MaV"MeBF%K``58iA%3%cN*2*j,HlUl#EVc'c"EJjPS
+P&33,8bp3`54le4%iJXU3!&iikB*22i-Mb1!1*&c!H38*5S9ZN8!@K!X-$1YR4HJ
+0L'GPj$0d-1-R$BLSiTh""',mISA-NAVBP#ZLkSIe,H#0!%c`bJ#,*+B893CkPdJ
+G4%aaN!#&%!`GR*P+[m*d#DU#P+%Se-qX305D,M#CH$`"!4U+#$8!C[%#B4LQ3fD
+LD#%&Rp*+"q%AN!!b(4!PH-VSL+I*j)0Q#[CKF0!JTjqERGaPPR*FR%b3!2R06Mm
+@IV)J,5MC-E06F""4N[3J*YjMei`9$DX+&P%&#k%5#a253M$63r5C`'jb%*h)bLl
+LY"X%%M0-(RYe`DZ101K-K'JM1RcN#%L96Qb[Nkd&k2R8`PD9&SBbUB31"e'+"#X
+'3PN4,e*B)q9%5qJX8PK,@)4m!NHJU9H+R'))ZH"1i*eSlTb-JAMF+6)IiN+`-!N
+aJ(%38b5J@[#TKDfm3ZJiL*6JMGJX*pN$Ni9a%&8A#(L1*KFX6,fAh365'%fQB#m
+K2&iJ#'M1VJ*p*++$BT!!dFCl*38#4k5D98i+JpQ)Y&fl*Q+9rlaPpHj9HhElSp4
+0iEALMGTGZm0AE*@ZKSGZM-"RK9VaapTh8BXlMH'eEJ[TDX5'j9'K+k)hESli)#)
+bG2HraAYZ+fk9[mSc1BL-L2N8did6a)R%()&Z4d``DE209RQfh3fRc@jQdVkD#h3
+,Q(f5(0*JPBd+c%UB,D+F(Sd*hX+-B86!6ZH)FQBIQ'bBlU,PAJdlBR"S2-NJBrB
+4dpRMMJ3LCRF'p%kBY)1a5A*!2c((-NhB(IlaNXK0Qk0Al9L1ZQPdD+3BP$U&j"c
+6$6%m,'*cp**i00%e%lS-9[Rl1,,3[Lr'HL$@E@%Z3[8kXHICKC@l)hE$&4'KNHl
+1Z"P&I'(5[Pm&jQYNSAf[BVd6ka#BcT)FR#r+4c,&S#2lYN4Z@K)CkPpcppCU[+`
+6`6B%*KHX*dAjaQVaqT(Fdp4Xh4cKYT((,Dhb['V6h9[)iDEHT-fV`f3$@@McYQ(
+Ya2`J6$3JPBTbGJQJ$E4DfL5a$3Q-fV4NHILH8(qN[)Qj%[kIG`6bl@%+*2RZ*k)
+PTjc*"N@&4Lq*##2#kLEQi-lD[!,)6iEXF*KKN!"[*XSjjD*kmfE2FTS#h$GkeRD
+60UXDNfB`GC+Ff8k8,eP%abe5JRT,8TQ'[9E,V)hX2Rh6jSJpQjEZLG`G[558!G"
+QRB+)"I2,-&Q5I$e@$-STMpqH(1PDD(6%ZFh4DjB[LFD,8G5Qk#AVL1**fU`m,D(
++G%5-A"-D[6`mrYZHIdd`cQhb,HjZLQ3D+TH[fEJl)Mb-CEN4XGS)T*0C5CJMRB`
+iVb9XY-S*f6"ABDL@%#`,H'&k+c3bG*9laMJqNibiCVTPjKQ"R$-#q@e%Gl,34[6
+"HMAQ6@%QD`RBXi3q9NG#8`,M"S(aQ0PSa-`lC+-IR#EYKeK-r'5Kr9!"1(QBRi&
+CU5AB!'FHc%$Vk`RcRfhYm*rBNKa2p3qR8TZG(l+e(i*CJr,$CF#)`U3c6"-YBB&
+lBf+9fr$6MFN269KMd[G,Q#B`-kah%j+)aXFmh4"A+YJKTGU3!()'GNJ*`-l%T!*
+'dGS8(3r@H!LJ'laJKbJ-E'Gdeje4hqQm(D#0Z)G2fY4BZl8TZhQ$MMrhN!#ZfT!
+!aLCY#$Cr5%ZB59SE`'QcaCV6jY"$510$TQT$1IMcVI*3&mafV3h)DS2Xe1DUp@b
+ET11K$6fM$F@"U0BQq)KEPm&[6SG$`ij2Kd1[QV5K&*-3XY#'BQ1'IS)j0QCS%ke
+0Hj)U6Gi8',4mdjSpUhH[#89LA,TlHG6Q51*HTQ%f*SYKTNVbkf'LT8-QilJ3Y5P
+m0li)R,FXh4dH'J(Ti@RDm&,TE1Hj*aahH*df(!I)eGSJ*l4*%ZK#J4i3+'Er%@K
+IJAB6D'1"9JMd4i&q*G!5KZf%ecU"PJRd9i'q,P"9S*X&fTp*[b[3T3,p6+#"![f
+A3!F,e-)dAQEKGEDq+Y#I"9V(j(5"ML4e@fTP5P%2U45S3b5[N5Cf9bh3"8`GT$m
+@k$('mc9$h5I3Pe&R%1K-[2Fa[Dmb'1-&ZNLJkH`L5+$2#E5h3%F,p#1"*JLd0DZ
+j,f4V'c[2!)'mTV9L&0X&QXFJc4,S+B'Q#64!S+m`4C-CLB8#I91JI`LdLT%5*Y"
+R"(T0S"m+G+e!"`Rd(`aeN4%(U1(am',CiKiM&-cA"IU@3,m6k!f"MKAS9)'qaQK
++CkjrRY(d#b2)+Y!iGPU"R41E-9QJ9`6kRN$R-j!!#U0JP8$EX3dS&QKRJ4S%ZNH
+J(S'H%kM)2$*%S&N#c@!(aPlHCRl[`mif3U$Y"CV$VKFa@Z(pCjPh*JRd+AD'rJa
+'4hEQ8S%f%ZJl!XdAD$q"ILr3S`)G)p#*$0J`p[mL)k@'Z3D(fFYbc%lQeL-#2F4
+f#m$Z-MS!qlIi,,+#HI"$GXK(Q1K@J@i6D(FQqK(cIMec(%6R#I5`3(H"G,Bp-G$
+&FXpQYNqcQC!!RkPqKqh(``*Y*Y$2"4SLd'rB!D$#)G!c!TdL*0l(U@,cYir*+mV
+H-UqKkFB&VZ#9mf[kK1@@C4`D@0AkDT,68MQjT-1U8GXcp`mjdbjL5QckMVN9"9&
+cUVYr-[MFp&0'XbT-DYYep@MlP@dMkTT%6Nd,fIGPIGCR`iVl(Icfr-4A%cb"'kB
+ekl4dFIRP!m-[YV`f-ql)cYNY'NF[,1fm0hrGM*1*"Nd@#fYIhchHH[Ip@@rqqDq
+RP`@Xq1H!RX[l2h(i[EmmrqZ(MbGIN!$qfqMYd$%2A(Thk%XrEAkibpPGAhhpilq
+IIE,[hmEqrIGAQZX1dhmk[KBqm[kF$hjiijFeMkbrpp`ARrIkq+PRh[VVS"GqHlP
+05Y#RrfM9HmQiqkkrmpf,2hrdi,%E@lr[mFHQ4EHllCQ`pTZM4@H&j4'28C-GY2(
+@(H3Jp2L$d1-2ZN`@fU#Z@+-E'C3&-d-cSL([ea50pb(60Y-EGHjY%$qK34Sdj`j
+pib$8M3HEV8'$bjN5!"eFV`e+3"8IVI6JYVj*!`"rLdN9c(jYm(l5U)PbTebBH6#
+$#3,p6"Q-hhV"@12VU3B(Di12D-DUQlXPG)ECaV#E+L3CQb,KU9fE9S9'mB1KNCZ
+f4Ui+M@4VSQli,DS`JCY1#bc'@4CDjE'%j-AD@05R"U0@1KD9XV%0QM%$B(0K50F
+-kJm2%E-2Alkc`V-h%6!f8KZ,#XYBd$m@[F[BbjUacde+EabqI$2R$'hXE-fBPbT
+p&Y,HfMfVFK'CKGTBSpEFGIh%@VrE5d'qAmY(I6JI[A`qkX6jkl6QCFqj[cANlpA
+b`l6QB9GmapU`Hdh%SkMXj@IH`X(HQR%qH[jmp2VjAj+&PMmFke0@2cVcr+PDFeq
+9X$QV%Q*#VCN*`6j9(d4YqZK4%$'KlSj%60KKdLBJkdd))`YY3J6@aCLIJXR@QQI
+lU-M`8G(HHL-Kq2JAcPY9ibI-2llq-'%Jp1CCcdiBjPl[)"ID",aq6F$V9ekDEkh
+PP3,9'LM8qI-%VAP6dA,*iJ85AlF!Epj",3rl-Ym,rM,3U2CMfdJ52"FHYMZb`Xq
+ZET!!aCk)b0h,)pD`#rqkH*,Ge6Af99qZq$4Y@[-rD3(AG*1@KpHD[+PNJDi)%9e
+CV*B(pihh`"4,mTmf-V(M-B,FZTT)5*BQNHj%EhTS4(YKZ,``A0Ti[,Z04piBR`i
+BGM+adb64dYV$0"`qhKmIH4Ake&pa9qql5rA+TG-1H%KXAMH-(f@94jHPZQ&d#A(
+$q!*-8BFHV8KbdaJbB@liH5'4J"Y'ZG1kkG(3QZS-!XQPMFBV`ZJ1-+dPqBmQC-+
+FmI0!TL6$#m%,B2AQTIqcTdF2e%EL5GN["kbbS8D8Ijb2#G+()8D81`#@!C9r!pS
+V!jTJ!jTJ!jTJ`aDm+mphhpHPD+dI%VL4X5CY*&V`N5V-%8PZ$'FDN!$JQU0C-q#
+GcB$fd)#A0X0!(ebm94N)66B[A%0VT[fY%mrj%&djFS3fLT`@fp*m!8ll+Y3'`j!
+!j)lZai$8B8"'-m$G"M55"QbcB52!qYfh,rkd$a(S+*aj&-im#T!!4QALc1A3L[-
+fcl-6Ka+i#qbdKS#f8lqGPYNTJEh4hYQ9qREKHlI`icPNH&6SlNKHHd)lj+qpi`Z
+*[lE5HhNh21,$MD(aa+hc[JQ&-'amdc$QM+pTZ2NpCF`1E8`PbiKMBNcD',cdM8%
+q'A0+NRm14%B(j99fLPb2`J-YjpST[Rkea)%1LA+l3$Y&EQTjd@i*UqFQhNVVD'l
+!%k1[A680M9`PlHYSLDXNTNjTkk,DdD2U,FKD22Q1C#dHE(*RB6Q0H(ha%%EViJ8
+QEA'5e6)ZM8Qehr-TkHL`LH(S@-1[4IKbV$FXMik)EaR5I3,a*)cEUBf,598j$Sh
+e1*aq(%lI1Z1[ATk-1qNNr2(-fMK8amDKV4L(ER$FBNQH[P58Tq0&qVI*--%`qf'
++4ARL$0%b-CKTlR!6eDNjlpC36&SZmPJZFPIZIP"iaNGK[mIJ&pf*c0d2&DJbjZ+
+6BqiN5Ck4CUFCGSVhhYpR`r5$L4(Tli)mRCbL9%ZN)"Ll$rTrcE96I0cXA)&j#-`
+Rk!L-'mKVbhEfLPTTNY2SqpV[I[)8d5VrlYqU*HEC+GJ@D2e9215`ihUklhVkFGF
+M"09FK1[II0HrZ9m2DhYd5k*QeTh*RK6AXV6eX9hLMK9ClIG[Ik$m[V)RLTqTIV,
+dYVqfEFH54XeDe3bSrlcLkaBp'YkXHq2-5aGIV(Vqr![RrVjZVE*lGILUd+9,`TC
+rpR(8[k-hEI`AZUl0eckkqZ'VIrhNEh[ha0aCi196Vj`m'M)hrHb4brfk"38(K0c
+$r%Efh5XjQCFZAmmih1qYlRdlGf[rHYIA1VcGUAHIRPQp#RkFm8h62j[mdZkRPMq
+hrRALEp0rRr'0VA$5IbErGpSrj[rcbq"lErQr$jShDm323iB1rmir-2(E3B2(jNr
+)'cpkj+L!l+#l0kjNAXUjIRK"4[I1I4qHq@$5i`PYM-d0LIcrV3p%`93TEIKdjBT
+pcqhBYA2VP[HhIE$rh32[((V[NB0H*pa4iL"c!T99Kq9#i,J[aY#jQ2GIR$[XfDI
+Q@"Bq[HM#9e1R2"*i[!mDrh'm$aVriHD$,qCqjCppfJGrFII"Q-AMF[X2HfV1X`X
+A,AKkkL06M[2"66pckNpl#$rb!1L@2bA41fZiaHpifICZ2rS3Iqi+BYaqLYX[8H&
+hrX9cDbGS9KlelrM6Z#2JJK1*GGdNVpcKkM4&0c241bJid8eGilee+lrjIT@*C-p
+el'3bpk$-NSX[ifPm2BrPAAJF5M!9F5[',0b2-9%2m(*q(brM6r"LrJb[jNrb8T4
+[m[0DhTChj#@m%@r'@r%D2S$Ammpj"ImDB`4kB,[I4-'j0c!DjL@-X(U49r(RqAR
+q!NV%rTf[3qNSE04Z[TU(SfaG+&r+Pr!`[TaraMrQ8IcI2*T[`R#aIr&)[SC(m-h
+m'[q)Aq8ImPIjArNRr'pm,pq$AIqr8I!b2m9Ii5G41#Z%*kEcXr`)[mclm@imL!I
+c!'$[F5rk"XrQGrN9RX-cq58)AHFCr$"%hq,GH9rH'5cYqHZm+hq0Gq"[mdkm0qr
+$Hr)XhSXAm"rj$2i0EmVrj%hi,l`GriQhj$rce[aA2T(raUIchjQ!$8@)q#6q(ck
+CrjG2irrJmrNrqCHJiakJI)rI2$k,Mq!rm#&m+"r1[q-$mIZ@$q+$q9LHcbI`2$k
+HMqBMq5K3RSd6h!A99aLp1D$h-&m!QVZ$eVlmB6k62mL6q1-mJEIK4YkF'hLLm2p
+m&K"44-$%+lR%0r"2q8UqJZrMcr%GI"IIbEIb,Iap[Ser`2IcGrN"rJira0rM"ir
+,![mh#NjR!3`GNVR+(Gc#,r"!2Sjr`FF!1jGldIhjBTl,Kr&Rq90m$S3@mUIj)SK
+qaDIb+I`4X$a@&QM-rhM-,%!%E$ca9PRJ#p$`&Cq0hiPCi#rih6S,M!'eid"[Ie"
+-k(d@p#j#&RJDe$i#HQqC"ELfNciZ1P*fl%4`(54Kf53@&T+3!(D&K28V@9K!3Q`
+P#FH'N!"3j#,"rL8*a9%NP'Dcd*Q&*La-*H&f,!Y&,%5`F*Q&eLcNNq"R3[kf,-`
+RSABl#hYCQ%a#faBN0+TLi4!*c4MJCZe)D&9-`PT'U-)![-qZhbdPi3!,lm5ad)b
+%JqbSRc$8ANEdhX%NV'D+9V0MKc&(K-eN`8##c"KNJ36,44)ZP,(`+JZM53KN$Je
+N"`[U4d)`B`YQ4!6[Cq%N#icdB#BD`!iFX)i&jUB!aK``Mi33*`X0,%55N!#qQS4
+X4NVf0KDBZZaK*0beXm#1HTGYf*AZ,-aQJ4hebK`5F[Da`,BrKlNXam)#fm)FjUB
+FYXfC'eNia3)$PTP!`U9S&V*BQ-i#!h1*NA+GEHee4ZMe95b`if@3!+25$$r,JiH
+CK`kAX(#1"HDR`ib@lQGB#'5"HD8lJpbAXI@0BB&Tl4[-!MYVhq%XX&0fCRQY-f2
+VaRDX'f2VaQM[eTJ&4R8hYK[G'&[l!b``UYXc!1e9&KL!VQa2ZPDc8-%#fiHZE'H
+k-Y(A@"lT`"4eZ-B#CB%4e)(jY32,C@phBU%P#b`IG@,(km48G'+le)Q4fkQ!K5N
+Np%jM)Bb&G"Bb@'"TU$Fl4ZmN%[S`&AhB-IU`p0'((E[2Yb`B5HM*dQK2YJdpf6E
+dC)I[bA*Vcb-XX,65Na(DFb!,,-ePXIBJLlNMLl86@@`,XeLHbQ,-@Hb3!&Nc@'$
+%C6(![9Lklm95GLrQa&jXHhTGCB'e3leBcZSeP`9fT!,QS!+@a`ZBL`YBGLPJa"@
+`22iMfq`I5Hk6Iic@HDaCjpeK@TTec@2@c6YJSXbk6Q&'i,8Jbk`R3bLj`U`[ffr
+@ddV-HTG!Xhl-DGC,QTMe9MDB*,0H)m"%``6$6$EVpABBA(`1KXm9Q&8`+X`9Q+B
+`8mak45P-!``Z+V*K*TVe&VPQ[8Fa6$h-1TLG-(YKS,`(P*[6G0fm@0FpJUkA$G2
+eQ[QkAM&6ee[8k,TBVZZQ8ESZ3@!&&[YQk2TcKh4p9aP-LDl[2+$V@qYeIFY&Q-k
+krKiZpN*S,aK@fA9pD3ZB[6!C-&0dI8Q5VSH9`Qc3pHSV6VdKd+Qr81R8rhlHUDr
+&C'f"8krFkp5PE+Iq$SI""Bp0eRPaXUj[K,%Pkmi#Q+R*HR*#-SL'`88+&Li)ZDB
+PkmX@*qYG`04PIV)HecCC2jD4V0ZMNrAlCb6VjFCN[H`F6'kbrN3*6*pN[AK1X[j
+-"-aPQ-R*HR9&X[kN#M-T@5re`ab!!D*d@,*qHbF-%,HKm$BBEMH''3i$aIikQ"d
+`Z24R`R`*!d#eD6"9-)%`B+LGPkbhpF#d50BlVS-"`58!@J+KNLE*HLX+!m*D3A&
+018`T$"!eqFRkJ*8`10!!%$F!31XrJc%NkaA9bAU,SQ5p"i!eJ1R0kFPkA43-'1X
+Jq!BFmJB1mmEFC2f-'@B[$)KmD@+brM`BRYm(%jbXRhI#`"RRXf$bN[8A0X#%`A5
+#'3)$ajq,JB(bFeH6pA9JA,XD"KZJJ'!4!!8i4S#`U3B'"*T!l+IBZ*9a-&YJ)23
+F$V1M!@BT0VIFSr-k$h+K4drK(Yh9!*-1Nq[4PmA!p)'CiY(6"*M*(Rfp(3BAk`G
+kp0J5Q)d`FcakPbU2(PIKdBm9`f4kp+)bMfiYmZKf$`cek19C(VdB5TmCiY'V6hR
+d*aGlp0Xc2(TE-(F%N!"'X4kpe3L2AP2[dHXM22VR!&)4jp'r2ZR4Hi4jp$G!f*N
+dMrj5L%H[!V*UY%II!D@l32bZGKjp*`MB#F6@DTJS'!"k[j0(h`D#YS&Kfc#2rX%
+"MliIK,dEkG%26I6Slef&kHV49q-b()V#MhMdjC-mqQGJqQbT4imfHc$k(G9HBK@
+,hlb"P$5R+D3JSYaKB@9`6&NcRPE+8dLCDkYGcD9&'r$e,bLAqf2EmLjaSQ-lGp8
+*-XAR((amDf1MD5MELdFH59[%'qIUZEf)Tj9"N!$lLrL6!P'4af64MeAaqbYTJcZ
+'h-qR3#qe"mhRLja422NLbZek93BRE6N4&`$FlJ19["CP3BZ9'qrZjh&PI'84AeI
+1hbcLV85LH3V6(-X1p-[#5TTLTk3FL`hR!D49GM@,!q`N0j(l6E,Q14i(N@rG45T
+TRMZ+qHCH&PlDk@LHCZFTc36Q,4X4(@DrCq0VLqP#RPE%8lClVaD6UbRfHi[aGqI
+8(BbTfR[9MK"JhQm2DFF6bdSCdlTihi1Ta"k5biq@9E)E[pX05KcQLJ&PjG`9KeH
+K9(ba251Alpj@c"q)`pr8i&ffmfH+H,fGPa6a@P%qc[@0#81TEl,8VZB6l$5b#LB
+6Ucdirp'jqm$rk1i$0l[l`2(Z2R#6Z`qNZVZ5IZ[ZlZP%G,6phR3iL&bGGRHZ9mQ
+pA1*Z*f-UGRGhl2q*lJk!Zp2#H&S*6aC2XlTBkCaB8@ib5NM(9aUD[S2rR8lMjp2
+%R"Dmf8jHPmCVD6B[2X2[,qHe1pJHi(PcJVq5aQ)h40Q5EQ+Nc"6pl9$%'Q1QBZc
+U[0-SUpZ5REJe5I1Gl!'Y(jZJ5#(!"C&VMd9b31aMLd55H#ZrhX(Gk@L(bPUFJ+p
+l$(a-fDS6m'&h`VG%GT'hbd[jRPMq53Pr0jBr@F,2ar)A5hK$,)D%mTfar,N5AKR
+,a4+q0*EAPr#1XGbrejY0ZP1Ve@'B3KbXHpJ8f#*L9c'R'mR-D[G6YTa,CVLX)%Y
+c*c,$FL9EA[20Y1j-,GX3,+0m-r0`HhB4McQcNeHAF5ZDff,HFI[TP-I56k$G-CH
+60R1peC'dKHaR2lXk#NRaCRc)+$kbl!"TY&2Lh$,m+RX!8S,&T5lNRR1NZ@G&1!+
+DZrK4Tf-brUUD0e-CVHR!aG63$,,*+E(H9*C(G,HdBcbBSrSmkemJLdGb[G0%Il9
+#h6!C'!$9i0B$pFkS$26(bDHiTcJH`Z%%-NVR2(qaQ$F8m`(&[#dqja6cl4Km*c!
+f&*RS)kKpq1P&ZYYLSpYL[pZLbQe4RDT)XX3T2,PBm!%2"[$DNS1m5lASf-pGeGk
+,+5Kb@Z6Y!!1)a(CUiCjUNkp2C%a&B6bj1Pj0#&#D(!BRa8&4*9p@lI@SSBPA%kB
+YI9+(U!TG[RYXD!*+lC[ASEKq2)PA-EE!YdK!%6`R'BP"r1GY,$X95!&P4G`9kjk
+eYpZ$FhPYk6THG*k-&*,A9j[)j@K#A3*jjH2BVT@TQ(4Jr'ASSfKhRZ)56YF#3T!
+!+J@eQ4Xm5hVPK9Tmd%SZ6qfL56f!d9$N6N0CDS*Zkij[B(MlIKk,jVBB3lfp$L0
+HL@9RE"-Q2HEp5Tahq`PD@hL"hBcr-CH2Xm68m!SAEeA'2kVQEDYjH!R(heXX+qC
+2dMjm(j,mD[iQ9Jfm)YE%-[eF!Sq6D6[b&XqQVFNl2*Z1XMU-C8a`(UBZKTcqU&P
+XB+Pk5#`@X+3Qi%FPk(jp!pH*43+2UqI,k&`H&eXCRkfV@-,%if[A,9f)@Q"Yh!'
+h"()@4edNPpCcr#PIkaP8%C9!Db8[,qBS2%Qbm'+[8Na(NqmKh*ZYih2pD0(5rBa
+EEDp9p8VHTCL-"R)9apF`I8Q0T39"M8M0I5#b3F&I-l-Vpak`mrA92)jQmBiZ9TP
+S5TkacpU"4iRIJRC1@Xqb%p%3c-lPiaX1mHefRPB2`,bYPhfH9a!&(aRh"VVh"#5
+Ni)PaC3*2VJ+G[UY)qi9FRPIh#IIE&BZVJJ`N)ZTQa`Z%q05Y2J%*+G*p9D2lXUH
+k'i*eT#VL,e[*QQCADQAFblQ6C2*!F`Z500#cTMB)'$QGQM52M'rB`NjAcVZd11j
+dAk'`kf8I23G13%)UK252*6bYfKh`"RV4Ql"ZEPj)Xh!aY4%R9Bm0*cB6J@JNCkB
+fkM1pl@BjECQ+5r+eGGIFGMKKJ@+@peBSYPH,q1BL[P(J+hI`Sq9mC4crV5eIHBD
+El(aG'RmqPTmTiMhX[,k-0fT'`TPBJPeAb4mmb$pHacHAQ3L-bFK-0SlCB2*0Nmb
+bV)if4@4f$DRM+TQp#U(fC(D&I1XNXmlN3bFR(QU+mCF9c'eBfE#ULPpeaXS5[dV
+(UVX[hjRENaR*kc2)9e!fl432,*Tm0Q8*S5X5l(cZ63JN`Ij[J9[r[`,1!A$@KbJ
+FD*c['`FME`SAC1XU5EDJ@-+&0&'fSZL"03VQkJVC5Ndh&G96MaY'!rliN68hPk0
+aNr,ABSbc`"UlZ10lV)$F9%C"YPH!NR6aL'8DiA@r+F-0LX0BCSLb[4)'"4MX&5Y
+NqjNlNCKq[!T,(Tj+1F9l&(q-$a@kY$LHmSPEULZf@h,[G)lM9H%S[K1IH#%@16a
+eC+JIY@XEj"R$4IRqFk,X`9#cZTfLr)44S"L5YEaXPhbSI*HmSi-S&ip#X9iUb4X
+M4IRf+Qakm(X1baB-a)36*)GP0TPH5*13!)``aC-"&Nkbd)k&I")#YV1`MS8)&[S
+4eS"j%M)"QBB!`,%b8Ek(SQR(-,`jIE@%3A@L($G(Y*aG5-NJa52lU%CL*Y8mL,P
+XH@1e0`iN-QTf#Df8X`9*cGj'+ahC5iRUl!jBYb-A`b6eEPH-m,il"-Zl-k%G$VL
+#)@&a0P'pXKVB+kp+kT9Jb&cT6TDYX4a-PR1`c%Q6b1JZ1Dk$U1DF*jKpNTS6KIX
+F#eNfN5`jAe)bX$qc'0M-HQ!cGdKUjLNbbjE``)(3NiRbdR&f8EfN31V5IPaHLTE
+85d6(T3c-XXKX1QDcb@bB+(G"jIMb38a'L*E,A@Q-8m"B,NR&i)9+q6T5aI8)A-*
+NV*2N$1aLPhS8,Sk6e-0`KRVi(,%%c1%)bA(i-MeQFK`H3X00MRlRD3q6T9p63V,
+F$d"L0iL1Yr))MGf4NlZI!DTH9,Y(JVPl)$!S$T3f'*L""*-JbAhMJ)(RqZi!TQq
+-T2BPEZTVP1619EK#JE$19l&!@Ne$(ZX-ChBV!cAG+M!-[jY#pN[Z"VCZd35V%RZ
+Cf-E%cS#UEV0a#jdUbPE!EJGIqaV'ehkPT,CI"CRf%CKe*cH6U4m[(+q(B3K1Bd#
+dLr,VJbA8CmPjZSk5j0FZL[)bR,*$#dRYF!#m(D)NfX&2CTQikSiV82Kf+E,0fcX
+*epZGX'i*b'p2Jp6E`l%F6CC6XHaNPY41&mN-@D!6$N!l3CAD+C[JfNYUlc3XHb1
+2@(U(86+BZhFkX"N%-Gq,Q#0CHLHK8!2H9HV!e@HIC1N6`E*`RmX%d4L)Eld))a!
+pLb4,ch2Xm$eA5@V2N`4j"-L@AZ4!)"F!QH@5e+`MC!EbXiJAXr)NY9GEc(T95CC
+H9`K-Z4Hb9d%FD#aSKTX#(++!Z+6J+LQbL0DJ384T68bfLiirQY!BNk0T$!PrfPQ
+`NG!NNL6L*U1)Uhij)-V*5H46'#D$56&!LA`m''Q5Im+9%pRNTfPS1%Ka`BZ5j@F
+rFB(Mjd$#qr0!bG(k$0(91J0"E8e1qqXRN[TV#*RP5TD*-aM0[a9,MZNX18rr8R,
+-5#26'G'l,09&0"%Erq4+bI(NCh5h55j9*8IT**TSNQpMr+BIKHcX0Y&5JNXiUJ3
+Mk1bV4EN4LZif!R(f3k+P84-kXND3!&[C*,@'*0ND3E)-f%i6Y`Z1HMZ"8jmN16j
+[5QY0mZFSjQZG,+S9b#Cb4B0N`6!JXNF9*2G@C"2EQGJ#FMpa*dAT[Q-Y4)ZqND3
+aLfkM'JC#1pY,$QF"R#JlTk)P81%dp"9a5$,*#C,&Xj'1Ke6+![ce'["h5FHJp@Q
+d)mkiE$%5*!ECGN'TeLiNFFiA(9hQ%`VM-2!L&NheX3a-d&$Bd@c'SZTd2rUK0'a
+-1C,NI@MPd[U*MV*ca0YPTfK(K&bbH++%YM,*6r54j#F`1L-Y!Nr#jj!!LfFU)+3
+q%i%8mFaPKTN-M&aG)9QUpp0`E%Ve&(LGT$$(Nj-3,+AB@SqJPT,-a2BKLeb@$L0
+%hYiTUEGaSpiQbIdfbH5h'dZ1fm1*c'dMfA`r8S,U4f2Lm%F6Y$q6SEmNk&``e++
+AUDdLe0B'5QSYfJP(l6bL[#hqR&$E&L#q"XrATp(a*VRM1U4T[!eeA%`FA9)K18U
+UL-i5E,E*dBKd3fSMG!Q@4R0T)M*'+c3SVF)!T"@9(+f'Ni2@P%Z1QUZ%UkB2J9+
+6,mN$20!E+$S'V#3D"L""U`-QJ@d!2&`2$bpE,6VU2b1Ap@Jjj(S$F(M(U+M'"#1
+$@f!Sr$+d6$e3Jh(K@e`$%TYVS#Lr14d6P!UYLj,8ZMa`eKNPp3eN*FFEF`RX-fE
+*FDDHd(*Q,d1JD2%C`V45G,`dND!ZEX1b6V489E,@[!T0I98`18E99-RaI!'C2Qq
+8(1FVL24j0*S[S!Gd[$#9V-qK`h@"a(-aNZAFG0BQR9X-+XkKRh+"e,qM0'J+LTf
+[fdGMbJ6,fY8d"RpDB'd#p51M+ZK!8iD,&K&13VXQ)NX)R$KGZ#`j6'C#Y+Q'KFr
+)cTNQ34j9bNpYNZ06P[e@aV'`K9b[a(MjP#a4ILjIFZc`N!#,(DaUX'2T6PU(1i`
+@JpY5QSN1E3l0-mNkUJQH(D+DJ[j"GM8Jb@#)86,d,iZ4("JdL#5E0KPrG3T&NT1
+42YDMXBRG50#aD(kl90&a5*9a&A3NA(DX@,)8P6'8YBLKl-K9pb-9*@0dqRB&%r4
+R$jc#"+58JdSRc"-6-E'JMJ6!cRV4mF`3G+Pb0F4dY)92)XAUU,$H4MV8'b0[cN'
+h+hI%+I8MD)2`a90(5Qde!KQYRP`0!$JcK1[4PjYALBl2BiLk#V5ICZc4eb!%IcG
+%lK''PpCFdI&'!ef#[)!GdZD,mNXSJUY"GG9*E2eSSZjjM"R%"pBAkNK5If%+JZ9
+F%lS)4eZ(dCaShYI#Rr0%Lj*%&fdA,%)P65`A,+E@G"'L&%XAZ36,KRTfqHQVl(,
+P&(DjEbHjP*q,`M"58Gi"4mH)MKeC5(H1AA@NBV'V(5&JCjANf"T&pQRV%-QaVCM
+Xj$D3!2I"!9)&f9p'Ej[8rFKSkVZS$mM[4NVb!3bK4+RXGe"jNYpTL9',SZ03#p+
+0(*TS`[-Tmkk)AXB#r,)($P5fqFcqJ31R'Bh'+BB%Jf'UaI+$`6#6@-b(NRR5H0K
+&8ip'3-KS-#3aj05M6B)0"N-Q--D3!+5&"N2#D%2m2f1#mBX6EXIiVXKPAJ*4m@d
+#L`Q'K-PX0MB9-5EID(cBb!LB#46SHR#8aC*JX8ce58`GG2akM0(i#"J5M%mEM8q
+VUMV61)F%JTVJR6("4B09pQq"m8',`6M6#f*+'fJBCNRb#6hbbQF@+(M%5+KHD25
+K(jaM56*1Y4JX6'Pr#r&8JR&@b"@$C43d@Y5&c#Q2$`r1(NE@mBKF,iqAc&c'j`A
+$f+B5,5#q2d%rcCb8m1!LXRS+diG618H5f4MIFT4[-U8r%FU,"qGceS,(jaTH2A#
+bb'$!CVp`S@P)0f@NXNKmUI[6IpllGIVMl&r,+ffb3h,DC!F%+ArVFq()"@ArZ#B
+rcMRmp*aaij5$,)4Ib,JE%R+PcC(ATribY@rlUAmHk6hepial!38K)BSkqC[*Nj@
+MEUC$rmN)3a'8bb%'5q#[0dM!Rkf-I,PamrqrrAYj'mR'aL55Qa2qqCd[ahpaY0a
+)X%I6EFE#IbBBK`Gq15A`D2[!Va#b6cBaI'miHX4L12VR+bhQ'%BII3ICiZJ[&X2
+*A(@5qUdkhS$0,63B*KJ-X`hr9Er)cVeL-9bY99A1PbfppT-L22bESM`bmj(q5Y2
+'mE1hJejr+fP+Rk"dr-5A!J+8R`UQG&*QB21H)cZB092j6MQSE-ZmS2a-0ZB`XGe
+8CB9k9ZAHImmV9)c$8aIq8Z0RqbQjcq8%"Ta0$lEF#``)fGmq*bK%-4'l-d$C%Z!
+0[`3d$@JG&2)Ed*m%0!Rk-dMTS)M+1dh%1#9I'3'9pbR4MK!SE"qB'Cac*#4)U3a
+5YQBUp&*)AmlrqR$k[A3#'!!!(4p"4%05!`!bcJp9$@8e%3!LBqj6[lB[cD1mLFp
+5XjQB54kC8TiP55XAf"aJT'N+2TVHT$B4ScF(Hc@d,*0!0i1j(#p('r,j'J)kNA&
+RF-kXLqlX$M)N4'DAJbc(@aLFpDTR0M#SM)IVB(!9hFK`@!iEQ3cpr[hHDp0'CSk
+lGqrR(aZQ*`9"N!!%34!%J'Kr&qBMd5KHI-XX-d'j'GLAr1[B$UhpR'Nl,c%TLHm
+bCj`j9k(LF*Sr(%YT1hcY*h6IXJ)N'MLQ#TBa`45ImhY1Q1QM8[jJ@cNZINJ%lL-
+#6pr1+JYl6MaGLBpLqH0aqH-Z'-4N`ijNmNPib-38i*Fc&TkHLSa6@N%RS`Y%q+A
+#D+"L4,XR0IiFRrlYX12[faaYC*6UZH1MiLfjDDjYLMN1GcV)9"MpIZGSS'SK$FY
+eaJB@Y*5CHiHedpbMRB604rjjljETCqGAmN1c6@GK&TRT)l0Fp@9Sq,'%VikV,Zq
+`S,DYAa%DpBV(H,KIEF2h%+[i-4'bA'%9F`a!%EKD4bmdmd4UM#5,R&a&fUCNQRe
+-Zj,X`cKLX)q[[HSiaNFlAD,2i9dS1+`[Ea+UM@&L%61%iBJ[2cjXa!aLL!X!@$c
+[pl@jZT02-B*Z,da"US0rc5['%q'il$55"IaVF)M*6I(%D+HA"(4$1+5IDDcMFIp
+[L[6XXD'@bH")$&QRfkRqkh"+dpe)9J@G#56Y$0fAhP"QLTK#F`Y'(!+@eq2m2A"
+[2LT)Kr!RL&3qT"p%j9cXB'S80[S%PP'T`CJS9lJcZLk!3Zb'Q0@Z*'%3h$*VY)2
+3Ua+KEGe)eUeldHYdRLPqmIEkmRKaQm,eL5@TYrZHAqI3j`biY(4L"eeVJ6laB4k
+GB)&V5d5FEITR[k**E)0pAPeAAC-`I"r%GUr5"j!!`KT%!QYLb4pL+N18QljHVeZ
+rRJSjhFZfFK(9%8Sr"VGbBcLj2M#QkPH3!1C,"LqYar9UKA!Y((YQeE!((h$PE08
++%%!6)cB'%-2V34T-$@pKL$5526i$0,F$J'3+(3lPhje9(5d$-)EUY[b!-["05FB
+BbC4TSah"B6Z#lLa"`CU8GRXTaiDTE)[+*EEKMir"M)9%'4+YSf3-HJ9)G6RQZ,p
+YY,2X*IhGLkSM3*IUjUX#AP%I$kpFp@+*1$`H&P2M`82rdACNB9M"N!"8HNMhZaH
+&95mbeQ3$eU[1+-c6Kqh0dp4`,d3kbA@&NMCFIHrIP)(8D$jjqbeXd$[V@PaZGNL
+EdlCpQ$j02p0p+-cNFQ`I4MTJ0k9UhS)UD5ENL!Nfb8`Y,9(1`%B#+4e9rpJP$Vp
+EDqL*kLZ-8DV6d2e,rZ+RMq)++U')-T!!&aqqTG[mP*lQ%&,FM@dalR5[$8JT,hf
+mZ'8%0Q3JT9VFKX%b5ZB'[%*U82F0qd,AqUrTiJIGH6q10TdD6E@X[m+43Y@he)S
+51)1"p95B*U5%8[Bk(0fQ)58B#'&`R3hj!5N&NAD-$1cXm"V-E-'"JQ5Di!V2M8Y
+*KR5+B3kRa)0+TRa+*P`[MHE'Y8alDi@i&'N%N!!F(l!4188Lrqr9bkeV)F@-M6U
+C,ZD%IN`T05+*e`3P-HMMJhfZ5AhPU2m[R%JX&AcB0&c[-hXCiU&$+bK-$24#24(
+L(H-LL&4'E""RM@LPK-LZD8T+DLGYGd03VCaY*!(P-Y[%8*pJUdk2B*!!1eU!)@l
+AY!qJFFR(Ld#*fql%i!*U4+6Chqk$Q)+%(LHNUD8Mk4AYji!ZCLJ%%@PhQ*fK@$D
+3!2YGA)HE9Q!"ER'@N!!"%m-9ML3R6jKq"P#dBcZRhqiMCTTJ&klBc6'e%+6Le90
+`r6ih!0+RFd1l(9Z'kZCVQ`$U0Um!"iGMYH4Bi+$0GNY8I"6#a'&-P,cFp&')*KU
+EkKBhSY[HBDjES`pp&&S'Kc1,[T'$P*lUASA8i1AmNkNrFJF8p@3118!BN`hj'Ki
+iCX0'+ULl[6#ITCl-@kP[PJldpce$S(Y[53V*V#8Pq(NR(mcYdM*,Gh"4ZqFR!8+
+H%4bQ+D4YQKTU'Y6f,QTE&2$[dd3JQ-IT2KF!Ud1lCmX1G,1E,R9UQlS65iHDJYS
+pQiHD,QXE[ZMmSJeGpN[dGrbPq`q9GFjTcBPDTVK$$lk,-!fmVR-(,92m)R0jf-@
+1$[Ve))#6I'r*d*-Xm9f`a%H**'amdpP+L%4$G3qk&#A)P)FECTmKP)m4lMir`K#
+KPP+,%"N,YNlNR``VqD6-D#0'[4Fj-cI)@l'qplrb")3B+jTCTHkVD,rUbZH'fUp
+Z'@Sr*QpSXkQTVRmjTZTQHZkSZl,NcpLV9JE[B8VY,CA#)"K#4X6cil00MbhbQ9Q
+R0jPeV[fkaFHCiMD!U#m!a3H"l%QA[c#a[,IZp4f@ZX,Pel()mHMK(9TG2bhM220
+"'!8Z*Jc9PC3,Q6E[*)8U513+&MFJj`RfKRID*`DM'k"UG!E)$4J`0Mf`Mr['A@3
+d)dG`N[IhBI!A$4'@ULB8*pr3lL-)XjNAV+LEcd)N6Ti4-'"*MT!!AeBkSElp@Ji
+-%3-X2`5"Xp6*4(piFQb4QEBHBMG#%IBJ*ISG'10llXJ8Db%L"N,r5825&4a&-'f
+N+Lf2&,S&&c+K#I)P1kBU(62-%aD*$D+&bFGRqR$",6L8i20)"c0YK+'`ELCp**!
+!50`VU6(D4R)[2me0ePXC(U0*8JN!5q0bXrAdB&rkSY9#TABb'U92*0FR-1LA+5h
+Lh[jMK"#ddCCJqmd)"e$KD(N+RF[Z)q&#U*f9')6`#b6(-A4l'+R4Hp%mJ+(bbB$
+hF39Q(&h8c&S''jkM*PU"C`iRj5B[lD$8mGFE'6KUAE9%R%#b[,IpDVL)S@K[Jf2
+ak%Q!*JR3N!"*G!06r@[AA*VT3m)QVI3ATe1`4HKdddT'H9*IkGeI93+9[eK@q3J
+kbY4&&kG$3CTjUSUTS3Zq8eac[6iJ4Jkb5d)*iHThfQmD802RXlQH"`J`(9PCFZ6
+(If5EZ"SrDjamqaqJJR8LJ@ZZJH&f08KXEd"#8QbA#,h6+Gc9(GVY3Xj8&lh8Fha
+e"d6$4EqLVZHATJ[4$e#)1MiS4B10,Ka#N!$#AI,KM+`#RB,#p'JC5Rr[#AK6cE(
+Se`AE83QY%C!!PUeSALRjQVl%AA3*05Xk8k(iDS0$h)fL%,"UT!$!QP19a@rZq8S
++R!3qcUmU%bP,rme2pTCd#lZd3(0FDrQjQEVi#f-39q1j%Hj!!a0+Q-5!D,5pVF4
+$l%IQ[9Ec$iqqZTN05UB(9D3`D"S(E6"S&&h`dF`&$`ekrI&2(LNamR(P8USPh2%
+2MhV&rP[K`IbZ2"bkVlpqf2,GZr3cCB($pI6A99pmlBQ!lR[jd@'MV1h`0IVVZMD
+[rSQf2B%U)H)QN6mDbr[kEiAk`P"l'N*0i#T5h$!"@Pjqe#QqRhQG4bHVYa&0@+N
+aD)cfj"+iY'TDC&SN9DVQTjR1Vc4iC+Kp2SMp(QQiIIDL&*chS@$[IIq1pS`A#21
+B8mZ%9A)&QpVh3Kd*5lQNb[JDUB-lJF5ZM"bLdmKdc!%4FIAjP3)YJM#,k#Pj`8T
+8,TSUfKmf0E9hq5`-*Ih1j+DpHGjcarYk*'IJDSNHDGK"AA*1LH6%"3UddfC1580
+j`MLIQe)PXZlj)$B@[JKM4DUDK1'MBF2ikEhEc%RN-r-2ZY&SeHfBmYENM@CQb"P
+('%DTaib16Vji+5`m1`$@pM+JQpY1c&Y$iJ!4S'BqLXdD"C9#MNl[B9QT&e9C[M9
+!)BB#+,SiE"cB(J"SGTMEZd*`f41T@$8be0lPk1$mdbM3ck-NN!#Dh6cTb(PN&[9
+#dG,0ITklSS-4k,5%b2`,b)3[NUYFP9aL"9IE(pjmc)qdcqheUBVf'`pP`L034eM
+B48+2L'!FS,L@ZEdHPlba,)0Q,!L8"@Mi+!K1*DNM8J13!-DMVKmZaEDVea1mT&Z
+h"9X`j-6(R3CA@kKS9#3M%*BI+rTT8hYCIem&Gj39FJ)26&pP%JSjLK@QY%$Lq4,
+he,M(%V@Kf0EppB02@X3lTK!B@k'kSJ`XlLaBh!"9MV'C[DTdmIkq-(GdTiFm,3h
+j0$[NdrD(24EHmkHjE%bkl2LICUYM*)jABVYc9YXpr5[R$)qZAX#'Phae`l(4P9[
++ClKqjLqhk8Z69066QijdrfU)2ZKbB+))2)mZC[5CIBP[ArMV"dAZQCM4HdGQBHl
+G'UjPk-)hcA5e1pRKrTd'H),Sj,YjHmYq35pYE0%bC&++4Rm5#)XafdpH*'3GCUj
+,JC(%fVBUF@G(aI2kH,#6N!"e'%JlV1eU0hK4'QN&+k6Y,Z4U*jY`2-G(,GiIKRP
+"(L!mmG#2mRJpH%r1FQppr(pLDJfQ9([KGcP%PFbmBiQFDGJJX*UFBb*q(1qZLNE
+(Z*ki[AjCaQQBR)C)&3R`c1'J#Q-cC$DK!CYJa5E)E%80f)UXf)TN0Vd"Qfl&TXY
+X5J-faBT0NGPb$GKb9Q`jQ@fU!GZ8&GY8b*4c5&[Z+DMJUqHPUk9L9@V"`!ZDUTN
+UVPChAJ-j%J"Kj##aS(CflGmYI)l[iiAm*!@be8U6H61kdX(l1mD53ZP4@9aaM6@
+ADLe5`jp3h#[Ziq'4A+p6EkcIPhLJMUEf6d,FJY!B391"jr[l)QR4SjJkM2kDS)9
+3VIe@a5mJcP6DGkJ8dRhbdlYD)+bI,FTTr1MHICm1fdjFfp#4c"AaSjY'a,YIZ0V
+f(*b(VfhSP*`acpd[hGpf%XjMkK2[E@L9h-Vih6I2-9C6MpD6C4Dcc2%&-4mVJYZ
++@EHGR$baA8"hHc6$'!1kD'qi5+FLb(`+S!PCTC0l,J(a3MK3J3kZ9eH,ka8q&d&
+'+VqYMRrXGpal2@dm%AM&I@3b8&3SSQh2cVm24PKG*B'*+6@HldPZQA4)aQQ9AM!
+0h,D+$kabc"R+S)'8Q6HhC4A%L6PE9R%j9A!+#U[9eChVM4RSdQrmkXpI%+1VIAK
+"K8%&K@%fN!#'-Y3+A"6RX%dF5E-lB"$"Ll%A0'5ri*M$bfj+5hPrcT`if"aZAk!
+*,%#PL[El#KNUD4R&R$HM#G9STl5%+[0R9haY69p4HN*&KK5F"#SBbbVDjcqI8cR
+-qENU4qkk[E,rlk5B5l9lp('4KJi`!Z0)2Tr),AGiCVm"1aF#TrNdE&SPI%R33SQ
+HfeT9-ZA-'l@[lQ89&#e@h5Ph$$$2"RYTXfjVRH4TGZYZ!Hcecj8q![E"6TTkQ%f
+p48G#Q$Nf,@j24(*kZl*,qjil6i2,h8"*$1pL`rrVCafZ3SN(-'fl,6$*+6P9Y-A
+2YGCJ,l'J)2,9Tf!dZlQImeC&ID29DAb5fIp+h[FR[6#Bf),QF[&2!NAi($5A'p,
+RCA1j+RhfQmX&kI-9FhPFqT`aPaG*RaI0jC2dqFcIF$dN,GGDXCf&DYERI3pQ&$9
+Xd$,pYi,Tk4X4prQXbINEJp5SY6*pZmP8H2f169!``""4#d$X6%S#HS%c9%1%e&k
+qRP60ND[jJHV%%)`P8baCb0"58R%a#TMQr&jPR)kpPLVE8rkjZ&,mqcNZ(AiZ1dV
+3I0Z2J65L")Dj-N#Bdj!!!$*A"JecUK*SjXT!BNj"!Y*F'9c-'CI!09F'((-@5B#
+E+i13!$NRVpp*)#5P!5$ak-A0[EVl(qY6rSHJPX*UqXT3VQQQ,TC3P3'j4T8"bF`
+c%A&i2j*222jER6A-H-$9l64R$VQ3!%`5IR[br&f((VKC(k"+5RbJTKALJI2mAZB
+BGMa`l9!JPG$hSq&d5$m+XcqT`IP8i"8jj@lk`V30dq+5Ya9qr6(1NiqMi)[j)%[
+59+klGB6cXrV%XKqYUkF#k0[+9B#pLjTSh8BqaP@BaEp@M,3)$+D9ch(&pREV5'P
+qr0l@-TM,d6(#Q#Xp[*,A9M8HU9he!fiJ25r%E-(1X+MB4P[AYVjDr00(XCc(p`-
+ZHX8`23S6A2EVGr!!dTIIeAG3-$LG'ZQQLIjkT6jXB%'`+J'Y#QE#34Kc(E1IF2l
+8KK4DeB8m9KTLjN!%D-TZ(mc2S6jA-p+l"HXkAkp&X1Md!a-!d(5(1E`3$5[U3'd
+(k[A"C4NXUk)*,cb8`H&%,epGQ8ERerS!4U0l1i!&jF1DqQlpVC`JKFE$2#DMVF$
+#Jr1R+&6FTFlCPE0*U8eA$URA8dLF)lbGVMBTq#k&qV`'(T@+iY!,DA*pL!X%BPF
+'VR9d,DEkGJ(d[bJfjjCc5INY)ZXqAP0Sp@Nma2ZKh8kMM)6JT,q6@'m4lf#T+c9
+m`9R,2Vbbik)cb6iZbaqc-X-9fI'mXjPpc*%(G-X-HIPME)CH3,iF$!Arb")HE-,
+$MN+(9!%@K2URM4m!R*L,F#06)"hJV+$af6Ia#Y$V++XFC48IUrKBCB*9*J,9A93
+h8&Cr4MR0Th4+ISEQ#%$4294*qIrU"+H3!'FE*"Q!c(EBe6f&Kbm+2IPRS-b+4LK
+FAFadZ'$)f"MNqQZh4R[,r0PdL+2UX(-JdqQ+&3SR5pQ3!%Nfa)BKiQXeq8XBB#Q
+EN!!DKaKJUbV6@A*P*ECeDUA1#dZc5`K[e,a@!f'+SGrBSCNqUkA%UR2k-bX'F34
+rU(liQ6pSI+810%iM'DR,I!3#"C!!"Y)D9aRUHepaY"#518Yh"LkS1T3a&HKPQ6!
+Bh`LNUcdRZ*l5!1LiPRNli%VLCaSUekB&Y!a6V'rQm!L2ENJ925PpT$!iGBT22I5
+Ml&!"2me#dQjJX1'`Y('!c&&!Gr8lriIc&6HLd9dX9'$&$BA3ArAQQCQ(!,&"JGN
+6U63CmFQ%klfIUL0IKZF"G2&Z,K@N0-,EDUS4h[BX%0k29`eIPH#*Ma)&MU"MMq0
+`iT!!l9RfPlGYaXZE9mP`U[F1rj&2rIS%Gd61i1%TcfbMK-J`MR#ELCL3!!6U46(
+d5*FEf1D68U4&#aMZRQfFkC-4RpY%D3Q3!"!C#8HD""')F,fhiB+1HBUU@a53!2`
+G5)jJd6`5$$%&!HrM`cBD,-llAFEAXMrjq6e%'SmiACPY('fCkEY`A#k1h2'#SV)
+P,IC,+ZDX-hZ3!$c21YeTjdLeXcEYM((VjA&pj9YH3FfVH+bUG`J!JGN9"1f[STZ
+A(BqZB5!`XL#S6B-J8CcHPVr8m%YX`a`,h,#FI+RDcd"@fNMj3)Q9Y#hIkN++TP[
+NlDV&GL@r!M$h!J%Q+8kBC[2UCd-5-X2`1MZNG$Fij2$rLe"r'MfpRaa(Z[kBA1h
+AJA6,ZVJM$`"!C4S)GbK5K(8rJ*(DXp(2r@%hZliiqm9-(e2SH8CJ-`VML*9DVpe
+e(*S)K9SUVRUTh*haJNN61fj"h2Va')%5q'SK6df%KeP((*2&'L*`6ME@8p*@J2M
+6)R8M1`-9#qf0jAL!J#@18kF4YYq(e"i0hKBq$59#$eHJQMVP#k"6pe"P)ak&l5(
+4CDX@XT[-NI2M1b&m2-'Q$IV8S+TD+DdN19ZP)4XcG#d+VkHUBT)1+`QMe(f4!1B
+r`5ZjkMq"@(aPGPRkS@Mj!4D"`XYC'!Z'kS0)(%`pe)8$!1$VrmJYA-6,c`dm$"Y
+RR4Hf"0XM4JaTb(T+!-EY(TJq4mCq%L4`UDX!S9P@RAA4Ua!D20)&)5TBB+Vq*B,
+2VL+8&XQIk!d@L$BI5BfZ8$h%*Be#bD4UU&iap+emLKk9*3,IdHBJU@FRC%bqCDl
+3AFdL6--94DLSVZ5Sf6@'(dIBN!#9YC!!(Ak+KSFcqQ$HNKpp%1S04a5jCIdSei!
+Br[862"3@m4Qb[akZFT8Z-K5U[Q5HAA))R4$3jjYG,S`,PEKHBCHE35ANFZ0L3Ia
+F#Br4ipMk+#XN-@ka4c5[+G`GfC9f5iL"01XZ"PE@4Dqr6)cC!bBE(*!!4rFTSa'
+eHJ!1M+Xqf-AGqDeFfhL+0KF[E#i%(i3V8VI*,KeM&jM@*`Md'b&@JN'MKb#Ljr!
+SYK"Q$LLEFfc5SSH!%"iJK(3YQ(,5LBm[#rLJpQdm,F1eEdIT-FAG)&r#9dEfmd&
+ZaUZI@r#Di4THBHk2I-T)l&RJ`2ld300ZEX'2KTrX%#Pp!Q80a)X)K+5cMC*B!M(
+"!,Ta9a`[Je++V+$%q[Z`a4b"8A'%#Ec9ECiYTZ,Lj)flZBV!-(`13r"lZ8d25!9
+*Mh#eH$H2db3U"UD&C9E6M3fQTF%S$T!!EmZj%Z'6#*k"U%*L8YR0%NraS9qhq&T
+GRS@((Q`*(`G$N5Y*$*J8jah#P(LJ*Rb@4#4'YJh'S#*@a,TB)`L&dIH&er"Y`lq
+&i2``'G6Sq#-#9)mi0)J#"I%Xf[8Xc"3rII6!,6hG')%#k`JFZ+PlUKheJ3-[k1j
+Uamf!lMj3Rc)Iq"i*LfRh#i%$,qe%k1MV+VfmTR9iK1V)5QHL*N"K[bJ8PIhe,*5
+q06)#"6&#3AK3SJKme5JXKX$qRr4J'aT@ma@"e%E`PY2mhc*SC,k1S"L""AS*qSX
+VVL0SVBlqd3%FFEePKD9Dc*3DjU4H+'LXkKJ,jb@c$m$"PVK!3`Q"UlSa8B5I1#E
+MdL5P,L0ZFU3([%2-NqM+1KBdLH)RiSI,5(1"-Ep#5e5Yr'cN&d"##4GpNiX)k@"
+%3LG#[me!&BH*R`qlbqV,VT@)4SB2[2%)3!b8Nj!!SKVp-RESKiV!8$2#aABJY-Y
+c4%#J$6N-1"!D9h)$MbHrL5$40i&b"M&L3I@,hB5f,U0#*(CLB8ZK#&'"X%0fJjB
+bb%$SF8CT3TT1Qdh)Z1Te&#,3ErB60!EZ3Z,#k1rc6[Y`e"9GANPPQG$J)Z'lDlB
+aI+rZUcDJ4%q`S#Ujk`@"BULcfR3APpU$kQUV-%qiGl4ra68rhE(lrJFkd`efR@S
+"qabN6pDTrTikHqCFBYqTTNQb5kbVVT+kc5Dp+rjr3&)eFV99UM+c4G1fa4,`m"+
+jX82EYTJ!b*6#&"9iC6mH,Y[2G9-M3ZY8#MpJU[20P%@)Cp9ab2Y+m"DP['9(VpG
+KjEMF`&(S9A4,Xb$BUNQiDZfUXHU&X+bXq*QaFS8,rrJ&3C-`C#55`P-dNCc@fTJ
+ahT!!Ja,H&*,*TmK*d`M)ZL*-CdQ[m#+9'#l5EH9Z5H58KXm,1)[R"I)*U@%QXpj
+2"pGEdPHa)R2@ZZT,HV2,jrh"@p5e"@XD!#9T4jj!")EQT0faHkZ*@!(2RZQb00#
+1e1AUB9ENV%%Dp+BNSNQE$#lmVi#`i,09JeUqN!!efheTiZR`0qGP#Ph2qa#iiDD
+(G'h0HDfrEmI%qc`GNPNGm)BK3qmM0FkhfU1ql0c@J'PR!mGG$4b2T"e5f)iGU8`
+@ZH&JB9j-iE*JACNT3FRjC$Jl+BF'TdP8dV4pN!!)(VUeCGV+cacBRRBlEAK%@Me
+f"LN4&V!YY0N2J*N-i4A,GP,PB`TLGCJ8EV0RBHk%9F#j`Uh#BUQT6m)Z6)Gar21
+N90k$IjqNjkqMf)R+GF86XkeVHG@KM#-i@594R8bC#@1D4$("*8,ie4&'Ce[*@4$
+@&DrkmpB(pkl[j5N)LcUF"TbLVqA#ZTc(1J4@B!'je+c`88Lb0q@(HE8jPd5SbaT
+I%'Q2*$UI4C'$ZTp#qK%'9'aAHF5ZXYHZmT&GCCeGC8rH2h-,9mlPGr$8cMVHA))
+(FRJcMY2-([%q#$2'@VkPQB*@NqaS48$5@M5ik-%UHQLpqB2ZMIM%F5Gq3@(JKRd
+!6rUI+CcNc8PIM#GF96#!fr"4JUS$)DdfEl-*Ra%XMappGZdr(EV0c'fK2M"3B5"
+fKhF1GICHG3M,FJ'[&)r$c+!6qZMqCFGj(++N+SA8r&-a"-l8b34G9K$Y`fNN)B!
+&6i1a@%#i)`V-err$G!U(TFqpl(9@pj'J)A8Y++SIcrkCjH#ccGm`pG4de[5qrEh
++ccpSlDajLF)qhrLhTdp[kPREZp@m$AAcl,2repa[2QYZlHLjlpPhHKEpmpfr2[$
+YKarihH,&Lrrf0cdl[rbVXadI[YMb,jprepcqG12IQLmm[FIm[DFEcAfhDKCprm2
+22cIr[6P`r,mF2QZHqC[IR$ArlerHZ[CP)`!!2!j"4%05!`"T*""9#fbR!0&FPrq
+lchZcE(EL'YFdK$5j,-YfLFPQ#C***@MFa,LZ'C1ZU3hLb0E4A5Y*h#1HR05[aqi
+Q8D0BQSUePZ%`iM!d#JP*B#b61XjL-b"L14'XckF1Y5!JSZ)%+kPSp[hmllhl[&%
+kc$RIj`FET+FS*i)JH",C*9lHkAEMaIr8,"L!IRNAP+YiD6$'BC)XHl$ICfd#UP5
+D&SL,dEm,ie-9N`$CYNRl*lf8XSLR5Pm4Lm46NV&(0Q3PEC83aY54`HEL&[Imjf-
+qkhI6,RcS&`hY!DGSJBJQH6!B8[$MKc$$0ZP0Q-!NFTK,`S!1-d21Nk6mqDVb08d
+4dA1`#)VR"GY!b+bTiqTTli"bqY1#B%!NBppcGh-ra#1+H%kFa4A4&)V'CJ&8U%D
+ZK[AeIr4+e`-6U,18VBNhV`K%IDH-[TqX#MPYdC!!"YfDa%2FAck,qrIlIDIdp@Z
+pPL*pC%D`DJd5"fhS0Q4k+XekP#[(bllA*EDl%)AST"bG423k&TedBAKSq&d$5"T
+49CJ`4lJI'aE@h1fHqe5D4MRY*FCqVb69$Y1Uar9VekrPj"+pQa4MA#5MTl5B9f`
+2a@Nj''jb(%Qdi%3NG5jjD$33A2$Yk1DUFcTA[a16*!1e`i`QMR"$6Al88T8IYBf
+5i)UQ`@R!Qf2YL(MQG4L8mpX3fBdXGFFKDlj'M)-i"S3$YRTMh&@@Vc'10%@)iI,
+4GES'(+`4KQJrQSGa*@iG83!UPYp%Th(@DEeZTj*"NlFfM"AlH6ch(m6fedIcGl$
+)!De)Tkdi"-!%Be`8"J8GSQc`(-5dD(T@EaERVdV0c+L,*PZ6h`C%CUm0!`NP'fV
+b)C4C2PLD4J0$T#Cd3iX3ZrrIb8*RfKPB5!1er`jL@'NDYQpaB5"NlK8b"#b2c1L
+T+M"kMR*qhY[,GDG%TQ"NYL3'L%#26-FQ-XDfhE!B2[)Vajq!8GZ'I`e[i6jS,82
+FCD[lHe[J5"-h'Y!m&DK$-i9QId"%X`20r`LdSMQ!j['!#FdiQQN"Ia2!THl!l%5
+M!FL!Z@-a''8+e68j8eAj*YmTQ12k!1LFiN$j'r[p+GZjMCiC8Q4J-4&NkQmBd)J
+[eG%cV+2q*LGBET+l15*#e!#8,"lS004"G803BIh8kS@SSjl%[Z@9[$i36GQ-*Te
+PeSZe)@A*5c8c)adPq[lQ15!@2)VA!)pr!'-!c%ffp-,d3L"#VBBa[NAFqUf*l[Q
+'V3$PGE`eaJI(Z([UU"Le"&1fYGi$pf+E0-LNkh9jk6Qk`&#r@(GK-MYJFC0YPTS
+-Y6E8UFQ'3qVEam[ZldRap,43p,Nq0BR%HTCB[e4L24)(@1,!8SN$BTe%*KTZBX3
+5D%R9UHG$cJD2X$NQEHj9cpZ(#&%I-dla*)",0KVe#,T"rNi&+[Yb'dHJ14#))bM
+2YRT$FX1SL'0ZGpIp$P+N)*r-hjLHp362SFDe'"r&F8jbE)U5'"KQ1C-a,Tkfl(*
+T$ZECmS#!HX*26`J'&XImQiV&k-&LC+pkmA6T,PH2p"QSd(Z'Jk)IfeN5AC8q!a8
+a35b56H3M-0FkiRQ@'H"fklRT%'rRr[3dQ0[rD15Hm`31+60qF!@fm8jkFBK!0!$
+q(d$i,jl++3cE,Zf5SLc"+HEi)Gl'ID%iR`8E#eH9eKASe-2&8!YV["8Dd(GeH53
+"#-YkkSd`0SrUE(i,Nk6'e`(U"K5Q+RT#)PDN9%bm*HlKE3%RLcV%94DT8#4E9+5
+1A$JB1K`!A9%m"3ElMfHmeN&(!46K%!r6mQjhHB,3'fQ4S2De,$+i0@pdA-PDqXS
+SVKJ1F4mP,@06HAU[P#3L5E2LkLK%Qkd8`B-X`SJ)46qDQ+8Um48BVU+2d`FBTdU
+EpD)M3YUXBCZ*S5SqSr6jh%1m88hL0DM@ih9,(F#VAfh&+eeYJ81'SK*BIK84&p6
+cH*@Uar%bUTB2(J)qG"f[AR8-Vi"k!DrpkLKH0R83QlV9)Ea5UKQ[1V84R898%VQ
+2XX-pHV8CaZTCUSYp2Q3GGBdk2M0KVKBqUKa0maqXLD1UPAdd802)q9`f-&V)a4E
+U9KZP!FM,$3+T5&P(VGi24YN!BqSSSZVN+"HLUYAH(659EM$I!2QMHmHSHJ"GjIL
+0)4FDPrclD@,q%jS9IZjHYQ28RmNkE`Ze-,E(FEh+Af98GPcKIRm92Nri(p,V#HP
+rEY5I*E%XC(-`,D#HTb141P1[bjeeb-G#h6fN2L"eTck!ccqT6dRGGFhblhpZ9,d
+%3+RaA%9A@CiQ[-+H%4)J#X$9rDU-c!pFi4"a[qZUG+mbee$3,QA**dS!'PTFQNq
+3!&AGMepFj,jM8[-J!5A&i$(#emDf*q#8d)$IA6B6#U$SCb1"%1MjlKP`$dQZ!kJ
+(-Mk"A9jjL`Gifb`JiaY"lTZNEQX1Z"H4596KlST252JpMj!!G`aP@`a)ZaJ&bPp
+4AR3X+ATkLS&Z99a4@@Iq@l6-)[F,F**B&$YeHM%2LkFZEZ(K@(cb+qLL(%ZcjE&
+FaG4+GlRY("BhBrX,TMIq$RmKj5C!6&Z(l4#2K1+haVVJ400@c`JQ#N6AL4m0INc
+iSH6lM9aCL+#l0H3#k'a&0M930Yh45jm!+TAZ13hF#Z)!iRq)+eHlZK)0A'r!B56
+a8`ma!`261biM%iFrH3L+rqFZ[+cd)hIQ,+(2IdGR-55,!"%`GHU!L$!Em1m`i&'
+T!jKIjQ3Tc,(JAHH,2!T#L3#N2X6MUS+A!X#+&rH$l*)X-pHV,AJ0X+cHbV*k#l*
+kPRX#)k91!0ikA33(!Fr%d&J0b-ZGUhHA[mM$JD3!1Sh0Z*M,J%'+!B-k4YKQpAV
+k[N[lp2AVJP1$aKY)#,2N&%Y'-,L$-PXTAMAU8c[B"E`De!HqIe3YGImDSQaff2V
+kVN+)r'eppkP'(*hCrHXTCJVieG+Vp9f*e1K@%JG-@II+e&GX)1p!bUB%`N")J%D
+@&e8e%k%*a"6JNB%B5!RN-XF!j)@FI#SQ`D#cUM3Y9%p4BPcXKl&Re43cIDDX@bF
+k1JkMidk)JB-haR8DR5CdLUcV3GDpUPI$TJP!VhGF8N@Q-)XlhSkVq!bccc"p'M9
+LImkq$p+a4@U%5iZI+K+M26KmC'UIlDJD$S&8$A@Uf$9,p5%baMl$)!C%hKj-AB4
+`lCeeLDeh68f`T%jNRBa`p%bPH`+5TK8%Ma'4c$(bD!H8f'NJNBc-863cHLVGde+
+MB0ZV0,fYGiQe'ikUR@bD)UECB5[+'MG*ccCKNR6SAKbkR)%V0!1R[FJqV3I*#HX
+CpLUKPppQj2jA-@'J2Pi%+bD'"!ALZ)3KJE$NB)b1be3%YM6HD"QhD%"B&-`bBG#
+,IS[,!!Kch"8bLddiV[k$Zd62&22"IDPqf`SKNh[U-*f*J4B@e%&m'p*)!FE94ZC
++8f&8p$jU%1#B`E)16$KcM-V0V4MFSN%J'XLiIQ422d`9FbMMVT3bQKrXpa3%+C!
+!&V+JIeU6UXq@8!8J#XebaN&Q$FQ1)N#,J+V[k&1VSCJA-P)fNa-2r6-LGl,)#d)
+N'caA,cQ'cp9dC"bIhiKAM!8reIi6P'Am4bR,q"qL!-ZILGIArUV@1[p4A1PNA6G
+5erkVQ$kB"08lrR&(`KI486!#lk#$d%H*3IEM80I4F4L6,'%1*B,jk0bc9aqPVRR
+PahBpQh8Y1VS@ah9p@1jDA+TV%9hR,0@a`MSHBph@1lUY(pGY61kfINRG-L$IE%0
+()8+c@pNaQijR,,XZ'mj+0X"jLKd%9%S%r'%!",pBjlRD98L"1&$qik%1XFkI*36
+#aRVG,HSP"N$)I49%(VK#f84#4301J+jZKT`Ld+'2deiL%J$B,jSjJUj9&%"EMkS
++%-99e`$)'QV4r1*iaSV99Qq+%c%ZDV4hL!'h"MS!&Vq!q59+jTG3r3jF8,XT@0F
+!YDEXaGh(&"+@FMG-bU[#YV-XdqcSJfU-jD"FQpfVMQFXf!C(0bMAJAK$'clAPkC
+*`EFFC'HjCmJCY0F3d6%@hN%Q#P*eY9%)'#CBm!i'CS@Z%c)JfLjZm9m&`&e%!0a
+I&DUA3FI!Gc&XBbX"&$d(3R88"dFZ*KAd)5d[-"Z!S))--Y*4BjQc1)a,S9*K!G8
+S,+!qm(%,U+Af"G45B3(e%J#YCI`#@LcSG6$!BcGMZ+f%B%&Fc9`jb%N*CM*RNpZ
+f0e6A%,N@E9#1Cbcm2'89Dh&B8$$&8k6+pYe1LQai(5QbM4#T`l$*281G8291Ib'
+fBG!dq13h#D"H!*!!Q3IACD8*b)ar)3cV9bp+BTUEHMd'HjJ0EkmB!H,3M)K#*&p
+Rc1(q#ATe@K"(-B2)#Mm6!+`S%1eKj#1'"R3q$B+E'!"@6#IK,DeYAqYX!eLc&8&
+ad(HG*#,'iRI3"aP`mE-B%Hq,hH@jr2c1+"Cr(iG8B+8I+%dd"8PYUReF9be#!m,
+JfY["V1D'5%05L[MAJN(1&#1RM"kE'T*Nk&kH0mJ[T5d&)VLkbJ@&(3"[`Lr[qY9
+kG2)8XVN2aKNcG8YAjfiCj-MJ6l%-41DD$LJe'q8JR220#)"&00Cp0qeD&"hN(#q
+VH0c3,JA)Q0JqC*PpC)K0@FNF0YLHNaC`)62Y1cC'9f!!8d&52MS5-La@P!qf"m*
+bCrXD9L"Uc@#lX"@Gd3,P-!lh"ICI3#!I1SZPfR3ALRfRK@)IXj!!mf-A`Y4$0`p
+c(%XkI[Va!`)0QF96C%!fVi!4Y"CETm-!fJqcC+[B6`Ne1Hjd**RN*#YMUTNDlR6
+mp$Hd53aZ5,D6bB+4rU)cM2"M#+a26DSM%bFkUf--Gc)RJeI`)BDDm5'+qa$8el+
+YEmTEh`4,4'5P$J#N''8L!1bNP+d)&#jiRd`KP"d&F#5Ci-L8K-%ib8a+2`eeI,p
+J%)(2C3i!kbJT2r0GM,$%J)Q5+'V"i[3dAD-DQ6%BH)2CM8`Sb!S1P3(C%i)6YE&
+*MeGeNi%kZ2GK'bFc+3XLiK+LZMSB!e)J4Zf')!d2@5K#K5)9'08*(V5$",F`!@E
+S8Uja'$$EF,4`+DeYYATA%b)bB)a,b6V,a)&m$1LLLk@*fi1V%c+b4U$P!Rk1imG
+S[#TRRf*jB$Id[Y9"0T9Q0K8,#`$l'FJq5LMhkU$a`VK,jY)LBpfib"DpL+h1FG&
+4IIhUS1M403+6#DTa6"d86rYHiKU$H[!L-p`e5mh!R$GGA+0YX-*"Q)a4bbj,SA0
+P501X#CNd834rIKEmEG&SV-%"[c9aCY5J#XBSA)hB,`0!Dk31$Ti-1C[4LC-km6Z
+#d%fXNj9#*h@#5@X+1ISfZEqEe[PKmQac1lc9iB`18$D&9Bb!Ua-,,VDKq5LL*qM
+M8ibhH#Kq,I,elj0'ia#U-55&S`l"T!HN!`%N$R4+lZ[YdC@r6jj&9Y@*4MC+jVB
+-YNZ*41D#8l"lZU$8-m!ZUIA$G"h'[Lch-)'V#b5N3,544aje*(Q4Y2N#K!D49GU
+"1dr#f33,GXhL&$61*h8pbKQ+2&rd-!@pdZf&LQjfHhZ++2$%-#Z1Cca*!HkUQ*8
+3#C!!LdN5$eaSal)RJ$+XFLq5JY),T(kG0mdqH$VR,34-VkEkEkUQ&krfrrPrm55
+5aKbUDcfC!TpMbLS3h5L**G3kr*Mad`Jb(*!!K93DBiZq&98@iZaP-TT`550m-J4
+[3&ELS`3U)JaTTbSNbI68hA"!Rch@6T8-k"!P96YE(165N8SQHhJcZk%BF[9akCT
+iGrjG!Ip0Z",1R%cZp`GhAJj4K4$@hCF'%X3m#`$&q53"I-EDMed@$hj`!KQb3cc
+iA$UUBjc!P*Veb3qKR#(U"%rb6VhQ`f$Q,DLX(E+J3,P4l4!8q2"IMrp@U16e-)h
+kHBH4'K%d&#R#p@Z!-`$)ar*J,ZfiP'CXGKf&3HFSTdBVITcikB#JSa-ZpRrlmFP
+SK#%Fik)0!E2[H-CpQa['rZ28cTp*Nk3T)[#TaK4M`J6&GL`C4P8L)0EF4`#(KkH
+BD4PH4rC1ee'90SqjV[l[EfUabSGZ4%j9Ze4lCrdJ1I`jBBD,85HiRX+2Mc(l6jI
+lY,UJN!-AABLkAH#UMkl5P6X[rba6kdSV"4jDQe1df4B*4A'NVej6CNi'H[9jUTm
+CQ[D$F$6@UJNAL(LHm&Uphi34T*AIe&b*%L%CBiD)j9cc9c#!418XEDJb16jqF%a
+'NYlR0Jm-p+M#3X)2I-##M@iY8#fGk0KX'de23hDi-(5)hi$+H50eL*p&iJdX[jq
+@pUqL6rhENVN)b2XL(-lq1JqLLQ!ZfNmZBT4P"A14Ipi&#Y$#3)%f-SAe"MPP!+6
+&,c"P99hMb'J@U)X(@9E,B9RY%LI6EbQbd(l+3Zq96"l,%!k+MP[1V)f8BD'q(Vb
+Um5CJ5Vb"kMLQL`XQp&M6+B[4$ijK)UU!0&-5@',36JLCr(Am(ZLp-#!C1mAqp(h
+fl#-C6*!!TIT,+ET6AlpK&MHaj83Sbf1b3F8R0e)34TP+Je$+c#a)p!(00q1cNAf
+Q@!$TS`$b0U%E-T8Ej1Z5d5A@2bB4Cdi`aE@@Lkp&GrKTC1EDJb%bCAG3YS#3!%l
+CmEE"CqQ6-ND-8e@-JQ$94K*6N5Uhj)ib%,eIZ8#'Qp4cjf43eN'JM!QY+5!MPdT
+fh+U*d&GG&@jcFfQD"1aPK'pB4[KJ9S+B'D*l`akJmZrD%DEjj`@%U@Nl3b4b!&b
+Yq1Rp*MN#A%"hb+M@V2RR+9!"HPR0KJ(NLL&8%Q*P`SEVZSK9a8B*XG)@6eSI-fN
+S%$k`B-)l-8NdTEQPN39-C!L0q!M9H5hXcdri%kckbPFYh2UTk0mFP-3jR`9[F9N
+%e8AA$5IlIamhb)(L-!*&!cUZKp#TjBHVVR"EFB"%p&apf"%![Nr6Z0@1+S)NeRm
+IL5q$131Kq)GJp$pb9@q1TU,Lf,%l44&9V9BpAaBZC#,h[AU0PaKp44aVUY*+[+"
+A@G+J1(Eece@k56kK`L)#c98p23U#&!kBC6U*5U$mQ**4P1P244SmNMX("CZhfX9
+N$S5"YR-Krm0&BK,$9fF%-lH,56,"GX$K)f",Y3PAb2dMP"6%mH1["%4XEE0h6Z!
+l*!I2Ya!mmkNf*962&+aK%%YRlQqBdmG,GU1p$QS`[mB#BiS"4V++$i[f4k%)fdd
+Y,3fe$4,5XJL"D-YNJ#Td-Sr!*-ca84c#4+fP4(QT0hqibUM"j5L*1U(+E@C9-k%
+J,hNlM-j3)801,I*qAb*[-NHB5R6)J,NZ358Rjc50'3[mD[d[lk*J(BHqjT&#FVF
+N*qHEk['-4pm"m5&BTq5XCLLdH`#NZq(qNE&pErK!Z,!d$F(#)+(1Z,aH-0b-r'J
+L('U0,H0G(CS4)0!@Cp!!"e5J4K2&q#2N2,43M$p*M@&b*!*L0!bRScjXf)3!5&*
+6)%jTKf+kr8`,CCfN,4*3E&%!mQ+aPY36USV`PlNTDfND43M($J*q965a$DM!m*F
+e-GTJdYT`%efeS[Z5KPT8Di"6a)2Gj#i0%TM'+PM1Cp9G&A*jN3HbMMPHNq[kGZN
+LR#!qK-+h'D"Q-aac-#bqD!41,1i%R*e'[fpaElK*UZ4FZ31UJM#2QDdf!%L*j#M
+b)9M1K0C(EUSMM0R(kZ"31PIXeKK'1BbR!e)'4e8@()CPYk@A0M9''FMFKSAR-K!
+h&j1%!`LBPMR#IDG32A%Hkfc)0K$`'@$b*b"l*LLUSXd#3f[1VLPQjhcZa8r3dTI
+6#k5IZTBh&J5c*Z+i5`epX6L*!VC0T3-A$rM5@GBD&8q&E5)C0`FC%#E9S48L8#)
+4Rq25$De,5E&E[J66#&6B1"N9YaA6SH%$!IUf%EL8C2beSUZbSR)b5"E')meK6S6
++JZKXC#*8#Gc1UCSY%2aX'RC@a`KRi)Vl,a1*EYd%F$SJ%qN08NmeQY-)@Q3b6HT
+rj#dL0G,B1Cj3+CSfX8Y"3fmUcKb!28m@eR&'SZIF@f!Nb!ie-qFQ(#bU+%,Yh$S
+A9l1*3)N-$Eh%K+eRPd#@D`bp)P1f`UHQQ*Y`@$5"BcRdUZB(Jh3!G@T"-*1Kp!a
+TmJC5,!"5f5FCdQdNq,IX%T@HN`FKpRHe(1bep,&$l,164pB,FJC!"PQhT!aJJ`"
+6cL$V2LF"*NASE+KVaG41rc`dCL#eLb&`EC8K-b0pdc8#6c"i2)M+AC4Y!Udi$$G
+Mfh4hm*-VEDK#"GI*eF3X'#U+!KhM,pT'f8A1Lid@aY*qPZhQ%[-DDR@bh@BbRl"
+XYdRU"0QZ[+ip"(&-S*X4KE"``V(`@ELrcQ-NF31A5ijRV,eG)JNSda**fXMX68k
+B)-S,M*!!Nib3!(YB99Dk'U2MTi0F1hAFC4-l3"ZCLShq%5*mCKKHqcNa@5,ZYEP
+fiPll0K(hYMT$9"HpJ1XJFqbjb4%Jce,IPS2N$TUfkpH%,2aecK!clN(J(%@52h9
+8I4[N"*'0#FBqRV1I*I#0L+bM#h`,G34PX`AZ-m(RV1VEdR%1Y8YGF1p0pBS+Gaa
+bVmP0N4%M+eA(MFB6JMR&B4,bM%GF0MB153DKEN*jX1%SkkC3'Q,!3"GJK-Q"SHK
+a'$,-bif5L"4S2&6Ml'PGPFYI@"fdp3D8'E0JpR`C64&,AC+(d`28qT)Y!T5iQ8e
+P,V*Z23+mT)L&*Vd*Y2PYBTp*arQ[FdKbLp*9A$&F&lVYE8MQ[Xi302Q6%'Jb'0J
+9@+LMKAEePG#)&SF#HcVYiJQ!KD#J*!feJm9(+)Zbbk1Kf2-Y-DZpd)@2ZG3rkA9
+-d`Nb3(!qm``&&rHAdl%`31e3VZ`ZMHlC!P(S6Z[@GjU@CkPTN8&l%USL22[*8Hj
+bc`+i,+mjbR[G`d"-CZZIRQ,8RRBcQlCFU)$@0$$T$R,f*&-Zd"&(BN20K1UC,c,
+bGL*"1X"*(A68-#M-,*0-"A"89@L+4TVSVl3(T61Jj"6MY3Ja`D6PeXR-P%3)Dfb
+Mb(!N,Za1e3br%kXCRR,)-[c1)3L4KUG)b!l!53C[Y)eH![%FkN0Llr!8&&050Ic
+1m3a0UGi2a6q*K%SN&*!!qiG$2,'B1T!!0aUNLKZN2+bF$$4N)GaE5D!hhp&923%
+IqX'@*QbCLkSJ!)a8Z30CS)-08V3"-'!B9F22$Xr!DpC`aL&d0[`XASZ(CqRYcT!
+!9*'241VpkEZFcVpkGlm6),kCA,8,JNb-S15rZh1aAShGE6IH%P2X3ejf'1S*@+6
+C+0B-2jYr"UpCqE1iC-j'`V+cc($,f+-KBh#(`h#lNA9'L#39dd$+c3!cS+T5P,p
+HEVb2aNET`d0QZid8k-!P$G@PpC%TjQY`UT-lSBUJSRd"fAA3+5II*1Gk54PL%CA
+b!J'G"3k2S&,[15b#VPU-,4UUa[f9J3[)$aNC*K,kd`I#BSkMF+,8l&bR-iLB*RS
+T6GH9NCcX3"Ul586$b@%0UL+F!e44IEk6P)63FC(!ZSeYD'@Z%fL)YLj[f%S!AVS
+ia@`GLF)eYX4+4RB3S`B1LNN#kpmrNV)5m$Yd+KrA*VAV1Qf5Bb)j+F*PYK9Ej`N
+*%#+f`X"*Kb3PQ5k4dfkVpM%$$*qJ*Af&e%4J-(#mc&dL@Ykk%MVh*LcMe,cR&br
+ZJPU!jZ5-lGQS"S'QTM'RL6Xa+)eGYC5)QP9)FJb2ZEYh8P5$"JZP'qK`[+9Taj*
+X1k+3!,dG&paH3X1)B+%`Q-E!&2fe9%jXaH2l*JDT)XGM2`AU!FFD-HF[2C*""f!
+S6caJf@1)@RV$15YkH,-%2('BSi'c0rN)2l$)lIAP3,'0TNLaE4aU)DFf(&,Md1Z
+AQjqFQ4GNdDrpS6#B)%-0UL`d0MFA"e0jTDpBcTAfkUQS&-h1k@5i&A0JF#'P[fX
+%3%Jf+HP@S28+JB9SU8NR4YE!A!,"q$A4%Y230"c$'mSddFI9)8+9M8Rf-8)Ib#"
+9`p-SBf8[T!QFaJ3)f8YC(*2ibM'*Vh3QmCA@*,kL5F6b5[Fj*P%[6m)L6m*%k%"
+k'ZXiNZ,L9kDiP!R3KI+0B(-TUM"m04EIA'L2MUP)H%T+F)eD4k@NE`5Yek9)Hj%
+AL(`!5hHcTD-lAp9eTQqS*BG8)$UQUpa`d3FMl)Vb@'Q-(e%Y,ZX%qfH1eZGjVFp
+5VFrV@TqAY$l2kRbQAc5SmJ&SUSTGAfYi5J!Pj5#pZ##F-+p-[B4#VPk#![X550r
+6(I6Z$AXQR-`,iPJhhpkM*0BHI@ENdB6B0[,DPYaBfchl#S2Vi$L%M5I$d3P&f%J
+([rMfA"j9%PZqq-Rjl3P4ZHTm1$HXA$E4JF8ZEKd@6EK3"#HDBRBKl[i3&q*+`LI
+Url)Y)8DZ,&ZF@afj[2,*bRh"lIY%"GZ,XAd[ffjb$f1l58PmqYph,&UG%$dhNaY
+ckcbA@jmXfahF"N&dGc"XmLE#%IQ#aYf&#aSPmEXVbljFPa#M6DmpRTZ+h[2+hZ$
+UNeT62-'GlZhBl&35"rDmAlIe8p&df,NSefc#d,pm1IKSNGM'*YSQ6l6C[3AEQj9
+%VU&l"C[S-ME4PI*%[h"-G!qld1(q("FkP-6blKqUE+**0Y&@RBRZF8a8G(ZaA93
+5I`T1ANF6C5ch-*E[*CDcD8EPl6lhHQch+BPAHZrrNJk)-Ee0BMSFXZCZT8T$32h
+CK0'3!*NIFkr$aCL5F,XIb'G6AXDQ[**0Q5ke-IDh6F!(Ze,YhS3Ve8TLek@edfM
+Dl!!8q3$fd!(!*$8A"b"0fq!Za`@$NRLSCf9iL3H`ah%!4pc6XIN)@$6jrlaaQca
+N0K8d(*-T3GAj%P)VZP%K#3H#TR`N3qk*k'")56clXlkA'4Z@-6B)4l))&h%SCXk
+1"Gf`Df2Z0EJfTL41IajrD`N(B`)$&'NlUPiY9K*c1Tql`BlNG6U5Hk8M8GMK&E0
+0@j5%Gr5cdG[NJ9lp"TY#bH@RD5$La3h$-P((kIK`BC155*fprLef!!2X!1VC!45
+bJij2#)TYhZ*J!UDMc8V`[KPIc0SH"100M2&1QI&aaXSiX4*GEPF5UaXdrmBBrMS
+ar&k*i4)*HqK`X'fGN[$h1JpZq&5-Xd('T5'#bI2A8[%F%8E!3-(NEYFSLAA22jj
+JV"eJV+fATl5)"(AXk1GM%%9XHjH5H1bf*bBbPTSB5jf-TB@%e-N68qJ+QpTk*IM
+@(hj"LSdfBq1-C1-bDbFULCrr9p[Ufq6#3f6@cTF'cS#,$VM!K@%P-IH2Ilq(TXK
+B'jGCZdr+3MUXp5V"FpHG#jE!@T1F-58Q6&F5-aqj,r+IX2C$*6(rRVmYS50PJc3
+j$[rR-PZ&SrTF5B51qEF58km-J%h%9)P0(JH6LYJ3bjAJ6q[kGfm,LT%4%eK%$(e
+"!JIrMDhj#HRJhI0qi'+!XB-!ihdra55+aFKI"F-+fq*9%R[qcj`%1r3Gl0"VCHE
+pNfMkF6!FCGY!NPArimpKbZ!8i*N9k`(A!FDiYV$TXf!i`VEK1*Br1@4Lc(LDQ((
+j'dqq#(EX%6hr![Db6FJ`cdcEf%YN-0*"`lj2$M4q%JbhX5dJP&12rXqCM&Nl',0
+U(4NPMS&lf$B`DXk26aQ*865NkMCVYkZE-8S*acm6"Jk5R[B[dr@-!8qcJ1%E3X$
+JB"+1-2E2KppR`qkJBGmR!k-I#dcDV#3f2[rYHBaXGM#bU4@#J*m)N`GTVER(F&*
+J89LaAR4GC-2q3ScrLc"XJ)*SiIFM,"-mc6,"0q6MPBBYX@#pNYLkTZX($+J3Ncc
+hl4YhX19+i['rr1T*P[9fX+aAD`p1(BH,$0Sqj8S*$C`G@hcFX8P-!R%1[h"q*`2
+H6c05riDGe)-Rj8'"#A0I#[Fb0V83QaBi#$eB*$-"Kp*AjriP1lT@GR4*'B!XA%[
+9A8(U364NCS"FATcpjUrC*&Db55acJ)q&%VRR8CAGKCp4PGhY5R$q'j0q314qTCD
+aESF$I#a%ah[YV0Rj`&-rCmaV)HBYF!#1B,(-'"c@EdcVcpa'Jk)#R&SCf&JS$9F
+!'f%6PSqbaGG"A(,2h2qr`3X#@-N)B*NGE!6hf%RlC2'rE@#-V'@-h,%%4L,$(FX
+pR2BG'BQ$bkjqI20i4JVJJM('`iDf43RqVGVRI"5!kmT+"Lk@fF'&JbNJmH2aPFq
+c6&I,3-81'96SXJ8Clrk$Kr0BCQQKc,*!!KB+'li$%2chVBS2L+5D@M(m1)Ef)TY
+!9'F#)+QkYEIrQ&M"'+E)$#YL*,"(*J#3!2QpHfrl,E'#(@P82Y)pIrRYAmrNdGr
+2j2'e-lQTrrHD%PfeL)N(ZAiC'HUh*#B%$4j,(e4PleZ*+0HdA&hQ6E`92-)PXkb
+-iYiq`QqLRSfNG!QZVdc9@(BQq-LZ*hHG@c#FrFG2M8NamQ3Kqr#++cB9APef*'U
+GN!$bTqGGcaY1d#)q3c9rFRGad*H(!G6HAM3K@+f'$4emdbkIje,HF&$HN!$i`qk
+6Cm+HmaLH@Gj`1EQQb,l"kR+jD%XkYX3Z#PeBG,V30rpKeXPApGHZ,V[m0+iQ`L[
+Zfj9AAXdR"(f*UmYmRK`-+@`0Ijh*KB3rl#SkJqheE$Y+`485#""4NXp$d`Kr[Gk
+4K%9Q&Th*13N&VpHKN!"TURMf1Ke9MKPJ**@@YdM''&@463[ii)@kVP1b%[qDV#U
+K#T8BY%H`5P3ppJK8Sp,j6%bfIlbRLb[PLchMKb#ZY#YJ'UqidUkLdDHJb1(M0A[
+dHlSJ,kN*fJdHl4T5i[T!0+N9Kp@`jh,lTTN6pTJpMrcQj83-&AYZUZ%SSNl@44r
+jkHl%&5j'YK3L!hC3"K4Ibbr@Ar-@Aea`eq'8`F6eem,4cEXQ"#mZH2I`h[)1(Sk
+k,PS[8X3AFX6PCR5'L(pL%E&)q,A2LUQ$pBM3l@$9Z!iQbK(5pIHPkfhQ5&hd*bF
+Yh3E&I[KZSaKjZ$!FZGa1)#Ie+48!%fjM(`Q)Yqf1MDD'@NPm2Tc0R&5#iURmpIZ
+9e0DIV0mj,h@hMKRYBlD'rk+pe6dL&0()UQKQZ8GJ42(@A&(I2"GbPp4FfIAL,qj
+KaN&'H%p81)&1`lRmHec&Dalhir8%pq!e(a@1XYc,H35[E+lJjHCY6H5FRM5DBkM
+FEi4c$+V5r5Lr`r@k$U#)CdC4lAq6C14EVM6"+'"E%EJ$6TqVj1&!B+06V#1-EKS
+#4mb`b!a-*ZE8#`02a6j@,EBqP'bRiUK[353f'qD&J45()d1FLJf!SmeK1)2i*C+
+#!(LH2!`c4&QS`%`*+NGaK2)Q0lPUmJpiS'0S1[GM1Eqme'@f"%ba@-3!Sqpm@dh
+CUP!V&8V,0GK)cVIc$@14CE013$KYGL`8$aJJbT`IDQ(&ei+a*#KeKH!)AM[V6LD
+-+VI9I"Q!beRZ3633-8RRqZZ"4REG*ea['02rqFil5B5%,JDS#dUB@B@,*ea5"dD
+G$TT#'Th2ma"*CGLR$@2@#hVqI$KP*5GjFT0U'-Xj9jU$U96-A#l#JF4GJ8e"`B%
+UeDjGVB!0,9eb(dDK,b98Y+cf3!ep%(LY%)CU6lacCqC1FY,$8R2'683M(ZaEm'A
+!`LSV[0lhCB!FJb(JfDdcNICM0pRL0JamNID5k()4ZR61ZT1FSNf90&$hSXcQMf&
+r)a(8c)R'1J!kX)pelplIDX'(&(84JePC#C+(i9VD6%X(1R51I4icpPC01cVcTq`
+9FePF16*"4Pd0r"D)Q3b1Pf'`2TmpK`43fI0c,j-40IG1L"Cj+aD#J`k*a$f#@AK
+rf))SjS,2%56bPG2jhh%jJMB@"'mm5ZbKEL3hPf`-*(Z1I5#jcp1V!B-'EFdde%c
+,Y(TcJYG3U-5d,,LfSCRl"SE1FiZTH&FdpX&GC(4$&6D1`$AN"ZYN#MlHbS@J%81
+qNa9pHaP&,%"mcC`e&ZGH4Y9p(lN*X+"+4p3fma8L4jC*,T!!)&U0Np$6lCjjaAF
+hK$eh8P(0!J1&E%141+CjC2V'%G@c)aTMepZdVcXZPmLLdi8cIbT&iS",'QUQ@9R
+NbfMf8b@$QEq9UXX,EVJkRrl!0MC-!b14H3j#'Z&ZZ4)p#3qfB%!VD%"-(&[T[YH
+S)G*J35&9lq0`J8c1,+)LZQHfXf+Ylp4GK-44JZ%kHkiJ"QUY+EY,)JE8MDJU4h'
+2QKKcaE*A!mN$Z*P+LEDBqNE)K3hIP3ApJp)9&(lF4%e8qaVT@j3p&dEpV1bj&'8
+pSFk'UqjZkI$dDMU",JXPfEX*G-"Tb!4R8K5!M#`H[*3QEiHieTpLMMNif)"'Y-(
+&L3Y60AC$G$EE1[+dKJL(#V+dNBM-#9I(+**HYRHL2La%SM-0%E)NP("cUY,2VTF
+p'"D'+hAh[E2-f6)P68ZG68[$UGU-V")IYr8)#L'c6l@B"'U"LHq0-CZZ-MG-$8@
+Y4'C9haLK3QVU'$08L4Q)D(%`[eQ(q5D"U8BUfImpXj5[HDmXRIr1al'8praR,,@
+6%KAhY'Qa0'Nq)M'PJG`1T1T!9+K3aT29,!KY$A@bcV!CP4*Rka8m*%#A04V(Y&6
+GD@Qd#RE4+5"&e#iJ"3@mY+$3#[06NK[hJ0%RLr!JNUQB$0*d#K(AX"A$QNaSK,h
+3h-kKX6(60N1h'(qq%iA5G*!!L,TK,2h1RCG*E$Yc8USpeBp-e1G,Ee)2-N5V#Uc
+5,b-a*cRMNL[APU!aUQNjl5A69`ZU4NV1[A#8mShI8JHeahYb-QmG&VE"M6mLZrN
+ZqlJ,kh3[a$@4ZcP&5F2*j1l,KrVc'm9qN!$d48aKN!#DrM`dEhedKGIQAcK%KF5
+lmdGC`KNNp&,6FaZD9QT'R'MfBr2IjkI6jPTh[S8Pq*!!F*kDbNidVe1cl9Ndcf*
+cIIi0fVc#REqI*Fa!`JPUaZp(-j1Db5%dp@`3Pq9"0,%%+a*Z8V0f&jU(U@PDK@B
+HflaAhP`i[Y#L'&0KSY1Y9C9h`-f[TR`,41KkJ0Kh*AF29e9"Xp(LUbVIBLXqCNY
+&#D9`bbL&fhh)9K!le&G3M@e(2UV+heFJZXS+U0L8Q[+*eUS#%Z"p5"d4D8F8fbL
+Fdj8rrRab8GD-Dc8&c9LiJL*$9*!!d$kY)SGNj*L+VN2"*k4-1%@AU!NlBCjCQCp
+)*DJ`mh!eKb%L$&&-IZ,E&b(f@qPEm3p"(p5,r,``9'8iIHD&NJr[jRP%#8Er`lY
+465@UKB6,eBeN4FkmP'Kb3&+1Pbb1*"Df0C[P)[CZmXXmG5$R&I'!+cHUi!I9N!$
+$Tm)*8E8%hk3L8Y3FDX4&p6`e6+*D5Jf0U&kRKP08,e'M@85KZfKd`&eI6%qB%J4
+bUMkNcUTA!K!F+H9GHpF%rAQ%H)3rUqEIhP[0,5Fc))5QLJqPZbc#T5la!&8YlIp
+pmfElJ*I4B*P`$32Aq+UMrPKe9)%MGD(4E-Q6ZUf$XVhZT,qB2US0rIbYNrM"-UL
+mZ*F+SLA&r,2A8!&b$eam9lhNL[TIkSdU-%JX&"B#'H3*i)#"j"2m1RZ%a9QiL#+
+4I9KXe%c5KN-RZ,%JMjMF8)1V'Ab-`$hF$pc'kTUUJMak%!F5BfSpE8H$($dQ(aS
+Yb%ZRSLlFe#4$Yk0J(Jmp&-8)4H"q,p$eRDMqk!B`ISH@RjBH8QD89Fl*K--aG8I
+&l6$"2DXmZ,UXFTkmM3Uk!2$j,6kB-j+(N8T014j4mZi&jM+QB82XYRFNZ)&386l
+BGU+V+$f09IPEM'U*8VHYV,JI#FM6TPjD)$h0rU!#ZpY*%abJe21k8kCLL)"d`3A
+9h5+a#-9rl,FAAa36#M!5U4!NlDZXB*mTUdGCF*eK+QD9-+N$(jcR"bNi(18"[k9
+[kDX!q,YeXkI%8U$E+186KaA'BcI)26C1$iLJ3Xi+pY$Vbjfd4D[#hiMDMf#`PcR
+E+dcT8jM5Pd+%8eCb@UKB+YP3BUB(FNKS2!,[qRmS8A&i2JX#YqRD4Ah*MkdS+bM
+FQF+3!'+fQ[,+N!"'LVjDdj8!J43D69,%T5"p#SrcD2$!M@RX#A,Gf#+jqH8D@pX
+$[@""-4i4FP0-KqM,$dAl"&HJ-*VC3cDbT5+d-MZT%RSMZ54+%I9`aeEF@fT`fEf
+a58A!3fJh31U$VjDQf3qB-C!!51FmR(6L,$2d%d*K)-9!FTp#88EdD6aL)-+2@kZ
+q$)#-+UJa$Qe()-p28L![-CfZbBMV1X(CJ+SmTb5Aq`&@8E"P+C*YPCbdMCfX5Q6
+c8KYDT!d-ZB&bqH"q9dh"bb#TXSSCK2UJQ&88*d*9[`PKb9i(8$N%8J@3!-B2)Bf
+PK-j',K%4hVqAULb'dUNS,Pe#X`A6di6#'&iI,AKC318#lkecDZEKK`9HJAkU6SX
+X#a@C+V-eM0fiq6-4b4T$1bY8mbB,H0j6ep&R'G2`U#YXJ1ZYGB43aC)H@JJ)E+H
+`&*c0r$MZ&#iQj@@F1@QX5QEQ4k19k`mGpHm[b-A,@2"-3p)9BNN2AH050AZTi5Q
+5'bIPK%`dlU*+d`e`LfM`8+ASD+GqP++3!*%l3mUKSjl$"Fm35F'"YKEU&$+!kGP
+,DB`0*PC9%81UZ!0'MTV+,UT)icmK&&%6DQ3AUq%'[M44JCN9Hc'CSp39(0S8LF!
+D)M4j+R,[`5Z-@&#TPR@$!NFP"V'PPm5@U-5@qGN5@p6V%PY8#l&&28jX)A*ML8p
+*$&!IN!!CNLFhLZ@%khM%&J0lb#crC@H1aimU),V-Z9R`$!e9Tr*Z8MK!Z$jUXDe
+@$c3jSR1d5f5IH[lrKRf-EF3JlZpRB+"&(RTCa6Z%3K1$RX$$LU$1D5KlhAp#!S@
+58bJ+JhN@"3[-3K@2BA+Q&0`S@C%+CLJSX`PT%!SSm814GNqhe46m&*-jJXC[3QB
+iHpDa5KV63Q&E6H8I3q'i'Ie2$lAiXl,G%)KNj@q'+)CHdib+&'PRAZJ)-QdMIXb
+BL*PPr$#D4f+N[Rq)Rmma(400jm%BZ8BrH)Y9IBU%1Z9L[9VC8#r)3md4KPTc9'e
+eEmHVaEfCPU[Qhk@J`6-GKEc4Jl43V-C9U!EXJ9Vi#1"MFhSDX8&`h'3,$++3!01
+DbM@K1TTd`2G*ErEQQVlXKj'e(fG!Da+3!)Xcq%3R!e-Sq$E@1pJr5kV1%@T&9fd
+SA+"H)'"Fa11`j#)(EX+!e51lJ[F3J++L4(TbiD6-*F4JeAN*-3LN`qc8``aHYh"
+N&jM**SD&RN%P4c-9ZXfUkTpbhk)21!eCQF0jMe#G(j-VaH4LqYJ8)p[q*L[5E4!
+UCXd[IK5Uab#Jf$eS`8mK1A5[-fJMpKdLLJ6Z!2!2dm-q'"%Y$-8r3P(BPHr$b&9
+9q6j3pKjA6H8MHT-A$ZBS$&,D#%83@GVedERm&RX8+VQF3l4"8Th90dKTXY+$@5*
+@Ve!i&iiXMSB&D0EE#0C%)!LS9!q&#aA5@kR+VX-Bd1jK'q*535!S%*%91'*0[aE
+"!H8+!3pBF3DXG"VlPqk10VA(B&BiSIl`hpFGbl*a@bp6bBp+DLiMlXL0@ilU[&B
+8DfP#bGEi!FXk#hU3!2RAdi1P!'b@!Gh8r,DX)"F"FkFBTkDa9GjQMb+&TJ8SNe!
+4I"Xj8ir*4I2L@1SKU+1RIV6rBa41V1fXBN'55*3e)pG3*-1b9aNT$F!%r#TF&,G
+CAV&[Jh%HKPT%E#1NJ"N(YSed6KjPSMXiPlSh&b!`24Ep2Kkp`T)hJjJf`b4TjLV
+-P(+N*8M4'mM&p*68#3V8NShqRXIBil1U+AU$Q6fB6aLBR`dXLFH-k*P4F6-053p
+JB(HFAZi5"*+B0#NDpH-$qp3S+L-"K5#h9jKl-JA$#YKLjZhCQ96X*+T6S#N&,K%
+E-QiQ)4i8c-X!QU[EBJ!G"$L@f`3JZ(ba,J"F2PFAM!,YL"2i@ciRi(M8e[*l#63
+'8(eRqEhM0TYNa"Tj31I#4Mak5`CMbfF,Lp(`'YU)3GN$c%#6$#8PN!!2"1*P!"1
+PSBdfJ@&k6+&eX2dLTShU2-rL36Qc82#H&N#RB1"hkjLkc+2T&c'TmF$GKZ''&$C
+dK9@5R)DSM5%R0XpH#V`Hd(&`Tki25eeljMJ+8JQk+V1PLKGCf5H@"0MqkE!-f(*
+Xf"SkMJX$Rh4RYa*JbqBbB'X8FCd!Qc5jl!'+U%R2&JQiCCq3!)"EYUrQ3,B"@lJ
+%h($P6ASJfp`YmV#-))ar(N)32elj5A'QA2b'5))UC(X'M5C"`F0R6%ZjHeaAZ9[
+q-FVGFSGbCrB`9fSff4rIS+N5UqEQ5)2bVaq(%#FPjHh(K8Y3m*`05EYkpq1!T0k
+09kT5R"(EL0EQ@p3CKZX#%M+UMBMDHJPmX@*&4kN`2l[+CaC82[2"AT!!ef@T5'8
+'5L#bF1Y"HP5%5ZCZC$I+FK3N``aDBGSM&m+cM`Vl"3#)#)Jh'FSGT!Q#G3prFJ@
+J6iXm(l`PX8BY)-)e3`dL-N0ampYVXTEET'!m*3IM-ac"H1d,pQ#mGT)8M#q4[%%
+#)B9RS@L,k4p2f%YR!PdbVjJX$a'&e3!Ck&lq6-f"jFm5D5,M2S1#DNHRQ+Pk#"K
+1+1),3*R,#Xk%cK+5J!Gf2Ml%8@acP,QL$pf+IZZF`a%JIU`q[Bq#2VQUH)@pUQ*
+Q28"ce*iNGaD$1H3-N689h&8`0G5+i4c(F0+aB5S'F"bE"U"Ui'&C@LD*6)PXaCV
++H5K8,j119MT5Q0*Id$eXN!!A+LrjXl32r9qcG3ipaY"02RqlEL%mXR)APdeJXS#
+@N!$0GP51&d4J+0UBLXXHmfaKMl2X6cY`$4rdL0A3%4,b8!C#&LkVZ1Qc-Q&2cE4
+H5BK$)KBB&+4,(VTb+5f`AUIBRK+U$!jbRi5Ib8",lS!3DZHKU[)ejF2Xj8A3'Xr
+IKq$d(6*%ZUV+YQ2EH9GCf9aA@@@@EX!F'[K@m!%Ud[$iGqPe(LMdK"43!*e!2JT
+3Yqf+@ZF4)mphSJT&R!TPIrJNURVc(j9NENa9PAI9MG((&6,Flij&-SU1q@-HQ%D
+l'k,#`9"eLkMPh),+l[6GkE[CSdNclMPX'%$&ccRA8%9kSFJ)lmE8BKZ3!!#'CMm
+5kY$$I4+94@S+HUcHVQ+MAi`fX%,LYXa16b0$+BN%'k3L8$,4SCNC6c-L3i3#f)V
+S5&$X$CMcc8pleG1ISJ"$2*J&9G)J!iHiPB65mmJ`qk15UVJd"D1rcL0e%Te,%kL
+10%3F8kJTli+Up2,8Np)P@U3U(T-[dS6cAjC-`QAVc9'GUGH8VkI(ddiY4S&4qf`
+RkH)acLF+c'"-Q(HYT[)mTY!LC6mqLl("apM3#6DFG,!"KC'*#JYJ-*c(pZN`3T%
+LScGXaF6JBr[2,5KEVlY%'B$*SJrC%YCa#fLcZBdYJ'%r9Nd,j,r-&QL6)U0qbK6
+-(B&R6j!!f19jAjUqCaUTr[`CC&'!KrZlU2)ZRiU-2%NR+#"c6GAhH[!cJTmJIJU
+2Pmf,$lEMfL6QMM%HN!#IT5jXI9#FV#$H1lT(S3,IiA#d#!Ddc'G-k**FJR+jefl
+Z`H0"bdTb2d,@UHc5U9krN!"8!%,!!("bXjMa%i8G!Z92a89NLUj#@K"%,hd@8D(
+N&!%J@Z+V4,%LPI5)34DFCBNedp+K-*CNlUqTQTEZRUpY0*8Ud&,aCD%@4p@rVDK
+@K#"p3D[H6DSXIhLF'ICf-Y8#T*9X1%0Zhl63-B9eAk,9I3P90UTB-b3%VA(D6J%
+U$C)qk('20+fkFG1LiT!!TTid4URa5l#!R*mfr"a'Edfi%%9QA5#AJ+aQ4bA+V5M
+m#FD$a3%B*Yc'4NC5*PET(KPk8`@1d%2LkD@$C9,R*G3hkRJ-,#B`R,qJh)Y+aPA
+PAT!!fKSdKS%B(Q8SP)NCrXJ!2'`T+aqQJXVXMqq3!!VAecAAc@!(5*-`AR,4kr`
+5Mb%T-BS+0j+,TCUlT1(Hlk9V3lJQ)e&0+)jj2KiA0Gq12%e,chUEC5FRXP04)#T
+kM(%j5a@PZ1Y&E[S[e04%-6M9H"bfq1dqlJ-)mXXG4(q*&`SPfXjB0RI*,%[AUKU
+(JM)b0PjJiLH(L&&(!"@&@e,i%0K5'F$,9(N8!F"9"!ZDbV-%f,"%q5$-L84`'jr
+0d6'b5YAAl'"$,PJI$ihBH"L2MEjEYfSH&G(e(BI3Q,+P[j,qLQ%&G69Bac8SC!F
+2m%EYE*%p"!(&k["UpJJ%UM+-3FP$JJ&3YbSH4-R0J4C'B%l'j(TC!)9LKKlH$9C
+4&bdXi"f3!*L6SLTZT"5TG"A#eRhf+pN6+-KXBZT'3ar[P0dp"SLB`1JQ+2#Q$3!
+iHNeA@F(Ep1"9f8b1#L-lklicN!#DqEm1h9h`0J+SCdV6fUZqh)QLUkMcZ!4FQNQ
+jSdI@-P!a1)!L"d[)3Fde@mV3"ER(VN*XNqXZ-4i9#2ED!#29@KPFa+rem5%!JeN
+b`5jF-X&+K)VY9paEFH%Q%I#4A$ik##)@`!LTh'Zp'fBl8(XCC&A"8HDD4bJFBdQ
+!4!F%$-!S8%pJB)[a@Lqr"F"9,fdVb0d`'e&$XS-E3iNi"c(@9jB5HP*j#4r*bLB
+FaSf,#!S*44B1I1PY(`'9ARUM[6)ZNHQN0h801H4)"k'*3Z*)U+%['ee!`j+5HeH
+G*qET[c*+KCPdLcCpGpI*56kTQMeB6++G9RehIa48DYNJ9550klY*bGF&@+5F-E'
+q[A#[EJ%N0AL!8Xp&i'$LQbCpLm#T[iJH(bekj++6&9j%*95XaH$S`8G5pZ-kI`!
+!-BP"4%05!`"B)Jp9$@C'%4!KiqjKrffrPUVdjZqk[VQHj['jVUYkUVCk3I0%GP)
+h"Zc+!VeZ*V1cb*r(e[+3!)lVQlQ&%-)9lHHA(A$+M)K1McJA$K0VN[%mkf3HYa"
+Hcm*kK("k!b1%j9Q(dB#"*YfNQhdc(Z[[hprrph8G),ql*1mP,cm!&AGH*2-J-L)
+5)I%!%5)'AfQ8b9J-2l+[@3!T*JH`53LLfHa"i#5ck(`cjm!X45b9i([crVa[`JM
+q[V-JiceF[Df@)BpSp%MVd%H'hQjSN41h`i@+@1ah[f$&Jf#ZABdf2fF%qp[p&Yr
+ALk3442JD9JbN6MH3!%9K)&iB51%-!ZN#AhU#5C`[TlBL)#cYEj'P1#)j*JkANAH
+XccRHk"r`$`"XIpJIampPG@Yc(-UL-KU8&YmB6,5bq+m"RiAj3#`C!5Zi(#CF1TQ
+%#CX`hId`'d69H*NhHiVrfKEKBKPDTG5!$%j2(2945hb-LiqS4[c4Mm`iN!"'Lkr
+eU%YCp%[*V3#)km6P%)M+Le)eMG$[1h2+mH8@4hH+BFrJl%9eeaAaJ2ElcScb3+I
+qJ$CGFY4PHX4PI*b-U2+N#YSR,E*R3iH[@Cd`0&Z,E%B`h3`31863F4e#V$TIaTK
+re1E`'mPLE@T*4[d2HjV9@LVqU'hTVQe!MP['E6$F+L28h`@!)-c,%-6jD(Q)"2+
+3!,&aX0X,U$%MS%B@+bV3hi'PpQ`2Ja($Rl,"IfMaP"K"P8$+P(9`DHPL4L%*["4
+KR"dKR09j[V"mDrGNN!"6&`Lr2m[Gh@pj`QNXKa*XGHE9(L2CeJl3H,Rbb%APN5L
+@"[EH(`hfGaNKK`@`lVRE)AARSaqT@N&lr[jN8PRJ&`[1lM+5!YBR!keK!q8`XT!
+!NaV-d'jVEfchA@'643*4+iVXqU)ldQ"Cm"NjDEDGS',+5A[EL8*q1-I"4$Bb+6&
+0*DC*-CeFlJ+3!$!C`+8jl,!bD$)'Jrhcqk6UEKRj#S*%&c-b[1,dG#Ke1KEc*3d
+UE%#,*j!!bZS"3rU`XA%hUkBDEdjDGjiS,(QAll3B5`5X-EbPlE3!1UQl+#pVJ*5
+XI2(2@Y68dNZa1Rr@*8&qZTGe,p5kYDCZ&KC50jShML)+'k+EHE'*P21D$-1!!Sj
+ZAQKQ*FT"-F(p,,jdd,$dk1*#VM+p`%3"m3BaYG+dEKZXReALC!46-c'G%00*U4I
+@ZKH9`UV+SCJqbqU6bA!A#9immV!LH#Q[8b(j@%!qqfKSpaHcFDKl16c2aI#k4Ge
+'PBMke0%3Ec#,T!Fpm+Pi`'hqIJd5)55`EI1mPDCcfbhBG#Z,&iEAEH4cTXI,Pb&
+Jr1CF6SB&+$LP5GPfJMIQRrH*`Ra)p@Gbd[!NM94E"iYE$3QiN!!,IK)Ald-PZEJ
+R6A4T9TeKRL+9"-%p!m-"Q!4SCI-"90#ECU*9J#@2,[5lA+8-LRc[L85"9rf*LKQ
+GSI)+&l05U2aK6"5U4kr+a85PhD2,El6!k('jU@ZZJ03'#m%EQ)UJ'$BT3Uj%p9Y
+a"+TIb+YBA-MrdUS[6kXiT6@qXP1TqQ)k4+dR"KMQHB89"BS#SQ6SZ6C$fjfjdqI
+RT#P8lmkj`2K(ZpXTq'&Qk&i'#3FPm+NbPT!!!Y+iZrJl2*SIL6Ca!"DqlY@BHA)
+ZcF@h"EQir1FmpNZ4palfC#j&m90a+BJIPhVY+JVQQBf6)9)V%&IXDpLd2529hQ0
+I9Cp@AUdmpPAP#Z@9FHbVVlU99b(DfU111kN1hU)[h)"!kPpNc'YS3p8`+5q'`Za
+Ff-)JXMPC1QjVl*JZ,@LllaY6!,TX@cX,ph,[aUV'hSe9qVY3r9YTbZB$#!fQr-V
+m)N3i[*'&bmUF!1-FJFF$V&Bp)fV494DD0KNJXX6L6+'UGhRE"DQqGV$Akej4AZF
+2p[UVQj6AhQ0H!i,G[+#m$"'lm5Jc&ZQ90d@Lce&`&8DPfG8Ll622JS!SKj-3bTP
+F$V)MR+3M`QH!l3!6%i4qi10$Q'5C98lCPKLNpi4P1l3DAQ)#HQm%p46HS,X%TE0
+F"CIa,MV!IF"8k"M'90riC(M5$R,pVQ`peI$eam8'%Xi5+d!i6CLdACJH&QY&8A6
+R(%afQ6'2EV3LqklNm0q'5S5j-JLK!9p*Ud*)c)cdG`!BM(+(-L`U%LSdEFH2qHY
+l8"(D@dM26reYf+S%IhC+A0G`NXejGT!!m#jYMUlR`(jTFq4$6+VqF!"*,CK$j-`
+I$[MXG+b9MQdefYd5,hcSC$8!9'Z0mlhM#,$Y#c+5&5T1T*P%*l1DiadL4F%*)-I
+iE`rF&UEfAh')9l`U$X#F5SXe-M!fVC9NCZ0NFRGKI$leV'#'MLLTKjHCXDlm[rG
+4E+`SZRZp#%%-mmIiR'U4R+ZXA!M0[45V9XIa`H32Yd0cPE&ekU*H&,-&VB804Ka
+HR0aE(mT[Ph-f-+M9dA``&XUAieE9L5jBQ5D'elQ),FEb*JihZ+!Y4'b*9BUdb[r
+&ri[m$rk,([0I82P2`hm"r+FIP,8JK@3*lM-XQq&mp6$q%,43Sl!L#4B8"Ufa)Ir
+$)F@3!'[qiG""$AN(ThECN!$r#iY14Qi-YbT*ZVS8$YmZTbYimX2B`VCr1)3(,Jl
+MQ,P)UPh+FMPYm14[B`[@N!!P&X[)iZ6cp@hY)5a`FPHSkjeLSj%@3&cDaBMUiYZ
+`T0ZS1T-5CX+h3E!R!-f9@ddYT&SdUG`'9'ZUjDpKDE'k"HeL5%eHM(+D),BZ9PF
+4!!X6SS$f[M%JZU(FcQEhL)fG4ca1kP`VUA1jU(2jU(0GTXiPj3@3!,Y'-2EraYZ
+%E[YrrHH0ma4qep93D[6rpdXPhFc+)fqD&M`U(NPd&kpij"&1[Ep`Yb&f#@8YEAY
+UUbV*&@4b13`M'Ad$2CB6Uf(Zl%6BZ&JQU%"-+TbifLcI3$`Qe3QH4&MaBa+9KFq
+N"6bFK$AY,I*MGZ#)hJY*KL#X)"ZFS15EBAka&*%iPJp2dZ&40HU)LeHd*&,mmGl
+e[U5GJ*NiARY*JC[RN!!qY3kQI)P-K"(-T5kPI[C`f9pqEiQ6ZP5"BlEqKFZaQ)b
+U5$aq)Bp*b"hKbGbl-VU)!Y``i2%UkAL!$pp&@)YN2PibNl2P(+HS[jZA)E"lTSr
+$[XSMQ2+Y)##dRIHCc6JM%9!'BqmcfFYb1ZJ2Ec&S[!+&BMIL"(XXJ`XRL%r-9VM
+*VK5H&#IPf+d6(`rJm$riC,3D$Lar!$NcQ,b"T0P"S**mR#UMHd(UGN`'Rlm2B-C
+Qh(Y'B4(qLBRia*L%DqG'J2m2ah%%&`8JcchEL-QGLS5PI5cf#"GSflQL##Ra-Jk
+`F13Im1IpV$f94hM&$#djVE!cc,EJcfCB)!l,9IP-5!QY8m1Kk0+L%06b[H[*BA!
+p&IJS&IJe-KiiqP%(Nh)[G6FCDDA1"`!#3)-lDbrqSmBPN!"(ApEHQbqZYLf"S,I
+0i'#'!#p'ArdF-DMhMA[I46JqE'G`$N"Hf*M""ff4JB`F$TQJ3laCZb0I(,%Fl*!
+!UL'(9!dp4*ES'j%[TQqN1$,NN!#k)BI8(A2)'RdMmNEk4SUM3`kT(A*)lC!!3p4
+Kqb"TaBXmA+md2S4&iTPCY(#bHIID(IF"BfE)-1(fmKj#%AF82e(9J1&T-"$V801
+TI%ih(4DC6BKXBZpkMh9QU5#hY'qpllchp&+XHYL1RmVqr+)P0FB'M*!!qMfB6JQ
+F5'r#0-VCh40rpZ(2DX##qcMpa8aNE"rBYd-F*J&XQB1kfJHMfJj6hSHEl6rQ*"R
+F+a(ZeS0p@)D`HE@"lKTEXI[0hR00$!IDe'6U&LX`Ark-"0bh3Xfa!ZRP8'82-fY
+pib"AC8c#HUHiXrHGafHl1dAZS#ABc)S01(TD9ZjAYRi0`Cp4R,HGmlf'LkpSj0H
+pHRIJ`q(+&p8l"(8$-'!V8Gak0e$JKQKU31N-bH(J[L88R8DG!-(e9jZj%k#)@kp
+5`R4c`mL$`3k(VQp*Ki&%+TkV!-$Vj'9CQ1SlljabqG9HA1leb9!Kp2ap-[AVJpe
+jBS+lFdB#0,J*TI$I#Bj$"d!4I[Dl)+f!EHeiFG+A*!$Vj&ZRNDBpM344Pc(If,A
+`$Ak*MMD'45G3"%fimD+`6MMD-dJ1!`MEaVFA)kpqk3k1c!jRjDZEKSIcXR%*'3Q
+#hPhqPA''q9hRXr2E,(2G-2-p!"Y1&+CFjh&cB,&#aNB"QkM0KF$cphPMFpQXh$!
+`Ubd'a`#401#b#a2k5lml+heEM4!+[&jF%[4eJ0fE-KYhE`+K,Q&#63"q1B2'r!"
+ZAKcGU&B8!PFLKlmN%K*)dX%pX4#J$hAm!BSjc1!(,R-$1j!!R'#JBV+BXVqlS@[
+"TK4`$AFr1%6a"@VSNCEBLe)kZTCKUp-bPKd8@I9f(BjPCIfpI(9CNAcVARA*D(!
+XH&R1M&9A%ANeLi-f'(&e,Il8F)"PR(qN4,*#(r#1(cNX6CLSL`3%FF1JbjN-p1Q
+QV4Ya'Gqif-a,S0i(),STcbb)Lq'"`FI+PekUVR5EaJrrH"rFP@&b(13Jr%ZLmlP
+%%"FV"bM!X'TV6RS+[)"Gd9erkMDpfhQC%3*"i-9@i5CCP4Tj!&1FBZ%`HGMD*&+
+IU2ECkMf6J@IN*)'Sbkqc%3)V'D[HbkD0DTD,80*`!6#`fXHUbjLB6%Ab'J!KE8X
+R1[q!iX`frVfcXI1a2&MlFEK3`UJpGS+C)Mi1#92ZZ2%FE`i*`A%PN!!@BBf$#-J
+)%3iIN4%h%Bq,4$UZ&'mNJR)$iHFj6h(aarJT+Nl5aklLjIa4GA149eH"&IbTP09
+ekZ1*$e(k-*,iS0'(UF5(-(fS5(b)d)IF@%$0`+4EUNY8BbcJMV,)e@C-)c40jCJ
+"qjeBKQVlUmXFh5D-a&H%&'pC`3%LrlJ4f0)*Sh2pqVk8LM,G`B9I-0ej-Q8,KE[
+c(hC-"TRTDqZBP'KD!"AFGK)JDIa8`e1cV'CcdYGXa$Qpl@6QF-H2fC9Qqj%hS%D
+l5)dfAjBkX`(hQM"[a#2AED)059N,8E5bF[3NDGYrJkjF,N*d)93)Zib&25AcQY[
+k3Q*0%pX!L@fFa$D9aNlhNYMk5'ah5@c&*$3(#HdZ#8dPNI@UMS5`6LA%0*!!%0$
++K'Lb#D%8)"5[)T5HK&$-K&"#3LK1kQD2fZ$!RLN%qYXhh)*MAlHReD!LmQlFmTI
+(AiVe([ph8cDpFD3Ha6$[Y2LlI"1T@q`-1bf1q4YmNR+YXG&Ki@k2"MVD&5QkXPV
++d$NTl`[FL35%"YA!l',BdE(LeZdA+G#*9*IFRP!J&d!8AkPa2F!49S"q'K-jiG)
+0KabiVE(+HEk6!@KXFDbkj[3jfcP,5h@Yda+ea'TM-Gc815dJ0hQGh2#@9#ZTM2M
+"Z[p3B*TFL-NKM*8D"3Gf1-(AX41mGcZc5iVL#k1lXA$(5,KK%ZZ-HKQ1mNJYN!$
+$1MNYF)9H1T@jUN"`)mCj"RF5$k3%)b)l&FLZiUJ(!'(*Qq+eFSMeB"GjHEpq%8r
+m1rK-4@IrpGPB&DS2BJK3PB[BcS$@baEA!`+!"%$i@i)$de)V*T&MlR*qT#3m`pp
+NFD4F1[`+CS#%"BKTFPjX',!9Il3D[DHD#PI9D0&$",-0!QBF4+'T%CUBP"*dCYS
+B([Z5j,LfP)+1Lr5k5!q@BL-+E'Y!'D[Tm"4qaQ5Qf!)@TQJ5kH'0Dh(TEDFD2Mr
+LHJ!&),9G8#PhZ5[6MpAM'JZUFi@0@qlV$(2"42Sa1iX%%LGd!3B210X[4MlTCKF
+8ZFe`q6140EjSr`A(,64)FUjURrkC#2b4B--(02Gj#1$B)TbV(Tjj@ecmX6kB*Lp
+Q06##TK(Aj#SMkCR!!a$JBbYGl++r-2-f90i)c,SB(`[dm6BH'Bfdi%-cICK&mBa
+b3Xh(TT(KjG8flJkaN6[lj828S1HK[JImdZ$$-V,d9-1VCrRbX4%fGGkmC`c(CQ6
+2UBC&QhMP[5ClM(r#!dJei5Ijkl-b*j[aNj8)r[Mi(r"0mJIm!JqKJqQIlG+(Rl!
+mkiI4qbB5'dbiq-HqG@GrC!h)0M[kMEL64,CAdmd%hHc,m%hcpm8$FITiS-!hTBr
+3ak85Z3SIfqL"BRU!eIm)NIhY2#8fYj`Hm0%$Hm6#5)YJ%I$#+eKHZLR36Bhbd)H
++Xp')qkCS*%8hCqN'F(md6')Y&8a,BrZ#RBc0&"""(``%+@8R&YRmTQF!$-9UCS0
+422Z-H('ql4`6)!2!HHa!f`AFf%mel0qZ%#-Cf@IB'Biel#!6lfHB+,hri`YJLlp
+&iPh1aq&2'ikmaSk'#"I@BR%2,AE$p*IK`YYaB@GK2YV1i!)$4`!(l$b*5Np+!"-
+#D-$$jC3-fN0(PjeU1&c+B#pkF4HTMQ+Z1KT2H&PThCjPq"G&aSj,q`aAPTf$DV)
+@%1*VF%$DiBiV+P*8[C8E94PfG*S9F)*i[kRM5"-(%%V&MVTdbCSKPaiJ`d'DhV2
+b5Z5UaJX-8eT!Z53+,E&3Z%"[,X,LjTcmhN"X'4h`@jq''a8T"i!-X@@HAQ96%k3
+3l!"a9KaTiL4NE,@6Ua6rF409+RiP8P*rZ"jEj3IM2)RY`50ebL09iL2%,5DQSKT
+-A%UZfbmZMLN['['2SQZPN!!F'1@ZpI6D%HTD5PG23DJ,h$fI[Mlb!$Hh"l[kdeI
+SdkcSk%rI"([jV&!E6lmfmS!*+LUPHX*%6RqV0LZX#PA1hq36C(BR+E3N+5+B+lB
+IBL@8jTb9&FeVaRFhNjXr%Pd64FDbpYPK*TQ0AEl4dIKcA3hYdp%ElBA!P[XF6N%
+"a%(-!XphFT!!ped8K1adI#""$V4VDBdC6-90HS)EV('b!Da6KGYSX-c1CHDhGaF
+C+h$Xkqe-l#Q)b-K1GPVh@8@c-f+5f'8&+@Tbp,#)KQMKY!C(TP&%b9pRq`rZd3E
+#D5pT!e$&UErrNY3HHF1B,c)DFFQrI`1(K!I6QeCVCY""*%i*S)PR0#5Z&2BK0X`
+-1aV@XHUDpCrd$D2E99(#jA'3!#q6(CPqHSBI+NKIB@Eq4fL-)#2i!6#'Rh8bU(+
+k8H-Z,MR9Q5a)Il[21MPrl+@U16%k`563DMh'35"F-FC*INkc1RZ4F,)Ar1l@4fa
+RN!!FkVG`JRidZ2H[U1#H3R(AJJ(Y,!4fhfFJ)KY[2,eJjk4PiqRT&$e8LiHH8QF
+4!JB2IiN+hf`mIE[8f(LiRSZFEaG-)k!F,CqlYIH[3!S((mr`BE2XKP5M,+&2da0
+J(QqKU8-0,G(i-K$D8ciCZi4*V@I@#1c@KFTJA9h8`Ufr2-QS!MLVGl-K6T*l!l[
+6'V#mER(f`U@cMN`#*PF`Q54(ffQab3&me-)(80-DqeZ!*(pA(UZLiUT$K91aVa[
+F%%5Nmk[5'$H#mA2Xb!mf$q*hSUJc4B"c-M!fQ8A('C-j5UIAX)X2Xi8X,"#!5ML
+F0EXMKr*hIc)3'1mHr`Q+R-Qpk8#54VKZN6YCTGiXL#$!9V$*%rpa'9"kE8&dff4
+"6`+IS%YqMBf,@664X%2QG(EY9-2Zkj3fPck9Q9``hch'2(GXVpPi$Xj#6(jD3AB
+!5IGIi)SH18RE"l50,Tp6$F2HDfRX@'!#PHYYN6N%lE@p*eAGQ5VTH)0"$S6X+hN
+V[S*U*SidRqrNBj8,T`B[2&Y1$*[Z,,#(cA8-KBQ#c&e'3H,"M#%+Ne2cYe#8HqL
+cdf#(*K3R06KQGMQm9+,CQFa#j6HcbNph$3)SkG@,PjS$P&NP!ppEP'3l'ZrFB`H
+3!"XAU*%@3Ad`-QbF%fU&I(CH3,"`GJUaiKT&JhLINjbBl#53!&d)@ACGM#V+Y*!
+!dmA5%+GQ)#Dlcaee,+U3!#R%UAVEZ*Q`dSKL$jU6XR+mcfiiTaUfl&6)qZ2FBBj
+F3%%JNC!!bDY1+KkcVE[aeQfKaRqKM[2((cDTfZ)2Ip1069BTKGj+K@BQ"*j+#+F
+GiXC,4j0iT,&&TUCPpBiK!8UGSNB+-rF@Q4NHcEE2"$%C-pZrKc!C+'0B6b1`!jI
+(JFSfFd+%!E*Ki6JED@[RS&Af&2)Q3rK41,k*e1V[N!$%Vr,MSdGmH"3I5["3%)+
+Ubml6"5ek#S5F5NY*CCMXV19[T`EUF$*MpkU+6hh0LfKQ,lh'IAq[jj)LZ-G9"cZ
+$R80A4A'RcXK5UEUFjh[2Vrc8M1-bhaEQ`-E`b5dfJ3d@Af'a@cRSMLFR$[+Nc&%
+CSBTE91X-B&NeVL5!lX0)d)!ElSIerPjI!8CS%YYKGdFA,A3305!6R9Ca8iN1F8k
+U9ibI'c*QS%bbPb@CeJSbq*a"kJ0N[a9N[pAJjQG`T5mfMr`&M,lHb)2KC'"VNjU
+N!,)HIcBTEN0@+*!!4Qbp"e9p$e[V)3F#cCh&&P4mr%F8bMB82VZU1A(`qkc!U(X
+TcIP*FI8)a3A'e3Ib-k-EV$,`3$Nj,Bc&0Z&2[Cld"r[aMfM#dXJK)EUHrDUT1-+
+1jZ!b!G#L*[BH`-[YF&(G%bZ(JqkZ@"QlkFC+m2,P@!hBSD6#L-P)P@&h@"T[c3l
+Jq*IaCcrql1)K$hl*T8Z'A(U4,id+ELI5mR)cZT0e,2EH"Xdhi3r#M!jX`'G-9Xr
+Fm@XHk`E0Bam111k)TJYJ6jGpGaQFP54-UFBcc$q0@1l*!1#1a'VBM3VSa&Y3%$`
+CfiDP`SQ@PJ,f"1K@YRHF'pZUc05@p`,dc*S(Ia!ZiQ8`TZed-DpbXCFpeS0YD%B
+!TmXi91'QSh`*L#pAL1Y0d1)Xi-A"`$hfrZ4b8N,Pa!3$U2cp@6edN!$-AYG"c5`
+A5NSG)2-cdE#K6$6)K)T`*K51bUre#i%C0JHV0QIlM@ML9qEEM`fe3JeCLF`B#49
+N3!8C3JA&UN"31)bU421H'XI*JRh$V@QjlX-KLQLplP*P2#&E-qbm`Q(1HL,9DkL
+lE#S5hD@GP'2lm,[#U4!2e!Y'#FAd[M'PG*F9"qN1bkJlb1!hS&5b5TGS9'A`3fT
+ddh*C%JZdQS&h0Lr6[#+Y8R%C39#LUcd8Ble3HE%9KA`FkNe*J2D)KU`%ha3)QKX
+P81i9YBq1rJ3#ADhHR3P#YAk#2kY9[kiQJkF8PGq&VJ"50PfUZkB%YahcLNemY6K
+36DM9),2mRhLS5cLk)*U@hl0"Y[cPf9L,F$[NJP*8ldr`m'U`AUdcad(%@R3LKK!
+B$"35&pF01,#$kFhMp5q8jJ$li$KR2Q*$qPC$Ji9p'`B@@Z%3&'SFQ,D2!VC")i(
+D3bfapC`BD,!-0YD2(I*,RqE[prd-E$,FFPCbF88DmTk3!$[DN!$h[FC*(KKIN!"
+58`IS)eLVf)(R1A&l!'D3!1+YF0T+I$l53U#!,@Z5fNB+m8`d+iM1%NbmcAm0a%E
++I@FdCVXifA`PL&4cQ"ZrFe06r8JR3kVlb-%594)ZPPXXMpSBkJA6PmHLd(q-a0T
+mi9GDiCCK8jP0A3BRJ*qJ8MZj`5(FpFV9EFkThUQ9V84UITj'DN65JiP0q*8!(E"
+0)5FR-Jc4Yd%0Y-&G[e4G4GX2B2YahKbD$l@FLD,6-`aKmarh&ELTJ-H16j[idjN
+S-E'rMDe48c4p#&-C55PUB@0#+FcSS$I83#-8CjE8JSh8JZe8`qrk&(I@0A"XKi)
+N82Z#k"LF6T4CpE5L(MDQ+3Gad9r`4HAVT#!f#[A!3S&bX((),l0J)V0Cbfq1S`+
+l&!9Kk'EFEhNK45%c[q1$5U!Z2P"(+@NKZ[8HkXa$'Emb$-YKe3%D2TSkKkcNP1L
+DS8hRV9C5(5DTMT3#pRd@B*q2`,l2LG$jTfk'-%'1'MLGk4QJm(L!i,jA-N(9@G!
+8Z)mhV!0q6S@TY),pDhGd-,L(d(A(`F'pL)qGC)XLYRC21%NJYE32JR-m9!a[j'-
+-!-6!(j*E6i"GGKR#hG&+DX92m2j&NGbAQeK9AAeAIUUij+88`0[1K"+$A$J*%J+
+Vc`B`L56R[fHB8'Di+8$,Rf9KA9jC@23RAmB-lVpT@$L'KDrmf4CqT9CCU,LE%Jb
+G"Q"N$JjJD!,!X&V6!3a!B8T6,aTmC*6854XA)B4YC`I0mCGN1,B(K1&baXm$Deb
+@($*RJ[dGkKJ#hZ1h*c+"rSj4lENZ4cH#eaiN3qmVLG&Sir(CjPc!dF@[prk9rQT
+Car3R4Z"`*lYVCqFEMbr)i(AZk)h(TfA38Q#&L83!'NK-X-+%QT!!`CZX6QR`T90
+3m1@+SX*3-@UFP(fj1ZCr!X1)C9J0dk'ebT%PbS&ebS&e1(#(HJJ+Uab9LZY(-AY
+%&b&9'AeGG&hG[Abh"DTe1eK!#k920+Jq-!acr&"`Mf@PM0j"QpeJG!#Ya`*+Nb%
+F+S)HCD0*Ilp(4YIb"V%PDP#QE+N+@pV,lU10!`[2BC)%fGKjc-B8&4j9##l8FRM
+SeL+lD'Y"fTU0'K1"!5EK9B+df#"DXqek)Ap4jS*lhaNL[P"r4diVlhCdlAd(iJX
+G[Tq!+L!q6URcklh[k+mD),j#k)V'N!!'J533B133`533B-6@jcIL0m0JRhGJ@kl
+"4aN@8kUd3bRHZ+M%9!9j$+C3&9l85P@*8P9@$bhNLQ$dY)cjlrMBX*2S!hCeM#X
+lKqTYZ)10c'!MmFBlf-LL%)8JRf*3%bb`qQqaf`m[H[4rAj3CIpq8DNdcaY-,B6+
+Fdl0K4lF4EqaHf-XrF!`SB5$ZCT,6,`bAUjIi3k*#SA4c'9)Ki9JB3A9@*VCkR*[
+XdPC4C2)G84aLUrTLhV$E,U"jaDAZ8I9a1%QdZ3-E,'!30*J00q$GM[4DR&0PDJ8
+2%*D0-aJhCd(B%rd4(-S`#@)5a#5!LBC*'*-!*KrrL&h)d*!!!T10$"4LU"CaUI+
+K)4SjV&Z9&&8+c38d-$9DcMif[qb@C`+U'@jBaLS-rA6,jec46Cm!l4QEH$!SAlc
+!J"m-&YY1ZQ-E,)0$0eR6i#3d(QLBD'$!b-KRA'lcqlBVF!d`'HbU![0B-2,V[m2
+-XY1&",8r9UR$(h#[Zbb5$!@rZXL1SR)(3C%-3*jfmE"HV8V5Q0b$AqhN36EFHil
+BM$!HVRHR(V'"0)&mEH9(l[%!IDN1L#!`[3+1S-ek`V"k-arQXl-+K'NJK%1+'J!
+VKVXU6lqG(SFBUJU1ikr+#f$XAR&(jKLXVr@1&k9qrT%lL`(j%)jiarZ3!"$P'cJ
+,iV84&#q-lTQmi8#bpJ)ha-#3!&miE2fSN8TVA&((KE950-5DZ#+0&"FSK[blJiB
+eDdmer0%Z"ZrQ!M`Xe1&cU,+,fB5GRB8PX2G*hq03NdRIedKT9MQI!-%(P'l%"b`
+rYMJXB01U6)Cf'*5TI)E6M4$dj$`'SAY2Z2pN!q1f`aEDUSY$m,E13[jC2#a6#2p
+`h(Sr```HFI-G*$`R(,LJ`CqJd*!!YY!'Ub+D!V"6jK-VXI%aCjk(i-,a$[eShUa
+(kmF2EGY19CJ!Dj-5X'pbFpq$Y#D,P6TdM5iF"d2%$$DlQ5"9J%"BSN)!NUYA#5$
+Cem1%PPk08@@EmA+YH-R3A$LY)H6J)&F-+U8IMa[Vc6JUQ)&l5L8AYf&Q,'V2*&q
+d96NDbH,UFH@b&jA,kLq4f+M1+5pIQk6Y*&kL)8+eUEbF3DH#),lAPlQD!$SV,VQ
+,hGc90V,lPiR(@LRY(')"SEY!Y"JFX%jU2q#NG*J!ai5VUNJ3TeFQ885q[JGTKG,
+Apb#4)MjS%G0#VZ4BBL&AbdMFFNAL[2h@'i@VbVBaM0V'3ki(J`@0Y"5$aQ%d#@@
+'-+8f%qcMQXNrRCI@'B!i(1a#"*pKpUA[JGii`P`dK-RaBX&-QQ!QHf%HMl-kmE1
+DC+@f5RQedZhm1fpKh&MZ5rhQ`5XVSXEFeI'2N!"!jp5#P%mDrFBbCRZ4d!@VeI-
+NTCR$a[e-2kHHH4#KRKFTF9`TN[6X#[2T'JcS#!E80i0!T0CiM[rr-VZ'I2V(bT!
+!MjrkMDZ68Km!mY1lI$[c0JkV%S-HmX+haP&YE5C(V#$BbXdPI4LLd%Mk"0$mSYT
+V*)@Ui3l5e$PeQC0jd[J1ZfEi[90`X8K"MB#&`bFdU4%0L#E4Z-AGbK01PT(l*G)
+Yl0!!X9c[ip3B9r3d%Q0J[*()eicckcr2SP1UQd2D,FL&*p`,M-qi(ZL*,f%-4I,
+CHj%2mHH'@ckEMrcjc,Z4YEp%X0Z%B#RPA8VLK5-#ESTSm+CkX2GqT+FIiJkqj@l
+IJi1)[Bc&cU3)fce@m(Y10B3[FD2ZS`6r#69Xrq6[[*Pa)h8`i8FkM&i5rPS5q3N
+51!EJY,j%!Um5AI$,+a4KcaVRpD%D[GZ0hRq#`#0V51!SYLpr,5&`[[AT![pbQ!4
+H!p#maThr1kqhpr2MF"3)(ldKZ)Lc1IE1`,d!3'J[R!Kk@&491fP`d6*ZF+dBKT5
+(1!afjY'TVZJU(de9%LE#bb2I3)9J9PD$("6+[,hh$NIH)j2",BKA#T[*4eBC*Nr
+N)EKD8`U*2Rm`mkbcPmNZA#*@65C"XLUa['AbBh(M,[kj$6F3fHBf6L3A*-`+&rY
+4,CZ9Ea5*YjZ4&R3Y-'cTJHVrJ9250aq)CS@!+AId#5-%561Qb!LVK!Kq9(p`)b5
+&*'#ajCkiXjq)QF-`Z4R)aXpjY++(e1bTKY!X#'N+E)#$NfH[GKUpJX"`3b)Hr(2
+cNc#kr[@Ijd390i*RJp-[e*Gf)@D!F&#md-Y1mUL1Z0"DZY!V'%bfNVXV,S5+4Vk
+"#cQ1ZC!!$4fkRj,D)H1Ql-&3`VemfF`,A*E"9%Q$Y*!!1a`P+%$X(e+KFJ*0-!$
+"V+eLCQe`J0(@a""Ec%#&9SZKE(dKBSefL5&Tq3GGd!U4eK%MaI"MR6XRR$JbrHj
+VhlHT`i-K24kiK`edBi!"#ZLC562-`i+9UP9BUHX*0UTQ+"Ye*D+Q-$4aYmGNYXl
+43BDJ0RE-lYHRdhNHe*@BTLB`6A-+de3bb#DKS`hHP"L#!HY3Q+@Q",08Hc"QL3Z
+M#)@KCCJe3MIJB@jlK",(j`h-BLUI0IUm6S6LX6USb%f!2@!qDCeYCkVldYP[r3X
+!qQiQCCk`QN,cba6p6+LK)NjqY@!B!RR6#J'D!0F%['+K)al"kkDXTV"49B0X&"T
+r*QP3K5PLGNi6LeCp%"DYfRQHA3M"U&9lQUR"BKMZYe"0N3QKh(9@$&h25H`AEb2
+*$*MBL%&$,4XjiE#')E2E2GC81l,!$b%PR2+NF*a`N4Ye29!)!BV#lL5R#K41V!U
+hcG`PdiUDJ55`m0(9V)D##c5BEG*66%8*aEjZ9K5N4f9bRE)S4@K4LY"24DKa%IS
+(RULBda4@%-UPVDQ3!1HJq4KQd*SSX$5'81jRKV"eb*!!"4`1FGI'J,3R+kjLLqq
+JQf*E5U"eZZe#*ZqD`Q$#+AC'G[r4"ik99pda!+e3b@rqB[(U1!2HRFm%hRaGrq!
+E)6#+KeSaHE$SJS8lBdD)0jpiE!j+a6mjrqB&rS5Ka+0[a[$T"`8T9$dp&%H6"BM
+ZTe8-VN(YX4U+,FYlY'G#EllHF"U6`*XhdJl3"P2'ZSZIr`d-XK['dP(mqG-%UfE
+b3!rm`$FaR'YX(5lbBZ%UL"blmk`$Se2p'`a6Dj'6&G0A,TfGH4B2AF5IbfjCrhN
+-ENYZ**4F1)'de-ABK`"GEXc`J)fIKE2m5UL-#dKGA8D#DlPRcMU2!9[1Hrf!`Y%
+JBIdB2`D'aV)fK831'X6pkYVM#l(eF'*YQ6jlZbLfaXF323f0l%&Ajm'X9'IL-62
+a@)JIJe-#A3K$$#81pHbNa5!`jJAhSi+TS'eZSiIRf18feSV(Yd'G'DJ@L%X%TM%
+RacrbJ&df4h4e+iE*eG8YAXf)SB5ai!3Tma#6%eD`LD'#qD8lm4+*EHGR%S[kk%9
+B%*UMPUh8ArqDRIZdY)9'fX,`83ZM3aDQA9#@T#e-(EY3(KUb-19-0)QMejZ'[$E
+6MVf3!(DXrDKM,`eCD"mmPSGZAllHq!brL&)Ae$mC'Aa)$$l#j+b!&$4m2ZH,-#K
+Z0Tl+4q$Ni2)lfMGd60GZk*M9M'6ki#-m-$4B`rH)'@E`S*PBa8B%*RPL!Gm9a8e
+$35Y`3RMa5N`CYPJ-RdV3I1`a(N!fX[8hJZN!Lf-URAlakM1Dk1)mS$J6#S!1S5X
+a2&i2-P"#`iGJ+2MKCC'X)"B6f`8*SB&iEdTc")dI`3a9HIqildq&'`Yh"N@"3Q9
+1P%&P3ZN%VldpK!AP#r,fa8A444HCG9Th%LkRQ%6+LGd6VjVG@@)%CrQJT2Qf9`c
+MpN*(b9f#r9ahTNpK4)2A"Sq6Up`Z)U`ZX(XTBSk0YiF%4NFGH%)-)!Tf#4AfpL2
+J1,ef$-2+pk-T*j3A1m2b3CVB@Zd,EQe1K%(VL,dRF-6PYEMcY"80JFTbFZ&"pD-
+e(0K#0$GQmQU1!a0QSLYhk4@5&d3abGG`9'`&+dimc--63e'Dk8'V-$ZhLDB`PH3
+#@eN`e4iL+QN%C2-(I3rkfiRFY2[fTJFaE)6%D2Bl-8Jm9,@IKi%A'rTU#F%3mTF
+mr2R%`dqQ2m`-5ZNLZ66MmUNZ%@`@A$cdqhp1rfVfQ3TT8Iij!S"JJL5Y[-SZ8j'
+cJRfJ3E`jPCSF&4!KrR%$#MZU6Rhab@@jUdESlG,-Z"!$,rAS!bk08AJ$`dbC`T!
+!q8#[bB0XB,L0+518EVbTc-L$`SNLjrFr-P*h,9FUE4fC2&c(0AFI$kYpef,VF1B
+cJ(hE6MbE&df8D%Vr0!K063j,D@SR)*UR9NcY0'h&e%T6!p0@QMSa0@LD`G4*dab
+Q'CTQ-Fh4G"ZQ@CSZBVU0TK@B,Y)dMfN&63F`cG0d(0-"QNjK1Nj6&kC601h&e%A
+62NalD6S#jc0[*N$0KH5rDTR!3-Hc!p,%(c[q@2'R&Am-)c#%2#G*M,lLA`Na1Mq
+M-2,Af5M`Ma9Fd0@0VN5V,b@'01*Q)YaG$N`ZemdMb%QQ9!&X!TKbr3@-AkY0Ik'
+6pG@ATUm3@9q,2fZBV(0Sk5R'E4Y[b"h"m("II,+D0m'[d,flp-ArmUhE[cTkX@q
+@Ye60$IlDd,fM),PVBb&b$8M4J,J'QRV8ZMpHUc+KpFhKSi&%k,D$,A2($Vi-bMb
+)8,d$+DiLCekimRrX*J0PL+60kbKfr[`[iJb#$bVB@RUXDi5JJQS,Ak,k1TV%[F2
+-4AA6%Jf$@Gh&Pk[QC($cIjbY[KiESFZraUm4aLrJd(Tak0Sa`5Vb-2K`@Nm3#&)
+`5*VVK%)TYKYRT,0AD8"G0aV(J%D,IHcm@DNcQ#i,%BqTpFl"%"rN#-*LC3AQmJ+
+81N1S'MBc8JK-9@4jG*26@dpkl`N9#i@SX154#M(FMbrUZ+9mCMAjdZ"RT$H54Um
+$)4&IBT!!Q9aafK1R#kE5L0`"85L1Xea-eCH)ZC,9HpQ9B'L+q+Te6!cC("I$KL#
+4fhciIXDqYD0`Mp@P-C!!iq(!QT&+B@GP$&&$kDbc((JiZ[Q4KUlTXSDZ@AC(lM'
+k9Cr4b`2m,1[`,BjUEZ-j#kF'h5D'V*XbJRT4+GZXC*+"3VSM08T"R43A,B$jH[D
+ie,k!bk!K+cGS56)!4@&1Mp(&a@#3!0YcHTVK+MQYFYHmG'ff1%h"-P!)"eSBb)G
+-&YIl"G4@!!-"&iQ1D@e$afhaJ*XH'-V)ijm"Q95''0Gb5U*m2('%58b#BqZA-(,
+3Zh+fX4d1`(iMH,Lcq&VE1EfkbN&aX&Ehj+`10SD+bIcVG$83@U!2hqE$3G$X1N&
+M5!eQU#)S[jl*F`"2`CjVP0f5+T(i-MR`01B"`80%$"R1h([XRJcM$j)bMk(Bi!`
+5pQ6)6BS0bm6J6K8FTR&bCpeQKR8bmM%-h!p6kr#GSN86@*3mDK($ZlcSNl4&%eM
+88f3qmK&)#+P"4cd+Bf2r,@BXBMH[LJ%M8H(!+JSc[bfU'fJF)9,rjZI5Kdm5Jj2
+UJ[c2SB)Xd38C[F&3!3Qb4"&N+&f3!0&,p-!aJSbq4S)%k"5G&B+-6L@1X#F%b3Q
+YP#l)9cZ,c@-&'@dQ3DCd%&(lB+JJY4X*3CBS8)a)DG8NK"Pq93M62%UBGTKKNj0
+0B+V`(2p2TTBKi$H&a'd2K'21j2%6*d(Cjf!!RY'KJ[V25rrk+aC8C@QDS1`3&2k
+K,PV@c-GLDI`J5mNX[PU@YV5CPQUde+SXY4qe&153!*CqN!#fe-T,j5&DfU-XE6l
+)dYZde*ffY)H@0Y(59Q@Tp9L$a&+ahEQdTDeBHTF@PVl``[p*PpaFRED`&!Y,!DH
+hL(pL*'(-BGfBUh9MCK0k-YfBSf9Nc#9$M9N-8&)JZ-i)*SCj&0$H9Y83jJ")TfH
+ljC[YB%ZrMLe`%"35M``GI16U)S0q6hB5e$,+V2'6ej8`U4A-EY66$%#)"k!+QmZ
+Jb3KD"m(0mkFCK-P2RL+`Up9YL#$&`i)*8Y#KdA(@2JTLj%PLm5[j(p15pB"hrDl
+cBr(,(-l0+q(FH64M[c9GZqb@lc8i)QJEE[PFSm(HELMi3&&`Glh,-U6$&$PlI`!
+&cd-QXT1#khaZSaUIZ6IArS9ll$l)c#BGf6fp(`peLSIQ%)`j,P$k841$Tp$QeL#
+-#AY-6M%p&8GJ--!Ip&#%!*d`[85k#X2*96#4m)abec*FF$+f*eKfrC1CrJNr8i+
+9IbU&`Y!8f,C+"a*iN!!a[!a4Q!`JN!#CNkG#LK#Nr(-5Jj3I!XJLac`Bm28-(&H
+SX#fR'QScY061#rppJ*-KiR+eScLqiCphdZZ8r[QIbqPcK`M+DC'&2Vf5pQN'ar3
+1U9V[N!"U66%)c89-`jf*j'"5r%0-J'SNR1hpkrmEK`JdI#S[qJkPh-*'A!aPaR"
+-'V`3*0MDfSb(H,"A!-&Mq&FP1%@(3pH2$Jl)aJm@rp4fVVMRqASH-#GkM[eA,TP
+EhV4J@'4TmJFd,iEV)p+5`Q8T03L-mcpqa!eAm2%Bb$aU#FDN,$EjRcXjf'ZfNZ+
+HSeqM+dVqjr#if9mXaNEbmYFje'FJ0+-X4Y-NkGA5YJEa5qXaar!`U5R4G3%0)%&
+'ELBQ'SQJ!6$"&4-`jhDNQlMaBmPJBq$dBEJ!N!-JVd&%3e)$!%cH$e80CP35!#(
+LlN6[Y@FpkUdjQZ*FQU)rbRNFTIB+`cLGdXAf&$P2FhHFaYbkADLfGeI&YMGYD6U
+XQkQd5K'@UH!i$X1k,-X5-G4Ye'QD@jFe#@&B3jMkr@%-%DFMM@P!M52prU1eprI
+r[Zr[GlrVpdUFjhRffHFV(@8q&!(a!`!"N!-!)3D,85i0"[b4HcqR3%V3)8eiVNc
+k3mI5AbA3!"aqGe(kUb([Rb)M95U9J-YQYPpEY9Jk!Q$14D(-QDk@*YRRhZ*!+$(
+pdj!!pp&4L%!r$I$c%5BN*eHQIc3j)2ZEr5M+-IFr6UidV#2%(RFkN@l$@E+RHim
+0@F5!XB2#2ZaDc,hP2-+K$KRmEQJC`MrRh#8c1$*p"*fek2"2,ZiTFPY#Q91$,05
+qjeHjqp1-AIJ*ClQGQE1mjLahU6`DbTa`*pf+hf9$k"ECXU$*CA[D1FZE&@56Z[9
+*BAd5-LIA0f(538c5$jfP1R4BG@M*,'p`K4`Q4cMfc2+'[(FHB1,I"G5D81CGLjQ
+6eZ$R(3aA1VTKP+'!kc[iH4&"lNmGKl%X$(NITiQ&q&NAmMjm"Bq!)%hh!M%(&aI
+JBJql1!FrYiHmX6jDd#0dV2,c0S5"fdl)3'L4Q2$60HbU0pc"Rf`SM9lU0KMip3N
+qS-IRm!'Q$FrP!fbS*CX2X-dV-6kJ4!c`!59["NjBNSAF"`4m*RhElQkCPV@2$GD
+4FidY#FHdIkm9#d*EE-Eq5h#%ilLfFApS8BBYL%j2jUpbV81Tq'0Z+eb@GBiH-qa
+$%Gk(icEZPK#pJX)j@9hSl#NNC``!&1ZG9mdlR6R)kSLVF[X)1hkRkRKTXBQ0-p%
+ka`F39XF+RL!5C-Nl)1bl(led08S-)mB,'-Vi[49P9HhY[Y)DRl8-YG5pprkL`PI
+qF@)XCGe6+"cM+"$KC@1lSaE(GLGcphJ-q4#q2L39h8$ZKPK'(E9Xd)*Yp+1)"Ga
+ELNQ%-bFX,T[L40#BKq%F3b4d5-5'N!"AGPSJTN$iFC@%-B#&15`jkZK)'Tice53
+Kf#%B6paZ#`ABdAAD`X4EZK,LM9$aHRSDa%I!EHf3!%)XmC!!0lU63V'B9#X#da9
+Pj5H+M%T0F4'@cp@8&CHh+dA+ZdV*UG)[+dkmk+[%03aaS0KiSZC,AhPjFEQ1mK8
+CbaTdR!M)df&kS0Ga4(0IFaMQ"q@)XArr@fB6Ff@j!mCDFT!!a9DC`m+kb`EdCj,
+E8#'XNhCL2M$P0-2YGK8c32!pR(ESS,4ReBS$i*S"AHcLRZadIp2%+M%B,!Kd",K
+ANlRBZJP%95"-cJV3-4%2@%)TQ'cQc20d$)T$%Kfp$)MpB$kC-dYSFYC1C%PTQ%f
+(!MK$c2fdMF[%L,$iRZ*4mY`P1iCd0!%*be)5Q+bB@S68'iG!DqjdPmck`PfbI6i
+@2`aPEZm86dr3%`&-qJDUKJDD5!EFb98l"YTbli-`5$[qQ!#%DrT$cQd`[3qc+CM
+DPX[GAb$%MJ&!!b+&M8eDf*JPFQiUb!kAVBV%FK1%-*f*jATdc4GL'De0L+@iNSd
+V&%3N8bA-"2d3bTD`5A3+)6GR%*K*@*dSrXD3!10Ek(3l`85-`BMRKj[0ABS6c1Z
+b)b!+BF4$9CXa"XGA@J3G"Hb*4j+j&PZ@jHprBfCN82#lE-TY&iLP$E%$bc$p5PC
+6m#Q1U-+#0ZC&b0*%B2*,GQQ,$NLkS$Ke`*`m9B&#)BT8HrXTUp9A9+9BLbZ8iZI
++P'+c8RkUb1Llk3+&@em@QlpNYr3#CBhUJ#1`Y*(*j*28l+SZ+ZK3,8L!kM%bl"1
+S52MJkPd)89SCJk%%()JAGR*525+q!+jUiZ#V9-3KbJIM",a8m354iDYHP*R6G*2
+Q$%a!,-K05J4XmY%aN!!2'UYl*`@V@ki5+MTiQS6$h(q"+[!#',m*ZCiPE#FEh--
+H2#F'B6Q5!j(YH[$CN4cIBSFSK,dX'91*!ZQ@)L&+$N-'k6!%Z@-T!5dBRm*Jek3
+S(Kri*[(81+LI!4XeI+%CDq!J#RJb*k'`F#HKi2@FCdlDQLKi28G96Q)AX[1)b"@
+U$J#bGlXhBK,ZRXH+hFPK-F`qLiPIm%Xjb,"rBG'!dG20$VSM!BbH8)U$FMV2YNS
+G-"#LRG3a[Y0,'dDf3#emBEI1ATZ11)lS`KF4`YH+MYXGapP6@54DV-$V)RLB$40
+-9K0!*TSDUh@HT3['2JK(c0'PG`U'1dl-[8"XZfeS8dlf,5*Da9-lILr%3&`4``B
+5LZp"8-B6$lQBS)3[UJJ#FND-N35$P61Nj,0JAlN-I54PiFJk8-H@DKYY+Ep4)QY
+6*K+ERNjdZ(6K[SLJM&22KX5,GER2HZ"8M5mPrrU+'9MP"kL,cjN4'kJ+2q*9iQq
+UU4*R-d+%%8*0pdbZfK5N5ZmqYi`4kl`A`AJ6mP'U`A9p-)UDNJE)-LKm-F`A)El
+`m%@5,b,Z8MXF2H(LKc3h3V6%%8FkDA5HYJ89V4J)SL5QCf%4iBYQ[QLK4G")994
+6QDL`U5+UP-4%&RfB-9FbQ"4+kh[HY*)ZDmbE9ZaQe8,Q6+[)(-Ql@G''JX&i!`V
+l#P%pXkTm'fHlRD+SFl)E8fG@iZ"cN9DT'%pEhaYM6iq*ThY96iq`TbI`p%lqp)3
+3GZhTe,LR-A9Q'6hYA5H9iYf0AH'%f"BV-1jp%EBlL1Kc`@&*aa"I4X,f"jmPP5b
+`DfC'29&8H1V!L5UPb2FcjH5"iTUAP'S)fcKbAlrQ+ce488EmA(@hrU[)ILpJDR&
+FU3%&r4j99MEJH&VZ*Z!PmbdfU(5p#m5lb,SX3'(YLc`YPF,Selk05ZaTfBjXPJ@
+CV1(3SQB*8USEDMh5HUPYrJGhJ1MpYJ`aBJQ#CM#3!,*01LVjkCfdS)c`RMGjPSM
+3-8cY#bkMSj!!YHaV(A,C`)*Zpbil#@#PEdJ!+cUIJ*81i0je8J!V(@+3!$k6!&E
+dEM@`D1U'!3+@H2bT38DQKIR`eE#-04QN-`r)ddUrCjRbNSamNZ1Aqr2-kl1#I0U
+0X%4B38*p4DSRX@ZQMp(ej1rleaN-qbrMf[6$j`e5A$cN`DE&%`2X@'PSiGXLCrB
+VA4NfSF)&"D&Scj!!rAMABIpl"8F#rhrR9dfIe(kVri%VIahlDGq2KamqGd'jYqf
+qj+(`8j&R@TpZhY2ND(RmdEpliQphrdh(RlEIfIe[hVdd1KQmH[lMkqqlVcN2l[e
+*b'Ej`,2rp#q1rGceIirqMicrpZ'A@DG1eP6jc-D'%rYH1P"59'cpSr++XZF+IeE
+kjbrqVa[rmhYrPREVcEbFLfIIcRhpmV0[r0IArL*ld6Y[,I[A*ImbqapHq+IRrrZ
+DrrI+[hhe2hrqAclplSV2eRhlLmaYrc(e1l1@,[rlN4q-rG$lIqEpKirqrCE[rqM
+hYrrKYRqmicqYrXdM[hVXMcYhE0UmpFQ0[jlrZlYr1qHKZAmeq*F,(ZcpjDj[$Rc
+YR[[AVPVjpIAr[1'ZQI(TUBP[,&kB[chG)+5hZ"!FmlNLTHSjPZQV8JGZCCeLR9!
+D)F1VXe8qJDUG5$BUS0i(S!CC+-Pi'T@-FAJMkhA4"2(Q[DX-QEiNb*F!XK`"%Pd
+B(qEhf8YPl-Ilcek`3`P-L$Y#)CjeB+HYdV0h(ekllVb9B6-(Q$%"aDE9EV%eS9-
+jc,UGcPYQdjlh'8ZCB4-Z@f`)h4dIJq*KB65Vb*-(TCbd%M-8#A#3!$+d2`p+%-G
+ZrX"RPPPXVA6JFG@"(kX1l#0Q3mqDea9+jeQc0$4c4SCNEeM$"h$)8p1#L06$T`Y
+I!A0@%HN,1k%Jq,PMcqB'%44Bf!ZhYS&pp1XC@dCBe!,94p1TQ"pLUUV)k"+Eh!h
+d'%6r84UJm`e-(9CG0KN*@,[TiS@6&KZZY324MQ[,F5f-kAj#*0K16+C%pK(5(Sm
+XIkrc9KMU-5Clq@6U,6)jQ+m3%-SV50(6qYi)UaT'@0@`m&89ZpP'l'EK)b([bKR
+"EKBqJTm[91aQQjVGX+N[-RD$$*S@K$+&&VfrFQ([qrIErC'$b(Di90Z,K4EY6r[
+jP[2bJ9(j"&1169cX$be#H'9)K'id0+j%+&KK9b'45"bEM(rB#B,@Z)b%("dHE'p
+,b,[q09U3!'"%H[LQ#6dEa#V8"eP)4Mb!`q&)*Gk4BFR!RMQcR'@%QicNX&G89HP
+(c'(c3Yj9Yh1(cF22jkUUG(@F`fLUNcQ-LF4pUhN(!9cK!a)C,V)NFV8Eq!$L@(Z
+G3V`3@9D4&K@A+DH+P-Rb#Pr4L4T&Cakq+J9%RHp859dXj+VRUP,6i+YjUH+j%UA
+N4%A*UE+DKMZ*ZV5#`+`k9AC+19'Km)Uh6RE%#,j(1-(hZfS)[M'`VC@*i*IrFj!
+!9iq)3!F-ELE$5NEJ88M%a-Nf2pL6b@)cZeP3,Z&kXdiHVA@k5e"d"AQ%)Pi3iDl
+2D8`HhGr*A!q9@KACjqF(pE--[2Zq"ZL+"R45m%9IHE&5A!j5aALUl%5K6cRjR0R
+X+fG8"cbM"0RB9h@Y##lEclbZMYc9kl4V0V8(iiM19R*,-KG#`N)qJV3m[%BM,3X
+U)bfCiLBM,F%k63Yb`kfbIb6YC!`&UT99#RKX[1I32NSJJ34NBMp0cFja5!9SPT9
+"d)q,[iR%hfTJJKm`fRqp6[EVfHh%CTe!QfZCJPBD$FLFB69NpHr(!)m'`-J$*T0
+3D99[G&J2,d!"8I9)YqS4$jKm[cHR+UcBXbmkT!LFZP*XF6DZX+bZR596"'PcISH
+$r`&G'h2SiI4HCBMBV8k!FQ'pQ`[V0kX4eX&iBHh+RPbefI)9#@Z$,UaI@a-[V)G
+[F'(0E5bXAdY@*kaU)@A(plpFFE@a%Pk*[*k"`'kf0"EBifG[9Q!KLLBQVMR'#-#
+Gjb!`qq0"$F&&8K2L'bH-$%#'EH3)U2RE%bbp%R&PKL[$QpL+,U!JIdKJ+pPBNpM
+B@&k0`UlYT@BFV$#TYNDLP49ajTN,f+3)52NqE@+F1$EH1)4[J![KH19#Z"#Q3j!
+!0P!N$r0`8cL[9#B2"U%#kX`a(PAXd&B$&B3!dB3eLY$3K2%k%k$-mAFC#9j!aZF
+&Z6p)bqS55alSRF#8$ME&rJ1K6MUa)#haM0Q,"LMjdZkkl-N*j0!4*@q`LK@N#P4
+)8DN,GI4%k"1L',$E0BHcd'FbBVFV2B1j8+-0A2YqT'GT6Nm1XB*)bellGh,Z2@q
+h4bjS9e#%)cb%5Sj20Y[Y5'+EXYH9DrVTY5eY2GqjeA1,VY16E5h$FQPD8Zl2-5p
+i*NJ24Ek-"lC$K#kpJ@c&k@iJNQdF@IR0hQ3ZrB("0)QXDAq`&D%'UT!!!mN[8f6
+ph5N[J-L1#G1R+HQbS3'%H0`lC"*#(fM3K$j3DICr-3@C!!#$%&V6I$Kp-A2kBX&
+S`IS+529B-%f985"J(#EfBVc#M+)D@c+*m"ZD(UM%DPU)eG+KDX5U)k@MMM4SMR*
+1VYVUTS4[GGq8Sd)T,c"(l@3%'bq+DRIjdi5lMV6AlbkC5"4cQjESEDUL6d9X,J[
++XF'iaD8ElEbQXkU*DUF9*Cbee-kGp8NecXT@1DY!L0(@eFRF3maiScKGYNTFSSK
+*)TPb4L3c`eCj)KZaVB#+EI&Y0jTLDXcBf-B!YLH(kpiB64)EkeTFrmBZT$ckC@e
+10f3pkDlEN!#P%38"K-9-S--,M%eSSYPD5!defqK+BJX4N!!PC$i`&Mb3!0-K2AN
+M&hec)d1+2EjkAeV,!AZK'X!1kJ,%cEREX&@[f'UPJ8"bRTFl,h0Q4Ih1FabKTiK
+SDFY'G@fAp[!*CQ$YmEbPA!ZV31-BFTH-E3%!eqL'jI(CBV[MlibN@@a9IFaF5BJ
+hH-IC**UdJFcBLf+a8aA)UJeq0rJ8N!$-*'BSCFB@lZla0(EC5f'jP-p4&DBi`aI
+89D#T)mA'bQK$2T-bj%Pck-JLENkP`FQNQ`ar-"3SC!SBcd!fp`KYM+NS(1%JC!S
++[,!H5qDkE!NMUQ%"185)0*MNBNajM$@j@dLKm[%IX8ac`)M3!3`4d`,*Nl(9Jb5
+DZa&Jk'$Q3qUFacY(0&5ULaVpCBk[FdSL5iaf(ZCI`&3IKS`"EHVR'9c*J@hM$X@
+CB9-lU$l6qIMJcCR1*@hPlNU+mSX`iF*m@YA+#KP$S8P'i"d#)M26M+pe#F1K0hU
+8N4q2ULr@*1-QCBl[JV%d3'D'J'3-DABm)kIQAP6e3Q'SR!'Z,#*4m'#5-qi'F!-
+-Y%cNM!TlX"l!SMMQq&LQ9YN,CSp-pY`-'V*R0X5aq`"hbGj%mbpb!a8DU)ZDc-+
+%HT3,eeS)Z42QIj2LAj!!0TK,rkr0lFcY*8C3+bSaFKH5em+8LELb312T9,3AVC!
+!4*kSUc*epC!!19fJDZV6`82e#)j&6e,bTiHTqIZQLl0`p-Q3!(!e((+`XZ0SFqk
++$")A%RK[P"RAQ(,#FBkkmPZS6,!U("&4!5iLJGkk3hP2pGMV[@P0V&L20i3Y)*I
+YmbqbBETLBN8LS!p"I++jB,--GifGVB&"G5c[j')BLiIBeZfL3%bES!UE,jj6L2J
+l`N*44`8+Ndc+i9rQ0N[Pi)iY%5Le%0'AIMHrB0Pa'iP5KN6@dHkZJ%JK'HRca!E
+SXM#JkBH06l!`M8JbHk)03(Ird3fS-FSq0&UfmkhRL3bD(SS6e5)*EKZ&0Y23@(q
+4#bTTjSPUJ(C&aIS9c[Vh9-lkmk@kHYTiNp86ba)`dK5&2JR59+&#!K2ISdbC4e9
+"85()X2PfU8PpeIDDq2EZV'Cl*Pe*")fZ!Z8)iMRI02CKSeQGUF25`iRJJXGPe#p
+6hr6YUTcXRGSlZHUhYk'k@XH8FNcim5Y15c9%!C[+L)+Tp[SV0QbmQbIJ@M8*D&'
+""eA1AD-kQH"ZX!-a"8*P6SE)d0T00,$NmU'rdSUhR5BGdLCMk4HN*(ZZ696)dfe
+eNC)*FXDZ#M4Id)M#Zjb9N6Em'"14hUbSpFH6NRGGjdRAhH2Nl[Pj0HkaJV'N)bP
+,K0LKJNRA!`AL3&3GhSFf*6E!a$XLMT2(+RA4ERS`QF[BVT0GmIV2D8-m1(pqAHl
+jK8dlcZ[IlE*GNK`"0VeKX19#h)3VUJP3$pL`Ui9Rip*A1)DdC)!X4c-PQ8!3D8i
+'-mrV#%A$#29U8p$)M"'NkVVF'PhR3E0r,%(%&+8[Y[DXmqbqB0b,`3T9+#9,0iI
+02`eATeiDiJBaU&`UZ8ajJ+BGE@`5qr9'#UGFDNTIR%M)i3pji)!4!d,jVZC8%89
+9Lk%ST*K2('"KNqYB`(J1h-X)N!$mj&40ii"*qZb[f$eHc6eHDaFYQ@+[ep&p#Ir
+%(dUXeDijl3@9dlB`Tih!$BVQY"'KXRRKY1DdMq+FKZNEAb@RLD-B8&*93*RG1!J
+1Y9l[aLhD!E2`mhc)Hfj'1m!EG`"0$h+JT#D!FRbe!-Vf!bQ!8S0`9CQ[%9J%pN`
+!8ch)craaTP$+59Vh2NUBI4d,ZK6#V3+aQJS6#Y&MZbp`e221UjLbPj[kG5H(p"$
+LNaQkNeNJ"fUU$fGV6VBd$L0ZR8Y1jP9!3#GKGCFH++kJ"&1d[e(DUHX-Nlj@6cS
+,PZD$B!KNBb0K53fX$l!'88iXLk(bV,YMD"kjJaQ&@!CK`eD)QiXqi4")`cF+IXI
+FXPEP&SqZb,$eZZB@-J5ZK!,fLjTEVMG@CYKm"lQ&!Q)lX#9Dk+i"c+Z%kN[#'i3
+m3fI-dCh"!MP5lQ+K(#RR+YerKT54BdKYXbU%$Fj9*I!f2B'Ec5b"hBCE2)RhK,`
+rRUdPFDaa%MIYSL3+eq[ZlIQ`NA[[&S@C90He)eG`e6l[TKR0TI3*Qd%F'0%1I#(
+Z3*THU(BT#pCUiJE&C5&I,!iYR2UcmK0P[M0`+RZ!3qT2jNQ!D81#%89lQ!*Mid$
+qGEdBlYJB(mMrqR)Hb"pYA!4hC$$AL)pY"06U,r&PVQi9Q*3"H"!D,Nj`q+SK1,)
+eBRTE`UbP%F#epC1p#[YN5'Vf-CKV984118L4@K)Q6TCF89r!TeakG)4iRKfITRS
+!`TaI5Z&NmCMK3`[I1"#&e)Q+Vf6TQqJkVqSk+kiK%&Lbp"d+Y+XkPr$1(Jc3i-!
+3X#4FdF*GmBS@5#b0dU)R3FE*mXP9$hA8(rajU%-,k*A@554rbX'bY"U`T-D4l$'
+@34+CIHra!4bfKJIb40$99$RC6Y1iU5@rcLdYje[kIM9EfU)p6qT4IP+0`q))$b"
+j$4B9ZSGPdkQS$+1,P#RY[-ZZGA@JDeM9jGHk6U1V4p9PdVUXb%S1-$#+,NAVHJ0
+GMkQk4V@Z&HKD,X$+ZY+d,M615Aq"LA!8(lXEj#DkAVD)b!(Hk1+95Tb,Mk&Sj$-
+pNb#YkEJAY5&Yki!fT1erU!f4c(5,0S3ldS2D%'j,Ii+&4FJifDS4jbf9QJ`fF10
+9Ua``fe'0pfTKp4L&e30N+#Ji+D14PMYlZN),dEK*34Y4Pc`TEmJP-P8q)JHL2I+
++eB$2K!dLc1!q4"qi`UIXf*-bfX%#5Bq4!PUdQAAfD*h$V(-@kc4CSrb*,P3S`iP
+0R%kM$UE!YKCG(DVY*ESfSHYdSXZ5k"T$PcA49@lU[+9e2Sr10e5GLUSc$CdV9*f
+M@QF9ZQj2G(@4Lr3$'l2d8CfP2f*A+9QUe1Z)b)KRkEqj6#aG!%KRjK9rAR+bq!#
+aFkk0N@L#@ecqNp2AIe*Fj6[3hQldPGf%@PHq&JcdbMC'-*Vfl*1pKR`#2e@bD&M
+3+JIM63LSARSr9$0UEX4NJ1mYM$j!(hXF32"SN!!Cp+,Q,TMdHl0-E0KMpLY$$qD
+LmZjpm&NkH(YZBLSfF)HBCY`#3p!!M+DpkZ#'IV`j`#Z-&A*3rh#9LJApL,1J2kk
+'"Fe[h$cTCUXS9'fQHiACif9Hea3QD[HRP8IrmV0$Nb*F!V@j@X@q2`H"Tf'9X4F
+"JmkmM@QL#q4"lk'V6+QJXM"2*drZ3j8RGl[+J!j@[P%hh1"22hd#N!#CpE(jAqB
+k*&HMp@X&(aZT2TK$Mh&$I*C)[UXH`a0p!'a["!A%"#BCJ(+9[if-1G(pYj!!q%$
+E!-KM0M$20$*Y2#-$RCp*dhfiTT`3SEV*p3'*$Y11E1T1r8cfec3&2`-KL!PYcfM
+2pLRI`UHbFX0Tl*&rBNq)3hBP3Z2dB-P123J)NE+AT"5TZGc*peIMj#bD1,PUVMe
+PeDk(rr61qJ@&+i!-iX,eqXQ%ZGFempSGp9A+M-dJp$1p9c0ACNjcdredZbSF"%*
+pqSR')PrCJ#AT89E**+ifX@T'2$qU#J*9hTKXJNbXP)(J9iJ`Df,CMAb1mQMZ,p*
+#Vi@kBMXK4,CeHKErI#F02N9$(M'Na"(4[*ChIFLke[+Z'm`S%c-kH3-T3LjMi@K
+0l&P!C)"hjYEae,"j4&2e42,eEHVZi4dE99[YM0[UDY8"eVJ$aLVCkZheE2@M1Tk
++hfU6ZQ%PUAdN"9M@8K1Ak5VY!DK`6,[BCiUSi`[@-5!U,pBa`3G[mZe+1BqMAP!
+Xhd'ME2Um#XrHjI0,Y(L0AmlA,[HM-DG!k&H(UjdF-'pPkT[L`kIVbAM3F`m4X66
+N'eLJfYiFGXeN2XF4VkABHJ!+['j9mp$eZQ1FEaQ*$##ehi4VCP5Z@DpbcAT9-Z1
+h($25*e,bY55aTP$ZPbJS0cf3!(+kH92`VH4"eq9$6QP2ASlE'#p@di[hNbV0HM'
+FSS$(qN5$,4(#M'Xmej!!D,!PQQ)P`S,6-c"mS9)iC+%+J"Zj-UHCkTNRQb'SS*2
+5X5+Bb`'dMQK[2e'%aY*Pm@ejcU$"fhcGkHk5Z8IeTSG6ZjP5(MDU("6ER@T*Z)B
+##f*l8kd-"(-%D+C)X@dB"P`#eA`qj4bE-PqiHLUCF2Y8Pa!3Bj!!)f*kJl+T@Si
++T*MHEpk%4XEd@E40h-!lb*Si(P5"+ae!,TPl,'&#QYV0Lh-kb+jQLcSJRcR965a
+H6aV21[6(9k@06F28N!#@0HYM3JlMUBP3('!Z+%9R%@!G*J(5UD$U`TXmdD6dCH*
+))CK(30Sb`Gcr6SS,-A0Rr"&U8c1UbE@mZ[a'0G9P,UmZVI98PpDEULiemR9e%TF
+@8q-TN!"9akT45QR@*i&X1CCS5,Ak4YhUJiQ'9-bmk&f0jLh84!R0NCVejj`A33#
+GSmC*LPe&6KfMiFDd3ap,aD9UQX60[Lf*"PT3%f`1TREV#cYIq2NL`"FQ[ZMRLaK
+I$&[b!RP-J@k%+E2Jmdk4iarN@2hH0(b6j`9-Lb$J6`eYF-'6'T!!'LUD!Y@6!M@
+8!Q92J6UH!Y@9!R9B4eR)J#m0qdBZ9X95ESiTf`aJf",-,Sa#mD'&ZT5rkml[61h
+1I`UI`&3K*C!!%NLl#QN(dJkNAiAd!qN(-U"#"S!-!'P5)8e!QS$X9b(lJH`(-UC
+#aS#-!FPG,bG+T1'B!-+"Fj9YfU1$D)%!8I5eTZ-I[#e!&,e"EKL'%q#+VJLjSU9
+YRcc@eK+3!2IP$61%*h@[j01LT"b$6pTd4D,ke#48&Hp,DfimY8FC1Rec8iH8S@-
+h0p@Z$,PZEZTaCHMSc8hY8SBbkTSkp'%D6FFdL&,e%b&FErYNHQT@1#&DM9ak0Z&
+56elc%-4Y+a$(U,&r'"0Zi*-j!&%)bPl8p#H)TMpY[1(M&G'8"%dD#eA0)Dr3CcA
+S1+A,FaE(*,q9fJ%0BRSdh!,3jiaGp-e5ZU$-1T&JPFYl"+YFrY9U@1@+H$EhKhF
+R9rh9l,VCR*J8cqEqX16PXlNrc+ZIc6dBaqBHV*60,Cc3f4`em@pLL[KrSU`ZKeK
+GUrf$LeErf2qZV1iLBh8jeE#kR(qh@4dDD196!X-#j#e2@I(YG$YIqU@I,`-b`*I
+8c%%XqeRM$PV'C)`[KqA`qrG$+28M2Lq8@Dd*alDL3HR#I!F+X9"'QMT0#%pU"MC
+&43[ZhY4k'*m3S-j3@$+e3MCSPK"lIUPe+0cPICZ4H)1Yq+J`'NA"f,@qMkZVABH
+)kib"QZqarfc$2j[a'*TS#`@N+AH6j-X3@NQ$,@#6b8rHpM13!0262Lp[ES@R[lj
+40&Q0B`mQcKiHVSBpM+98ahPbbH5U3@Fbpfr&TekU$Gl3*-%BRMaE9dKrq6QqNDI
+9'h(Z@Iiibc4KQm[42(hUk)m4q&[qZ-XQYQG)KD$mpG@[ARhpr-6NXFRJj01M5dE
+A"VH2fNDc4[rLI-ISaG(VSpH#Nk-r'jeep9q#raVmkUK0mRm!!#[V384$8J-!FQB
+393XYT`$4E*1hhD9HbdU@@MYlQ!VAZLaV,@e6N!!d"29ZHIr,3YTe@l3k((GTZlX
+8q[ifEB(U-10##eC!T8!)*X3BNk1)bQ#%8Yp[0X!ia*!!4*!!+1B`#DNJP3$M)F6
+T-3clqhrI[AI[YY[h%mqFmccRH5mEE6G*5j!!!%%3!%'J'[pZd!*')hid8ad&8Nb
+D'P*4(dc&(UP34RTjL!c1IiCPr!C6SYb+J'!ml+R`LAP0BQaYH4c"`CX-`hGSiH'
+LcM0LhZ!%6a-US-Lr`ESGh6S1Rr@928EMX'2`)k2aD`Eq81QP)DkT"-V5LrqFPc[
+NQMlFS88'2p+de(BmfZA(-(rX"pS%$&5eM88JZjLBh#(4SiCS[ZGfTl5ihBqe,fK
+S5HR0E'a`&jaX#1kkbYc,XZ%,`d@NbMQi&bh4fD%YZ)@kQ&$aQN-0CGdLD1h2RVF
+A)Qbl8KXa*5&iEF@M1([)@"PSeA5fD5!H%2AF)Gpl)"K'"l,+hJD43kUYJQ-Gl8(
+$j8r3JSqR$e-!H66Gj+c`$M&PPpQ82AGF%ee&e*A!AYlZ`8Eq*,iSE"V'Kii2"cl
+Xq'M$4`3Ih3Phh%hU6XZXcBbLVKIkUX&09R8X8"CkBUk[PbT+[1$EPcI6Ir#929V
+1F"GEq$c1BV95%V21T@YK,D`-,`c0C#aQ+'(qb1dqf5$[fZm1"IeE'kr8YJ46[#e
+eb[XI2HYfTcHQRN`2ZM1c61iIUH-AY,[c-QYpH&rG32HZd0B(5MCMbr39j))mXd[
+qc6m5b#UT$EbMDCXf"V)HE-IYHDUU4m*HG"FaGV6q(5UMj0m)iA$Neqb)36jb&VH
+rLRVNerc)`YedC''AI'3qEX9S4aEZ9SjmQae*B8F'q,)@eY'4lbl2Gq6EbT(Vf*(
+hj50BeX+j8BpFaiq828Y(bUcb%5bVl&+d)fA2XQkYfH[D3kqZDrHBr9VKj"hMeed
+#U(BE2Qk(5k##XBaBap#TL-6F&@B&1iNKGGA4mH[-+#EVm,%#b%3(0K2Mf)%,G1#
+@mp)$amB[FU!4Q)D2+MJ11M#,f-B11)SIX)aIpcj!Tr0a(BhP4RDJ96i3LhV!h*1
+elY,G!@d5[eRNS"X4$jBUV4r#+Yre'UI$"IFCTi2@eN4YGQ!k!E'9r@EPq2[mq+)
+3KVZX1KU-$@cV!e4GE'[QX0S%jkdAMF1"R4dk'Zrel)"!PF81(+%$rq-cj`-P9Kb
+`MZLcGaRRX3-*ULTf)#RDJ88e11$SdfFI0FjP"h6j`294$ib$qL&&'Gb8@$NV5U`
+++mD!&D-C+dE,V&J"9S`K9V$M0A3%(6HYF$G!!r',(Qp2*KahUIcb9m9I,K5M[+b
+,mR*ZmCGPPf`[S8k!ZJR8CR'Ffje+$R'"Nd1FG!aZFTIU&$fEN!!iS'R6mi$5)1"
+U!PRVc-`*PJ@!!ZVMZ[Ij)c9EZ+90YfNkYY8(5j@AC[Bb,(fjb&(mjEVhT5maD"a
+9aF"+X-DU2LkUiBq+Q&$al4D0+bkka"TP#6A5Pm3JhQ3f)Z5K0&l8B)*T#X05kQ-
+B'NIl"`EdhZ,34%%,UBI02f`)YK4FmFX1q,XiR*RUpQHQ"qRp0G846dVGGV,1h9*
+h-V1P!DrGZlcAdU-,ldbVm05S`P0*H#SA6X%aZ#i)$'c6ZTdDB!Q``6B,C'B9A!Q
+UHdhk%GqVSD8ZH$+VH8h8TZS5EfLi8Ka`-RqhiChDe14)94Q[#(U[B9[MYDb6YHm
+N9aS*3`U'NBZl8TX5V21R0ejl&1+'LiCMK%j+3E31PPl5#,af`%8BMEP$rU4,f0!
+ePGLI!#*RVd)A59Gr,,il`F!@mriVMh)*0S9-"5G6prT2CUBR4pbeI1,HEEbDI1j
+F1p5)9cf@0iGiD8'BkN8V$$DP(9hU&9BFAH,BS!5T$rl`9D2,VU**#'L#VTXZ-Hf
+)NQC&dS!Qe3[,C"9,RAdfB(Ul&LPGJfk%!$Ukp-dJSp16MSibMRD&Mil5l2'l'MY
+kYQYYiJNa9LGZ2Kd-2plRQSU1Y++H'l[QjCRpprGBEJ)irr#5lq%S'L4likj)0i5
+f2E&'Lk4dd@-)!q)"Hm9EfX'lA!-J,-2$B+A#a0l"dJl01f3bIQEf1I)J)04%BQS
+r%f0S#RZjdUd0TLXYYFR4f,Z9[#KA1L*9fJ'PpHK+@dRT%aLNLq(UP(jimF-JD$j
+@P4CS1&4fT%`&SD&$C8+!Zeaf@G%43TEF)8)AAeIm4'M+3"06Yi+TDa$$+YPRIVH
+e`4G-TVUTFR-%08e'*1QY!M&%BY%B"[HD'KZ5)jGrm4drRFr-hm6f0TU#Y9Q0+F(
+UYYj,@cIkrFRC1MhIEYmKB5QCGFdZ)MU#LrU'F[ShU[bfmKScGH0'3IBH&(!(#-J
+fFRHQAM&fAlP9@dS)[TJ3R"%G$-PlE8KZTmGXKZ6p&I[[FR@p%TDLphlY`"#DP#1
+m58NqNMF$K'bpeJb5ekqiP4323ffG%b932(aIH9alf(#6JZ5biMYP4(F3SN0Yr9)
+q0,p%D#ihSB6Xf9-Z5C(pdi`JHjT!Vi`MHr9b(fKNVhlVj#(l2B'epRi2&Z,VSHE
+(@jjE6NQV2H@%#0j6ZDGiN!$,-[i[qpP2$hd03NHR'hRiBchPV2(bdU[5@j%NZjp
+HN!"Lr!XdHe-j5Db04YKQ%S#!5[lLlGD(XXT1'HrC2E[X&,eQa-EQH!"CLZ,`"38
+aZJG,"c3'eV-K10ClbeDYPi3$ZAU3!2,"JH9Y#YAM"#TRF[BejrJbl&SbaV`D&rX
+*f*KA%cKNc*[$Q$G(CFfHRqCM(LY8cXal0X2-DkBJC4K9mc&[(fHHP(AjN!"ZPX+
+i-0e%Bjb0EAqrU0Ei3+&D#`AUV)3@52bbM$,H%bUhkTefHX`Z4`"f#S@Ha,bi(FP
+H9UhG(jUp6CZ%&![kqDZ2Z[KRFE)D"'rHL&hFaBB9X46CHebDpTQikk&Y@V[a(de
+)cqVU-rlM@I0Z*E$bjZ)$3aJb6Gc+KQa5KQaL3f,bN!#VBTlS4DLN[8prb'[mh81
+eaYmC5j!!T&*#UF%Hc6mJ(X8AVjTbf2&AcjS4Q+Q`RaEcCRX4$2-biBrMf12'G3L
+UV-#,"FC&!2D3!(c!MLaDENEiAJRAS(,+H*JBA5'IDMPL0P40S&19IYj'H[NJ'29
+E-'8MT6hBUKE0ecG-4R5LIJ-JYiHTreYATjK0#qr3a4eBiJ[+%Pr!%RFBbl(%E,D
+BK9M+3NT53j+bE4Qh+F&UE)G!bVa%pN2ESFKVLT!!emkDEl&Sl3KP*r`(f9HVf"H
+VcTT&$fd+!,,&IKTI,6#ZC!2HB#U[C-2HB#SMf3r9h%UJTQAma$AS*"hGJd,air[
+j)`ACFmZTBpNbIZ1mJ*FUC(*j##3&NUSTa*',4jDi6EIh@rN`rJ*$hmTP38im&P!
+)p2IE+%523@0*&&6E!+6[RTf(EQ+UU#UPSPl()Pq[1f)iMG5@MrdG@%69ZpZdIZ0
+Q"-Ff&l,J'$TkZX5Gk&iLj*XL)pm*06aPl[@RAfRB9Pd*USIX6C[l80bZ`HBqDJb
+2dRdmS-kfmB&bYTZ)AF3F)XJ$fr-4ijYXa,K0h88I30dT60dTUM,[GFF$k+BCX5P
+)(9K3V)d*qVP6ap@)e+(QmUhHY`f"8lA)l0MP42kR2F)9PIM(P"U@mRNeTc@(LTk
+[lbe0!EEYUGf"9R5p5F$V%4$'RjV459Ai9SlRL,q`9I1%r9e3J(9DEDrd%(&HH&A
+ca0!T4SRA5"S2Yl*PIdFDeNVlUUpUF[Gq[jT#h)Fd2,CBZbP#K9q,M143mIF$2)b
+E1pr3`R$"YdVB'L'b0lGB-19U-kTDS@SC8r9U$Y3TNN@E6(E$4ELe(JqQJIQk2CI
+6)a`*GMJmf-4['lUVmfA@aDf`*fZ$adbJ[84B)PpAAC[5A4G""k-3"rKqjUJ'm0h
+"RB!l(k#GGLjQ!-cQL43UUjfC')r#a)iBUiSL)MCmGNp6VD35FYV10m0L*"mC[f)
+X2TrM5I**+fqp#E@-D4CYrL3Q1-'B[Fr6P(l3LGR53kZS-G$DmK!iS)r$CPr#&@r
+9A#1Y1IKLS%jRMG%q'k&@#Y'ZUDf&,PZ&&'#,`VHdiE"i")R#V!Xj2"rKNqUVX,q
+j+P32TKGBKIJ81T!!1b5lp-ama%[DUc0jT-XkY@*C!jZ%iUN9hJE'G[UHaUXfIlC
+-E,E$5H[i+'56DTE*PGBf@)V'G4QPBJ%XQ!"@f"9"jDb"lNI$d)B21lX9m"KK(G)
+#YV%!c+K$Kcj5KE8A)fdJCa-(`i(,JApKD-%kmaSrm`!GXXKa@-8l0'[H'jS9B5#
+lZ&G,K0l3%[E,U1)M,JHkiPQAelBLla"()MmG#P1S+f6fljb0EBcc2L+NDbId+ed
+QkQMqjiNRUJX[BCLGKP(SJ46++3Y0JCJfiaL)D3YU4LmE-JS*&XSJ%281kRj!Nri
+(!"fR(UV9IQ"FJd-*0S9U6F!F-!"mZTHTTh6M5a6X*8!%%e5XHDZBNK&kJFkA"%+
+CLDj0aJFCB2-J5(dFaXHpUX)3ZTk"C1ZCdNPXi*U3!2N,C6%!V@K"9D5'0YDjq1*
+`T9+!epN+F"bT%TJ8ZR8hEDBdCd)PGr3X$D16-A4Zb8UCS8XB3qH+@jYPk"+CSGY
+#6BbGYd0)@h#@`XcEq3#!RUXj3hhahAhD$k6,`*)h-(8hX+8N-4"d0C4FcCSA1cr
+)*JZ'+4&$,P`rc"q16h[TbT36)#+m`D&N)e5XH)'a2*H+M0r+8,U(`S[XG5H3!*)
+"pli$FX1"VedG5U%+&p#`lVb90%d*)FNNqX,HT!K!mJL&TK`m5,1R@-Jj3kZA0TD
+XH"HJH1[q!fP[eRfX8'[cT1j-,Z"Kq9'A(afdKDp2&QP9R6Yek$"K8dKK)#ZQL9'
+`9VcJDL8(b9`4X@BlBkLpm`b[qKq1L51-j`Si)l!e5[2MUF#8S6-)Tl'$@m[L'Nm
+-8N9elL44FN9a4LXJpCANB3J(U6q0iNkh-BEA-SC[!f+[P9QHb-pbS2E2'@Vr('c
+RL,d@L,f@-lp`ApUC6ia%mG+00ECJ)Ga*$E%EVQ`ZBqe"*)c9N!#6f+fT,+D*Uf$
+bYQ*1SNTKmkFf0L-YVFSiaS0dXND4*XmVSQKbKm*i%XGB(j%-8+U!EmA8[Cfc+ZF
+pN!#ZIc6q%d-F,@G%DC6$0*8lVT[XQm[pqVRYb!EY[aS108NCX(3*"Xh$Lf('KPT
+f`aM"LY3Q##@&@ebZU!e,3Y+`6&8E&XDU)MlBI`"N&jD$D52NY-,'d@Ld`Jm[`54
+rT(iKP5&mEKFH6h#Ri)%SAlV*AQ)16R#PJ%&M'Mm%XmBJ,Dm6+%K*K3U$Z&XJ&[R
+fX!dUP!dUF4YHZU4$lq0E9'+,ShMF`94+8#-"aUd)*V&Y9P+LU1cQpK6VC-XJ'V1
+3!+VH%d$P1fC@JD%hFX(&1J)c,&KeRlaiP'k"%c"R!0`1imJJ!rS'R!!qqZ)5!ii
+p-Y&aPSJ1Aq(hISR#8Le!,4kA(@a[DRTM3c#j"AqP5KaDaYrAeZ0"!R3ebAB-EEX
+T%-'5r"J3N!$'0,q9YU+(E@C`BTfUkNk@I+L%1khX`DS*,!@#!+e1QJ,0Nc9NNR5
+X3T+188P5*XK'PSl*4jEqc,Bj$FA%mQLNkA,RB40"R[*N'S9%h4U0B%p$#JErjPR
+hVQ-RGQM**XEIKqT2-Q,m5C8BIqA8)5A'(dXM-Cl""*!!BX6i*%QchF25B#@&CJq
+P6L6aMTm$Kj`NVbr0*"NNq@dC)XQ,+Ga,#SGY#MG$Q(ZPK,PRm*!!%ZEH$"2QKk6
+lkj!!%ZEammd`qMeLp28f4KFMckZLN!$RALPjVV"FHQKG-I+mhp81mVcAL6c[L0k
+0qS#6kYj(4DSIkNj'Ce*GTb3MPaBMm$,N1m#)p3pNB'p5"SKe9G5q+15k9bEA[GM
+S-B"P*3Uj[UbANHXdPIQ3!"$V5@`CKIeNR!%SaK(0Ab!Kf`G9XPf+"*J#N5BLh[N
+3NCKFl8*VYM04hf%MkSXISX49cF%A*b(d*lq,`QHXiS3q5fkYSUNFb56cec,bIDe
+-jQq-3ZCcGS9T+bR$R!RqR(kZC-l10*2mQPBZERe&3[6[kT!!0LL-i#k3!*!!rS-
+Uk9qX8Y)3#+LZ8V4CfG,3J'DXY38(LKm#5A@IY'*m)jJkj*!!U[!Z"3bS@MC)e1$
+NeAeJeAdqcXjZU4Lr,Z+PTP%`T6p$3B6k%[US3HG'([EEJJKm#5e8Q2hpV+Ke8,U
++93ZT45-AK5E-J`Nmh3h!iJMlkMdjR-#(pKfQJ))YfB@&&IS[fel*bT%CKb1USBF
+dK"MU5Aa%B%Xa&-'FdRC'mUCN&&Ma+3j*@j("8%1[003JEDl3k+K#Ta%c+"QINQB
+S(4m[+mM9Fj+%$DYM&@!,1l4IDLlXF'peBBI!Q%[j`Jj(hlV%dj!!P,3FfHR&9--
+9pB3IkZ[3-d4V)JTRXHUibUV$K1,bS&`K(INV"%@PKK@9'VP5H%&j%!AP3E9U#MX
+c&)M`XN$%4VPa+K,*E!5&)HjRV+B`a%DR-%3l'A@*'SCBSl$Gi"5'@-2#%'[bK5(
+@U"9"iU+()BkqaEGL5Sp9LiIL0JpJZZ&Bi`BP(1&4`a&aIF-FqMGUcJhP08fB)M)
+2SBNQ&TSiJG"%S90S!UPV#%r340ceH0QRK#I@5m-6-#5cJ6'LeCAbk-)6-$$64&Y
++3K5'CN)89eR`B)UVPS8SYV%3a5MA#@Q))M"'#Pkc3)A!YUU3!'c&Ja@'HS)9Sj4
+JaC[%kJ`%+qT0hFiIV*!!QiMRDmaT$&c8ZdQ8`-A&$"-PD[M#UiB[&)"B$9pi(l$
+`4Af13a+qf2Jr*AbaF9`pi3Z[(,i)1B8[1"%r9L(LakK%r!-8[RJXlH',HY-0*1%
+,KP#LNUDZ")',&IS1&2U95U&(-8+!A#hd4@UKMf[@'!A)P)BNiD&*Tpf+LJQekb&
+%S)+dU9&3"PN2+6r+Z$i&$iJ+G+5(+A!`UJ*bQ$j0bkmqPP5JTZMZkiAa(YhcDYQ
+RrU,3Uf92hC&9pP6CTr(CCCq+1kcH"",Y0k-3T25)XG8dSASd6mTp-b"kPb*P0aj
+)j)P&+,bDYX8fK6I"Tr$D,H0[L#GB)E+-Aef4+"Gha,hjYaV"9YBN-@NcL-SJTNb
+ZlKD63QD3!+TmfZpYE*TN@0QFZINrZIMQeN$mK$92G'#VH0jVD'4'Y,!r,*j`&CC
+ZXHUq,MjC8%&`60Nk-!6@Kq1R9&A%(F2fr-SS%jjj!'LAfhd&cX4r-MABSNl+6@e
+jaa3N"(#lk8Aq3*A#lhB8N@f0m%4eQ"eEM0@,*3aB$&B[cL#V&aGMY3-K'iC-KdG
+Jf)1cf@NEX(Rark*XrQCa0J0I3HfRAQd"VL*T0'2FcXrZ,4*'E!'lYa`kGQII+l2
+ED4Z`Hm[rMZbqPMafVb"f8cSTc(mj6)j2cDQm@h-&QC`*I-!-Mb)*%dBS*q,$(NM
+AV--MFY2M'#b0`+`FA'+-c+2!6HjA`Q"*q0"G[8cBQqGcB%CeM!86"*!!$PN03He
+b)+M$c2I1h$*b)i+k&aYGQ&J`*T'Z*5*h"5S#Lk1kD+[%4GY9&ff[S)3*K'L+1,P
+*JBF1M5B'-5Fm063Re&4b-HZ[,("RPaQmreTGCNZ`24Ppdpa-baV9T0TE@LZ-#5+
+8'0CbJ)EVMc(eMAm-PIIT*JFkE$Q6TbIf2TU'"a"!Q$Uh&A'E3e2%@+L*f$La3LH
+$YQZ'VmI2(r%aDYJ4-19UJEfS[M[NkX08i@iY3SN@BDAkiULfU8VeYENLP"5J9-Z
+SQ9XkER3P283!pKqjDM"20iNeGhh@Q+I*4k)6H49d`0iId#K0K"*2RCUr)Nq&Iai
+,$Ih4P[j*cH##j$D$DkT"i$%-K3kS+24Sf0`4CUM$"BmEU&$3Ca@a@#NJM-QNHX#
+d6@-[R3Z+[9K"L8J+5K)&Ied#CbjBD[IeaC1`I"+4b'[L,1fYMU90Y6D@FN6q,V%
+d1AKF`*e#TFV8Uc!JkiJa*$CJ'C@jj5-k26$JQFaM*e'(8cjPf`JF24LM)#N"Ve#
+f5i*@kDlY5!UT3m98LXGKI'PdbY08330r&fJ+,-P!%@mLCV)L(P1,11pSC8NRA3X
+K1[JLPRq%)HS*-NfX&[-VY3hE-[dYbHdQ,HibeF$-U'*1XbY06R12""Q+A2X9F@q
+H,j6GCQ%'h'E"!q!f1HMY8&$rmIi-Z-hUSI$-Dmfkc4V&EBl09YfQ'Y3S2%518kf
+iReEM1XGQ`(9D8APfT4)(A!GjZ02CHEj,"AbXl$clQ22XCmkcSalRb5Y!KrZm`5R
+dd,ccV)F!LZ)m9CC8-P6km"#k6eAdfl)$I9(L3-GQf)%HG!)d(%bm`&R-A'JrFk%
+GpEK3PE&0Y5TMdq*#Qm(TrbHid2T#0BYKE1F&[dP0B$K4C"PIYJiX@FbBN9@fMJG
+N#04Q3Bd0NP5)V,)ADAV+fld)cLcQ*RQ+*6jdX@0EE-HBdCiAD"YQ(LSer@3$,GM
+Y"#5VRIm)'i*XX%FR'liSJ5QJ)RAT(`J`dPM*TrHYAQibKXbHL2pq-Sa0i8GkL3N
+fr1""PX5K'"[jfUTLLqlKNrZrPA9bEp"Gr3Tjf-*1&`TK4R[K10X5@dZQT(5mdU8
+'Q)EQLTl5*6hkKZIThkMRjjIAR2jEFd6,2V9SfB'Ki!eXkJd2"ee+DF5m2RGq#RN
+V635Qrl`cpdIpr"YQ"5AVC-0H@d!4#qK#d'hU`PY6NC!!(X'bT!XCd!M*$"8HMB,
+`@-![JaZ)S&%#I[ZaI82UbGVSDkKQFlkdj#c"9h`*2e5A80[BN[%e%,T-9m+1C,6
+2[ZLA+AfAZY61N4`Y'1k2ZDM$&@&QbrMEkpiekCTa1RAC6$+caFaRi8pH'6eB6%[
+M&C-*j&Q8'P(9cXL@Sp+b*H,@c@m*Ba9NZS-K(%+HE8mX5bQb4`,QGX-6bi,hL#H
+Xh#c&h4"h,6-P@"X9Re,Trc9R!f`U#JmX@TE5M36TYPF15NaL6))E0#aDjKd+EQ3
+Sb`ejR--fY5IVkQc"pQ*SQqT0P6ID6CH*F0JBP#)cCd9GIlqZ8A)'*3l"05DCG!!
+A,Fd-MUQ$UGXmSM8c0%Nkp#!F1AAB8226&3kF$[b'%SL`B3if$0Z2d"GpQZ%LAK9
+5DVXpV!ih2)1AP',bmfBf%f89$M3cc#j4Y*r5PTXC,-L$`bDAbfAISlhTHMU0"`4
+A[f6SJ203GSN-XlS3#$EcT#f0QkRLIXrr6T5U99'RK`AiEiMhP0q0JNr"bDUal-D
+KkAF"RG#0qMUk#"e`[SYTHRAR)`MA('1Sdbi0I5Zb8mRN36A&[1"`ZQUU46(c1)Q
+f5j5Mqm2KSc3P(PTb)8K6j%[L!92&V*56%8EZfTe0--VlfjbkY&"E"lUS1CH6ZmQ
+%CX`brJpe5%$V4hG46TXj4-9jATSF5#U9$5U"'GPX6IfE4A-Ga6EE4jeEED9N&-1
+Tda'[4EcZlY#YXIZQR0FqUdLaRmq*(kQCJf88ZRE5Dc,$Li(fkSfRX-j*$&P+8cX
+MV$1QHqPLh#4kbZe*3#d1XLc!JKZ[b2c2(cEEZLZ8bCe(L(lK38*16X5QJLR(d15
+M"EDS#PMe$92ShkJTmmTV+MTL5$q$bBXqEA06LZ0m6XIemH[p1PHSaUE3N@S9)Q@
+@+-U%lq-+'53+FF#rR4VZfZEeS9S)-EIVK9kU+fGT*Eaj2,`+#(fVV41,42p*@NV
+b#piP&`QT'!!kDdHP58bUXaM@k8RQ45CZRT!!RN40M#ZXLTLC"IdbEH(-62b2iJ)
+Fc!8F`0DmN!"ET6Zh,h!I$GB'k`"*9D0)F@&V+p)Xc%NG6"G3M+JQ0V(ZaM#QR)r
+'KE&k!8b'RBbMiQ*'F6-5GX1i&)6%e+JmNEa+QFlZ8FfCQUmjZDj$EeV8@meh5K'
+JcR5NP#V!krfjbU6T6'E3bd('kTT"Cqi`(L22lT-apYR[bV1@XEMU3bjUh2TN1Lf
+XTE&10F4d@$&R0jdcR5@p-R6mUPEYpS8"chd-84N!RYX(eU,6GV8Ki&A-N!!aSiE
+h4j3*fD*LA%Yd`Yhm,*&4KmcM%)&RjHDDl6$j1d,G!XT8Ha!1MhJdrC'G@YKD%3q
+$3!2aMXVA%c0c6q8eq5YPXc8rP0UUAG$VGPm0TT+QTXB8pq&dG5%,E#c!@eT(D1Y
+Ke@J0L+,*JAH)N!"36%'qcBN6Qp&5%&c,L*cb*c&5D"PHr&Ujq69ZIUAFr!Sh2e&
+ZIS+Efj5Efh#c9,PCLT[jbXemh&bRh&b(QlR+c9cFr&Ljq6&ZEP"ZEX$06FV06I*
+&UeTKSi%)9T!!Q(F)CI28&mmp6N-ZRbaSV'Y46&5q@ME2I`NrkaX2jZ&(R&ffIM@
+!Lip@L!"cB9SC,f[CG-,`*YaXp"@*@@8E"bGdiNC&N!$RQ!1Y#,CQYQLbf!e-i!B
+)h%!#bf`#0p6HLjmU*UU+LDTkI3b*Z1Kf5i5SKGm8-k2i`c3b&3[(153Hk*9aMhH
+1GdlRbd4#QUTJL0c"1j-dl8!fIi%$ZUR53'N+2p9(Nc$kqQmmC(""G3)[G3)"pX,
+je+,3A%PYNC2`'"V5*9`JiM8JBiXqQUEc)4hMkF6aUjA[cl6'5LkRl%XJi3@hNmZ
+D8JUYX8@rp"0bkKJfUH4bX%D-6EKFjd8KGJ`IiGXIf!4$DNcN)k6'D)3*@#IEhk`
+42GiKeG688haC$9F+f*0Q)e#Y5M)h,F(dllqC+4jIZL34-(hY0a21iB)+A(6La)m
+0cjf+GrPkaDeRB1S130CHPJ,K1"-L`maie"0cX(8AEIhr"a2PmXh2+1RA9C5BF`D
+$m!(eaC!!B8*FfrbDTUH'(pR+M*mbjh1+,c)pXeCG)-abAE!UM8pGjI*58q(T8P2
+ip"-!k6N66paNH'l1#pIj`r(A03FHp-kCR4#-b`2!kGfCbCD+(c`k-0c0#D!TI+-
+VYC+Yb&@DFS!8pVYa8G@H6Fcd94ZDJ2$T8Ma'I&fd15',jIrS'Pj2F1PdHlGC(de
+#*qFTV*A@[!TBXD$Tq8VVAFXU6)@'#T9SL'Z*icmH"CC-0k!,%jFTM+PIG@M$f-4
+3-8`X)0HSS#%Ur3K)[+3*($Nj!Q3c3q9@hm#j[D3Q*8cG#CGfMKMZ`3Zj@r)THC%
+0T[4-f`,e#&-rE#Me2jei"*9HD$MV#i[(A)2aBppEEVVq0c00PF6qq@HAQjYQiZZ
+CrU,@bLfPmmkHU3L-CJ5Rpk0IS!-99@*M[*@D(EM61dr3*Hk3!%jal-5I)hB'-XJ
+,b3V@qB*ZA%C""Ul$%I@bH+MLQ4eDcr(V$+E#a%6$@Am)LcJlrc*IN!$Kp'QqP2#
+Cdj(4l&%(dVi3S46Dm'Nma,-ABP(@0i!BFrf&RE1LS35@*%CE8Qf`YF@''*jA2qR
+'P2fX6lTl*SL2hAP-#pq0'h3EidGmrSjMRh5lLZLRjrQlMh'6B"95*,j!+[AXeF)
+[r0*I12-A#mGrdZd2d`(a4TrH-j1,T'6rcTRL-Hj%bYh1k%QK2lVJE&+6TYRrYV$
+*D,aGFc5"EY05NR#KTabk&#0cc@d)Ja8T59i4Q,9M+2,d([l`BET)VXUKQUGmLVD
+!XYIF"Fj1SCmf3kArB(l6FR-maq3Y-DF8A[@+Xm')*&,ETB3L2ab,T*T!iVMLb!D
+43+dAf$CH"d$UJKIKR$Xm1$3#eaCH41V28ip,PYXP2BB1rq2HFT@)qCl5TU*$[Di
+abhhe*$@kMHN0NJ@$aBr0i38*Pdq5(E1TN!$5c!e0##"hFFG0Pim&)MApe+bDbkH
+JVF+J68T!YTmF*prmij4J2G[ciShT1)ic40E5&2!fDT`Hl&PU5!61H2&P9fi6ARI
+h-,@2K"(M"GR3USP(mZK5Z4I2rqIkbh5$Lq@G6Xf&XeeLR31J*'ce(*T(EdACaH!
+UfU,-R$)Jh5"8`9m(eeMRd-,V((`+LfAmCbZ@'R,,!4aj`9)i30@*60k9f9UGSq[
+Z[DVYJ1+ZF1kT%+QXEjjF-!BQ4*h%aJ1jjGD!Ci)INf0rm#CpjIj3JJLjZ0bZjlR
+b$Yd`3A@(9Je!@j'i3r3LZ90hX5EB@2QBZ@l-EDH(08c(F`"jlL+3!)TAS'Y+r"3
+32C,)YJ,%42SU%S4cbp@Qm'2R#[9RYJC6R+XdNPm4"bP#B-0cTr+VBb9ep(0JNlK
+62)9N%Yd[*V)4CU$T+NTUYQXU&4%SZ!*ZD'IR""@Nr(Tqj#UfQ''D1+8caPK01f&
+Q3!rD93$Tj)a%J&)*e4I%4PX3if)@Nkdj&a+BVpm$"Kpr$P9VQ)$%r*!!c0)hL+9
+)pGpCBLkB#SDb*UIJ3k46+QQrVUQjFV'Sm0F&Ja+3!!VXDZrINf-`31N9!Cr5VE6
+p,0b$"mAqK1F1EDT2DFC5fl(XJi9lTlq##c6Xe3aJA4%QL(9J#,R"%f+4Ijd+6-d
+"M-mb6D'0c4@bkT&ZD&FfV14TV&H0Y#N%VEHCiS8SEVY+&N@ZR4U[(VZBNhHD8LV
+D*U)6T9#lfCr8p5R5YahXYXJIaZh0SHIj-2r2P"!4m"mc-eTicF'*`TN''qS4AF4
+%hkb)[TQ*,R)@rAfEk*E'I)*CfLQ--QX*r)K)AV9U%F-UED38LDai&8%J&L+HG&1
+,DR+MImFIV,1aM8eICBa+U66PN!!j8$+-J$4bL%+),)##4!rG`f5qGmmJ3$46BBQ
+C6GNL-XhU)H-B6$'4EK&F%@1Z(ZU``V5B##j'(p11q1fU',E4Q`"00E8+RL3+l@4
++e)949aH5hE[MZLrlh&E0'PAF,T!!5INA+Y"#D@Qdd',,De1A*bZ1j&Zjq9043Pf
+4R'M+#&85di&+FYJ368NX@@a(3('0(Y&Jl"FAV)8KMDQQAX"XiAYe-MARYl-*E$H
+6#(CJPLP@BXlUXiIcY$rSZ'EcKX)1c!M36hF3'8)T4UL%IP4Rl!Xc!RRYqN3aar8
+K(k64*IjeIZ%!VN5`R4QA!)')j(#V2di,m$YX@lVXr#Klj9!@BDFZ4@R(VjVBHXV
+YKL9@0a(cQP191+!FUANKDMGPRD*f'$mk-hqLXi$Ndk43ZJL&V1cL-eCC$4FcMFa
+%ZN6q%)Vpi8*K6'A(-aff)F5+@cCT&r5*5&0hX05[#fUeAEa5Lb@RjPXZZpLPiAf
+UTZ0beB8p6BUKK`LKXTmC4UbpR9HI2i"8MGlP9'dhaLR)h`X!Z-N(N`!dLC'V,%r
+I42S!+R+qV)jS+dUj3e`J[k3dT4ENUrjaTL4#MKTPb''P#jl3(FRmSPq891kYa',
+I9#F46dXVc`kfU!)(0&PN2p,pG9-4UiMk""Da"bHQ!JeJKGJ*$H"Ni54Hr8Vdd`@
+p3FVMXBmc%*HQ)N0l$Sq3!)d`LDR`$Z%VdG9Pq@pd@DBl!Q99&"ci5VbD3mkA&Ic
+8E8%&AQK8TjJc)TbP8'B@H-aX%bYGq)@lm@(U&Q60V'C0Q)&JNe93J+T$,Vl8mfq
+6@jhJESQiIFlL[%0Ff%YZ0mZ-F9iN0dIrNYS%1AfTZJNd-S6iASQ6),"58"ZNZ-E
+Fe-l"#EJ@qACUmMSR`lQ&BI"`L(9-G+Y0)T!!P5j'CCXFc`VS46rEAF[R,S[mE)2
+8d65G[4Sh9DBk*48er4b0hj3L,(AqD,'J3qTZT!-1QlRcciIN4I`!"(VC4Fq8VI-
+i8+ddrqN&P("I$cSUlJT12m)48blSIZDG*H4j1e4FRSQ0MYPcmM5*!MN&5Cj(Y*X
+abITZS&i#B[[D(X'#dGb+MfJ4P`L#,e(k)!$`4l4*mmYCiaX,NL'J`X2Qb@BaKiH
+*r#h"G$93T`*9HmHbd*EbRD4,4VFah-CJUJT-89HASHAd1$21Ebh'MJ%*1q5$fKV
+H32[E1[($$q`G'pGZ3N-(-pZ&p+@[cVQ#[c$lA(`lL@23@8T,c,q,!E&S#&1+3""
+0+S'J9*fchY92AdjS!TULq`+6a#KC+$+""lZX8X4`*I&EaB&f!X$Y"8!j3SdbKCd
+$C"#JDh!QFjTfAeX8eHcNd0QPbj6U9J&+X*rQT0[BEjGfA+5IjpA!ad3E8YZK"V!
+[CJ@cF1N9@r#&)3q#[h3CGKMf-SNJGd"dQ@)G0qkmI#XZ2c$YXRJXp,bp+Hqbrai
+!$J0L,#"d#MfaPXMUef(b0IDAF[2TLqD1m*SR4ili*SR(FTmAQp,q!l(,hYTpDm9
+'1PiN[lc(&0YLCQ30hlc#IirD"3ChM25FG)3LXK3eb,NDjm'jEP4F(`,0QBeZd!f
+f`#D4@lrITi#k$HmdZ"AiA`8FhpbY#+F[*H#l61kM5Fp+-L@9d"rK!+E%+0AG-[i
+Vr&%YRS1TiS6AP,2)i#[XR-NHLXJ&-G#$#[`!hADqc%2"-%dE'ja-J*CDZCI45G!
+3P&bkL&d`Ja@JEE,,c+DATRl3HNHUG*BZpKiq,VRf%h$Ab2lB"B9@l5ID%B!@SRE
+%08"IT0ZG[V"VC)6"i8UU`ap"SFl)#rCP2f8k1!2Qe"&bAhQeA5'X8qQCDkL!9"-
+5Q2$h3k(cjAmU&`j2qIkT,bpE`Q[TVk@fUUTU#6iXlUpp6@J4QLalGYjXHGEbd1G
+I#J&mP$iccG,acq[(#BZ&abdE,'lK"FXU`6pqHBN`LelrJr"r1fqfr&lia,+B[EE
+d[LLmp&GKjPph,2VGkLR2[2cD-jerIUSckD@Qbm)h"GmERd`*Z1%00+h$mZADYF*
+rV9elG2cAKDD[#qHr,T6qXr$`pbmh#8ppA6KJ'ErMJ2"IPY%llV@mq2Nh[K,qqqI
+M2KAqM-mGRqeb@'*Eha%HHi-ZJ+[pUd$V,VKSZCl,%`i,JDSU)B[p'2(G4jBpRGH
+%mjBI#'p2&LjErZ%rPPYQ6"Bqr&Ki4rKmJ[$L*q-X-6a-q,aFZ"hUIN[ihEMRK5R
+#`Xp06`Q@'F+b*`Aha5H%P)q&mm,C#F,VJQ@FjFl2'i4A2ppVDIrm6m)[K$)FQ#A
+mbqF&6`RIR#'Xj`H#-fBYR$(6FTH`82Mj0#&[K[#"F(5'F%,ipM4KmM3KHiD3!#X
+%CJL$H2'Pm-%chbm4GJU@V5rpcT+(CH@@[b(XHZPIThaj8AMLYjD*FbU%`&p@VKD
+%D49#f5SKm%EjbSXIchP9Q,AZjGm,"9m+U60+KD&j3UMLVmpIr0DTXPRMK+&biHP
+AT`Rr85SX"J#3!aJ!!#(i!!"6-!#3!`J!N!-J!!!r2!!(UI!!N!-+@-!!AF!!!&h
+!!*!$'Qi!N!-"GJ"1F8U$CL*"l3!J)$`r2!!!)MbTm!!"5N&Q"%T!C`T)3%K"))!
+K33!%3UG"q[r1d2`"!#m),c`!!"PZ,`0K!!+X9)pR3%)i#Pj#Tbmm4%&836mm"0@
+S(h!"%F!+ANUICaK1F6!mUA#R4N2k!#SLL%(k!#!`2+P`TNG+JfF%F!&1G8lY!#*
+1F8U$CJ+Tp(!!6R9J"J#3"3&1F4mkrrC+(fB551IJi%(krqT3d%kk"Dj-h`F(,cV
+rhNjeB(*"6%&%4%008!!$!*!d8(*"E8MRB2"d8*r#,dJ!)#"2)P3aD3!8!"JK3!!
+N-A`!!3!XdT%K33!ZS!,I`NcI$`C1G8Si#PjR$#!U!!KR$#"!)""R"Lmkri41G8M
+R(`C"q[qHF!`L+J!%`VJ$'Q'NCJ!"2NKkrij1ZJGZ@%q`H[pDCJ!"$U%D,JJ)+J"
+!!!4R"L"i!UDJ'b`U!!3U+J!)'#S!"*I8PG3J1[p@S4ir1!)JCJ!!l&42,%JJ1[p
+%)JE#Z!-D@%&K!2p-)$Vr2-#i!aT"q[mi))"+K@B%S5*J"#"&S#GQ!!#d+NJJ$P#
+!3IVr###!)$Vr#P'!3IVr!##!3QG)HJ#m,a9)H[m#,cVqiLmkrZ)[1[l+,cVqbLm
+krXTK!!e1-"pR)$m!5S9R##"0S#UJ+f!%)%fJ)b"1S"mJ4k!E-Gm#)'"J)%kJ(b"
+(S"Yb!")%j`RM'H34!!%!)!)"!1!J6D"T!J!!(i!")%fJDYA8ep4"q[jf5T!!C`K
+`!D#BF!1JQ#"0*8J!#(!!60pJq%je60pJq'!!rVir!#"1S"mJ4k!E-Gm#)0A8ep3
+`1!)J-F!+B*()*8J!#%cIB2K1G8j@!!")j`!i+'i!$%IkrLT&q[iU)"5`NQd%)")
+SJ%U!Ea)J8b*Z!!LL,L!8dC14NR!!B!3`22rC60mF!%jH6R919[r)51FH1#BZ!!J
+S,J!-+'i!%%(krESY52r83Llrb+%D,8Mrc&92U"``(cS!$%8!!'pF5'lrl$!&8d8
+r!+J298m[,[rXU!d`(c`!$%B!!'rF3LHTQeP2,blrl$!'8dBr!+J1)"mY32r`FJ%
+I!DQE)'lrm%U3!'F398m[#+QQ-"p)`()%`)&Ra#mZrr#TSf#m%#i!&'F+@8mZZ!+
+Q)&qJ'cmmS2a1ZJ5'9%mY32r35S"R!!'H,`"1ZJ2@@%p+!'F+F!%G3!!@6[S#'%K
+Zrq4)E[rJ5'lrf%kk"@T2l`!-)#lri+%H,8Mrh#!)C`!"C#!Zrq5K(Le)rqJJ#'F
+!!93[,[rN,`K1ZJ@i8%mJ!fB!!+CC6bmm3dp%48*RU"mJ(be!rr"+J'F!!)iJ3#*
+3FKM6`5m*6VS%Y&K2FJ1`3@Cf)!dJ3(!SdF!Y52rd)Qlrm#44F"M9`#e+rrJ[#Nk
+k",TB6be!rr`JE[r`S#P35LCZrp3R5J!S@8m[,[r`6VS9c#!IFZM3J9'!*d!!,&9
+25(Vq-LmZrr4)E[rm,``["#mZrp`[,[rJ,blrk%kk#XC86bmZrr#TSb4Zrp3PE[r
+3!!`PE[rF!"!PE[rJ!"3PE[rS!"Jr2+'B6VS$9P42*N!r2+LI6VS$5P42)J!J#l#
+"CJ4`!'!#F!%J!#9!!"`P4!!J*8`!*%Kkqm`r2+$m2cbJr%kk![K86am!6VS98Mm
+mSCK1ZJ--9%p+J'F%F!'JQ#"m!!!"@M!35-$JJ()'X)&Q$%(k!+iLI!!!!c`LL"e
+m!!(rb#"ZrmbJ'e92U"``(cS!$%8!!'pd5'lrl$!&8d8r!+J298m[,[rXU!d`(c`
+!$%B!!'rF3LHTQeP2,blrl$!'8dBr!+J1)"mY32r`FJ%I!DQE98m[,[r`UDB`(dM
+!FJ6!J@F),blrm+QLB-)NE[r`5T*R%&92,`UTTM!I5-"b"-#"CkS[#UQMB+33,[r
+)(8!!&NcI((K1AL"I6qm!$Nl36PErr%MR!$"#,[rm2cbJr%kk!La86b4!5S"RA#m
+!6VS"J&K25J"R8#!+*N!J3#mS!!`r2+$m2cbJr%kk!Gj86am!6VS81#",)'J!%+!
+I)%XJD!!BS"mJI!!!!9S`%%M!i)"b"V#"CJT`!#"m!!!$2##!(A`!!Irm%#lrr%c
+I$!"1ANje6PErk%MR(cKC6kPe)"mU!%KZrqLSG#!0)%!J%(+'d)%Y32rm)%"F5%2
+Zrq`Lf#,B@8m[2%4"9%%r2!69UD!J(bK!)%!N8$)U!!L5DJ!%2!%d+J!'P'S!!Mi
+#0LlrmNM$1#lrlNM%PS3i!8M%PS4U!P+$iS-p3rrf0Llrm%M$1#lrl%M%PS3i!NM
+%PS4U!P+$iS-p3rrd0LlrpYC"282rqM)Zrr653Me"rrKC6d+R5'lrp%Kk!'Cb!4m
+"FJ%r!A,r,`&#*d+RU4-J(bC!,`#SF`D&!*!$H#m-)%Y`%0(!,`LSpPP2UA8J(l#
+&C!*Jp&92UA33(fB#B2C`rcm!3QFJ(k!b,`ZT&#m-UD-[,[rSU(0-haci6Pj1G3!
+#!!"19J!!51F!-#4Z!!JJ#LC!)%!L+!!#$)&"6%&%CKBL+!!'$)&%3de3CJS`+!!
++FJ1`3@F%F!"J!R!"60m-!%jH6R8[#PP22cbSER!"(`"1ZK*i)&mN5&P22cbUER!
+"(`"1ZK*Q)PmJ5V(*CJB`2!)!B!3`2!3!*&p1G8j@!!![!cBZ!!J`!dM!!S!!!!J
+!5S"["(!"B!*`!#BI6Pj1G8j@rra)ja`!0Li!#$m$6VVrc&42(8$rr()"X!&Q%!*
+$"rp1Z[q!X%0Z"(!!B#KC6cmmU*p`!4m!6VS4m#!I+J"C6cm$(blrr%kk%H!J(bJ
+!X)9Q!R!!60m!1%jH6R919J!!51FB-$JZ!!JNEJ!+)%SJ%#C!)%!b%!a"384Q+$)
+S!!)-3805CKif"(,rYN&R'L!S!!4b'1+S!S!!N!2r-J0)`E#"C`4`!'!#F!%G3!!
+160m-'%jH)&pF6dl36PB!!&925'i!#($r2`"1Z[q5%"pR%L"Z!!JJ+!!%FKMLU!*
+!!2pJ!R$r6Pj1G8j@!!"96dKZ!!K`rcm!6VVrC"!ICa!JEJ!))#J!"!+!!2q3!f!
+#F2p1ANje6PB!!%MR'$JQEJ!)+'i!$#",-,`$!A!!*%`NJ#Bm!!!"*0H5"T)!!!*
+)"T)!N!-J+$`!N!1!fC,CNLJm!!!%N!$CNYH5fC)'NJ#3!h`'NJ!!J!"`!#4Z!"!
+NJ!D5!*!$*!D5!*!$)!D5!*!$5!D5!*!$2N*!60mF'%jH6R919[rN51FI1#CZ!!J
+U,J!-)!XS3#e!rqK`*0R!,8crl(!JfF!Y62r`F%MC`#e-rr4`2YR!)!b3!)Z`K@-
+'F'91qJ#b3N!q!%*!28$rj$B(F#5f3'4)F!5f3'3%F!"J$(!!-!0CJ'S#9S$NJ(J
+!1!-Y42rif+lrk#4%&)!J,[rid)$3V[r`)%!`V[rNF!%8%R)!%J,MB0&Zrq454f#
+`3N!q!(!"2!!f"h!IYN"N4(!"YN"N"(!!B!a`!$!$8i"U!P+!iS"i!$J$,86rr0L
+Zrq`N4"5!)#lrr0#!d+lrp#"!-)C`!435FJ!5!Z0Jh%"54f#d3N"-haci6Pj1G8j
+@rr")jami*'i!##CZ!!`k,J!3+'i!%N*!2!!b"A!!-!(3J$3'FJ!b!V#"Ea4#3$3
+'FJ!b!Y+"dS`J36#!8NCJfN*!2!"`!Me!rr)f"VC&C!!!Z%*!2J"#3$e!rr"`!$!
+$jB$3LL"!)"!Y32rd-JC`!$!"d)XJ3"J3GJ!@",C(B`!!JM!ZrrCb!F""d@lrm(!
+!-!06J$3(FJ!b!V#"Ecii,[r`GJ!f"#e$rrc@JpD-)%0+8'B5)#lrr0#!d)`J3$#
+Zrr*8E[rb-Llrm(!!-!(3J0#-)%!`%$e!rr"J&M!&d%$34M3Zrr"b!$)#dS(5M#"
+"-)"54b!Zrr6LL#e!rr4J!2pX8NCJ!2p%60mFq%jH6R919[rm51FF-#4Z!!Jf,J!
+-*Qi!$M)$F!!`!HD!1!!`!h)(`%%k!(!!,8$rr$3%FJ!b!Y++)%%5%(!!%!%d"A)
+!-J,LS()"`)(4V[rm)Llrr11*dSXJ36)3F!!`!5e!rra546!&FJL`3@B'3N!k!&*
+%-Li!%R!!-!(3J,#ZrraM!Q#U%#lrra)Z!"25!C!!!8cI$$K1ANje6PErr%MR(b!
+NEJ!)1#i!$$SZ!!ib"(!!-!(QJ$`!-J4d"m*#2J&f!$B!eSSJ3a!3G!!8!#e#rra
+`!$!"0!9b!$)#d)(QJ()#X)&R$()"X)&R)%U!Cc4J-M3'FJ!b!P5"dSSJ34)3F!!
+3!A)3ikL"V[rm0!Cb!$)#8S(5LL""%K"`!"!"iBL"V[rm)#lrr$3(FJ!b!Z+S,8$
+rr($rFL!f"A3!0!15JZ+S`'lrrNcI"2K1ANje6PErf%MR(cJQEJ!)+'i!$L!m!!!
+"*0'Z!")J2!!!!NM4VJ!5)#i!%Le!rqab)01Z!")L,J!5,8(rm#3m!*!$J0@Z!")
+N,J!5,8,rp#4,'"*f!"B%,82rq1D$HJI'49*$282rh#BZrrMLJhS$aN983ce$rqC
+f!6SZrqEVBce$rqKq3-J(I!!F"$e'rq*i!HYN8d3p42rJ+Llrq(i"bSGR#(S!1J4
+6K@!#H[mp4IrHH!Jp42rN5NCR4LmZ!")[!$m$8NS[#NkkrcT2l`!1jd$4E[rN,bi
+!%LmZrr!r!bmZrqa1ZJX)6qm!$LmZrr3r!bmZrq`[,[r`6VVmV%r[!!j#3$e!rpJ
+`,[rBX'i!$'3!!6S`,[rLCcSN3$mZrqJ[,[rd2blrj#m,6VVpMNr[!!`5!#!+F!!
+3!6e!rpTd!$3!e+lrl#"#%""b!")!dflrj'!F2blrjMmZrq3[#dkkrI"36ce!rpS
+`,[rQd@lrj$!ZrpU`E[rHCKBb,[rB8Qlrf(!!-!(3M#"!3K"J!2pk-#lrfV"Zrq"
+Q!!#8-#lriQFk*%!r,[rS,blrp$mZrq3[#dkkr3C2l`!-%J!J#R!!%!%p32rDG!!
+d!05Zrq`J3K!3FJ!5!00Zrq4J($mZrqBr,[rN,`Y1Z[eS8%mp32rD-#lrjY&Zrq4
+@E[rD-#lrfP0ZrpT+3'F!r`!i,[rBGJ!f"#e$rra6JpD-)%-3%#)Zrrc5M#""%)"
+5E[rBB-i3,[rGd#lrfc3ZrpK5E[rBFJ!b!Y+-)%%3J'!!rVib,[rNF!!`!9k!jS"
+-haci6Pj1G8j@ria)jami*Qi!##SZ!!`SEJ!3,#i!&#e,rmK`*0I!,8[ri(!Jem!
+Y5rr-F%MA`#e,rq3Y62q8*M`!!!%NeklrP#!m!!!#50'Zrj4`)0'Zrj3S2!#3!i$
+CV[q8fDlrP#eZrj6rY#Jm!!!%N!$CV[q8,@lrP2qieklrP#eZrj6r[0QZrj3YE[q
+8rp4`I0'Zrj3YE[q8rk3J2!!!J!$4V[q8)#lrP*!!M,#&B`T`C6e!!#K1qJCkF!!
+Z!%*!28$rM#4Zrk69r!!!J!!Y5[qS,@lrT2q3!#em!!#!!2rS5'lrk#mZrk3JEJ!
+N6T!!8%mJ,[rSCJT`Cce!!#K1qJBd*'lrN!"55VAZrkKMD#"Zrj!!8NL4l[qS,8M
+rp#"Zrj!!NHlrT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)QlrT#!ZrqbL,L4
+Zrk69l[rX,8VrN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T`Cce!!#K1qJA
+!)'lrN!"5V[q3!"!3(8$rS()!%J$5390"28(rd$!Zrp$33$e!rp)JEJ!F)"$3VJ!
+J,8$rX#4!,``[,[qi2c`"*#mZrj!!6VVlmNr[!!ib!#!+F!!`!G'Zrj!!,``[,[q
+d2c`"*#mZrlK1ZJHk6qm!$LmZrl`r2!%N,blrZ#mZrl41Z[PF6qm!$L4!,``[,[q
+i2blrd#mZrj!!6VVlS%r[!!ib!#!+F!!`!G'Zrj!!,``[,[qd2blrd#mZrlK1ZJG
+S6qm!$LmZrp3r,[r3,blrZ#mZrl41Z[N+6qm!$R!!,J"#3$e!ri`YEJ!Jrk`JE[q
+XXHlrX'3!"+K#3$e!rjJ-EJ*)rjKN!!$#-#lrM'B!!)`NE[q3!&*+YHlrU'0S)'l
+rN!"55*(ZrkJY52rd)'lrN!#4l[qN,8Mrm#"ZrkL4l[q3!#e)rq`J#'F1)'lrN!!
+LE[qN)#lrl+)Z*'lrT0AZrq`Y5[q3!%KZrr![,[qN)'i!*%k3!&"2)#lrm,#Zrr4
+N#R"R28!!+%lk"%)JE[q3!&+Zrj!!%K"`!"!",J"`#$e!ri``"h)"`%(4E[qB-Ll
+rQ(!!-!(3J0#Zrl`J3$!328$rQ#!(iSJZ!&0ZriaJ!2mi"'i#52qB$'i"!2qBC"!
+JE[qX8UlrV"#ZrjPJ!2m)"'i"!2qB1#lrQ(B!0J3Y3rrieS2@V[r-)%-`%$e!rjS
+L,[ridUlrb#""%K"`!"!"28$rR%T!C`!!`JaZ!"MrM')!!*JNE[q3!&*+YHlrU'0
+S)'lrN!"55*(ZrkJY52rd)'lrN!#4l[qN,8Mrm#"ZrkL4l[q3!#e)rq`J#'F1)'l
+rN!!LE[qN)#lrl+)Z*'lrT0AZrq`Y5[q3!%KZrr![,[qN)'i!*%k3!&"2)#lrm,#
+Zrr4N#R"R28!!+%lk!bJJE[q3!&+Zrj!!%K"`!"!"0#lrM()!-J,MU)k!8'lrM'!
+!rf*`rh)J1#lrR(B!0J55Jq+S`%I4E[qD)!IQU#i!Q@lrM%*!28$rQ$!ZrjL`E[r
+5C!!!`M!ZriaQ!!#-*'lrN!"55VAZrkKMD#"Zrj!!8NL4l[qS,8Mrp#"Zrj!!NHl
+rT#e)rr!JE[qSNHlrN!!Y52rX)!KR$L"Zrj!!)QlrT#!ZrqbL,L4Zrk69l[rX,8V
+rN!")E[r`,blrT#"Z!#41N!"36b!Zrr#`V[rdC!T`Cce!!#K1qJ*B)'lrN!"5V[q
+3!")3F!!3!5i!F!Jp32q--!Gb!F""d@lrQ$)ZrjK`!$!"d)$3V[r8)%!`%$e!rjJ
+J"q+),J"6E[q-B!$r0M!Zrp+4E[qB1#lrQ(B!0J3Y3rrmeS2@V[rN)%-`%$e!rji
+L,[rmdUlri#""%K"`!"!"28$rR%T!C`!!`JaZ!"MrM')!!*JNE[q3!&*+YHlrU'0
+S)'lrN!"55*(ZrkJY52rd)'lrN!#4l[qN,8Mrm#"ZrkL4l[q3!#e)rq`J#'F1)'l
+rN!!LE[qN)#lrl+)Z*'lrT0AZrq`Y5[q3!%KZrr![,[qN)'i!*%k3!&"2)#lrm,#
+Zrr4N#R"R28!!+%lk!9SJE[q3!&+Zrj!!%K"`!"!"0#lrM()!-J,MU)k!8'lrM'!
+!rf*`rh)J1#lrR(B!0J55Jq+S`%I4E[qH)!IQU#i!Q@lrM#"Zrk`b,[qHF!!`!C(
+!,8MrP,(Z!#"PB#"Zrj45V[q8%"!JE[qX8UlrV"#!)'lrP&+Zrj33%#"Zrka5V[q
+X%)!JE[q88UlrP"!3)'lrV&+Zrk`3J$!ZrjT6E[qD5N"R!2[H)'lrP&+Zrj33%#"
+Zrka5V[qX%)"Jh&CZrjSJEJ!BdFBb,[qHF!!`!5*Zrkb6lJ!JN!#*NF!Y52q8-#l
+rQQFQ)'i!'0('XHlrP'-D)'lrP&+Zrj33%#"Zrka5V[qX%)"6E[qDB03YEJ!Jrj3
+`,[qD8flrQNT!C`$lCL"Zrj45V[q8%"!JE[qX8UlrV"#!B0`JE[qXXHlrX'F)F'F
+p3!!SB"3JE[qXNHi!)#*Z!"`LL%*!28!!+%cI(2K1AL"I6qm!)%l3!(!m!$iJ!!"
+i)$i`)#BQ)(JJ2$dc-J!!1N0[EA"bCA0cD@pZ1N4PBfpYF(*PFh0TEfi`-c!a,Q-
+!!$`!2L!!!(JJ2M!J*LBJH#!m26-b!!!k3fpYF(*PFh0TEfik4'9MEfe`FQ9cFfP
+[EM!c-$%ZB`!!6PErk%MR(cJq,J!)+'i!$$BZ!!T`!$!$1!Gb!$)%N!#"FJ'`J@m
+!!E3p42rS282rkP*ZrqJ`,[rSX'i!#Q3FFJ!b!0+-)%%3%$3(FJ!b!Y+-)%%5%,!
+"C!*JeP0ZrqS`,[rUX%GM(()!-J$5M#""%"!d"h)!-J,5M#""%K#`!@-#B0J`,[r
+SX'lrkQ8#B()i,[rSGJ!f"#e$rr$@M#4$%K*`!"!"28$rl$SZrqTi!$J&,86rp0L
+-*N33%a5!&Ulrl5!Zrr$3J0#Z!"!J3$!328$rl#)Zrr65JG+Z!"!J36)3*#lrm05
+#e+i!%#"#-)%L,[rddS(5VJ!3)%%`J'!!rc)`,[rUX%GQ"P*(B!$r"$J(GJ!f"#e
+$rrM@M#4$%K*`!"!"28$rl$`ZrqTk!$S',8Arr0U-*N83%a5!&Ulrl5!ZrrM3J0#
+Z!"!J3$!328$rl#)Zrrc5JG+Z!"!J36)3*#lrq05#e+i!%#"#-)%L,[rmdS(5VJ!
+3)%%`J#!Zrr`L,[riN!#"0#i!#R)!-J)N,[rm8S+5JV#"E"i[,J!3,``r"Mm%6VV
+qA%r[!!``,[rU8N!q!'!!rP`[,J!3,``r,J!+-#lrkP*!2`"1Z[if6qm!$$eZrqS
+!#Q!!rMK-haci6Pj1G8j@rq4)jami*'i!#$SZ!!`QEJ!1+'i!%Le-rr!J2!!!!56
+C`#e-rr4#3$`!0JDf4@3XH!!i!be%rrMBLL"%%"!L,[ridUlrm#""%)!J,[rid)$
+3V[rd)%!`Je*'B-i[,[rd,blrm$m&3QG1Z[fb6qm!$%*!2!!f"VC&C"*`!$!$d+l
+rm#"!5K"Q"&*'B1K`!#e!rq3f"VC&C!!!U%T$Cc)J,[rNH!!i!be%rrcBV[r`)%3
+8%()!%J)Q,[rm8i2@V[r`)%-@%(3!&!15JZ1S,8$rj$3'FJ!b!Y+Zrr!J34)3F!!
+3!6i!,@lrj2rXF!!Y32rS-!G64dT!Cb!J,[rSiiJL,[rXG!(#JS#",8$rk#!Zrqc
+LL#e!rqaJf$3'FJ!b!Y+"dUlrp#""-K"`!$!"jB$3Lb"!)+lrk&*'8Ulrj'!!re4
+-haci6Pj1G5*I)&qJ*5k!DJ*#Pdl4)Pm5(c!I5J&R"+G'B!+M4Lk)6Y%LAa)I-"m
+JAdS"C`5Q4f!#SNG1d3#3!`S!1+!"!!8!N!B"!!!"SiS!!D++!!!&5e028P3'GJ#
+!!"`%FJ!@38a59!!+!,T"9A-b!!!"2N*14%`!!3&+3dj86!!!!@*$6d4&!!F"EN4
+"9%%!!!(14%P86!!2!GT%6%p(!!3#QNC548B!"!,@4Q9KG!!!!a**3diM!!3$(NP
+$6di!!!0D8%P$9!!%!fC3Ff9d!!!$SP0*@N8!!!1Z8e45)!!"!lT69&)M!!!$dQ&
+eFh3!!32HBfPMEJ!!!rCNBh4L!!%%!Q4XChJ!!33DD@0X1!!!"$*fCA*c!!%%2J#
+!rrmJ!*!)JIrr)!!!%!#3"B,rrb!!!#!!N!@&rrmN!!!`!8$85!#'rrmN!!"!!8$
+6d!#(rrmJ!!"3!*!&L2rr)!!!B!#3"!)!rrmJ!!"b!*!%!J(rrb!!!))!N!3%!Ir
+r)!!!NJ#3"!5[rrm!!"KB!*!((J!!''J!N!@!rrm!!"L-!*!%!3$rr`!!'-3!N!3
+"#2rr)!!Bj!#3"[rr+!'(i!#3"3%!R4`!*Um")kkB!!)!Ta`!X(`"303i!!-!X4`
+!cCm"303`!!3!Za`"#E%"304F!!8!a4`"1ci"304J!!B!ca`"@r%"304B!!Irr`!
+"L!S!N!ErrbJ!JH`!N!@!rrm!N!1L!*!&J[rr!!!"!*!'KIrr*!!"AJ%"@V!!K[r
+r*!!"Y!&!iQ`!Krrr!!!#03#3"BMrr`!!!S8!N!@errmJ!!0G!*!%!3Arrb!!!mm
+!N!3""rrr)!!Br`#3"!%)rrmJ!"QJ!*!%!J$rr`!!"(`!N!3#!Irr!!!%ZJ#3"!2
+SrrmJ!!8'!*!%"!(rrb!!"6)!N!3%5`!Y"!!D3`&!e+3%Vrrr!!!DN`#3"!%&!!!
+J!!@b!*!%!3F!15!!'Y%!N!3"#!"+)!!Dl3#3"!2SrrmJ!!A8!*!%"%X!CJ3!'`N
+"304d!)$rr`!!'b)!N!@"rrm!!"XY!*!&J[rr!!!E1!#3"B2rr`!!'d-!N!@%rrm
+!!"Y1!*!'rrm!!D*m!*!&J2rr!!!E@3#3"B(rr`!!(&d!N!@#rrm!!"eK!*!&Jrr
+r!!!HC3#3"B6rr`!!(fN!N!3%5rrr"!!JE3&!e(!!J[rr!!!&m!#3"!2Srrm!!!F
+6!*!%"%crr`!!$L%!N!3%6Irr!!!2fJ#3"!41rrm!!"'6!*!&J2rr!!!6)3#3"2q
+3"!!"Kr`!N!3#!!!()!!A@!#3"!)"!!iJ!"GS!*!&J2rr!!!AG!#3"h)!!#$S!*!
+&K2rr!!!K3`#3"!4,rrm%!#&(!8"Ni!%&rrm!!"Hd!*!%!3Mrr`!!)Qd!N!3""3!
+A!!!Aj3#3"!%)!)%!!#+K!*!&K2rr!!!LU`#3"3(rrb!!&qm!N!8#rrmJ!"Jb!*!
+%"P0dBA4eF`C`FQpYF(3)a#"cG@CQDAJ'8h4KG(9c$NphEQ9b)(*PFfpeFQ0P#dP
+ZFf9bG#"%DA0V%%9iDA0dD@jR8'&cFhG[FQ3E4AKTFh4TEQG3BA0cGfpbC#e"F("
+PBA*KEQ0P#dPZFf9bG#"%DA0V$NphEQ9b)(*PFfpeFQ0P'd9iDA0dD@jR8'&cFhG
+[FQ3Y3A"`C@&bB@jMC3P6C@GYC@jd)$%*8f9RE@9ZG#!b#90PCfePER3J-`P6C@G
+YC@jd)$8*8f9RE@9ZG#!f#90PCfePER3J0RqK:
diff --git a/mac/tkMacResource.r b/mac/tkMacResource.r
index 02d054e..bbc081e 100644
--- a/mac/tkMacResource.r
+++ b/mac/tkMacResource.r
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacResource.r,v 1.6 1999/08/16 08:51:46 jingham Exp $
+ * RCS: @(#) $Id: tkMacResource.r,v 1.6.8.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
/*
@@ -32,34 +32,7 @@
#include "tcl.h"
#include "tk.h"
-#if (TK_RELEASE_LEVEL == 0)
-# define RELEASE_LEVEL alpha
-#elif (TK_RELEASE_LEVEL == 1)
-# define RELEASE_LEVEL beta
-#elif (TK_RELEASE_LEVEL == 2)
-# define RELEASE_LEVEL final
-#endif
-
-#if (TK_RELEASE_LEVEL == 2)
-# define MINOR_VERSION (TK_MINOR_VERSION * 16) + TK_RELEASE_SERIAL
-#else
-# define MINOR_VERSION TK_MINOR_VERSION * 16
-#endif
-
-resource 'vers' (1) {
- TK_MAJOR_VERSION, MINOR_VERSION,
- RELEASE_LEVEL, 0x00, verUS,
- TK_PATCH_LEVEL,
- TK_PATCH_LEVEL ", by Ray Johnson & Jim Ingham " "\n" "© 1993-1997 Sun Microsystems" "\n" "© 1998-1999 Scriptics Inc."
-};
-
-resource 'vers' (2) {
- TK_MAJOR_VERSION, MINOR_VERSION,
- RELEASE_LEVEL, 0x00, verUS,
- TK_PATCH_LEVEL,
- "Wish " TK_PATCH_LEVEL " © 1993-1999"
-};
-
+#define TK_LIBRARY_RESOURCES 3000
/*
* The mechanisim below loads Tcl source into the resource fork of the
@@ -73,45 +46,43 @@ resource 'vers' (2) {
* will load the TEXT resource named "Init".
*/
-#include "tclMacTclCode.r"
+read 'TEXT' (TK_LIBRARY_RESOURCES+1, "tk", purgeable,preload)
+ "::library:tk.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+2, "button", purgeable)
+ "::library:button.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+3, "dialog", purgeable)
+ "::library:dialog.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+4, "entry", purgeable)
+ "::library:entry.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+5, "focus", purgeable)
+ "::library:focus.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+6, "listbox", purgeable)
+ "::library:listbox.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+7, "menu", purgeable)
+ "::library:menu.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+8, "optMenu", purgeable)
+ "::library:optMenu.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+9, "palette", purgeable)
+ "::library:palette.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+10, "scale", purgeable)
+ "::library:scale.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+11, "scrlbar", purgeable)
+ "::library:scrlbar.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+12, "tearoff", purgeable)
+ "::library:tearoff.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+13, "text", purgeable)
+ "::library:text.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+14, "bgerror", purgeable)
+ "::library:bgerror.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+15, "console", purgeable)
+ "::library:console.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+16, "msgbox", purgeable)
+ "::library:msgbox.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+17, "comdlg", purgeable)
+ "::library:comdlg.tcl";
+read 'TEXT' (TK_LIBRARY_RESOURCES+18, "spinbox", purgeable)
+ "::library:spinbox.tcl";
-read 'TEXT' (10, "tk", purgeable, preload) "::library:tk.tcl";
-read 'TEXT' (11, "button", purgeable, preload) "::library:button.tcl";
-read 'TEXT' (12, "dialog", purgeable, preload) "::library:dialog.tcl";
-read 'TEXT' (13, "entry", purgeable, preload) "::library:entry.tcl";
-read 'TEXT' (14, "focus", purgeable, preload) "::library:focus.tcl";
-read 'TEXT' (15, "listbox", purgeable, preload) "::library:listbox.tcl";
-read 'TEXT' (16, "menu", purgeable, preload) "::library:menu.tcl";
-read 'TEXT' (17, "optionMenu", purgeable, preload) "::library:optMenu.tcl";
-read 'TEXT' (18, "palette", purgeable, preload) "::library:palette.tcl";
-read 'TEXT' (19, "scale", purgeable, preload) "::library:scale.tcl";
-read 'TEXT' (20, "scrollbar", purgeable, preload) "::library:scrlbar.tcl";
-read 'TEXT' (21, "tearoff", purgeable, preload) "::library:tearoff.tcl";
-read 'TEXT' (22, "text", purgeable, preload) "::library:text.tcl";
-read 'TEXT' (23, "tkerror", purgeable, preload) "::library:bgerror.tcl";
-read 'TEXT' (24, "Console", purgeable, preload) "::library:console.tcl";
-read 'TEXT' (25, "msgbox", purgeable, preload) "::library:msgbox.tcl";
-read 'TEXT' (26, "comdlg", purgeable, preload) "::library:comdlg.tcl";
-
-/*
- * The following resource is used when creating the 'env' variable in
- * the Macintosh environment. The creation mechanisim looks for the
- * 'STR#' resource named "Tcl Environment Variables" rather than a
- * specific resource number. (In other words, feel free to change the
- * resource id if it conflicts with your application.) Each string in
- * the resource must be of the form "KEYWORD=SOME STRING". See Tcl
- * documentation for futher information about the env variable.
- */
-
-/* A good example of something you may want to set is:
- * "TCL_LIBRARY=My disk:etc."
- */
-
-resource 'STR#' (128, "Tcl Environment Variables") {
- { "SCHEDULE_NAME=Agent Controller Schedule",
- "SCHEDULE_PATH=Lozoya:System Folder:Tcl Lib:Tcl-Scheduler"
- };
-};
/*
* The following two resources define the default "About Box" for Mac Tk.
@@ -133,9 +104,9 @@ resource 'DITL' (128, "About Box", purgeable) {
{ 14, 108, 137, 314}, StaticText {disabled,
"Wish - Windowing Shell" "\n" "based on Tcl "
TCL_PATCH_LEVEL " & Tk " TK_PATCH_LEVEL "\n\n"
- "Ray Johnson & Jim Ingham" "\n"
- "Scriptics Inc." "\n"
- "jim.ingham@cygnus.com"},
+ "Jim Ingham & Ray Johnson" "\n"
+ "© 2001 Tcl Core Team" "\n"
+ "jingham@apple.com"},
{ 19, 24, 119, 92}, Picture {enabled, 128}
}
};
diff --git a/mac/tkMacScrlbr.c b/mac/tkMacScrlbr.c
index 1a3f82d..0765177 100644
--- a/mac/tkMacScrlbr.c
+++ b/mac/tkMacScrlbr.c
@@ -10,12 +10,13 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacScrlbr.c,v 1.5 2000/11/22 01:49:38 ericm Exp $
+ * RCS: @(#) $Id: tkMacScrlbr.c,v 1.5.4.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkScrollbar.h"
#include "tkMacInt.h"
#include <Controls.h>
+#include <ControlDefinitions.h>
/*
* The following definitions should really be in MacOS
@@ -516,15 +517,15 @@ TkpScrollbarPosition(
(**macScrollPtr->sbHandle).contrlHilite = 255;
}
switch (part) {
- case inUpButton:
+ case kControlUpButtonPart:
return TOP_ARROW;
- case inPageUp:
+ case kControlPageUpPart:
return TOP_GAP;
- case inThumb:
+ case kControlIndicatorPart:
return SLIDER;
- case inPageDown:
+ case kControlPageDownPart:
return BOTTOM_GAP;
- case inDownButton:
+ case kControlDownButtonPart:
return BOTTOM_ARROW;
default:
return OUTSIDE;
@@ -687,22 +688,22 @@ ScrollbarActionProc(
ControlRef theControl, /* Handle to scrollbat control */
ControlPartCode partCode) /* Part of scrollbar that was "hit" */
{
- register TkScrollbar *scrollPtr = (TkScrollbar *) GetCRefCon(theControl);
+ register TkScrollbar *scrollPtr = (TkScrollbar *) GetControlReference(theControl);
Tcl_DString cmdString;
Tcl_DStringInit(&cmdString);
Tcl_DStringAppend(&cmdString, scrollPtr->command,
scrollPtr->commandSize);
- if (partCode == inUpButton || partCode == inDownButton) {
+ if (partCode == kControlUpButtonPart || partCode == kControlDownButtonPart) {
Tcl_DStringAppendElement(&cmdString, "scroll");
Tcl_DStringAppendElement(&cmdString,
- (partCode == inUpButton ) ? "-1" : "1");
+ (partCode == kControlUpButtonPart ) ? "-1" : "1");
Tcl_DStringAppendElement(&cmdString, "unit");
- } else if (partCode == inPageUp || partCode == inPageDown) {
+ } else if (partCode == kControlPageUpPart || partCode == kControlPageDownPart) {
Tcl_DStringAppendElement(&cmdString, "scroll");
Tcl_DStringAppendElement(&cmdString,
- (partCode == inPageUp ) ? "-1" : "1");
+ (partCode == kControlPageUpPart ) ? "-1" : "1");
Tcl_DStringAppendElement(&cmdString, "page");
}
Tcl_Preserve((ClientData) scrollPtr->interp);
@@ -770,7 +771,7 @@ ScrollbarBindProc(
where.h = eventPtr->xbutton.x + bounds.left;
where.v = eventPtr->xbutton.y + bounds.top;
part = TestControl(macScrollPtr->sbHandle, where);
- if (part == inThumb && scrollPtr->jump == false) {
+ if (part == kControlIndicatorPart && scrollPtr->jump == false) {
/*
* Case 1: In thumb, no jump scrolling. Call track control
* with the thumb action proc which will do most of the work.
@@ -781,14 +782,14 @@ ScrollbarBindProc(
part = TrackControl(macScrollPtr->sbHandle, where,
(ControlActionUPP) thumbActionProc);
activeScrollPtr = NULL;
- } else if (part == inThumb) {
+ } else if (part == kControlIndicatorPart) {
/*
* Case 2: in thumb with jump scrolling. Call TrackControl
* with a NULL action proc. Use the new value of the control
* to set update the control.
*/
part = TrackControl(macScrollPtr->sbHandle, where, NULL);
- if (part == inThumb) {
+ if (part == kControlIndicatorPart) {
double newFirstFraction, thumbWidth;
Tcl_DString cmdString;
char vauleString[TCL_DOUBLE_SPACE];
diff --git a/mac/tkMacSend.c b/mac/tkMacSend.c
index 3884415..eca9f2c 100644
--- a/mac/tkMacSend.c
+++ b/mac/tkMacSend.c
@@ -31,7 +31,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacSend.c,v 1.4 1999/05/22 06:35:10 jingham Exp $
+ * RCS: @(#) $Id: tkMacSend.c,v 1.4.16.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <Gestalt.h>
@@ -361,7 +361,7 @@ Tk_SendObjCmd(
int objc, /* Number of arguments */
Tcl_Obj *CONST objv[]) /* The arguments */
{
- static char *sendOptions[] = {"-async", "-displayof", "-", (char *) NULL};
+ static CONST char *sendOptions[] = {"-async", "-displayof", "-", (char *) NULL};
char *stringRep, *destName;
int async = 0;
int i, index, firstArg;
diff --git a/mac/tkMacShLib.exp b/mac/tkMacShLib.exp
deleted file mode 100644
index e6b4aa5..0000000
--- a/mac/tkMacShLib.exp
+++ /dev/null
@@ -1,764 +0,0 @@
-MacMoveWindow
-TkAboutDlg
-TkActivateMenuEntry
-TkAllocWindow
-TkBTreeCharTagged
-TkBTreeCharsInLine
-TkBTreeCheck
-TkBTreeCreate
-TkBTreeDeleteChars
-TkBTreeDestroy
-TkBTreeFindLine
-TkBTreeGetTags
-TkBTreeInsertChars
-TkBTreeLineIndex
-TkBTreeLinkSegment
-TkBTreeNextLine
-TkBTreeNextTag
-TkBTreeNumLines
-TkBTreePrevTag
-TkBTreePreviousLine
-TkBTreeStartSearch
-TkBTreeStartSearchBack
-TkBTreeTag
-TkBTreeUnlinkSegment
-TkBezierPoints
-TkBezierScreenPoints
-TkBindDeadWindow
-TkBindEventProc
-TkBindFree
-TkBindInit
-TkButtonWorldChanged
-TkCanvPostscriptCmd
-TkChangeEventWindow
-TkClipBox
-TkClipInit
-TkComputeAnchor
-TkConsoleCreate
-TkConsoleInit
-TkConsolePrint
-TkCopyAndGlobalEval
-TkCreateBindingProcedure
-TkCreateCursorFromData
-TkCreateFrame
-TkCreateMainWindow
-TkCreateMenuReferences
-TkCreateNamedFont
-TkCreateRegion
-TkCurrentTime
-TkDeadAppCmd
-TkDeleteAllImages
-TkDestroyMenu
-TkDestroyRegion
-TkDoConfigureNotify
-TkEventDeadWindow
-TkEventuallyRecomputeMenu
-TkEventuallyRedrawMenu
-TkEventuallyRedrawScale
-TkFillPolygon
-TkFindMenuReferences
-TkFindStateNum
-TkFindStateString
-TkFocusDeadWindow
-TkFocusFilterEvent
-TkFocusKeyEvent
-TkFontPkgFree
-TkFontPkgInit
-TkFreeBindingTags
-TkFreeCursor
-TkFreeFileFilters
-TkFreeMenuReferences
-TkGenWMConfigureEvent
-TkGenWMDestroyEvent
-TkGenerateActivateEvents
-TkGenerateButtonEvent
-TkGetBitmapData
-TkGetButtPoints
-TkGetCursorByName
-TkGetDefaultScreenName
-TkGetDisplay
-TkGetDisplayOf
-TkGetFileFilters
-TkGetInterpNames
-TkGetMenuHashTable
-TkGetMenuIndex
-TkGetMiterPoints
-TkGetPointerCoords
-TkGetServerInfo
-TkGetTransientMaster
-TkGrabDeadWindow
-TkGrabState
-TkInOutEvents
-TkIncludePoint
-TkInitFileFilters
-TkInitFontAttributes
-TkIntersectRegion
-TkInvokeButton
-TkInvokeMenu
-TkKeysymToString
-TkLineToArea
-TkLineToPoint
-TkMacButtonKeyState
-TkMacClearMenubarActive
-TkMacConvertEvent
-TkMacConvertTkEvent
-TkMacDispatchMenuEvent
-TkMacDoHLEvent
-TkMacGenerateTime
-TkMacGetDrawablePort
-TkMacGetScrollbarGrowWindow
-TkMacGetXWindow
-TkMacGrowToplevel
-TkMacHandleMenuSelect
-TkMacHandleTearoffMenu
-TkMacInitAppleEvents
-TkMacInitMenus
-TkMacInstallCursor
-TkMacInvalClipRgns
-TkMacInvalidateWindow
-TkMacIsCharacterMissing
-TkMacMakeRealWindowExist
-TkMacMakeStippleMap
-TkMacMenuClick
-TkMacRegisterOffScreenWindow
-TkMacResizable
-TkMacSetEmbedRgn
-TkMacSetHelpMenuItemCount
-TkMacSetScrollbarGrow
-TkMacSetUpClippingRgn
-TkMacSetUpGraphicsPort
-TkMacUnregisterMacWindow
-TkMacUpdateClipRgn
-TkMacUseMenuID
-TkMacVisableClipRgn
-TkMacWinBounds
-TkMacWindowOffset
-TkMacXAddPixel
-TkMacXDestroyImage
-TkMacXGetPixel
-TkMacXPutPixel
-TkMacXSubImage
-TkMacZoomToplevel
-TkMakeBezierCurve
-TkMakeBezierPostscript
-TkMakeMenuWindow
-TkMenuButtonWorldChanged
-TkMenuConfigureDrawOptions
-TkMenuConfigureEntryDrawOptions
-TkMenuEntryFreeDrawOptions
-TkMenuEventProc
-TkMenuFreeDrawOptions
-TkMenuImageProc
-TkMenuInit
-TkMenuInitializeDrawingFields
-TkMenuInitializeEntryDrawingFields
-TkMenuSelectImageProc
-TkNewMenuName
-TkOptionClassChanged
-TkOptionDeadWindow
-TkOvalToArea
-TkOvalToPoint
-TkParseXLFD
-TkPointerDeadWindow
-TkPointerEvent
-TkPolygonToArea
-TkPolygonToPoint
-TkPositionInTree
-TkPostCommand
-TkPostSubmenu
-TkPostTearoffMenu
-TkPreprocessMenu
-TkPutImage
-TkQueueEventForAllChildren
-TkRecomputeMenu
-TkRectInRegion
-TkRoundToResolution
-TkScrollWindow
-TkScrollbarEventProc
-TkScrollbarEventuallyRedraw
-TkSelClearSelection
-TkSelDeadWindow
-TkSelDefaultSelection
-TkSelEventProc
-TkSelGetSelection
-TkSelInit
-TkSelPropProc
-TkSelUpdateClipboard
-TkSetClassProcs
-TkSetMacColor
-TkSetRegion
-TkSetWMName
-TkSetWindowMenuBar
-TkStringToKeysym
-TkSuspendClipboard
-TkTextBindProc
-TkTextChanged
-TkTextCharBbox
-TkTextCharLayoutProc
-TkTextCreateDInfo
-TkTextCreateTag
-TkTextDLineInfo
-TkTextEventuallyRepick
-TkTextFreeDInfo
-TkTextFreeTag
-TkTextGetIndex
-TkTextGetTabs
-TkTextImageCmd
-TkTextImageIndex
-TkTextIndexBackChars
-TkTextIndexCmp
-TkTextIndexForwChars
-TkTextIndexToSeg
-TkTextInsertDisplayProc
-TkTextLostSelection
-TkTextMakeIndex
-TkTextMarkCmd
-TkTextMarkNameToIndex
-TkTextMarkSegToIndex
-TkTextPickCurrent
-TkTextPixelIndex
-TkTextPrintIndex
-TkTextRedrawRegion
-TkTextRedrawTag
-TkTextRelayoutWindow
-TkTextScanCmd
-TkTextSeeCmd
-TkTextSegToOffset
-TkTextSetMark
-TkTextSetYView
-TkTextTagCmd
-TkTextWindowCmd
-TkTextWindowIndex
-TkTextXviewCmd
-TkTextYviewCmd
-TkThickPolyLineToArea
-TkUnionRectWithRegion
-TkUnsupported1Cmd
-TkWmAddToColormapWindows
-TkWmDeadWindow
-TkWmFocusToplevel
-TkWmMapWindow
-TkWmNewWindow
-TkWmProtocolEventProc
-TkWmRemoveFromColormapWindows
-TkWmRestackToplevel
-TkWmSetClass
-TkWmUnmapWindow
-Tk_3DBorderColor
-Tk_3DBorderGC
-Tk_3DHorizontalBevel
-Tk_3DVerticalBevel
-Tk_AddOption
-Tk_BellCmd
-Tk_BindCmd
-Tk_BindEvent
-Tk_BindtagsCmd
-Tk_ButtonCmd
-Tk_CanvasCmd
-Tk_CanvasDrawableCoords
-Tk_CanvasEventuallyRedraw
-Tk_CanvasGetCoord
-Tk_CanvasGetTextInfo
-Tk_CanvasPsBitmap
-Tk_CanvasPsColor
-Tk_CanvasPsFont
-Tk_CanvasPsPath
-Tk_CanvasPsStipple
-Tk_CanvasPsY
-Tk_CanvasSetStippleOrigin
-Tk_CanvasTagsParseProc
-Tk_CanvasTagsPrintProc
-Tk_CanvasTkwin
-Tk_CanvasWindowCoords
-Tk_ChangeWindowAttributes
-Tk_CharBbox
-Tk_CheckbuttonCmd
-Tk_ChooseColorCmd
-Tk_ClearSelection
-Tk_ClipboardAppend
-Tk_ClipboardClear
-Tk_ClipboardCmd
-Tk_ComputeTextLayout
-Tk_ConfigureInfo
-Tk_ConfigureValue
-Tk_ConfigureWidget
-Tk_ConfigureWindow
-Tk_CoordsToWindow
-Tk_CreateBinding
-Tk_CreateBindingTable
-Tk_CreateErrorHandler
-Tk_CreateEventHandler
-Tk_CreateGenericHandler
-Tk_CreateImageType
-Tk_CreateItemType
-Tk_CreatePhotoImageFormat
-Tk_CreateSelHandler
-Tk_CreateWindow
-Tk_CreateWindowFromPath
-Tk_DefineBitmap
-Tk_DefineCursor
-Tk_DeleteAllBindings
-Tk_DeleteBinding
-Tk_DeleteBindingTable
-Tk_DeleteErrorHandler
-Tk_DeleteEventHandler
-Tk_DeleteGenericHandler
-Tk_DeleteImage
-Tk_DeleteSelHandler
-Tk_DestroyCmd
-Tk_DestroyWindow
-Tk_DisplayName
-Tk_DistanceToTextLayout
-Tk_Draw3DPolygon
-Tk_Draw3DRectangle
-Tk_DrawChars
-Tk_DrawFocusHighlight
-Tk_DrawTextLayout
-Tk_EntryCmd
-Tk_EventCmd
-Tk_Fill3DPolygon
-Tk_Fill3DRectangle
-Tk_FindPhoto
-Tk_FocusCmd
-Tk_FontId
-Tk_FontObjCmd
-Tk_FrameCmd
-Tk_Free3DBorder
-Tk_FreeBitmap
-Tk_FreeColor
-Tk_FreeColormap
-Tk_FreeCursor
-Tk_FreeFont
-Tk_FreeGC
-Tk_FreeImage
-Tk_FreeOptions
-Tk_FreePixmap
-Tk_FreeTextLayout
-Tk_GCForColor
-Tk_GeometryRequest
-Tk_Get3DBorder
-Tk_GetAllBindings
-Tk_GetAnchor
-Tk_GetAtomName
-Tk_GetBinding
-Tk_GetBitmap
-Tk_GetBitmapFromData
-Tk_GetCapStyle
-Tk_GetColor
-Tk_GetColorByValue
-Tk_GetColormap
-Tk_GetCursor
-Tk_GetCursorFromData
-Tk_GetFont
-Tk_GetFontFromObj
-Tk_GetFontMetrics
-Tk_GetGC
-Tk_GetImage
-Tk_GetItemTypes
-Tk_GetJoinStyle
-Tk_GetJustify
-Tk_GetNumMainWindows
-Tk_GetOpenFileCmd
-Tk_GetOption
-Tk_GetPixels
-Tk_GetPixmap
-Tk_GetRelief
-Tk_GetRootCoords
-Tk_GetSaveFileCmd
-Tk_GetScreenMM
-Tk_GetScrollInfo
-Tk_GetSelection
-Tk_GetUid
-Tk_GetVRootGeometry
-Tk_GetVisual
-Tk_Grab
-Tk_GrabCmd
-Tk_GridCmd
-Tk_HandleEvent
-Tk_IdToWindow
-Tk_ImageChanged
-Tk_ImageCmd
-Tk_Init
-Tk_InternAtom
-Tk_IntersectTextLayout
-Tk_LabelCmd
-Tk_ListboxCmd
-Tk_LowerCmd
-Tk_Main
-Tk_MainLoop
-Tk_MainWindow
-Tk_MaintainGeometry
-Tk_MakeWindowExist
-Tk_ManageGeometry
-Tk_MapWindow
-Tk_MeasureChars
-Tk_MenuCmd
-Tk_MenubuttonCmd
-Tk_MessageBoxCmd
-Tk_MessageCmd
-Tk_MoveResizeWindow
-Tk_MoveToplevelWindow
-Tk_MoveWindow
-Tk_NameOf3DBorder
-Tk_NameOfAnchor
-Tk_NameOfBitmap
-Tk_NameOfCapStyle
-Tk_NameOfColor
-Tk_NameOfCursor
-Tk_NameOfFont
-Tk_NameOfImage
-Tk_NameOfJoinStyle
-Tk_NameOfJustify
-Tk_NameOfRelief
-Tk_NameToWindow
-Tk_OptionCmd
-Tk_OwnSelection
-Tk_PackCmd
-Tk_ParseArgv
-Tk_PhotoBlank
-Tk_PhotoExpand
-Tk_PhotoGetImage
-Tk_PhotoGetSize
-Tk_PhotoPutBlock
-Tk_PhotoPutZoomedBlock
-Tk_PhotoSetSize
-Tk_PlaceCmd
-Tk_PointToChar
-Tk_PostscriptFontName
-Tk_PreserveColormap
-Tk_QueueWindowEvent
-Tk_RadiobuttonCmd
-Tk_RaiseCmd
-Tk_RedrawImage
-Tk_ResizeWindow
-Tk_RestackWindow
-Tk_RestrictEvents
-Tk_SafeInit
-Tk_ScaleCmd
-Tk_ScrollbarCmd
-Tk_SelectionCmd
-Tk_SendCmd
-Tk_SetAppName
-Tk_SetBackgroundFromBorder
-Tk_SetClass
-Tk_SetGrid
-Tk_SetInternalBorder
-Tk_SetWindowBackground
-Tk_SetWindowBackgroundPixmap
-Tk_SetWindowBorder
-Tk_SetWindowBorderPixmap
-Tk_SetWindowBorderWidth
-Tk_SetWindowColormap
-Tk_SetWindowVisual
-Tk_SizeOfBitmap
-Tk_SizeOfImage
-Tk_StrictMotif
-Tk_TextCmd
-Tk_TextLayoutToPostscript
-Tk_TextWidth
-Tk_TkObjCmd
-Tk_TkwaitCmd
-Tk_TopCoordsToWindow
-Tk_ToplevelCmd
-Tk_UndefineCursor
-Tk_UnderlineChars
-Tk_UnderlineTextLayout
-Tk_Ungrab
-Tk_UnmaintainGeometry
-Tk_UnmapWindow
-Tk_UnsetGrid
-Tk_UpdateCmd
-Tk_UpdatePointer
-Tk_WinfoObjCmd
-Tk_WmCmd
-TkpChangeFocus
-TkpClaimFocus
-TkpCloseDisplay
-TkpComputeButtonGeometry
-TkpComputeMenuButtonGeometry
-TkpComputeMenubarGeometry
-TkpComputeScrollbarGeometry
-TkpComputeStandardMenuGeometry
-TkpConfigureMenuEntry
-TkpConfigureScrollbar
-TkpCreateButton
-TkpCreateMenuButton
-TkpCreateNativeBitmap
-TkpCreateScale
-TkpCreateScrollbar
-TkpDefineNativeBitmaps
-TkpDeleteFont
-TkpDestroyButton
-TkpDestroyMenu
-TkpDestroyMenuButton
-TkpDestroyMenuEntry
-TkpDestroyScale
-TkpDestroyScrollbar
-TkpDisplayButton
-TkpDisplayMenuButton
-TkpDisplayScale
-TkpDisplayScrollbar
-TkpDisplayWarning
-TkpDrawMenuEntry
-TkpFindWindow
-TkpFreeBorder
-TkpGetAppName
-TkpGetBorder
-TkpGetColor
-TkpGetColorByValue
-TkpGetFontFamilies
-TkpGetFontFromAttributes
-TkpGetMS
-TkpGetNativeAppBitmap
-TkpGetNativeFont
-TkpGetOtherWindow
-TkpGetShadows
-TkpInit
-TkpInitializeMenuBindings
-TkpMakeContainer
-TkpMakeWindow
-TkpMenuInit
-TkpMenuNewEntry
-TkpNewMenu
-TkpOpenDisplay
-TkpPixelToValue
-TkpPostMenu
-TkpRedirectKeyEvent
-TkpScaleElement
-TkpScrollbarPosition
-TkpSetCapture
-TkpSetCursor
-TkpSetMainMenubar
-TkpSetScaleValue
-TkpSetWindowMenuBar
-TkpTestembedCmd
-TkpUseWindow
-TkpValueToPixel
-TkpWindowWasRecentlyDeleted
-XAllocColor
-XAllocSizeHints
-XBell
-XChangeGC
-XChangeProperty
-XChangeWindowAttributes
-XConfigureWindow
-XCopyArea
-XCopyPlane
-TkCreateBitmapFromData
-XCreateColormap
-XCreateGC
-XCreateImage
-XDefineCursor
-XDestroyWindow
-XDrawArc
-XDrawLine
-XDrawLines
-XDrawRectangle
-XFillArc
-XFillPolygon
-XFillRectangle
-XFillRectangles
-XForceScreenSaver
-XFreeColormap
-XFreeColors
-XFreeGC
-XFreeModifiermap
-XGContextFromGC
-XGetAtomName
-XGetGeometry
-XGetImage
-XGetModifierMapping
-XGetVisualInfo
-XGetWindowProperty
-XGrabKeyboard
-XGrabPointer
-XInternAtom
-XKeycodeToKeysym
-XKeysymToKeycode
-XKeysymToString
-XLookupString
-XMapWindow
-XMoveResizeWindow
-XMoveWindow
-XParseColor
-XQueryPointer
-XRaiseWindow
-TkReadBitmapFile
-XRefreshKeyboardMapping
-XResizeWindow
-XRootWindow
-XSelectInput
-XSendEvent
-XSetArcMode
-XSetBackground
-XSetClipMask
-XSetClipOrigin
-XSetErrorHandler
-XSetFillRule
-XSetFillStyle
-XSetFont
-XSetForeground
-XSetFunction
-XSetIconName
-XSetInputFocus
-XSetLineAttributes
-XSetSelectionOwner
-XSetStipple
-XSetTSOrigin
-XSetWMNormalHints
-XSetWindowBackground
-XSetWindowBackgroundPixmap
-XSetWindowBorder
-XSetWindowBorderPixmap
-XSetWindowBorderWidth
-XSetWindowColormap
-XStringToKeysym
-XUngrabKeyboard
-XUngrabPointer
-XUnmapWindow
-_Aldata
-_Assert
-_Atcount
-_Atfuns
-_Clocale
-_Closreg
-_Costate
-_Daysto
-_Dbl
-_Defloc
-_Environ
-_Environ1
-_Fgpos
-_Files
-_Flt
-_Fopen
-_Foprep
-_Fread
-_Freeloc
-_Frprep
-_Fspos
-_Fwprep
-_Fwrite
-_Genld
-_Gentime
-_Getdst
-_Getfld
-_Getfloat
-_Getint
-_Getloc
-_Getmem
-_Getstr
-_Gettime
-_Getzone
-_Isdst
-_Ldbl
-_Ldtob
-_Litob
-_Locale
-_Locsum
-_Loctab
-_Locterm
-_Locvar
-_MWERKS_Atcount
-_MWERKS_Atfuns
-_Makeloc
-_Makestab
-_Makewct
-_Mbcurmax
-_Mbstate
-_Mbtowc
-_Nnl
-_PJP_C_Copyright
-_Printf
-_Putfld
-_Putstr
-_Puttxt
-_Randseed
-_Readloc
-_Scanf
-_Setloc
-_Skip
-_Stdin
-_Stdout
-_Stod
-_Stof
-_Stoflt
-_Stold
-_Strerror
-_Strftime
-_Strxfrm
-_Times
-_Tolower
-_Toupper
-_Ttotm
-_WCostate
-_Wcstate
-_Wctob
-_Wctomb
-_Wctrans
-_Wctype
-_XInitImageFuncPtrs
-__CheckForSystem7
-__RemoveConsoleHandler__
-__aborting
-__ctopstring
-__getcreator
-__gettype
-__myraise
-__system7present
-_atexit
-_exit
-_fcreator
-_ftype
-pendingPtr
-tclFocusDebug
-tcl_macQdPtr
-tkActiveUid
-tkAppleMenu
-tkArcType
-tkBTreeDebug
-tkBitmapImageType
-tkBitmapType
-tkDisabledUid
-tkDisplayList
-tkEditMenu
-tkFileMenu
-tkImageType
-tkImgFmtGIF
-tkImgFmtPPM
-tkLineType
-tkMacAppInFront
-tkMacFocusWin
-tkMainWindowList
-tkMenuConfigSpecs
-tkMenuEntryConfigSpecs
-tkNormalUid
-tkOvalType
-tkPhotoImageType
-tkPolygonType
-tkPredefBitmapTable
-tkRectangleType
-tkSendSerial
-tkTextCharType
-tkTextCharUid
-tkTextDebug
-tkTextDisabledUid
-tkTextLeftMarkType
-tkTextNoneUid
-tkTextNormalUid
-tkTextRightMarkType
-tkTextToggleOffType
-tkTextToggleOnType
-tkTextType
-tkTextWordUid
-tkWindowType
-tkpButtonConfigSpecs
-tkpButtonProcs
-tkpMenubuttonClass
-tkpScrollbarConfigSpecs
-tkpScrollbarProcs
-#TclMacInitializeFragment
-#TclMacTerminateFragment
-#__initialize
-#__ptmf_null
-#__terminate
diff --git a/mac/tkMacWindowMgr.c b/mac/tkMacWindowMgr.c
index 5e34c49..8f518ae 100644
--- a/mac/tkMacWindowMgr.c
+++ b/mac/tkMacWindowMgr.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacWindowMgr.c,v 1.8 2000/04/17 02:17:24 jingham Exp $
+ * RCS: @(#) $Id: tkMacWindowMgr.c,v 1.8.8.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <Events.h>
@@ -273,13 +273,13 @@ TkAboutDlg()
while (itemHit != 1) {
ModalDialog( NULL, &itemHit);
}
- DisposDialog(aboutDlog);
+ DisposeDialog(aboutDlog);
aboutDlog = NULL;
if (TkMacHaveAppearance() >= 0x110) {
- SelectWindow(FrontWindow());
- } else {
SelectWindow(FrontNonFloatingWindow());
+ } else {
+ SelectWindow(FrontWindow());
}
return;
@@ -1234,7 +1234,11 @@ TkMacConvertEvent(
/* fall through */
case keyUp:
+ if (TkMacHaveAppearance() >= 0x110) {
whichWindow = FrontNonFloatingWindow();
+ } else {
+ whichWindow = FrontWindow();
+ }
if (whichWindow == NULL) {
/*
* This happens if we get a key event before Tk has had a
@@ -1715,7 +1719,7 @@ BringWindowForward(
WindowRef wRef)
{
if (!TkpIsWindowFloating(wRef)) {
- if (IsValidWindowPtr(wRef))
+ if ((TkMacHaveAppearance() < 0x110) || IsValidWindowPtr(wRef))
SelectWindow(wRef);
}
}
diff --git a/mac/tkMacWm.c b/mac/tkMacWm.c
index 23b7fd7..679cbff 100644
--- a/mac/tkMacWm.c
+++ b/mac/tkMacWm.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacWm.c,v 1.11 2001/08/06 18:29:41 dgp Exp $
+ * RCS: @(#) $Id: tkMacWm.c,v 1.11.2.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <Gestalt.h>
@@ -194,7 +194,7 @@ typedef struct TkWmInfo {
ProtocolHandler *protPtr; /* First in list of protocol handlers for
* this window (NULL means none). */
int cmdArgc; /* Number of elements in cmdArgv below. */
- char **cmdArgv; /* Array of strings to store in the
+ CONST char **cmdArgv; /* Array of strings to store in the
* WM_COMMAND property. NULL means nothing
* available. */
char *clientMachine; /* String to store in WM_CLIENT_MACHINE
@@ -320,6 +320,9 @@ static int ParseGeometry _ANSI_ARGS_((Tcl_Interp *interp,
char *string, TkWindow *winPtr));
static void TopLevelEventProc _ANSI_ARGS_((ClientData clientData,
XEvent *eventPtr));
+static void TkWmStackorderToplevelWrapperMap _ANSI_ARGS_((
+ TkWindow *winPtr,
+ Tcl_HashTable *reparentTable));
static void TopLevelReqProc _ANSI_ARGS_((ClientData dummy,
Tk_Window tkwin));
static void UpdateGeometryInfo _ANSI_ARGS_((
@@ -730,7 +733,7 @@ Tk_WmCmd(
if (winPtr == NULL) {
return TCL_ERROR;
}
- if (!(winPtr->flags & TK_TOP_LEVEL)) {
+ if (!Tk_IsTopLevel(winPtr)) {
Tcl_AppendResult(interp, "window \"", winPtr->pathName,
"\" isn't a top-level window", (char *) NULL);
return TCL_ERROR;
@@ -811,7 +814,7 @@ Tk_WmCmd(
TkWindow **cmapList;
TkWindow *winPtr2;
int i, windowArgc, gotToplevel = 0;
- char **windowArgv;
+ CONST char **windowArgv;
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # arguments: must be \"",
@@ -877,7 +880,7 @@ Tk_WmCmd(
} else if ((c == 'c') && (strncmp(argv[1], "command", length) == 0)
&& (length >= 3)) {
int cmdArgc;
- char **cmdArgv;
+ CONST char **cmdArgv;
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # arguments: must be \"",
@@ -1549,6 +1552,99 @@ Tk_WmCmd(
}
wmPtr->flags |= WM_UPDATE_SIZE_HINTS;
goto updateGeom;
+ } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
+ && (length >= 2)) {
+ TkWindow **windows, **window_ptr;
+
+ if ((argc != 3) && (argc != 5)) {
+ Tcl_AppendResult(interp, "wrong # arguments: must be \"",
+ argv[0],
+ " stackorder window ?isabove|isbelow? ?window?\"",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (argc == 3) {
+ windows = TkWmStackorderToplevel(winPtr);
+ if (windows == NULL) {
+ panic("TkWmStackorderToplevel failed");
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ Tcl_AppendElement(interp, (*window_ptr)->pathName);
+ }
+ ckfree((char *) windows);
+ return TCL_OK;
+ }
+ } else {
+ TkWindow *winPtr2;
+ int index1=-1, index2=-1, result;
+
+ winPtr2 = (TkWindow *) Tk_NameToWindow(interp, argv[4], tkwin);
+ if (winPtr2 == NULL) {
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsTopLevel(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't a top-level window", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr)) {
+ Tcl_AppendResult(interp, "window \"", winPtr->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Lookup stacking order of all toplevels that are children
+ * of "." and find the position of winPtr and winPtr2
+ * in the stacking order.
+ */
+
+ windows = TkWmStackorderToplevel(winPtr->mainPtr->winPtr);
+
+ if (windows == NULL) {
+ Tcl_AppendResult(interp, "TkWmStackorderToplevel failed",
+ (char *) NULL);
+ return TCL_ERROR;
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ if (*window_ptr == winPtr)
+ index1 = (window_ptr - windows);
+ if (*window_ptr == winPtr2)
+ index2 = (window_ptr - windows);
+ }
+ if (index1 == -1)
+ panic("winPtr window not found");
+ if (index2 == -1)
+ panic("winPtr2 window not found");
+
+ ckfree((char *) windows);
+ }
+
+ c = argv[3][0];
+ length = strlen(argv[3]);
+ if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isabove", length) == 0)) {
+ result = index1 > index2;
+ } else if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isbelow", length) == 0)) {
+ result = index1 < index2;
+ } else {
+ Tcl_AppendResult(interp, "bad argument \"", argv[3],
+ "\": must be isabove or isbelow", (char *) NULL);
+ return TCL_ERROR;
+ }
+ Tcl_SetIntObj(Tcl_GetObjResult(interp), result);
+ return TCL_OK;
+ }
} else if ((c == 's') && (strncmp(argv[1], "state", length) == 0)
&& (length >= 2)) {
if ((argc < 3) || (argc > 4)) {
@@ -1697,8 +1793,8 @@ Tk_WmCmd(
"focusmodel, frame, geometry, grid, group, iconbitmap, ",
"iconify, iconmask, iconname, iconposition, ",
"iconwindow, maxsize, minsize, overrideredirect, ",
- "positionfrom, protocol, resizable, sizefrom, state, title, ",
- "transient, or withdraw",
+ "positionfrom, protocol, resizable, sizefrom, stackorder, ",
+ "state, title, transient, or withdraw",
(char *) NULL);
return TCL_ERROR;
}
@@ -2924,6 +3020,132 @@ TkWmProtocolEventProc(
/*
*----------------------------------------------------------------------
*
+ * TkWmStackorderToplevelWrapperMap --
+ *
+ * This procedure will create a table that maps the reparent wrapper
+ * X id for a toplevel to the TkWindow structure that is wraps.
+ * Tk keeps track of a mapping from the window X id to the TkWindow
+ * structure but that does us no good here since we only get the X
+ * id of the wrapper window. Only those toplevel windows that are
+ * mapped have a position in the stacking order.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Adds entries to the passed hashtable.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+TkWmStackorderToplevelWrapperMap(winPtr, table)
+ TkWindow *winPtr; /* TkWindow to recurse on */
+ Tcl_HashTable *table; /* Maps mac window to TkWindow */
+{
+ TkWindow *childPtr;
+ Tcl_HashEntry *hPtr;
+ WindowPeek wrapper;
+ int newEntry;
+
+ if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {
+ wrapper = (WindowPeek) TkMacGetDrawablePort(winPtr->window);
+
+ hPtr = Tcl_CreateHashEntry(table,
+ (char *) wrapper, &newEntry);
+ Tcl_SetHashValue(hPtr, winPtr);
+ }
+
+ for (childPtr = winPtr->childList; childPtr != NULL;
+ childPtr = childPtr->nextPtr) {
+ TkWmStackorderToplevelWrapperMap(childPtr, table);
+ }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkWmStackorderToplevel --
+ *
+ * This procedure returns the stack order of toplevel windows.
+ *
+ * Results:
+ * An array of pointers to tk window objects in stacking order
+ * or else NULL if there was an error.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+TkWindow **
+TkWmStackorderToplevel(parentPtr)
+ TkWindow *parentPtr; /* Parent toplevel window. */
+{
+ WindowPeek frontWindow;
+ TkWindow *childWinPtr, **windows, **window_ptr;
+ Tcl_HashTable table;
+ Tcl_HashEntry *hPtr;
+ Tcl_HashSearch search;
+
+ /*
+ * Map mac windows to a TkWindow of the wrapped toplevel.
+ */
+
+ Tcl_InitHashTable(&table, TCL_ONE_WORD_KEYS);
+ TkWmStackorderToplevelWrapperMap(parentPtr, &table);
+
+ windows = (TkWindow **) ckalloc((table.numEntries+1)
+ * sizeof(TkWindow *));
+
+ /*
+ * Special cases: If zero or one toplevels were mapped
+ * there is no need to enumerate Windows.
+ */
+
+ switch (table.numEntries) {
+ case 0:
+ windows[0] = NULL;
+ goto done;
+ case 1:
+ hPtr = Tcl_FirstHashEntry(&table, &search);
+ windows[0] = (TkWindow *) Tcl_GetHashValue(hPtr);
+ windows[1] = NULL;
+ goto done;
+ }
+
+ if (TkMacHaveAppearance() >= 0x110) {
+ frontWindow = (WindowPeek) FrontNonFloatingWindow();
+ } else {
+ frontWindow = (WindowPeek) FrontWindow();
+ }
+
+ if (frontWindow == NULL) {
+ ckfree((char *) windows);
+ windows = NULL;
+ } else {
+ window_ptr = windows + table.numEntries;
+ *window_ptr-- = NULL;
+ while (frontWindow != NULL) {
+ hPtr = Tcl_FindHashEntry(&table, (char *) frontWindow);
+ if (hPtr != NULL) {
+ childWinPtr = (TkWindow *) Tcl_GetHashValue(hPtr);
+ *window_ptr-- = childWinPtr;
+ }
+ frontWindow = frontWindow->nextWindow;
+ }
+ if (window_ptr != (windows-1))
+ panic("num matched toplevel windows does not equal num children");
+ }
+
+ done:
+ Tcl_DeleteHashTable(&table);
+ return windows;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
* TkWmRestackToplevel --
*
* This procedure restacks a top-level window.
@@ -3783,7 +4005,7 @@ TkUnsupported1Cmd(
if (winPtr == NULL) {
return TCL_ERROR;
}
- if (!(winPtr->flags & TK_TOP_LEVEL)) {
+ if (!Tk_IsTopLevel(winPtr)) {
Tcl_AppendResult(interp, "window \"", winPtr->pathName,
"\" isn't a top-level window", (char *) NULL);
return TCL_ERROR;
@@ -4009,7 +4231,7 @@ TkUnsupported1Cmd(
} else {
int foundOne = 0;
int attrArgc, i;
- char **attrArgv = NULL;
+ CONST char **attrArgv = NULL;
if (Tcl_SplitList(interp, argv[4], &attrArgc, &attrArgv) != TCL_OK) {
wmPtr->macClass = oldClass;
@@ -4534,7 +4756,12 @@ TkMacHaveAppearance()
if (err == noErr) {
TkMacHaveAppearance = 1;
}
+/* even if AppearanceManager 1.1 routines are present,
+we can't call them from 68K code, so we pretend
+to be running Apperarance Mgr 1.0 */
+#if !(GENERATING68K && !GENERATINGCFM)
err = Gestalt(gestaltAppearanceVersion, &response);
+#endif
if (err == noErr) {
TkMacHaveAppearance = (int) response;
}
diff --git a/mac/tkMacXStubs.c b/mac/tkMacXStubs.c
index 7fd822e..153aa13 100644
--- a/mac/tkMacXStubs.c
+++ b/mac/tkMacXStubs.c
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacXStubs.c,v 1.10 2000/02/10 09:00:31 jingham Exp $
+ * RCS: @(#) $Id: tkMacXStubs.c,v 1.10.8.1 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -90,7 +90,7 @@ int _XInitImageFuncPtrs _ANSI_ARGS_((XImage *image));
TkDisplay *
TkpOpenDisplay(
- char *display_name)
+ CONST char *display_name)
{
Display *display;
Screen *screen;
@@ -793,10 +793,10 @@ XCreateIC(
*----------------------------------------------------------------------
*/
-char *
+CONST char *
TkGetDefaultScreenName(
Tcl_Interp *interp, /* Not used. */
- char *screenName) /* If NULL, use default string. */
+ CONST char *screenName) /* If NULL, use default string. */
{
if ((screenName == NULL) || (screenName[0] == '\0')) {
screenName = macScreenName;
diff --git a/mac/widget.r b/mac/widget.r
new file mode 100644
index 0000000..d28cadc
--- /dev/null
+++ b/mac/widget.r
@@ -0,0 +1,18 @@
+/*
+ * widget.r --
+ *
+ */
+
+type 'TEXT'
+{
+ string;
+};
+
+#define TK_LIBRARY_RESOURCES 3000
+
+resource 'TEXT' (TK_LIBRARY_RESOURCES+114, "tclshrc", purgeable)
+{
+"# read widgets demo script\n"
+"console hide\n"
+"source [file join $tk_library demos widget]\n"
+}; \ No newline at end of file
diff --git a/macosx/Wish.pbproj/jingham.pbxuser b/macosx/Wish.pbproj/jingham.pbxuser
index 007485b..7d26fab 100644
--- a/macosx/Wish.pbproj/jingham.pbxuser
+++ b/macosx/Wish.pbproj/jingham.pbxuser
@@ -1,5 +1,11 @@
// !$*UTF8*$!
{
+ F50D961501961F0201DC9062 = {
+ fileReference = F5375551016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 902;
+ state = 2;
+ };
F537552A016C352C01DC9062 = {
activeBuildStyle = F537552C016C352C01DC9062;
activeTarget = F53756A0016C4DD401DC9062;
@@ -16,68 +22,78 @@
F571FE4E01796F9201DC9062,
F571FE4F0179702301DC9062,
F571FE500179702301DC9062,
- F5D47B92017C934C01DC9062,
- F54B24D6017FF76601DC9062,
- F54B24D7017FFFBF01DC9062,
+ F583DC0E018D092D01DC9062,
+ F583DC0F018D0CB501DC9062,
+ F583DC13018D2B4A01DC9062,
+ F58907BE018DCE8F01DC9062,
+ F58907C5018DD1C301DC9062,
+ F50D961501961F0201DC9062,
+ F566083B0197283B01DC9062,
+ F566083C0197823801DC9062,
+ F5A5146F01D05DC201DC9062,
+ F5A5147001D0758C01DC9062,
+ F5A852D6020F6C6C01DC9062,
);
+ intermediatesDirectory = /Volumes/CodeBits/jingham/Tcl/Build;
perUserDictionary = {
PBXWorkspaceConfiguration = {
- ContentSize = "{906, 673}";
+ ContentSize = "{906, 681}";
LeftSlideOut = {
ActiveTab = 0;
- Frame = "{{0, 23}, {906, 650}}";
+ Frame = "{{0, 23}, {906, 658}}";
Split0 = {
- Frame = "{{322, 0}, {584, 650}}";
+ ActiveTab = 2;
+ Frame = "{{259, 0}, {647, 658}}";
Split0 = {
- Frame = "{{0, 25}, {584, 625}}";
+ Frame = "{{0, 307}, {647, 351}}";
};
SplitCount = 1;
Tab0 = {
Debugger = {
- ActiveTab = 1;
- Frame = "{{0, 0}, {516, 264}}";
+ ActiveTab = 0;
+ Frame = "{{0, 0}, {647, 264}}";
Split0 = {
- Frame = "{{0, 263}, {516, 1}}";
+ Frame = "{{0, 136}, {647, 128}}";
Split0 = {
- Frame = "{{0, 0}, {66, 1}}";
+ Frame = "{{0, 0}, {187, 128}}";
};
Split1 = {
- Frame = "{{75, 0}, {441, 1}}";
+ Frame = "{{196, 0}, {451, 128}}";
};
SplitCount = 2;
};
SplitCount = 1;
Tab0 = {
- Frame = "{{0, 0}, {616, 112}}";
+ Frame = "{{0, 0}, {647, 112}}";
};
Tab1 = {
- Frame = "{{0, 0}, {516, 238}}";
+ Frame = "{{0, 0}, {647, 114}}";
};
TabCount = 2;
};
- Frame = "{{0, 0}, {516, 264}}";
+ Frame = "{{0, 0}, {647, 264}}";
LauncherConfigVersion = 4;
};
Tab1 = {
- Frame = "{{0, 0}, {516, 133}}";
+ Frame = "{{0, 0}, {647, 133}}";
LauncherConfigVersion = 3;
Runner = {
- Frame = "{{0, 0}, {516, 133}}";
+ Frame = "{{0, 0}, {647, 133}}";
};
};
Tab2 = {
- BuildMessageFrame = "{{0, 0}, {615, 53}}";
- BuildTranscriptFrame = "{{0, 62}, {615, 126}}";
- Frame = "{{0, 0}, {613, 186}}";
+ BuildMessageFrame = "{{0, 0}, {649, 118}}";
+ BuildTranscriptFrame = "{{0, 127}, {649, 158}}";
+ Frame = "{{0, 0}, {647, 283}}";
};
Tab3 = {
- Frame = "{{0, 0}, {516, 295}}";
+ Frame = "{{0, 0}, {647, 225}}";
};
TabCount = 4;
};
SplitCount = 1;
Tab0 = {
- Frame = "{{0, 0}, {297, 650}}";
+ Frame = "{{0, 0}, {235, 658}}";
};
Tab1 = {
ClassesFrame = "{{0, 0}, {202, 56}}";
@@ -89,22 +105,23 @@
Frame = "{{0, 0}, {200, 644}}";
};
Tab3 = {
- Frame = "{{0, 0}, {200, 651}}";
+ Frame = "{{0, 0}, {177, 658}}";
Split0 = {
- Frame = "{{0, 0}, {200, 312}}";
+ Frame = "{{0, 0}, {177, 314}}";
};
Split1 = {
- Frame = "{{0, 321}, {200, 330}}";
+ Frame = "{{0, 323}, {177, 335}}";
};
SplitCount = 2;
};
Tab4 = {
- Frame = "{{0, 0}, {250, 655}}";
+ Frame = "{{0, 0}, {250, 658}}";
};
TabCount = 5;
};
};
};
+ productDirectory = /Volumes/CodeBits/jingham/Tcl/Products;
wantsIndex = 1;
wantsSCM = -1;
};
@@ -138,17 +155,16 @@
sourceDirectories = (
);
};
- F54B24D6017FF76601DC9062 = {
+ F566083B0197283B01DC9062 = {
fileReference = F5375548016C376E01DC9062;
isa = PBXFileBreakpoint;
- lineNumber = 129;
- state = 1;
+ lineNumber = 208;
+ state = 2;
};
- F54B24D7017FFFBF01DC9062 = {
- fileReference = F53755AA016C389901DC9062;
- isa = PBXFileBreakpoint;
- lineNumber = 141;
- state = 1;
+ F566083C0197823801DC9062 = {
+ isa = PBXSymbolicBreakpoint;
+ state = 2;
+ symbolName = Tcl_CreateObjCommand;
};
F571FE470179562E01DC9062 = {
fileReference = F5375583016C389901DC9062;
@@ -192,16 +208,58 @@
lineNumber = 469;
state = 2;
};
- F5B2CDC10175829501DC9062 = {
- fileReference = F5375583016C389901DC9062;
+ F583DC0E018D092D01DC9062 = {
+ fileReference = F5375551016C376E01DC9062;
isa = PBXFileBreakpoint;
- lineNumber = 2584;
+ lineNumber = 531;
+ state = 2;
+ };
+ F583DC0F018D0CB501DC9062 = {
+ fileReference = F5375551016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 547;
state = 2;
};
- F5D47B92017C934C01DC9062 = {
+ F583DC13018D2B4A01DC9062 = {
+ fileReference = F5375551016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 1478;
+ state = 2;
+ };
+ F58907BE018DCE8F01DC9062 = {
fileReference = F5375548016C376E01DC9062;
isa = PBXFileBreakpoint;
- lineNumber = 269;
+ lineNumber = 190;
+ state = 2;
+ };
+ F58907C5018DD1C301DC9062 = {
+ fileReference = F5375551016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 502;
+ state = 2;
+ };
+ F5A5146F01D05DC201DC9062 = {
+ fileReference = F5375550016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 651;
state = 1;
};
+ F5A5147001D0758C01DC9062 = {
+ fileReference = F5375550016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 838;
+ state = 1;
+ };
+ F5A852D6020F6C6C01DC9062 = {
+ fileReference = F5375550016C376E01DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 277;
+ state = 1;
+ };
+ F5B2CDC10175829501DC9062 = {
+ fileReference = F5375583016C389901DC9062;
+ isa = PBXFileBreakpoint;
+ lineNumber = 2584;
+ state = 2;
+ };
}
diff --git a/macosx/Wish.pbproj/project.pbxproj b/macosx/Wish.pbproj/project.pbxproj
index 042282f..ae96ae8 100644
--- a/macosx/Wish.pbproj/project.pbxproj
+++ b/macosx/Wish.pbproj/project.pbxproj
@@ -5,12 +5,102 @@
};
objectVersion = 34;
objects = {
+ F50D96120196176E01DC9062 = {
+ isa = PBXFrameworkReference;
+ name = ApplicationServices.framework;
+ path = /System/Library/Frameworks/ApplicationServices.framework;
+ refType = 0;
+ };
+ F50D96130196176E01DC9062 = {
+ fileRef = F50D96120196176E01DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F50D96140196176E01DC9062 = {
+ fileRef = F50D96120196176E01DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
F51D903E0181474301DC9062 = {
fileRef = F5875C7B016FEF1D01DC9062;
isa = PBXBuildFile;
settings = {
};
};
+ F51D903F018149BD01DC9062 = {
+ buildActionMask = 2147483647;
+ dstPath = "Versions/$(FRAMEWORK_VERSION)/Headers/X11";
+ dstSubfolderSpec = 1;
+ files = (
+ F51D9040018149FD01DC9062,
+ F51D9041018149FD01DC9062,
+ F51D9042018149FD01DC9062,
+ F51D9043018149FD01DC9062,
+ F51D9044018149FD01DC9062,
+ F51D9045018149FD01DC9062,
+ F51D9046018149FD01DC9062,
+ F51D9047018149FD01DC9062,
+ F51D9048018149FD01DC9062,
+ );
+ isa = PBXCopyFilesBuildPhase;
+ name = "Copy Files";
+ };
+ F51D9040018149FD01DC9062 = {
+ fileRef = F53755CE016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9041018149FD01DC9062 = {
+ fileRef = F53755CF016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9042018149FD01DC9062 = {
+ fileRef = F53755D0016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9043018149FD01DC9062 = {
+ fileRef = F53755D1016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9044018149FD01DC9062 = {
+ fileRef = F53755D2016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9045018149FD01DC9062 = {
+ fileRef = F53755D3016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9046018149FD01DC9062 = {
+ fileRef = F53755D4016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9047018149FD01DC9062 = {
+ fileRef = F53755D5016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
+ F51D9048018149FD01DC9062 = {
+ fileRef = F53755D6016C389901DC9062;
+ isa = PBXBuildFile;
+ settings = {
+ };
+ };
F537552A016C352C01DC9062 = {
buildStyles = (
F537552C016C352C01DC9062,
@@ -1239,7 +1329,9 @@
F53755E3016C38D301DC9062,
F53755E4016C38D301DC9062,
F5B1FC08016FFE3501DC9062,
+ F51D903F018149BD01DC9062,
F56570CF01722FA201DC9062,
+ F5C1D51901B88F9A01DC9062,
);
buildSettings = {
DYLIB_COMPATIBILITY_VERSION = 8.4;
@@ -1251,12 +1343,15 @@
LIBRARY_SEARCH_PATHS = "";
OPTIMIZATION_CFLAGS = "-O0";
OTHER_CFLAGS = "-DMAC_OSX_TCL -DMAC_OSX_TK -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 -DHAVE_TMPNAM=1 -DHAVE_WAITPID=1 -DNO_VALUES_H=1 -DNO_DLFCN_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_TERMIOS=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_TM_ZONE=1 -DHAVE_TM_GMTOFF=1 -DHAVE_ST_BLKSIZE=1 -DSTDC_HEADERS=1 -DNEED_MATHERR=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1";
- OTHER_LDFLAGS = "-seg1addr 0x350000";
+ OTHER_LDFLAGS = "-seg1addr 0x400000";
OTHER_LIBTOOL_FLAGS = "";
OTHER_REZFLAGS = "-i \"../../tcl/generic\" -i \"../generic\"";
PRINCIPAL_CLASS = "";
PRODUCT_NAME = Tk;
SECTORDER_FLAGS = "";
+ TK_MAJOR_VERSION = 8;
+ TK_MINOR_VERSION = 4;
+ TK_PATCH_LEVEL = a4;
WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
WRAPPER_EXTENSION = framework;
};
@@ -1486,6 +1581,7 @@ Copyright Apple Computer, Inc 2001</string>
files = (
F51D903E0181474301DC9062,
F537567E016C3ADB01DC9062,
+ F50D96130196176E01DC9062,
);
isa = PBXFrameworksBuildPhase;
name = "Frameworks & Libraries";
@@ -2324,18 +2420,24 @@ Copyright Apple Computer, Inc 2001</string>
fileRef = F53755CE016C389901DC9062;
isa = PBXBuildFile;
settings = {
+ ATTRIBUTES = (
+ );
};
};
F537566F016C3A1F01DC9062 = {
fileRef = F53755CF016C389901DC9062;
isa = PBXBuildFile;
settings = {
+ ATTRIBUTES = (
+ );
};
};
F5375670016C3A1F01DC9062 = {
fileRef = F53755D0016C389901DC9062;
isa = PBXBuildFile;
settings = {
+ ATTRIBUTES = (
+ );
};
};
F5375671016C3A1F01DC9062 = {
@@ -2406,6 +2508,7 @@ Copyright Apple Computer, Inc 2001</string>
};
F537567C016C3ADB01DC9062 = {
children = (
+ F50D96120196176E01DC9062,
F5875C7B016FEF1D01DC9062,
F537567D016C3ADB01DC9062,
);
@@ -2707,6 +2810,7 @@ Copyright Apple Computer, Inc 2001</string>
F53756A8016C4DD401DC9062,
F5875C7D016FEF1D01DC9062,
F53756A7016C4DD401DC9062,
+ F50D96140196176E01DC9062,
);
isa = PBXFrameworksBuildPhase;
name = "Frameworks & Libraries";
@@ -2995,6 +3099,19 @@ Copyright Apple Computer, Inc 2001</string>
settings = {
};
};
+ F5C1D51901B88F9A01DC9062 = {
+ buildActionMask = 2147483647;
+ files = (
+ );
+ generatedFileNames = (
+ );
+ isa = PBXShellScriptBuildPhase;
+ name = "Shell Script";
+ neededFileNames = (
+ );
+ shellPath = /bin/sh;
+ shellScript = "source buildConfig";
+ };
F5C88659017D625C01DC9062 = {
children = (
F5C8865A017D625C01DC9062,
diff --git a/macosx/tkMacOSXDefault.h b/macosx/tkMacOSXDefault.h
index fbeacd7..9faf5ac 100644
--- a/macosx/tkMacOSXDefault.h
+++ b/macosx/tkMacOSXDefault.h
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXDefault.h,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXDefault.h,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
#ifndef _TKMACDEFAULT
@@ -436,6 +436,7 @@
* Defaults for texts:
*/
+#define DEF_TEXT_AUTO_SEPARATORS "1"
#define DEF_TEXT_BG_COLOR NORMAL_BG
#define DEF_TEXT_BG_MONO WHITE
#define DEF_TEXT_BORDER_WIDTH "0"
@@ -470,6 +471,7 @@
#define DEF_TEXT_STATE "normal"
#define DEF_TEXT_TABS ""
#define DEF_TEXT_TAKE_FOCUS (char *) NULL
+#define DEF_TEXT_UNDO "0"
#define DEF_TEXT_WIDTH "80"
#define DEF_TEXT_WRAP "char"
#define DEF_TEXT_XSCROLL_COMMAND ""
diff --git a/macosx/tkMacOSXDialog.c b/macosx/tkMacOSXDialog.c
index 3d359eb..5de92e1 100644
--- a/macosx/tkMacOSXDialog.c
+++ b/macosx/tkMacOSXDialog.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXDialog.c,v 1.1.2.2 2001/10/24 06:00:04 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXDialog.c,v 1.1.2.3 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <Carbon/Carbon.h>
@@ -69,10 +69,14 @@ pascal void OpenEventProc(NavEventCallbackMessage callBackSelector,
NavCallBackUserData callBackUD );
static void InitFileDialogs();
static int NavServicesGetFile(Tcl_Interp *interp, OpenFileData *ofd,
- AEDesc *initialDesc, unsigned char *initialFile,
+ AEDesc *initialDescPtr,
+ unsigned char *initialFile, AEDescList *selectDescPtr,
StringPtr title, StringPtr message, int multiple, int isOpen);
-static int HandleInitialDirectory (Tcl_Interp *interp, char *initialDir, FSSpec *dirSpec,
- AEDesc *dirDescPtr);
+static int HandleInitialDirectory (Tcl_Interp *interp,
+ char *initialFile, char *initialDir,
+ FSRef *dirRef,
+ AEDescList *selectDescPtr,
+ AEDesc *dirDescPtr);
/*
* Have we initialized the file dialog subsystem
@@ -117,7 +121,6 @@ Tk_ChooseColorObjCmd(
Tk_Window parent;
char *title;
int i, picked, srcRead, dstWrote;
- long response;
OSErr err;
ColorPickerInfo cpinfo;
static int inited = 0;
@@ -254,8 +257,10 @@ Tk_GetOpenFileObjCmd(
Tk_Window parent;
Str255 message, title;
AEDesc initialDesc = {typeNull, NULL};
- FSSpec dirSpec;
+ FSRef dirRef;
AEDesc *initialPtr = NULL;
+ AEDescList selectDesc = {typeNull, NULL};
+ char *initialFile = NULL, *initialDir = NULL;
static char *openOptionStrings[] = {
"-defaultextension", "-filetypes",
"-initialdir", "-initialfile",
@@ -316,14 +321,10 @@ Tk_GetOpenFileObjCmd(
}
break;
case OPEN_INITDIR:
- choice = Tcl_GetStringFromObj(objv[i + 1], NULL);
- if (HandleInitialDirectory(interp, choice, &dirSpec,
- &initialDesc) != TCL_OK) {
- result = TCL_ERROR;
- goto end;
- }
+ initialDir = Tcl_GetStringFromObj(objv[i + 1], NULL);
break;
case OPEN_INITFILE:
+ initialFile = Tcl_GetStringFromObj(objv[i + 1], NULL);
break;
case OPEN_MESSAGE:
choice = Tcl_GetStringFromObj(objv[i + 1], &choiceLen);
@@ -356,16 +357,24 @@ Tk_GetOpenFileObjCmd(
break;
}
}
-
- if (initialDesc.descriptorType == typeFSS) {
+
+ if (HandleInitialDirectory(interp, initialFile, initialDir, &dirRef,
+ &selectDesc, &initialDesc) != TCL_OK) {
+ result = TCL_ERROR;
+ goto end;
+ }
+
+ if (initialDesc.descriptorType == typeFSRef) {
initialPtr = &initialDesc;
}
- result = NavServicesGetFile(interp, &ofd, initialPtr, NULL,
- title, message, multiple, OPEN_FILE);
+ result = NavServicesGetFile(interp, &ofd, initialPtr,
+ NULL, &selectDesc,
+ title, message, multiple, OPEN_FILE);
end:
TkFreeFileFilters(&ofd.fl);
AEDisposeDesc(&initialDesc);
+ AEDisposeDesc(&selectDesc);
return result;
}
@@ -398,7 +407,7 @@ Tk_GetSaveFileObjCmd(
Tk_Window parent;
AEDesc initialDesc = {typeNull, NULL};
AEDesc *initialPtr = NULL;
- FSSpec dirSpec;
+ FSRef dirRef;
Str255 title, message;
OpenFileData ofd;
static char *saveOptionStrings[] = {
@@ -445,8 +454,8 @@ Tk_GetSaveFileObjCmd(
break;
case SAVE_INITDIR:
choice = Tcl_GetStringFromObj(objv[i + 1], NULL);
- if (HandleInitialDirectory(interp, choice, &dirSpec,
- &initialDesc) != TCL_OK) {
+ if (HandleInitialDirectory(interp, NULL, choice, &dirRef,
+ NULL, &initialDesc) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
@@ -491,10 +500,10 @@ Tk_GetSaveFileObjCmd(
TkInitFileFilters(&ofd.fl);
ofd.usePopup = 0;
- if (initialDesc.descriptorType == typeFSS) {
+ if (initialDesc.descriptorType == typeFSRef) {
initialPtr = &initialDesc;
}
- result = NavServicesGetFile(interp, &ofd, initialPtr, initialFile,
+ result = NavServicesGetFile(interp, &ofd, initialPtr, initialFile, NULL,
title, message, false, SAVE_FILE);
end:
@@ -534,7 +543,7 @@ Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
Tk_Window parent;
AEDesc initialDesc = {typeNull, NULL};
AEDesc *initialPtr = NULL;
- FSSpec dirSpec;
+ FSRef dirRef;
Str255 message, title;
int srcRead, dstWrote;
OpenFileData ofd;
@@ -577,8 +586,8 @@ Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
switch (index) {
case CHOOSE_INITDIR:
choice = Tcl_GetStringFromObj(objv[i + 1], NULL);
- if (HandleInitialDirectory(interp, choice, &dirSpec,
- &initialDesc) != TCL_OK) {
+ if (HandleInitialDirectory(interp, NULL, choice, &dirRef,
+ NULL, &initialDesc) != TCL_OK) {
result = TCL_ERROR;
goto end;
}
@@ -612,10 +621,10 @@ Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
ofd.usePopup = 0;
- if (initialDesc.descriptorType == typeFSS) {
+ if (initialDesc.descriptorType == typeFSRef) {
initialPtr = &initialDesc;
}
- result = NavServicesGetFile(interp, &ofd, initialPtr, NULL,
+ result = NavServicesGetFile(interp, &ofd, initialPtr, NULL, NULL,
title, message, false, CHOOSE_FOLDER);
end:
@@ -627,42 +636,74 @@ Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
int
HandleInitialDirectory (
Tcl_Interp *interp,
- char *initialDir,
- FSSpec *dirSpec,
+ char *initialFile,
+ char *initialDir,
+ FSRef *dirRef,
+ AEDescList *selectDescPtr,
AEDesc *dirDescPtr)
{
- Tcl_DString ds;
- long dirID;
- OSErr err;
- Boolean isDirectory;
- Str255 dir;
- int srcRead, dstWrote;
-
- fprintf(stderr,"HandleInitialDir\n");
- if (Tcl_TranslateFileName(interp, initialDir, &ds) == NULL) {
+ Tcl_DString ds;
+ OSErr err;
+ Boolean isDirectory;
+ char *dirName = NULL;
+ int result = TCL_OK;
+
+ if (initialDir != NULL) {
+ dirName = Tcl_TranslateFileName(interp, initialDir, &ds);
+ if (dirName == NULL) {
return TCL_ERROR;
}
- Tcl_UtfToExternal(NULL, NULL, Tcl_DStringValue(&ds),
- Tcl_DStringLength(&ds), 0, NULL, StrBody(dir), 255,
- &srcRead, &dstWrote, NULL);
- StrLength(dir) = (unsigned char) dstWrote;
- Tcl_DStringFree(&ds);
-
- err = FSpLocationFromPath(StrLength(dir), StrBody(dir), dirSpec);
+
+ err = FSPathMakeRef(dirName,
+ dirRef, &isDirectory);
+
if (err != noErr) {
- Tcl_AppendResult(interp, "bad directory \"",
- initialDir, "\"", NULL);
- return TCL_ERROR;
+ Tcl_AppendResult(interp, "bad directory \"",
+ initialDir, "\"", NULL);
+ result = TCL_ERROR;
+ goto end;
}
- err = FSpGetDirectoryID(dirSpec, &dirID, &isDirectory);
- if ((err != noErr) || !isDirectory) {
- Tcl_AppendResult(interp, "bad directory \"",
- initialDir, "\"", NULL);
+ if (!isDirectory) {
+ Tcl_AppendResult(interp, "-intialdir \"",
+ initialDir, " is a file, not a directory.\"", NULL);
+ result = TCL_ERROR;
+ goto end;
+ }
+
+ AECreateDesc(typeFSRef, dirRef, sizeof(*dirRef), dirDescPtr);
+ }
+
+ if (initialFile != NULL && selectDescPtr != NULL) {
+ FSRef fileRef;
+ AEDesc fileDesc;
+ char *namePtr;
+
+ if (initialDir != NULL) {
+ Tcl_DStringAppend(&ds, "/", 1);
+ Tcl_DStringAppend(&ds, initialFile, -1);
+ namePtr = Tcl_DStringValue(&ds);
+ } else {
+ namePtr = initialFile;
+ }
+
+ AECreateList(NULL, 0, false, selectDescPtr);
+
+ err = FSPathMakeRef(namePtr, &fileRef, &isDirectory);
+ if (err != noErr) {
+ Tcl_AppendResult(interp, "bad initialfile \"", initialFile,
+ "\" file does not exist.", NULL);
return TCL_ERROR;
}
+ AECreateDesc(typeFSRef, &fileRef, sizeof(fileRef), &fileDesc);
+ AEPutDesc(selectDescPtr, 1, &fileDesc);
+ AEDisposeDesc(&fileDesc);
+ }
- AECreateDesc( typeFSS, dirSpec, sizeof(*dirSpec), dirDescPtr);
- return TCL_OK;
+end:
+ if (dirName != NULL) {
+ Tcl_DStringFree(&ds);
+ }
+ return result;
}
static void
@@ -677,8 +718,9 @@ static int
NavServicesGetFile(
Tcl_Interp *interp,
OpenFileData *ofdPtr,
- AEDesc *initialDesc,
+ AEDesc *initialDescPtr,
unsigned char *initialFile,
+ AEDescList *selectDescPtr,
StringPtr title,
StringPtr message,
int multiple,
@@ -790,7 +832,16 @@ NavServicesGetFile(
dialogRef = NULL;
}
}
+
if (dialogRef) {
+ if (initialDescPtr != NULL) {
+ NavCustomControl (dialogRef, kNavCtlSetLocation, initialDescPtr);
+ }
+ if ((selectDescPtr != NULL)
+ && (selectDescPtr->descriptorType != typeNull)) {
+ NavCustomControl(dialogRef, kNavCtlSetSelection, &selectDescPtr);
+ }
+
if ((err = NavDialogRun(dialogRef)) != noErr ){
fprintf(stderr,"NavDialogRun failed, %d\n", err );
} else {
diff --git a/macosx/tkMacOSXDraw.c b/macosx/tkMacOSXDraw.c
index fb2611d..f38e31f 100644
--- a/macosx/tkMacOSXDraw.c
+++ b/macosx/tkMacOSXDraw.c
@@ -11,14 +11,13 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXDraw.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXDraw.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkInt.h"
#include "X11/X.h"
#include "X11/Xlib.h"
#include <stdio.h>
-#include <tcl.h>
#include <Carbon/Carbon.h>
#include "tkMacOSXInt.h"
@@ -28,6 +27,9 @@
#ifndef PI
# define PI 3.14159265358979323846
#endif
+#define RGBFLOATRED( c ) (float)((float)(c.red) / 65535.0)
+#define RGBFLOATGREEN( c ) (float)((float)(c.green) / 65535.0)
+#define RGBFLOATBLUE( c ) (float)((float)(c.blue) / 65535.0)
/*
* Temporary regions that can be reused.
@@ -38,11 +40,17 @@ static RgnHandle tmpRgn2 = NULL;
static PixPatHandle gPenPat = NULL;
+static int useCGDrawing = 0;
+
/*
* Prototypes for functions used only in this file.
*/
static unsigned char InvertByte _ANSI_ARGS_((unsigned char data));
-
+
+void TkMacOSXSetUpCGContext(MacDrawable *macWin,
+ CGrafPtr destPort, GC gc, CGContextRef *contextPtr);
+void TkMacOSXReleaseCGContext(MacDrawable *macWin, CGrafPtr destPort,
+ CGContextRef *context);
/*
*----------------------------------------------------------------------
*
@@ -517,24 +525,44 @@ XDrawLines(
TkMacOSXSetUpClippingRgn(d);
- TkMacOSXSetUpGraphicsPort(gc, destPort);
-
- ShowPen();
-
- PenPixPat(gPenPat);
- MoveTo((short) (macWin->xOff + points[0].x),
- (short) (macWin->yOff + points[0].y));
- for (i = 1; i < npoints; i++) {
+ if (useCGDrawing) {
+ CGContextRef outContext;
+
+ TkMacOSXSetUpCGContext(macWin, destPort, gc, &outContext);
+
+ CGContextBeginPath(outContext);
+ CGContextMoveToPoint(outContext, (float) points[0].x,
+ (float) points[0].y);
if (mode == CoordModeOrigin) {
- LineTo((short) (macWin->xOff + points[i].x),
- (short) (macWin->yOff + points[i].y));
- } else {
- Line((short) (macWin->xOff + points[i].x),
- (short) (macWin->yOff + points[i].y));
+ for (i = 1; i < npoints; i++) {
+ CGContextAddLineToPoint(outContext,
+ (float) points[i].x,
+ (float) points[i].y);
+ }
}
- }
- HidePen();
+
+ CGContextStrokePath(outContext);
+ TkMacOSXReleaseCGContext(macWin, destPort, &outContext);
+ } else {
+ TkMacOSXSetUpGraphicsPort(gc, destPort);
+
+ ShowPen();
+
+ PenPixPat(gPenPat);
+ MoveTo((short) (macWin->xOff + points[0].x),
+ (short) (macWin->yOff + points[0].y));
+ for (i = 1; i < npoints; i++) {
+ if (mode == CoordModeOrigin) {
+ LineTo((short) (macWin->xOff + points[i].x),
+ (short) (macWin->yOff + points[i].y));
+ } else {
+ Line((short) (macWin->xOff + points[i].x),
+ (short) (macWin->yOff + points[i].y));
+ }
+ }
+ HidePen();
+ }
SetGWorld(saveWorld, saveDevice);
}
@@ -576,19 +604,37 @@ void XDrawSegments(
TkMacOSXSetUpClippingRgn(d);
- TkMacOSXSetUpGraphicsPort(gc, destPort);
+ if (useCGDrawing) {
+ CGContextRef outContext;
- ShowPen();
+ TkMacOSXSetUpCGContext(macWin, destPort, gc, &outContext);
- PenPixPat(gPenPat);
- for (i = 0; i < nsegments; i++) {
- MoveTo((short) (macWin->xOff + segments[i].x1),
- (short) (macWin->yOff + segments[i].y1));
- LineTo((short) (macWin->xOff + segments[i].x2),
- (short) (macWin->yOff + segments[i].y2));
- }
- HidePen();
+ CGContextBeginPath(outContext);
+ for (i = 0; i < nsegments; i++) {
+ CGContextMoveToPoint(outContext,
+ (float) segments[i].x1,
+ (float) segments[i].y1);
+ CGContextAddLineToPoint (outContext,
+ (float) segments[i].x2,
+ (float) segments[i].y2);
+ }
+ CGContextStrokePath(outContext);
+ TkMacOSXReleaseCGContext(macWin, destPort, &outContext);
+ } else {
+ TkMacOSXSetUpGraphicsPort(gc, destPort);
+
+ ShowPen();
+ PenPixPat(gPenPat);
+ for (i = 0; i < nsegments; i++) {
+ MoveTo((short) (macWin->xOff + segments[i].x1),
+ (short) (macWin->yOff + segments[i].y1));
+ LineTo((short) (macWin->xOff + segments[i].x2),
+ (short) (macWin->yOff + segments[i].y2));
+ }
+ HidePen();
+ }
+
SetGWorld(saveWorld, saveDevice);
}
@@ -633,28 +679,49 @@ XFillPolygon(
TkMacOSXSetUpClippingRgn(d);
- TkMacOSXSetUpGraphicsPort(gc, destPort);
-
- PenNormal();
- polygon = OpenPoly();
-
- MoveTo((short) (macWin->xOff + points[0].x),
- (short) (macWin->yOff + points[0].y));
- for (i = 1; i < npoints; i++) {
- if (mode == CoordModePrevious) {
- Line((short) (macWin->xOff + points[i].x),
- (short) (macWin->yOff + points[i].y));
- } else {
- LineTo((short) (macWin->xOff + points[i].x),
- (short) (macWin->yOff + points[i].y));
+ if (useCGDrawing) {
+ CGContextRef outContext;
+
+ TkMacOSXSetUpCGContext(macWin, destPort, gc, &outContext);
+
+ CGContextBeginPath(outContext);
+ CGContextMoveToPoint(outContext, (float) (points[0].x),
+ (float) (points[0].y));
+ for (i = 1; i < npoints; i++) {
+
+ if (mode == CoordModePrevious) {
+ CGContextAddLineToPoint(outContext, (float) points[i].x,
+ (float) points[i].y);
+ } else {
+ }
+ }
+ //CGContextStrokePath(outContext);
+ CGContextFillPath(outContext);
+ TkMacOSXReleaseCGContext(macWin, destPort, &outContext);
+ } else {
+ TkMacOSXSetUpGraphicsPort(gc, destPort);
+
+ PenNormal();
+ polygon = OpenPoly();
+
+ MoveTo((short) (macWin->xOff + points[0].x),
+ (short) (macWin->yOff + points[0].y));
+ for (i = 1; i < npoints; i++) {
+ if (mode == CoordModePrevious) {
+ Line((short) (macWin->xOff + points[i].x),
+ (short) (macWin->yOff + points[i].y));
+ } else {
+ LineTo((short) (macWin->xOff + points[i].x),
+ (short) (macWin->yOff + points[i].y));
+ }
}
+
+ ClosePoly();
+
+ FillCPoly(polygon, gPenPat);
+
+ KillPoly(polygon);
}
-
- ClosePoly();
-
- FillCPoly(polygon, gPenPat);
-
- KillPoly(polygon);
SetGWorld(saveWorld, saveDevice);
}
@@ -815,7 +882,15 @@ XDrawArc(
CGrafPtr saveWorld;
GDHandle saveDevice;
GWorldPtr destPort;
+ float fX = (float) x,
+ fY = (float) y,
+ fWidth = (float) width,
+ fHeight = (float) height;
+ if (width == 0 || height == 0) {
+ return;
+ }
+
destPort = TkMacOSXGetDrawablePort(d);
display->request++;
@@ -824,20 +899,52 @@ XDrawArc(
TkMacOSXSetUpClippingRgn(d);
- TkMacOSXSetUpGraphicsPort(gc, destPort);
+ if (useCGDrawing) {
+ CGContextRef outContext;
+ CGAffineTransform transform;
+ int clockwise = angle1 ? 0 : 1;
- theRect.left = (short) (macWin->xOff + x);
- theRect.top = (short) (macWin->yOff + y);
- theRect.right = (short) (theRect.left + width);
- theRect.bottom = (short) (theRect.top + height);
- start = (short) (90 - (angle1 / 64));
- extent = (short) (-(angle2 / 64));
+ TkMacOSXSetUpCGContext(macWin, destPort, gc, &outContext);
- ShowPen();
- PenPixPat(gPenPat);
- FrameArc(&theRect, start, extent);
- HidePen();
+ CGContextBeginPath(outContext);
+
+ /*
+ * If we are drawing an oval, we have to squash the coordinate
+ * system before drawing, since CGContextAddArcToPoint only draws
+ * circles.
+ */
+
+ CGContextSaveGState(outContext);
+ transform = CGAffineTransformMakeTranslation((float) (x + width/2),
+ (float) (y + height/2));
+ transform = CGAffineTransformScale(transform, 1.0, fHeight/fWidth);
+ CGContextConcatCTM(outContext, transform);
+
+ CGContextAddArc(outContext, 0.0, 0.0,
+ (float) width/2,
+ (float) angle1, (float) angle2, clockwise);
+ CGContextRestoreGState(outContext);
+
+ CGContextStrokePath(outContext);
+ TkMacOSXReleaseCGContext(macWin, destPort, &outContext);
+ } else {
+ TkMacOSXSetUpGraphicsPort(gc, destPort);
+
+
+ theRect.left = (short) (macWin->xOff + x);
+ theRect.top = (short) (macWin->yOff + y);
+ theRect.right = (short) (theRect.left + width);
+ theRect.bottom = (short) (theRect.top + height);
+ start = (short) (90 - (angle1 / 64));
+ extent = (short) (-(angle2 / 64));
+
+ ShowPen();
+ PenPixPat(gPenPat);
+ FrameArc(&theRect, start, extent);
+ HidePen();
+ }
+
SetGWorld(saveWorld, saveDevice);
}
@@ -1299,7 +1406,116 @@ TkMacOSXSetUpGraphicsPort(
*/
}
}
-
+ /*
+ *----------------------------------------------------------------------
+ *
+ * TkMacOSXSetUpGraphicsPort --
+ *
+ * Set up the graphics port from the given GC.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * The current port is adjusted.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+TkMacOSXSetUpCGContext(
+ MacDrawable *macWin,
+ CGrafPtr destPort,
+ GC gc,
+ CGContextRef *contextPtr) /* GC to apply to current port. */
+{
+ RGBColor macColor;
+ CGContextRef outContext;
+ OSStatus err;
+ Rect boundsRect;
+ CGAffineTransform coordsTransform;
+
+ err = QDBeginCGContext(destPort, contextPtr);
+ outContext = *contextPtr;
+
+ CGContextSaveGState(outContext);
+
+ GetPortBounds(destPort, &boundsRect);
+
+ CGContextResetCTM(outContext);
+ coordsTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0,
+ (float)(boundsRect.bottom - boundsRect.top));
+ CGContextConcatCTM(outContext, coordsTransform);
+
+ if (macWin->clipRgn != NULL) {
+ ClipCGContextToRegion(outContext, &boundsRect, macWin->clipRgn);
+ } else {
+ RgnHandle clipRgn = NewRgn();
+ GetPortClipRegion(destPort, clipRgn);
+ ClipCGContextToRegion(outContext, &boundsRect,
+ clipRgn);
+ DisposeRgn(clipRgn);
+ }
+
+ /* Now offset the CTM to the subwindow offset */
+
+ CGContextTranslateCTM(outContext, macWin->xOff, macWin->yOff);
+
+ if (TkSetMacColor(gc->foreground, &macColor) == true) {
+ CGContextSetRGBStrokeColor(outContext, RGBFLOATRED(macColor),
+ RGBFLOATGREEN(macColor),
+ RGBFLOATBLUE(macColor), 1.0);
+ }
+ if (TkSetMacColor(gc->background, &macColor) == true) {
+ CGContextSetRGBFillColor(outContext, RGBFLOATRED(macColor),
+ RGBFLOATGREEN(macColor),
+ RGBFLOATBLUE(macColor), 1.0);
+ }
+
+ if(gc->function == GXxor) {
+ }
+
+ CGContextSetLineWidth(outContext, (float) gc->line_width);
+
+ if (gc->line_style != LineSolid) {
+ unsigned char *p = (unsigned char *) &(gc->dashes);
+ /*
+ * Here the dash pattern should be set in the drawing,
+ * environment, but I don't know how to do that for the Mac.
+ *
+ * p[] is an array of unsigned chars containing the dash list.
+ * A '\0' indicates the end of this list.
+ *
+ * Someone knows how to implement this? If you have a more
+ * complete implementation of SetUpGraphicsPort() for
+ * the Mac (or for Windows), please let me know.
+ *
+ * Jan Nijtmans
+ * CMG Arnhem, B.V.
+ * email: j.nijtmans@chello.nl (private)
+ * jan.nijtmans@cmg.nl (work)
+ * url: http://purl.oclc.org/net/nijtmans/
+ *
+ * FIXME:
+ * This is not possible with QuickDraw line drawing, we either
+ * have to convert all line drawings to regions, or, on Mac OS X
+ * we can use CG to draw our lines instead of QuickDraw.
+ */
+ }
+}
+
+void
+TkMacOSXReleaseCGContext(
+ MacDrawable *macWin,
+ CGrafPtr destPort,
+ CGContextRef *outContext)
+{
+ CGContextResetCTM(*outContext);
+ CGContextRestoreGState(*outContext);
+ QDEndCGContext(destPort, outContext);
+
+}
+
/*
*----------------------------------------------------------------------
*
diff --git a/macosx/tkMacOSXEvent.c b/macosx/tkMacOSXEvent.c
index 9ad448c..fe22933 100644
--- a/macosx/tkMacOSXEvent.c
+++ b/macosx/tkMacOSXEvent.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: tkMacOSXEvent.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXEvent.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <stdio.h>
@@ -22,8 +22,6 @@
#include <sys/types.h>
#include <sys/ioctl.h>
-#include <tcl.h>
-
#include "tkMacOSXInt.h"
#include "tkMacOSXEvent.h"
#include "tkMacOSXDebug.h"
diff --git a/macosx/tkMacOSXHLEvents.c b/macosx/tkMacOSXHLEvents.c
index bd26954..f0a95ab 100644
--- a/macosx/tkMacOSXHLEvents.c
+++ b/macosx/tkMacOSXHLEvents.c
@@ -10,10 +10,9 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXHLEvents.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXHLEvents.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
-#include "tcl.h"
#include "tkMacOSXUtil.h"
#include "tkMacOSXInt.h"
diff --git a/macosx/tkMacOSXInit.c b/macosx/tkMacOSXInit.c
index e9ee26b..f78774a 100644
--- a/macosx/tkMacOSXInit.c
+++ b/macosx/tkMacOSXInit.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXInit.c,v 1.1.2.3 2002/01/22 01:28:18 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXInit.c,v 1.1.2.4 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -137,8 +137,8 @@ TkpGetAppName(interp, namePtr)
void
TkpDisplayWarning(msg, title)
- char *msg; /* Message to be displayed. */
- char *title; /* Title of warning. */
+ CONST char *msg; /* Message to be displayed. */
+ CONST char *title; /* Title of warning. */
{
Tcl_Channel errChannel = Tcl_GetStdChannel(TCL_STDERR);
if (errChannel) {
diff --git a/macosx/tkMacOSXKeyEvent.c b/macosx/tkMacOSXKeyEvent.c
index 44a0193..f72873a 100644
--- a/macosx/tkMacOSXKeyEvent.c
+++ b/macosx/tkMacOSXKeyEvent.c
@@ -51,7 +51,6 @@
* license.
*/
-#include <tcl.h>
#include "tkMacOSXInt.h"
#include "tkPort.h"
#include "tkMacOSXEvent.h"
diff --git a/macosx/tkMacOSXMenu.c b/macosx/tkMacOSXMenu.c
index abe0b6d..713fcba 100644
--- a/macosx/tkMacOSXMenu.c
+++ b/macosx/tkMacOSXMenu.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXMenu.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXMenu.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkMacOSXInt.h"
#include "tkMenuButton.h"
@@ -2008,19 +2008,20 @@ TkMacOSXDispatchMenuEvent(
} else {
Tcl_HashEntry *commandEntryPtr =
Tcl_FindHashEntry(&commandTable, (char *) ((int)menuID));
- TkMenu *menuPtr = (TkMenu *) Tcl_GetHashValue(commandEntryPtr);
- if ((currentAppleMenuID == menuID)
- && (index > menuPtr->numEntries + 1)) {
- Str255 itemText;
-
- GetMenuItemText(GetMenuHandle(menuID), index, itemText);
-#ifdef STUBBED_OUT_FOR_OSX
- OpenDeskAcc(itemText);
-#endif
- result = TCL_OK;
- } else {
- result = TkInvokeMenu(menuPtr->interp, menuPtr, index - 1);
- }
+ if (commandEntryPtr != NULL) {
+ TkMenu *menuPtr = (TkMenu *) Tcl_GetHashValue(commandEntryPtr);
+ if ((currentAppleMenuID == menuID)
+ && (index > menuPtr->numEntries + 1)) {
+ Str255 itemText;
+
+ GetMenuItemText(GetMenuHandle(menuID), index, itemText);
+ result = TCL_OK;
+ } else {
+ result = TkInvokeMenu(menuPtr->interp, menuPtr, index - 1);
+ }
+ } else {
+ return TCL_ERROR;
+ }
}
}
return result;
diff --git a/macosx/tkMacOSXMenus.c b/macosx/tkMacOSXMenus.c
index 59411e4..0f90002 100644
--- a/macosx/tkMacOSXMenus.c
+++ b/macosx/tkMacOSXMenus.c
@@ -10,10 +10,9 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXMenus.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXMenus.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
-#include "tcl.h"
#include "tk.h"
#include "tkInt.h"
#include "tkMacOSXInt.h"
@@ -96,16 +95,6 @@ TkMacOSXHandleMenuSelect(
}
break;
}
-#ifdef STUBBED_OUT_FOR_OSX
- default:
- {
- Str255 name;
- GetItem(tkAppleMenu, theItem, name);
- HiliteMenu(0);
- OpenDeskAcc(name);
- return;
- }
-#endif
}
break;
case kFileMenu:
@@ -148,7 +137,7 @@ TkMacOSXHandleMenuSelect(
* Finally we unhighlight the menu.
*/
HiliteMenu(0);
-} /* TkMacOSXHandleMenuSelect */
+}
/*
*----------------------------------------------------------------------
diff --git a/macosx/tkMacOSXMouseEvent.c b/macosx/tkMacOSXMouseEvent.c
index a0bb51a..71c4555 100644
--- a/macosx/tkMacOSXMouseEvent.c
+++ b/macosx/tkMacOSXMouseEvent.c
@@ -55,7 +55,6 @@
#include <X11/X.h>
#include <X11/Xlib.h>
#include "tkMacOSXEvent.h"
-#include <tcl.h>
#include "tkMacOSXInt.h"
#include "tkPort.h"
#include "tkMacOSXDebug.h"
diff --git a/macosx/tkMacOSXWindowEvent.c b/macosx/tkMacOSXWindowEvent.c
index 20cc294..d21d1f1 100644
--- a/macosx/tkMacOSXWindowEvent.c
+++ b/macosx/tkMacOSXWindowEvent.c
@@ -51,7 +51,6 @@
* license.
*/
-#include <tcl.h>
#include "tkMacOSXInt.h"
#include "tkPort.h"
#include "tkMacOSXWm.h"
diff --git a/macosx/tkMacOSXWm.c b/macosx/tkMacOSXWm.c
index 4e4c9b4..d4afe64 100644
--- a/macosx/tkMacOSXWm.c
+++ b/macosx/tkMacOSXWm.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: tkMacOSXWm.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXWm.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include <Carbon/Carbon.h>
@@ -1297,6 +1297,99 @@ Tk_WmCmd(
}
wmPtr->flags |= WM_UPDATE_SIZE_HINTS;
goto updateGeom;
+ } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
+ && (length >= 2)) {
+ TkWindow **windows, **window_ptr;
+
+ if ((argc != 3) && (argc != 5)) {
+ Tcl_AppendResult(interp, "wrong # arguments: must be \"",
+ argv[0],
+ " stackorder window ?isabove|isbelow? ?window?\"",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (argc == 3) {
+ windows = TkWmStackorderToplevel(winPtr);
+ if (windows == NULL) {
+ panic("TkWmStackorderToplevel failed");
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ Tcl_AppendElement(interp, (*window_ptr)->pathName);
+ }
+ ckfree((char *) windows);
+ return TCL_OK;
+ }
+ } else {
+ TkWindow *winPtr2;
+ int index1=-1, index2=-1, result;
+
+ winPtr2 = (TkWindow *) Tk_NameToWindow(interp, argv[4], tkwin);
+ if (winPtr2 == NULL) {
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsTopLevel(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't a top-level window", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr)) {
+ Tcl_AppendResult(interp, "window \"", winPtr->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Lookup stacking order of all toplevels that are children
+ * of "." and find the position of winPtr and winPtr2
+ * in the stacking order.
+ */
+
+ windows = TkWmStackorderToplevel(winPtr->mainPtr->winPtr);
+
+ if (windows == NULL) {
+ Tcl_AppendResult(interp, "TkWmStackorderToplevel failed",
+ (char *) NULL);
+ return TCL_ERROR;
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ if (*window_ptr == winPtr)
+ index1 = (window_ptr - windows);
+ if (*window_ptr == winPtr2)
+ index2 = (window_ptr - windows);
+ }
+ if (index1 == -1)
+ panic("winPtr window not found");
+ if (index2 == -1)
+ panic("winPtr2 window not found");
+
+ ckfree((char *) windows);
+ }
+
+ c = argv[3][0];
+ length = strlen(argv[3]);
+ if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isabove", length) == 0)) {
+ result = index1 > index2;
+ } else if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isbelow", length) == 0)) {
+ result = index1 < index2;
+ } else {
+ Tcl_AppendResult(interp, "bad argument \"", argv[3],
+ "\": must be isabove or isbelow", (char *) NULL);
+ return TCL_ERROR;
+ }
+ Tcl_SetIntObj(Tcl_GetObjResult(interp), result);
+ return TCL_OK;
+ }
} else if ((c == 's') && (strncmp(argv[1], "state", length) == 0)
&& (length >= 2)) {
if ((argc < 3) || (argc > 4)) {
@@ -4203,4 +4296,133 @@ TkpChangeFocus(winPtr, force)
*/
return NextRequest(winPtr->display);
-} \ No newline at end of file
+}
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkWmStackorderToplevelWrapperMap --
+ *
+ * This procedure will create a table that maps the reparent wrapper
+ * X id for a toplevel to the TkWindow structure that is wraps.
+ * Tk keeps track of a mapping from the window X id to the TkWindow
+ * structure but that does us no good here since we only get the X
+ * id of the wrapper window. Only those toplevel windows that are
+ * mapped have a position in the stacking order.
+ *
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Adds entries to the passed hashtable.
+ *
+ *----------------------------------------------------------------------
+ */
+void
+TkWmStackorderToplevelWrapperMap(winPtr, table)
+ TkWindow *winPtr; /* TkWindow to recurse on */
+ Tcl_HashTable *table; /* Maps mac window to TkWindow */
+{
+ TkWindow *childPtr;
+ Tcl_HashEntry *hPtr;
+ void *wrapper;
+ int newEntry;
+
+ if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {
+ wrapper = (void *) TkMacOSXGetDrawablePort(winPtr->window);
+
+ hPtr = Tcl_CreateHashEntry(table,
+ (char *) wrapper, &newEntry);
+ Tcl_SetHashValue(hPtr, winPtr);
+ }
+
+ for (childPtr = winPtr->childList; childPtr != NULL;
+ childPtr = childPtr->nextPtr) {
+ TkWmStackorderToplevelWrapperMap(childPtr, table);
+ }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkWmStackorderToplevel --
+ *
+ * This procedure returns the stack order of toplevel windows.
+ *
+ * Results:
+ * An array of pointers to tk window objects in stacking order
+ * or else NULL if there was an error.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+TkWindow **
+TkWmStackorderToplevel(parentPtr)
+ TkWindow *parentPtr; /* Parent toplevel window. */
+{
+ WindowRef frontWindow;
+ TkWindow *childWinPtr, **windows, **window_ptr;
+ Tcl_HashTable table;
+ Tcl_HashEntry *hPtr;
+ Tcl_HashSearch search;
+
+ /*
+ * Map mac windows to a TkWindow of the wrapped toplevel.
+ */
+
+ Tcl_InitHashTable(&table, TCL_ONE_WORD_KEYS);
+ TkWmStackorderToplevelWrapperMap(parentPtr, &table);
+
+ windows = (TkWindow **) ckalloc((table.numEntries+1)
+ * sizeof(TkWindow *));
+
+ /*
+ * Special cases: If zero or one toplevels were mapped
+ * there is no need to enumerate Windows.
+ */
+
+ switch (table.numEntries) {
+ case 0:
+ windows[0] = NULL;
+ goto done;
+ case 1:
+ hPtr = Tcl_FirstHashEntry(&table, &search);
+ windows[0] = (TkWindow *) Tcl_GetHashValue(hPtr);
+ windows[1] = NULL;
+ goto done;
+ }
+
+ frontWindow = (WindowRef) FrontWindow();
+
+ if (frontWindow == NULL) {
+ ckfree((char *) windows);
+ windows = NULL;
+ } else {
+ window_ptr = windows + table.numEntries;
+ *window_ptr-- = NULL;
+ while (frontWindow != NULL) {
+ hPtr = Tcl_FindHashEntry(&table, (char *) frontWindow);
+ if (hPtr != NULL) {
+ childWinPtr = (TkWindow *) Tcl_GetHashValue(hPtr);
+ *window_ptr-- = childWinPtr;
+ }
+ frontWindow = GetNextWindow(frontWindow);
+ }
+ if (window_ptr != (windows-1))
+ panic("num matched toplevel windows does not equal num children");
+ }
+
+ done:
+ Tcl_DeleteHashTable(&table);
+ return windows;
+}
+
+
+
+
+
diff --git a/macosx/tkMacOSXXStubs.c b/macosx/tkMacOSXXStubs.c
index a8bee2e..ea7eaf0 100644
--- a/macosx/tkMacOSXXStubs.c
+++ b/macosx/tkMacOSXXStubs.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: tkMacOSXXStubs.c,v 1.1.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkMacOSXXStubs.c,v 1.1.2.2 2002/02/05 02:25:17 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -23,8 +23,6 @@
#include <pthread.h>
#include <sys/types.h>
-#include <tcl.h>
-
#include <X11/Xatom.h>
#include <Carbon/Carbon.h>
@@ -92,7 +90,7 @@ int _XInitImageFuncPtrs _ANSI_ARGS_((XImage *image));
TkDisplay *
TkpOpenDisplay(
- char *display_name)
+ CONST char *display_name)
{
Display *display;
Screen *screen;
@@ -843,10 +841,10 @@ XCreateIC(
*----------------------------------------------------------------------
*/
-char *
+CONST char *
TkGetDefaultScreenName(
Tcl_Interp *interp, /* Not used. */
- char *screenName) /* If NULL, use default string. */
+ CONST char *screenName) /* If NULL, use default string. */
{
#if 0
if ((screenName == NULL) || (screenName[0] == '\0')) {
diff --git a/tests/button.test b/tests/button.test
index 543f595..9ff8011 100644
--- a/tests/button.test
+++ b/tests/button.test
@@ -7,7 +7,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: button.test,v 1.9 2000/05/25 16:57:24 ericm Exp $
+# RCS: @(#) $Id: button.test,v 1.9.6.1 2002/02/05 02:25:17 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -749,7 +749,9 @@ test button-11.1 {ButtonTextVarProc procedure} {
} {Label Label New}
test button-11.2 {ButtonTextVarProc procedure} {
eval destroy [winfo children .]
- set x Label
+ # Windows buttons have a default min width, so we have to
+ # set this to be longer to force the wider button.
+ set x ExtraLongLabel
button .b1 -textvariable x
set old [winfo reqwidth .b1]
set x New
diff --git a/tests/defs.tcl b/tests/defs.tcl
index bc5f1c2..c447708 100644
--- a/tests/defs.tcl
+++ b/tests/defs.tcl
@@ -11,7 +11,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: defs.tcl,v 1.7 1999/12/14 06:53:12 hobbs Exp $
+# RCS: @(#) $Id: defs.tcl,v 1.7.8.1 2002/02/05 02:25:17 wolfsuit Exp $
# Initialize wish shell
@@ -96,7 +96,6 @@ namespace eval tcltest {
variable ::tcltest::mainThread 1
if {[info commands testthread] != {}} {
- puts "Tk with threads enabled is known to have problems with X"
set ::tcltest::mainThread [testthread names]
}
}
diff --git a/tests/event.test b/tests/event.test
index 911f1a5..5cfe669 100644
--- a/tests/event.test
+++ b/tests/event.test
@@ -6,7 +6,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: event.test,v 1.6.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: event.test,v 1.6.2.2 2002/02/05 02:25:17 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -62,8 +62,78 @@ return
+test event-click-drag-1.2 { click and drag in an entry widget, this
+ tests tkEntryMouseSelect in entry.tcl } {
+ destroy .t
+ set t [toplevel .t]
+ set e [entry $t.e]
+ pack $e
+ tkwait visibility $e
+ focus -force $e
+ _keypress_string $e "A Tcl/Tk selection!"
+ set anchor 6
+ set selend 18
+ # Save the position of the insert cursor
+ lappend result [$e index insert]
+
+ # Now drag until selend is highlighted, then click up
+
+ set current $anchor
+ while {$current <= $selend} {
+ foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
+ event generate $e <B1-Motion> -x $current_x -y $current_y
+ incr current
+ _pause 50
+ }
+
+ event generate $e <ButtonRelease-1> -x $current_x -y $current_y
+ _pause 200
+
+ # Save the position of the insert cursor
+ lappend result [$e index insert]
+
+ # Save the highlighted text
+ lappend result [selection get]
+
+ # Now click and click and drag to the left, over "Tcl/Tk selection"
+
+ event generate $e <ButtonPress-1> -x $current_x -y $current_y
+
+ while {$current >= ($anchor - 4)} {
+ foreach {current_x current_y} [_text_ind_to_x_y $e $current] break
+ event generate $e <B1-Motion> -x $current_x -y $current_y
+ incr current -1
+ _pause 50
+ }
+
+ event generate $e <ButtonRelease-1> -x $current_x -y $current_y
+ _pause 200
+
+ # Save the position of the insert cursor
+ lappend result [$e index insert]
+
+ # Save the highlighted text
+ lappend result [selection get]
+
+} {{A Tcl/Tk selection!} 6 18 {Tk selection} 2 {Tcl/Tk selection}}
+
+
+
+# cleanup
+
+destroy .t
+
+unset keypress_lookup
+rename _init_keypress_lookup {}
+rename _keypress_lookup {}
+rename _keypress {}
+rename _pause {}
+rename _text_ind_to_x_y {}
+
+::tcltest::cleanupTests
+return
diff --git a/tests/imgPhoto.test b/tests/imgPhoto.test
index 0bad47f..6d264a8 100644
--- a/tests/imgPhoto.test
+++ b/tests/imgPhoto.test
@@ -9,7 +9,7 @@
#
# Author: Paul Mackerras (paulus@cs.anu.edu.au)
#
-# RCS: @(#) $Id: imgPhoto.test,v 1.8 2000/07/05 23:30:07 ericm Exp $
+# RCS: @(#) $Id: imgPhoto.test,v 1.8.6.1 2002/02/05 02:25:17 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -134,7 +134,7 @@ test imgPhoto-4.1 {ImgPhotoCmd procedure} {
} {1 {wrong # args: should be "p1 option ?arg arg ...?"}}
test imgPhoto-4.2 {ImgPhotoCmd procedure} {
list [catch {p1 blah} err] $err
-} {1 {bad option "blah": must be blank, cget, configure, copy, data, get, put, read, redither, or write}}
+} {1 {bad option "blah": must be blank, cget, configure, copy, data, get, put, read, redither, transparency, or write}}
test imgPhoto-4.3 {ImgPhotoCmd procedure: blank option} {
p1 blank
list [catch {p1 blank x} err] $err
@@ -277,6 +277,147 @@ test imgPhoto-4.38 {ImgPhotoCmd procedure: write option} {
test imgPhoto-4.39 {ImgPhotoCmd procedure: write option} {
list [catch {p1 write teapot.tmp -format bogus} err] $err
} {1 {image file format "bogus" is unknown}}
+eval image delete [image names]
+image create photo p1
+test imgPhoto-4.40 {ImgPhotoCmd procedure: transparency option} {
+ list [catch {p1 transparency} err] $err
+} {1 {wrong # args: should be "p1 transparency option ?arg arg ...?"}}
+test imgPhoto-4.41 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get} err] $err
+} {1 {wrong # args: should be "p1 transparency get x y"}}
+test imgPhoto-4.42 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get 0} err] $err
+} {1 {wrong # args: should be "p1 transparency get x y"}}
+test imgPhoto-4.43 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get 0 0 0} err] $err
+} {1 {wrong # args: should be "p1 transparency get x y"}}
+test imgPhoto-4.44 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get bogus 0} err] $err
+} {1 {expected integer but got "bogus"}}
+test imgPhoto-4.45 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get 0 bogus} err] $err
+} {1 {expected integer but got "bogus"}}
+test imgPhoto-4.46 {ImgPhotoCmd procedure: transparency get option} {
+ p1 put white
+ p1 transparency get 0 0
+} 0
+test imgPhoto-4.47 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get 1 0} err] $err
+} {1 {p1 transparency get: coordinates out of range}}
+test imgPhoto-4.48 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get -1 0} err] $err
+} {1 {p1 transparency get: coordinates out of range}}
+test imgPhoto-4.49 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get 0 1} err] $err
+} {1 {p1 transparency get: coordinates out of range}}
+test imgPhoto-4.50 {ImgPhotoCmd procedure: transparency get option} {
+ list [catch {p1 transparency get 0 -1} err] $err
+} {1 {p1 transparency get: coordinates out of range}}
+test imgPhoto-4.51 {ImgPhotoCmd procedure: transparency get option} {
+ p1 blank
+ p1 transparency get 0 0
+} 1
+test imgPhoto-4.52 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set} err] $err
+} {1 {wrong # args: should be "p1 transparency set x y boolean"}}
+test imgPhoto-4.53 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0} err] $err
+} {1 {wrong # args: should be "p1 transparency set x y boolean"}}
+test imgPhoto-4.54 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0 0} err] $err
+} {1 {wrong # args: should be "p1 transparency set x y boolean"}}
+test imgPhoto-4.55 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0 0 0 0} err] $err
+} {1 {wrong # args: should be "p1 transparency set x y boolean"}}
+test imgPhoto-4.56 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set bogus 0 0} err] $err
+} {1 {expected integer but got "bogus"}}
+test imgPhoto-4.57 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0 bogus 0} err] $err
+} {1 {expected integer but got "bogus"}}
+test imgPhoto-4.58 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0 0 bogus} err] $err
+} {1 {expected boolean value but got "bogus"}}
+test imgPhoto-4.59 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 1 0 0} err] $err
+} {1 {p1 transparency set: coordinates out of range}}
+test imgPhoto-4.60 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set -1 0 0} err] $err
+} {1 {p1 transparency set: coordinates out of range}}
+test imgPhoto-4.61 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0 1 0} err] $err
+} {1 {p1 transparency set: coordinates out of range}}
+test imgPhoto-4.62 {ImgPhotoCmd procedure: transparency set option} {
+ list [catch {p1 transparency set 0 -1 0} err] $err
+} {1 {p1 transparency set: coordinates out of range}}
+test imgPhoto-4.63 {ImgPhotoCmd procedure: transparency set option} {
+ p1 transparency set 0 0 false
+ p1 transparency get 0 0
+} 0
+test imgPhoto-4.64 {ImgPhotoCmd procedure: transparency set option} {
+ p1 transparency set 0 0 true
+ p1 transparency get 0 0
+} 1
+# Now for some heftier testing, checking that setting and resetting of
+# pixels' transparency status doesn't "leak" with any one-off errors.
+proc checkImgTrans {img width height} {
+ set result {}
+ for {set x 0} {$x<$width} {incr x} {
+ for {set y 0} {$y<$height} {incr y} {
+ if {[$img transparency get $x $y]} {
+ lappend result $x $y
+ }
+ }
+ }
+ return $result
+}
+test imgPhoto-4.65 {ImgPhotoCmd procedure: transparency get option} {
+ p1 put white -to 0 0 3 3
+ checkImgTrans p1 3 3
+} {}
+test imgPhoto-4.66 {ImgPhotoCmd procedure: transparency get option} {
+ p1 blank
+ checkImgTrans p1 3 3
+} {0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2}
+proc checkImgTransLoopSetReset {img width height} {
+ set result {}
+ for {set x 0} {$x<$width} {incr x} {
+ for {set y 0} {$y<$height} {incr y} {
+ $img put white -to 0 0 3 3
+ $img transparency set $x $y 1
+ set result [concat $result [checkImgTrans $img $width $height]]
+ lappend result ,
+ $img transparency set $x $y 0
+ set result [concat $result [checkImgTrans $img $width $height]]
+ lappend result .
+ }
+ }
+ return $result
+}
+test imgPhoto-4.67 {ImgPhotoCmd procedure: transparency set option} {
+ checkImgTransLoopSetReset p1 3 3
+} {0 0 , . 0 1 , . 0 2 , . 1 0 , . 1 1 , . 1 2 , . 2 0 , . 2 1 , . 2 2 , .}
+proc checkImgTransLoopResetSet {img width height} {
+ set result {}
+ for {set x 0} {$x<$width} {incr x} {
+ for {set y 0} {$y<$height} {incr y} {
+ $img blank
+ $img transparency set $x $y 0
+ set result [concat $result [checkImgTrans $img $width $height]]
+ lappend result ,
+ $img transparency set $x $y 1
+ set result [concat $result [checkImgTrans $img $width $height]]
+ lappend result .
+ }
+ }
+ return $result
+}
+test imgPhoto-4.68 {ImgPhotoCmd procedure: transparency set option} {
+ checkImgTransLoopResetSet p1 3 3
+} {0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 2 1 0 1 1 1 2 2 0 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 1 0 1 1 1 2 2 0 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 0 2 1 1 1 2 2 0 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 0 2 1 0 1 2 2 0 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 0 2 1 0 1 1 2 0 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 0 2 1 0 1 1 1 2 2 1 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 2 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 . 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 , 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 .}
+catch {rename checkImgTrans {}}
+catch {rename checkImgTransLoopSetReset {}}
+catch {rename checkImgTransLoopResetSet {}}
test imgPhoto-5.1 {ImgPhotoGet/Free procedures, shared instances} {
eval image delete [image names]
diff --git a/tests/menu.test b/tests/menu.test
index 552464a..550cdc5 100644
--- a/tests/menu.test
+++ b/tests/menu.test
@@ -5,7 +5,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: menu.test,v 1.9.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: menu.test,v 1.9.2.2 2002/02/05 02:25:17 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -913,6 +913,25 @@ test menu-3.67 {MenuWidgetCmd procedure, bad option} {
menu .m1
list [catch {.m1 foo} msg] $msg [destroy .m1]
} {1 {bad option "foo": must be activate, add, cget, clone, configure, delete, entrycget, entryconfigure, index, insert, invoke, post, postcascade, type, unpost, or yposition} {}}
+test menu-3.68 {MenuWidgetCmd procedure, fix for bug#508988} {
+ set t .t
+ set m1 .t.m1
+ set c1 .t.c1
+ set c2 .t.c2
+ toplevel .t
+ menu $m1 -tearoff 1
+ menu $c1 -tearoff 1
+ $c1 add command -label c1
+ menu $c2 -tearoff 1
+ $c2 add command -label c2
+ $m1 add cascade -label c1 -menu $c1
+ $t configure -menu $m1
+ $m1 entryconfigure 1 -menu $c2 -label c2
+ $t configure -menu ""
+ set l [list [winfo exists $c1] [winfo exists $c2]]
+ destroy $t;
+ set l;
+} {1 1}
test menu-4.1 {TkInvokeMenu: disabled} {
catch {destroy .m1}
@@ -2426,7 +2445,8 @@ test menu-32.7 {DeleteMenuCloneEntries - one entry} {
.m1 add command -label Hello
list [catch {.m1 delete Hello} msg] $msg [destroy .m1]
} {0 {} {}}
-test menu-32.8 {Ensure all menu clone commands are deleted} {
+test menu-32.8 {Ensure all menu clone commands are deleted} {knownBug} {
+ # SF bug #465324
catch {destroy .menubar}
catch {destroy .menubar.test}
menu .menubar
diff --git a/tests/text.test b/tests/text.test
index 94ba999..145c3e3 100644
--- a/tests/text.test
+++ b/tests/text.test
@@ -6,7 +6,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: text.test,v 1.13 2001/08/01 16:21:12 dgp Exp $
+# RCS: @(#) $Id: text.test,v 1.13.2.1 2002/02/05 02:25:18 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -51,6 +51,7 @@ catch {destroy .t2}
text .t2
set i 0
foreach test {
+ {-autoseparators yes 1 nah}
{-background #ff00ff #ff00ff <gorp>}
{-bd 4 4 foo}
{-bg blue blue #xx}
@@ -83,6 +84,7 @@ foreach test {
{-spacing3 -10 0 bogus}
{-state d disabled foo}
{-tabs {1i 2i 3i 4i} {1i 2i 3i 4i} bad_tabs}
+ {-undo 1 1 eh}
{-width 73 73 2.4}
{-wrap w word bad_wrap}
} {
@@ -111,7 +113,7 @@ test text-1.[incr i] {text options} {
lappend result [lindex $i 4]
}
set result
-} {blue {} {} 7 watch 0 {} fixed #012 5 #123 #234 0 green 45 100 47 2 3 82 raised #ffff01234567 21 yellow 0 0 0 0 disabled {1i 2i 3i 4i} {any old thing} 73 word {x scroll command} {test command}}
+} {1 blue {} {} 7 watch 0 {} fixed #012 5 #123 #234 0 green 45 100 47 2 3 82 raised #ffff01234567 21 yellow 0 0 0 0 disabled {1i 2i 3i 4i} {any old thing} 1 73 word {x scroll command} {test command}}
test text-2.1 {Tk_TextCmd procedure} {
list [catch {text} msg] $msg
@@ -150,7 +152,7 @@ test text-3.1 {TextWidgetCmd procedure, basics} {
} {1 {wrong # args: should be ".t option ?arg arg ...?"}}
test text-3.2 {TextWidgetCmd procedure} {
list [catch {.t gorp 1.0 z 1.2} msg] $msg
-} {1 {bad option "gorp": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
+} {1 {bad option "gorp": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, edit, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
test text-4.1 {TextWidgetCmd procedure, "bbox" option} {
list [catch {.t bbox} msg] $msg
@@ -218,7 +220,7 @@ test text-6.13 {TextWidgetCmd procedure, "compare" option} {
} {1 {bad comparison operator "z": must be <, <=, ==, >=, >, or !=}}
test text-6.14 {TextWidgetCmd procedure, "compare" option} {
list [catch {.t co 1.0 z 1.2} msg] $msg
-} {1 {bad option "co": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
+} {1 {bad option "co": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, edit, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
# "configure" option is already covered above
@@ -227,7 +229,7 @@ test text-7.1 {TextWidgetCmd procedure, "debug" option} {
} {1 {wrong # args: should be ".t debug boolean"}}
test text-7.2 {TextWidgetCmd procedure, "debug" option} {
list [catch {.t de 0 1} msg] $msg
-} {1 {bad option "de": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
+} {1 {bad option "de": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, edit, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
test text-7.3 {TextWidgetCmd procedure, "debug" option} {
.t debug true
.t deb
@@ -310,7 +312,7 @@ test text-10.2 {TextWidgetCmd procedure, "index" option} {
} {1 {wrong # args: should be ".t index index"}}
test text-10.3 {TextWidgetCmd procedure, "index" option} {
list [catch {.t in a b} msg] $msg
-} {1 {bad option "in": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
+} {1 {bad option "in": must be bbox, cget, compare, configure, debug, delete, dlineinfo, dump, edit, get, image, index, insert, mark, scan, search, see, tag, window, xview, or yview}}
test text-10.4 {TextWidgetCmd procedure, "index" option} {
list [catch {.t index @xyz} msg] $msg
} {1 {bad text index "@xyz"}}
@@ -369,7 +371,7 @@ test text-11.10 {TextWidgetCmd procedure, "insert" option} {
list [.t get 1.0 1.end] [.t tag ranges bold] [.t tag ranges silly]
} {{First second} {1.0 1.5} {1.5 1.12}}
-# Mark, scan, search, see, tag, window, xview, and yview actions are tested elsewhere.
+# Edit, mark, scan, search, see, tag, window, xview, and yview actions are tested elsewhere.
test text-12.1 {ConfigureText procedure} {
list [catch {.t2 configure -state foobar} msg] $msg
@@ -1366,6 +1368,119 @@ test text-24.1 {bug fix - 1642} {
.t search -backward -regexp "\$" insert 1.0
} {2.6}
+test text-25.1 {TextEditCmd procedure, argument parsing} {
+ list [catch {.t edit} msg] $msg
+} {1 {wrong # args: should be ".t edit option ?arg arg ...?"}}
+
+test text-25.2 {TextEditCmd procedure, argument parsing} {
+ list [catch {.t edit gorp} msg] $msg
+} {1 {bad edit option "gorp": must be modified, redo, reset, separator or undo}}
+
+test text-25.3 {TextEditUndo procedure, undoing changes} {
+ catch {destroy .t}
+ text .t -undo 1
+ pack .t
+ .t insert end "line 1\n"
+ .t delete 1.4 1.6
+ .t insert end "should be gone after undo\n"
+ .t edit undo
+ .t get 1.0 end
+} "line\n\n"
+
+test text-25.4 {TextEditRedo procedure, redoing changes} {
+ catch {destroy .t}
+ text .t -undo 1
+ pack .t
+ .t insert end "line 1\n"
+ .t delete 1.4 1.6
+ .t insert end "should be back after redo\n"
+ .t edit undo
+ .t edit redo
+ .t get 1.0 end
+} "line\nshould be back after redo\n\n"
+
+test text-25.5 {TextEditUndo procedure, resetting stack} {
+ catch {destroy .t}
+ text .t -undo 1
+ pack .t
+ .t insert end "line 1\n"
+ .t delete 1.4 1.6
+ .t insert end "should be back after redo\n"
+ .t edit reset
+ catch {.t edit undo} msg
+ set msg
+} "nothing to undo"
+
+test text-25.6 {TextEditCmd procedure, insert separator} {
+ catch {destroy .t}
+ text .t -undo 1
+ pack .t
+ .t insert end "line 1\n"
+ .t edit separator
+ .t insert end "line 2\n"
+ .t edit undo
+ .t get 1.0 end
+} "line 1\n\n"
+
+test text-25.7 {-autoseparators configuration option} {
+ catch {destroy .t}
+ text .t -undo 1 -autoseparators 0
+ pack .t
+ .t insert end "line 1\n"
+ .t delete 1.4 1.6
+ .t insert end "line 2\n"
+ .t edit undo
+ .t get 1.0 end
+} "\n"
+
+test text-25.8 {TextEditCmd procedure, modified flag} {
+ catch {destroy .t}
+ text .t
+ pack .t
+ .t insert end "line 1\n"
+ .t edit modified
+} {1}
+
+test text-25.9 {TextEditCmd procedure, reset modified flag} {
+ catch {destroy .t}
+ text .t
+ pack .t
+ .t insert end "line 1\n"
+ .t edit modified 0
+ .t edit modified
+} {0}
+
+test text-25.10 {TextEditCmd procedure, set modified flag} {
+ catch {destroy .t}
+ text .t
+ pack .t
+ .t edit modified 1
+ .t edit modified
+} {1}
+
+test text-25.11 {<<Modified>> virtual event} {
+ set ::retval unmodified
+ catch {destroy .t}
+ text .t -undo 1
+ pack .t
+ bind .t <<Modified>> "set ::retval modified"
+ update idletasks
+ .t insert end "nothing special\n"
+ set ::retval
+} {modified}
+
+test text-25.12 {<<Selection>> virtual event} {
+ set ::retval no_selection
+ catch {destroy .t}
+ text .t -undo 1
+ pack .t
+ bind .t <<Selection>> "set ::retval selection_changed"
+ update idletasks
+ .t insert end "nothing special\n"
+ .t tag add sel 1.0 1.1
+ set ::retval
+} {selection_changed}
+
eval destroy [winfo child .]
option clear
diff --git a/tests/unixWm.test b/tests/unixWm.test
index 990f789..b6f51dc 100644
--- a/tests/unixWm.test
+++ b/tests/unixWm.test
@@ -7,7 +7,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: unixWm.test,v 1.13.2.1 2001/10/15 09:22:00 wolfsuit Exp $
+# RCS: @(#) $Id: unixWm.test,v 1.13.2.2 2002/02/05 02:25:18 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -888,7 +888,7 @@ test unixWm-24.3 {Tk_WmCmd procedure, "iconmask" option} {
test unixWm-25.1 {Tk_WmCmd procedure, "iconname" option} {
list [catch {wm icon .t} msg] $msg
-} {1 {unknown or ambiguous option "icon": must be aspect, client, command, deiconify, focusmodel, frame, geometry, grid, group, iconbitmap, iconify, iconmask, iconname, iconposition, iconwindow, maxsize, minsize, overrideredirect, positionfrom, protocol, resizable, sizefrom, state, title, transient, or withdraw}}
+} {1 {unknown or ambiguous option "icon": must be aspect, client, command, deiconify, focusmodel, frame, geometry, grid, group, iconbitmap, iconify, iconmask, iconname, iconposition, iconwindow, maxsize, minsize, overrideredirect, positionfrom, protocol, resizable, sizefrom, stackorder, state, title, transient, or withdraw}}
test unixWm-25.2 {Tk_WmCmd procedure, "iconname" option} {
list [catch {wm iconname .t 12 13} msg] $msg
} {1 {wrong # arguments: must be "wm iconname window ?newName?"}}
@@ -1321,7 +1321,7 @@ test unixWm-38.3 {Tk_WmCmd procedure, "withdraw" option} {
test unixWm-39.1 {Tk_WmCmd procedure, miscellaneous} {
list [catch {wm unknown .t} msg] $msg
-} {1 {unknown or ambiguous option "unknown": must be aspect, client, command, deiconify, focusmodel, frame, geometry, grid, group, iconbitmap, iconify, iconmask, iconname, iconposition, iconwindow, maxsize, minsize, overrideredirect, positionfrom, protocol, resizable, sizefrom, state, title, transient, or withdraw}}
+} {1 {unknown or ambiguous option "unknown": must be aspect, client, command, deiconify, focusmodel, frame, geometry, grid, group, iconbitmap, iconify, iconmask, iconname, iconposition, iconwindow, maxsize, minsize, overrideredirect, positionfrom, protocol, resizable, sizefrom, stackorder, state, title, transient, or withdraw}}
catch {destroy .t}
catch {destroy .icon}
diff --git a/tests/winButton.test b/tests/winButton.test
index 48a60d5..b485745 100644
--- a/tests/winButton.test
+++ b/tests/winButton.test
@@ -8,7 +8,7 @@
# Copyright (c) 1998-1999 by Scriptics Corporation.
# All rights reserved.
#
-# RCS: @(#) $Id: winButton.test,v 1.4 1999/04/16 01:51:43 stanton Exp $
+# RCS: @(#) $Id: winButton.test,v 1.4.18.1 2002/02/05 02:25:18 wolfsuit Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -53,11 +53,13 @@ test winbutton-1.1 {TkpComputeButtonGeometry procedure} {pcOnly} {
radiobutton .b4 -image image1 -bd 4 -padx 2 -pady 0
pack .b1 .b2 .b3 .b4
update
+ # with patch 463234 with native L&F enabled, this returns:
+ # {68 48 70 50 88 50 88 50}
list [winfo reqwidth .b1] [winfo reqheight .b1] \
[winfo reqwidth .b2] [winfo reqheight .b2] \
[winfo reqwidth .b3] [winfo reqheight .b3] \
[winfo reqwidth .b4] [winfo reqheight .b4]
-} {68 48 71 51 96 50 96 50}
+} {68 48 70 50 90 52 90 52}
test winbutton-1.2 {TkpComputeButtonGeometry procedure} {pcOnly} {
eval destroy [winfo children .]
label .b1 -bitmap question -bd 3 -padx 0 -pady 2
@@ -66,11 +68,13 @@ test winbutton-1.2 {TkpComputeButtonGeometry procedure} {pcOnly} {
radiobutton .b4 -bitmap question -bd 3 -padx 2 -pady 0
pack .b1 .b2 .b3 .b4
update
+ # with patch 463234 with native L&F enabled, this returns:
+ # {23 33 25 35 43 35 43 35}
list [winfo reqwidth .b1] [winfo reqheight .b1] \
[winfo reqwidth .b2] [winfo reqheight .b2] \
[winfo reqwidth .b3] [winfo reqheight .b3] \
[winfo reqwidth .b4] [winfo reqheight .b4]
-} {23 33 26 36 51 35 51 35}
+} {23 33 25 35 45 37 45 37}
test winbutton-1.3 {TkpComputeButtonGeometry procedure} {pcOnly} {
eval destroy [winfo children .]
label .b1 -bitmap question -bd 3 -highlightthickness 4
@@ -80,11 +84,13 @@ test winbutton-1.3 {TkpComputeButtonGeometry procedure} {pcOnly} {
radiobutton .b4 -bitmap question -bd 3 -indicatoron false
pack .b1 .b2 .b3 .b4
update
+ # with patch 463234 with native L&F enabled, this returns:
+ # {31 41 23 33 25 35 25 35}
list [winfo reqwidth .b1] [winfo reqheight .b1] \
[winfo reqwidth .b2] [winfo reqheight .b2] \
[winfo reqwidth .b3] [winfo reqheight .b3] \
[winfo reqwidth .b4] [winfo reqheight .b4]
-} {31 41 24 34 26 36 26 36}
+} {31 41 23 33 27 37 27 37}
test winbutton-1.4 {TkpComputeButtonGeometry procedure} {pcOnly nonPortable} {
eval destroy [winfo children .]
label .b1 -text Xagqpim -bd 2 -padx 0 -pady 2 -font {{MS Sans Serif} 8}
@@ -145,22 +151,9 @@ test winbutton-1.9 {TkpComputeButtonGeometry procedure} {pcOnly} {
eval destroy [winfo children .]
button .b2 -bitmap question -default normal
list [winfo reqwidth .b2] [winfo reqheight .b2]
-} {24 34}
+} {23 33}
# cleanup
eval destroy [winfo children .]
::tcltest::cleanupTests
return
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tests/wm.test b/tests/wm.test
new file mode 100644
index 0000000..19356ef
--- /dev/null
+++ b/tests/wm.test
@@ -0,0 +1,312 @@
+# This file is a Tcl script to test out Tk's interactions with
+# the window manager, including the "wm" command. It is organized
+# in the standard fashion for Tcl tests.
+#
+# Copyright (c) 1992-1994 The Regents of the University of California.
+# Copyright (c) 1994-1997 Sun Microsystems, Inc.
+# Copyright (c) 1998-1999 by Scriptics Corporation.
+# All rights reserved.
+#
+# RCS: @(#) $Id: wm.test,v 1.2.2.1 2002/02/05 02:25:18 wolfsuit Exp $
+
+# This file tests window manager interactions that work across
+# platforms. Window manager tests that only work on a specific
+# platform should be placed in unixWm.test or winWm.test.
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+ package require tcltest
+ namespace import -force ::tcltest::*
+}
+
+proc deleteWindows {} {
+ foreach i [winfo children .] {
+ catch [destroy $i]
+ }
+}
+
+
+deleteWindows
+
+
+test wm-stackorder-1.1 {usage} {
+ list [catch {wm stackorder} err] $err
+} {1 {wrong # args: should be "wm option window ?arg ...?"}}
+
+test wm-stackorder-1.2 {usage} {
+ list [catch {wm stackorder . _} err] $err
+} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow? ?window?"}}
+
+test wm-stackorder-1.3 {usage} {
+ list [catch {wm stackorder . _ _ _} err] $err
+} {1 {wrong # arguments: must be "wm stackorder window ?isabove|isbelow? ?window?"}}
+
+test wm-stackorder-1.4 {usage} {
+ list [catch {wm stackorder . is .} err] $err
+} {1 {bad argument "is": must be isabove or isbelow}}
+
+test wm-stackorder-1.5 {usage} {
+ list [catch {wm stackorder _} err] $err
+} {1 {bad window path name "_"}}
+
+test wm-stackorder-1.6 {usage} {
+ list [catch {wm stackorder . isabove _} err] $err
+} {1 {bad window path name "_"}}
+
+test wm-stackorder-1.7 {usage} {
+ catch {destroy .t}
+ toplevel .t
+ button .t.b
+ list [catch {wm stackorder .t.b} err] $err
+} {1 {window ".t.b" isn't a top-level window}}
+
+test wm-stackorder-1.8 {usage} {
+ catch {destroy .t}
+ toplevel .t
+ button .t.b
+ pack .t.b
+ update
+ list [catch {wm stackorder . isabove .t.b} err] $err
+} {1 {window ".t.b" isn't a top-level window}}
+
+test wm-stackorder-1.9 {usage} {
+ catch {destroy .t}
+ toplevel .t
+ button .t.b
+ pack .t.b
+ update
+ list [catch {wm stackorder . isbelow .t.b} err] $err
+} {1 {window ".t.b" isn't a top-level window}}
+
+test wm-stackorder-1.10 {usage, isabove|isbelow toplevels must be mapped} {
+ catch {destroy .t}
+ toplevel .t ; update
+ wm withdraw .t
+ list [catch {wm stackorder .t isabove .} err] $err
+} {1 {window ".t" isn't mapped}}
+
+test wm-stackorder-1.11 {usage, isabove|isbelow toplevels must be mapped} {
+ catch {destroy .t}
+ toplevel .t ; update
+ wm withdraw .t
+ list [catch {wm stackorder . isbelow .t} err] $err
+} {1 {window ".t" isn't mapped}}
+
+
+deleteWindows
+
+
+test wm-stackorder-2.1 {} {
+ catch {destroy .t}
+ toplevel .t ; update
+ wm stackorder .
+} {. .t}
+
+test wm-stackorder-2.2 {} {
+ catch {destroy .t}
+ toplevel .t ; update
+ raise .
+ wm stackorder .
+} {.t .}
+
+test wm-stackorder-2.3 {} {
+ catch {destroy .t}
+ toplevel .t ; update
+ catch {destroy .t2}
+ toplevel .t2 ; update
+ raise .
+ raise .t2
+ wm stackorder .
+} {.t . .t2}
+
+test wm-stackorder-2.4 {} {
+ catch {destroy .t}
+ toplevel .t ; update
+ catch {destroy .t2}
+ toplevel .t2 ; update
+ raise .
+ lower .t2
+ wm stackorder .
+} {.t2 .t .}
+
+test wm-stackorder-2.5 {} {
+ catch {destroy .parent}
+ toplevel .parent ; update
+ catch {destroy .parent.child1}
+ toplevel .parent.child1 ; update
+ catch {destroy .parent.child2}
+ toplevel .parent.child2 ; update
+ catch {destroy .extra}
+ toplevel .extra ; update
+ raise .parent
+ lower .parent.child2
+ wm stackorder .parent
+} {.parent.child2 .parent.child1 .parent}
+
+deleteWindows
+
+test wm-stackorder-2.6 {non-toplevel widgets ignored} {
+ catch {destroy .t1}
+ toplevel .t1
+ button .t1.b
+ pack .t1.b
+ update
+ wm stackorder .
+} {. .t1}
+
+deleteWindows
+
+test wm-stackorder-2.7 {no children returns self} {
+ wm stackorder .
+} {.}
+
+deleteWindows
+
+
+test wm-stackorder-3.1 {unmapped toplevel} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ catch {destroy .t2}
+ toplevel .t2 ; update
+ wm iconify .t1
+ wm stackorder .
+} {. .t2}
+
+test wm-stackorder-3.2 {unmapped toplevel} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ catch {destroy .t2}
+ toplevel .t2 ; update
+ wm withdraw .t2
+ wm stackorder .
+} {. .t1}
+
+test wm-stackorder-3.3 {unmapped toplevel} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ catch {destroy .t2}
+ toplevel .t2 ; update
+ wm withdraw .t2
+ wm stackorder .t2
+} {}
+
+test wm-stackorder-3.4 {unmapped toplevel} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ toplevel .t1.t2 ; update
+ wm withdraw .t1.t2
+ wm stackorder .t1
+} {.t1}
+
+test wm-stackorder-3.5 {unmapped toplevel} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ toplevel .t1.t2 ; update
+ wm withdraw .t1
+ wm stackorder .t1
+} {.t1.t2}
+
+test wm-stackorder-3.6 {unmapped toplevel} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ toplevel .t1.t2 ; update
+ toplevel .t1.t2.t3 ; update
+ wm withdraw .t1.t2
+ wm stackorder .t1
+} {.t1 .t1.t2.t3}
+
+test wm-stackorder-3.7 {unmapped toplevel, mapped children returned} {
+ catch {destroy .t1}
+ toplevel .t1 ; update
+ toplevel .t1.t2 ; update
+ wm withdraw .t1
+ wm stackorder .t1
+} {.t1.t2}
+
+test wm-stackorder-3.8 {toplevel mapped in idle callback } {
+ catch {destroy .t1}
+ toplevel .t1
+ wm stackorder .
+} {.}
+
+
+deleteWindows
+
+
+test wm-stackorder-4.1 {wm stackorder isabove|isbelow} {
+ catch {destroy .t}
+ toplevel .t ; update
+ raise .t
+ wm stackorder . isabove .t
+} {0}
+
+test wm-stackorder-4.2 {wm stackorder isabove|isbelow} {
+ catch {destroy .t}
+ toplevel .t ; update
+ raise .t
+ wm stackorder . isbelow .t
+} {1}
+
+test wm-stackorder-4.3 {wm stackorder isabove|isbelow} {
+ catch {destroy .t}
+ toplevel .t ; update
+ raise .
+ wm stackorder .t isa .
+} {0}
+
+test wm-stackorder-4.4 {wm stackorder isabove|isbelow} {
+ catch {destroy .t}
+ toplevel .t ; update
+ raise .
+ wm stackorder .t isb .
+} {1}
+
+deleteWindows
+
+test wm-stackorder-5.1 {a menu is not a toplevel} {
+ catch {destroy .t}
+ toplevel .t
+ menu .t.m -type menubar
+ .t.m add cascade -label "File"
+ .t configure -menu .t.m
+ update
+ raise .
+ wm stackorder .
+} {.t .}
+
+test wm-stackorder-5.2 {A normal toplevel can't be
+ raised above an overrideredirect toplevel } {
+ catch {destroy .t}
+ toplevel .t
+ wm overrideredirect .t 1
+ raise .
+ update
+ wm stackorder . isabove .t
+} 0
+
+test wm-stackorder-5.3 {An overrideredirect window
+ can be explicitly lowered } {
+ catch {destroy .t}
+ toplevel .t
+ wm overrideredirect .t 1
+ lower .t
+ update
+ wm stackorder .t isbelow .
+} 1
+
+
+deleteWindows
+
+
+# FIXME:
+
+# Need test cases for embedded Windows, they should not appear in
+# the stacking order since they are not actually toplevel Windows.
+
+# Test delivery of virtual events to the WM. We could check to see
+# if the window was raised after a button click for example.
+# This sort of testing may not be possible.
+
+return
+
+
+
diff --git a/unix/Makefile.in b/unix/Makefile.in
index c37526b..d54dcb6 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -5,7 +5,7 @@
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
-# RCS: @(#) $Id: Makefile.in,v 1.54 2001/08/07 20:17:13 hobbs Exp $
+# RCS: @(#) $Id: Makefile.in,v 1.54.2.1 2002/02/05 02:25:18 wolfsuit Exp $
# Current Tk version; used in various names.
@@ -164,11 +164,11 @@ INSTALL = @srcdir@/install-sh -c
INSTALL_PROGRAM = ${INSTALL}
INSTALL_DATA = ${INSTALL} -m 644
-# The following specifies which Tcl executable to use for make targets
-# below. This can generally be 'tclsh', meaning all targets will work
-# once we have created the initial executable, but in some cases you
-# may want to use a target without having made tclsh on these sources
-# (like for make genstubs)
+# TCL_EXE is the name of a tclsh executable that is available *BEFORE*
+# running make for the first time. Certain build targets (make genstubs)
+# need it to be available on the PATH. This executable should *NOT* be
+# required just to do a normal build although it can be required to run
+# make dist.
TCL_EXE = tclsh
# The symbols below provide support for dynamic loading and shared
@@ -193,8 +193,9 @@ TK_LIB_FILE = @TK_LIB_FILE@
TK_LIB_FLAG = @TK_LIB_FLAG@
#TK_LIB_FLAG = -ltk
-#TCL_LIB_SPEC = @TCL_BUILD_LIB_SPEC@
TCL_LIB_SPEC = @TCL_LIB_SPEC@
+TCL_STUB_LIB_SPEC = @TCL_STUB_LIB_SPEC@
+TCL_STUB_LIB_FLAG = @TCL_STUB_LIB_FLAG@
TK_EXP_FILE = @TK_EXP_FILE@
TK_BUILD_EXP_FILE = @TK_BUILD_EXP_FILE@
@@ -202,8 +203,8 @@ TCL_STUB_FLAGS = @TCL_STUB_FLAGS@
# Libraries to use when linking. This definition is determined by the
# configure script.
-LIBS = @LIBS@ $(X11_LIB_SWITCHES) @DL_LIBS@ @MATH_LIBS@ -lc
-WISH_LIBS = $(TCL_LIB_SPEC) @LIBS@ $(X11_LIB_SWITCHES) @DL_LIBS@ @MATH_LIBS@ -lc
+LIBS = @LIBS@ $(X11_LIB_SWITCHES) @DL_LIBS@ @MATH_LIBS@
+WISH_LIBS = $(TCL_LIB_SPEC) @LIBS@ $(X11_LIB_SWITCHES) @DL_LIBS@ @MATH_LIBS@
# The symbol below provides support for dynamic loading and shared
# libraries. See configure.in for a description of what it means.
@@ -400,13 +401,26 @@ wish: $(WISH_OBJS) $(TK_LIB_FILE) $(TK_STUB_LIB_FILE)
# building tcltest in the Tcl bin directory. Just do it for them.
${TCL_BIN_DIR}/tcltest:
cd ${TCL_BIN_DIR} ; \
- make tcltest
+ $(MAKE) tcltest
+
+# Resetting the LIB_RUNTIME_DIR below is required so that
+# the generated tktest executable gets the build directory
+# burned into its ld search path. This keeps tktest from
+# picking up an already installed version of the Tcl or
+# Tk shared libraries.
tktest: ${TCL_BIN_DIR}/tcltest $(TKTEST_OBJS) $(TK_LIB_FILE)
+ $(MAKE) tktest-real LIB_RUNTIME_DIR=`pwd`:$(TCL_BIN_DIR)
+
+tktest-real:
${CC} $(LDFLAGS) $(TKTEST_OBJS) \
@TK_BUILD_LIB_SPEC@ \
$(WISH_LIBS) $(TK_CC_SEARCH_FLAGS) -o tktest
+# FIXME: This xttest rule seems to be broken in a number of ways.
+# It should use TK_CC_SEARCH_FLAGS, it does not include the shared
+# lib location logic from tktest, and it is not clear where this
+# test.o object file comes from.
xttest: test.o tkTest.o tkSquare.o $(TK_LIB_FILE)
${CC} $(LDFLAGS) test.o tkTest.o tkSquare.o \
@TK_BUILD_LIB_SPEC@ \
@@ -420,11 +434,6 @@ xttest: test.o tkTest.o tkSquare.o $(TK_LIB_FILE)
# % make test TESTFLAGS="-verbose bps -file fileName.test"
test: tktest
- LD_LIBRARY_PATH=`pwd`:${TCL_BIN_DIR}:${LD_LIBRARY_PATH}; \
- export LD_LIBRARY_PATH; \
- LIBPATH=`pwd`:${TCL_BIN_DIR}:${LIBPATH}; export LIBPATH; \
- SHLIB_PATH=`pwd`:${TCL_BIN_DIR}:${SHLIB_PATH}; \
- export SHLIB_PATH; \
TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
./tktest $(TOP_DIR)/tests/all.tcl -geometry +0+0 \
@@ -432,11 +441,6 @@ test: tktest
# Tests with different languages
testlang: tktest
- LD_LIBRARY_PATH=`pwd`:${TCL_BIN_DIR}:${LD_LIBRARY_PATH}; \
- export LD_LIBRARY_PATH; \
- LIBPATH=`pwd`:${TCL_BIN_DIR}:${LIBPATH}; export LIBPATH; \
- SHLIB_PATH=`pwd`:${TCL_BIN_DIR}:${SHLIB_PATH}; \
- export SHLIB_PATH; \
TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
for lang in $(LOCALES) ; \
@@ -448,10 +452,6 @@ testlang: tktest
# Useful target to launch a built tktest with the proper path,...
runtest: tktest
- LD_LIBRARY_PATH=`pwd`:${TCL_BIN_DIR}:${LD_LIBRARY_PATH}; \
- export LD_LIBRARY_PATH; \
- LIBPATH=`pwd`:${TCL_BIN_DIR}:${LIBPATH}; export LIBPATH; \
- SHLIB_PATH=`pwd`:${TCL_BIN_DIR}:${SHLIB_PATH}; export SHLIB_PATH; \
TCL_LIBRARY=@TCL_SRC_DIR@/library; export TCL_LIBRARY; \
TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
./tktest
@@ -468,6 +468,16 @@ shell: wish
TK_LIBRARY=@TK_SRC_DIR@/library; export TK_LIBRARY; \
./wish $(SCRIPT)
+# This target can be used to run wish inside either gdb or insight
+gdb: wish
+ @echo "set env LD_LIBRARY_PATH=`pwd`:${TCL_BIN_DIR}:${LD_LIBRARY_PATH}" > gdb.run
+ @echo "set env LIBPATH=`pwd`:${TCL_BIN_DIR}:${LIBPATH}" >> gdb.run
+ @echo "set env SHLIB_PATH=`pwd`:${TCL_BIN_DIR}:${SHLIB_PATH}" >> gdb.run
+ @echo "set env TCL_LIBRARY=@TCL_SRC_DIR@/library" >> gdb.run
+ @echo "set env TK_LIBRARY=@TK_SRC_DIR@/library" >> gdb.run
+ gdb ./wish --command=gdb.run
+ rm gdb.run
+
install: all install-binaries install-libraries install-demos install-doc
# Note: before running ranlib below, must cd to target directory because
@@ -952,8 +962,14 @@ checkuchar:
checkexports: $(TK_LIB_FILE)
-nm -p $(TK_LIB_FILE) | awk '$$2 ~ /[TDB]/ { print $$3 }' | sort -n | grep -v '^[Tt]k'
-# Target to regenerate header files and stub files from the *.decls tables.
+
#
+# Regenerate the stubs files.
+#
+
+$(GENERIC_DIR)/tkStubInit.c: $(GENERIC_DIR)/tk.decls \
+ $(GENERIC_DIR)/tkInt.decls
+ @echo "Warning: run \"make genstubs\" to regenerate tkStubInit.c"
genstubs:
$(TCL_EXE) $(TOOL_DIR)/genStubs.tcl $(GENERIC_DIR) \
@@ -1061,7 +1077,6 @@ dist: $(UNIX_DIR)/configure
cp -p $(TOP_DIR)/license.terms $(DISTDIR)/mac
cp -p $(TOP_DIR)/mac/*.pch $(DISTDIR)/mac
cp -p $(TOP_DIR)/mac/*.doc $(DISTDIR)/mac
- cp -p $(TOP_DIR)/mac/*.exp $(DISTDIR)/mac
cp -p $(TOP_DIR)/mac/*.tcl $(DISTDIR)/mac
mkdir $(DISTDIR)/compat
cp -p $(TOP_DIR)/license.terms $(TCLDIR)/compat/unistd.h \
diff --git a/unix/configure b/unix/configure
index 5f6aac0..5f87529 100755
--- a/unix/configure
+++ b/unix/configure
@@ -537,7 +537,6 @@ else
fi
-# RCS: @(#) $Id: configure.in,v 1.63 2001/08/08 18:41:10 dgp Exp $
TK_VERSION=8.4
TK_MAJOR_VERSION=8
@@ -546,12 +545,18 @@ TK_PATCH_LEVEL="a4"
VERSION=${TK_VERSION}
LOCALES="de en es fr"
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
if test "${prefix}" = "NONE"; then
prefix=/usr/local
fi
if test "${exec_prefix}" = "NONE"; then
exec_prefix=$prefix
fi
+# libdir must be a fully qualified path and (not ${exec_prefix}/lib)
+eval libdir="$libdir"
# Make sure srcdir is fully qualified!
srcdir=`cd $srcdir ; pwd`
TK_SRC_DIR=`cd $srcdir/..; pwd`
@@ -569,7 +574,7 @@ fi
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:573: checking for $ac_word" >&5
+echo "configure:578: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -599,7 +604,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:603: checking for $ac_word" >&5
+echo "configure:608: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -650,7 +655,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:654: checking for $ac_word" >&5
+echo "configure:659: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -682,7 +687,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:686: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:691: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -693,12 +698,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 697 "configure"
+#line 702 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:707: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -724,12 +729,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:728: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:733: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:733: checking whether we are using GNU C" >&5
+echo "configure:738: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -738,7 +743,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:742: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -757,7 +762,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:761: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:766: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -791,7 +796,7 @@ fi
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:795: checking for $ac_word" >&5
+echo "configure:800: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -824,7 +829,7 @@ fi
#------------------------------------------------------------------------
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:828: checking how to run the C preprocessor" >&5
+echo "configure:833: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -839,13 +844,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 843 "configure"
+#line 848 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -856,13 +861,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 860 "configure"
+#line 865 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:871: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -873,13 +878,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 877 "configure"
+#line 882 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -907,17 +912,17 @@ for ac_hdr in unistd.h limits.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:911: checking for $ac_hdr" >&5
+echo "configure:916: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 916 "configure"
+#line 921 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:926: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -950,7 +955,7 @@ done
echo $ac_n "checking for building with threads""... $ac_c" 1>&6
-echo "configure:954: checking for building with threads" >&5
+echo "configure:959: checking for building with threads" >&5
# Check whether --enable-threads or --disable-threads was given.
if test "${enable_threads+set}" = set; then
enableval="$enable_threads"
@@ -976,7 +981,7 @@ EOF
EOF
echo $ac_n "checking for pthread_mutex_init in -lpthread""... $ac_c" 1>&6
-echo "configure:980: checking for pthread_mutex_init in -lpthread" >&5
+echo "configure:985: checking for pthread_mutex_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -984,7 +989,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 988 "configure"
+#line 993 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -995,7 +1000,7 @@ int main() {
pthread_mutex_init()
; return 0; }
EOF
-if { (eval echo configure:999: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1023,7 +1028,7 @@ fi
# pthread.h, but that will work with libpthread really doesn't
# exist, like AIX 4.2. [Bug: 4359]
echo $ac_n "checking for __pthread_mutex_init in -lpthread""... $ac_c" 1>&6
-echo "configure:1027: checking for __pthread_mutex_init in -lpthread" >&5
+echo "configure:1032: checking for __pthread_mutex_init in -lpthread" >&5
ac_lib_var=`echo pthread'_'__pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1031,7 +1036,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1035 "configure"
+#line 1040 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1042,7 +1047,7 @@ int main() {
__pthread_mutex_init()
; return 0; }
EOF
-if { (eval echo configure:1046: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1051: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1070,7 +1075,7 @@ fi
THREADS_LIBS=" -lpthread"
else
echo $ac_n "checking for pthread_mutex_init in -lpthreads""... $ac_c" 1>&6
-echo "configure:1074: checking for pthread_mutex_init in -lpthreads" >&5
+echo "configure:1079: checking for pthread_mutex_init in -lpthreads" >&5
ac_lib_var=`echo pthreads'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1078,7 +1083,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpthreads $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1082 "configure"
+#line 1087 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1089,7 +1094,7 @@ int main() {
pthread_mutex_init()
; return 0; }
EOF
-if { (eval echo configure:1093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1098: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1115,7 +1120,7 @@ fi
THREADS_LIBS=" -lpthreads"
else
echo $ac_n "checking for pthread_mutex_init in -lc""... $ac_c" 1>&6
-echo "configure:1119: checking for pthread_mutex_init in -lc" >&5
+echo "configure:1124: checking for pthread_mutex_init in -lc" >&5
ac_lib_var=`echo c'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1123,7 +1128,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1127 "configure"
+#line 1132 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1134,7 +1139,7 @@ int main() {
pthread_mutex_init()
; return 0; }
EOF
-if { (eval echo configure:1138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1156,8 +1161,54 @@ tcl_ok=no
fi
if test "$tcl_ok" = "no"; then
- TCL_THREADS=0
- echo "configure: warning: "Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..."" 1>&2
+ echo $ac_n "checking for pthread_mutex_init in -lc_r""... $ac_c" 1>&6
+echo "configure:1166: checking for pthread_mutex_init in -lc_r" >&5
+ac_lib_var=`echo c_r'_'pthread_mutex_init | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lc_r $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1174 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error. */
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char pthread_mutex_init();
+
+int main() {
+pthread_mutex_init()
+; return 0; }
+EOF
+if { (eval echo configure:1185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ tcl_ok=yes
+else
+ echo "$ac_t""no" 1>&6
+tcl_ok=no
+fi
+
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -pthread"
+ else
+ TCL_THREADS=0
+ echo "configure: warning: "Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile..."" 1>&2
+ fi
fi
fi
fi
@@ -1168,12 +1219,12 @@ fi
for ac_func in pthread_attr_setstacksize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1172: checking for $ac_func" >&5
+echo "configure:1223: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1177 "configure"
+#line 1228 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1196,7 +1247,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1235,18 +1286,18 @@ done
if test -z "$no_pipe"; then
if test -n "$GCC"; then
echo $ac_n "checking if the compiler understands -pipe""... $ac_c" 1>&6
-echo "configure:1239: checking if the compiler understands -pipe" >&5
+echo "configure:1290: checking if the compiler understands -pipe" >&5
OLDCC="$CC"
CC="$CC -pipe"
cat > conftest.$ac_ext <<EOF
-#line 1243 "configure"
+#line 1294 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1250: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1301: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
else
@@ -1281,7 +1332,7 @@ if test "${with_tcl+set}" = set; then
fi
echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6
-echo "configure:1285: checking for Tcl configuration" >&5
+echo "configure:1336: checking for Tcl configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1314,7 +1365,7 @@ else
# check in a few common install locations
if test x"${ac_cv_c_tclconfig}" = x ; then
- for i in `ls -d ${prefix}/lib 2>/dev/null` \
+ for i in `ls -d ${exec_prefix}/lib 2>/dev/null` \
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
@@ -1354,7 +1405,7 @@ fi
echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6
-echo "configure:1358: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
+echo "configure:1409: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
echo "$ac_t""loading" 1>&6
@@ -1364,12 +1415,39 @@ echo "configure:1358: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
fi
#
- # The eval is required to do the TCL_DBGX substitution in the
- # TCL_LIB_FILE variable
+ # If the TCL_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TCL_LIB_SPEC will be set to the value
+ # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+ # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
#
- eval TCL_LIB_FILE=${TCL_LIB_FILE}
- eval TCL_LIB_FLAG=${TCL_LIB_FLAG}
+ if test -f $TCL_BIN_DIR/Makefile ; then
+ TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+ TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+ TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+ fi
+
+ #
+ # eval is required to do the TCL_DBGX substitution
+ #
+
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+ eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+
+ eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+ eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+
+
+
+
+
+
+
@@ -1385,7 +1463,7 @@ echo "configure:1358: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
# Step 0.a: Enable 64 bit support?
echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6
-echo "configure:1389: checking if 64bit support is requested" >&5
+echo "configure:1467: checking if 64bit support is requested" >&5
# Check whether --enable-64bit or --disable-64bit was given.
if test "${enable_64bit+set}" = set; then
enableval="$enable_64bit"
@@ -1405,7 +1483,7 @@ fi
# Step 0.b: Enable Solaris 64 bit VIS support?
echo $ac_n "checking if 64bit Sparc VIS support is requested""... $ac_c" 1>&6
-echo "configure:1409: checking if 64bit Sparc VIS support is requested" >&5
+echo "configure:1487: checking if 64bit Sparc VIS support is requested" >&5
# Check whether --enable-64bit-vis or --disable-64bit-vis was given.
if test "${enable_64bit_vis+set}" = set; then
enableval="$enable_64bit_vis"
@@ -1429,7 +1507,7 @@ fi
# there are a few systems, like Next, where this doesn't work.
echo $ac_n "checking system version (for dynamic loading)""... $ac_c" 1>&6
-echo "configure:1433: checking system version (for dynamic loading)" >&5
+echo "configure:1511: checking system version (for dynamic loading)" >&5
if test -f /usr/lib/NextStep/software_version; then
system=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version`
else
@@ -1455,7 +1533,7 @@ echo "configure:1433: checking system version (for dynamic loading)" >&5
# Linux can use either -ldl or -ldld for dynamic loading.
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:1459: checking for dlopen in -ldl" >&5
+echo "configure:1537: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1463,7 +1541,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1467 "configure"
+#line 1545 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1474,7 +1552,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:1478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1499,7 +1577,6 @@ fi
# Step 3: set configuration options based on system name and version.
do64bit_ok=no
- fullSrcDir=`cd $srcdir; pwd`
EXTRA_CFLAGS=""
TCL_EXPORT_FILE_SUFFIX=""
UNSHARED_LIB_SUFFIX=""
@@ -1519,7 +1596,7 @@ fi
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1523: checking for $ac_word" >&5
+echo "configure:1600: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1555,6 +1632,7 @@ fi
fi
echo "$ac_t""Using $CC for compiling with threads" 1>&6
fi
+ LIBS="$LIBS -lc"
# AIX-5 uses ELF style dynamic libraries
SHLIB_CFLAGS=""
SHLIB_LD="/usr/ccs/bin/ld -G -z text"
@@ -1592,8 +1670,9 @@ fi
fi
echo "$ac_t""Using $CC for compiling with threads" 1>&6
fi
+ LIBS="$LIBS -lc"
SHLIB_CFLAGS=""
- SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+ SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX=".so"
DL_OBJS="tclLoadDl.o"
@@ -1622,7 +1701,7 @@ fi
# known GMT value.
echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:1626: checking for gettimeofday in -lbsd" >&5
+echo "configure:1705: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1630,7 +1709,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1634 "configure"
+#line 1713 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1641,7 +1720,7 @@ int main() {
gettimeofday()
; return 0; }
EOF
-if { (eval echo configure:1645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1703,7 +1782,7 @@ EOF
HP-UX-*.11.*)
SHLIB_SUFFIX=".sl"
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:1707: checking for shl_load in -ldld" >&5
+echo "configure:1786: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1711,7 +1790,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1715 "configure"
+#line 1794 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1722,7 +1801,7 @@ int main() {
shl_load()
; return 0; }
EOF
-if { (eval echo configure:1726: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1805: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1765,7 +1844,7 @@ fi
HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
SHLIB_SUFFIX=".sl"
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:1769: checking for shl_load in -ldld" >&5
+echo "configure:1848: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1773,7 +1852,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1777 "configure"
+#line 1856 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1784,7 +1863,7 @@ int main() {
shl_load()
; return 0; }
EOF
-if { (eval echo configure:1788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1891,17 +1970,17 @@ fi
else
ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
-echo "configure:1895: checking for dld.h" >&5
+echo "configure:1974: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1900 "configure"
+#line 1979 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1905: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1958,17 +2037,17 @@ fi
else
ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
-echo "configure:1962: checking for dld.h" >&5
+echo "configure:2041: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1967 "configure"
+#line 2046 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1972: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2051: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2023,17 +2102,17 @@ fi
# Not available on all versions: check for include file.
ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:2027: checking for dlfcn.h" >&5
+echo "configure:2106: checking for dlfcn.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2032 "configure"
+#line 2111 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2060,9 +2139,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
LDFLAGS=""
LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
echo $ac_n "checking for ELF""... $ac_c" 1>&6
-echo "configure:2064: checking for ELF" >&5
+echo "configure:2143: checking for ELF" >&5
cat > conftest.$ac_ext <<EOF
-#line 2066 "configure"
+#line 2145 "configure"
#include "confdefs.h"
#ifdef __ELF__
@@ -2109,7 +2188,7 @@ fi
# FreeBSD 3.* and greater have ELF.
SHLIB_CFLAGS="-fPIC"
SHLIB_LD="ld -Bshareable -x"
- SHLIB_LD_LIBS=""
+ SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX=".so"
DL_OBJS="tclLoadDl.o"
DL_LIBS=""
@@ -2122,6 +2201,19 @@ fi
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
TCL_LIB_VERSIONS_OK=nodots
;;
+ Rhapsody-*|Darwin-*)
+ SHLIB_CFLAGS="-fno-common"
+ SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
+ TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_MAJOR_VERSION} -current_version \${VERSION} -install_name \${LIB_RUNTIME_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr a000000"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".dylib"
+ DL_OBJS="tclLoadDyld.o"
+ DL_LIBS=""
+ LDFLAGS="-prebind"
+ LD_SEARCH_FLAGS=""
+ CFLAGS_OPTIMIZE="-O3"
+ EXTRA_CFLAGS="-arch ppc -pipe"
+ ;;
NEXTSTEP-*)
SHLIB_CFLAGS=""
SHLIB_LD="cc -nostdlib -r"
@@ -2177,9 +2269,10 @@ EOF
fi
# see pthread_intro(3) for pthread support on osf1, k.furukawa
if test "${TCL_THREADS}" = "1" ; then
+ EXTRA_CFLAGS="${EXTRA_CFLAGS} -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
EXTRA_CFLAGS="${EXTRA_CFLAGS} -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+ LIBS=`echo $LIBS | sed s/-lpthreads//`
if test "$GCC" = "yes" ; then
- LIBS=`echo $LIBS | sed s/-lpthreads//`
LIBS="$LIBS -lpthread -lmach -lexc"
else
EXTRA_CFLAGS="${EXTRA_CFLAGS} -pthread"
@@ -2279,7 +2372,11 @@ EOF
DL_OBJS="tclLoadDl.o"
DL_LIBS="-ldl"
LDFLAGS=""
- LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ if test "$GCC" = "yes" ; then
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ else
+ LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+ fi
;;
SunOS-5*)
@@ -2352,17 +2449,17 @@ EOF
# that don't grok the -Bexport option. Test that it does.
hold_ldflags=$LDFLAGS
echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6
-echo "configure:2356: checking for ld accepts -Bexport flag" >&5
+echo "configure:2453: checking for ld accepts -Bexport flag" >&5
LDFLAGS="${LDFLAGS} -Wl,-Bexport"
cat > conftest.$ac_ext <<EOF
-#line 2359 "configure"
+#line 2456 "configure"
#include "confdefs.h"
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:2366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
found=yes
else
@@ -2408,9 +2505,9 @@ rm -f conftest*
if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6
-echo "configure:2412: checking sys/exec.h" >&5
+echo "configure:2509: checking sys/exec.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 2414 "configure"
+#line 2511 "configure"
#include "confdefs.h"
#include <sys/exec.h>
int main() {
@@ -2428,7 +2525,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:2432: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2529: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_ok=usable
else
@@ -2446,9 +2543,9 @@ EOF
else
echo $ac_n "checking a.out.h""... $ac_c" 1>&6
-echo "configure:2450: checking a.out.h" >&5
+echo "configure:2547: checking a.out.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 2452 "configure"
+#line 2549 "configure"
#include "confdefs.h"
#include <a.out.h>
int main() {
@@ -2466,7 +2563,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:2470: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_ok=usable
else
@@ -2484,9 +2581,9 @@ EOF
else
echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6
-echo "configure:2488: checking sys/exec_aout.h" >&5
+echo "configure:2585: checking sys/exec_aout.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 2490 "configure"
+#line 2587 "configure"
#include "confdefs.h"
#include <sys/exec_aout.h>
int main() {
@@ -2504,7 +2601,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:2508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2605: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_ok=usable
else
@@ -2571,6 +2668,8 @@ fi
;;
NetBSD-*|FreeBSD-*|OpenBSD-*)
;;
+ Rhapsody-*|Darwin-*)
+ ;;
RISCos-*)
;;
SCO_SV-3.2*)
@@ -2599,7 +2698,7 @@ fi
echo $ac_n "checking for build with symbols""... $ac_c" 1>&6
-echo "configure:2603: checking for build with symbols" >&5
+echo "configure:2702: checking for build with symbols" >&5
# Check whether --enable-symbols or --disable-symbols was given.
if test "${enable_symbols+set}" = set; then
enableval="$enable_symbols"
@@ -2643,12 +2742,12 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:2647: checking for sin" >&5
+echo "configure:2746: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2652 "configure"
+#line 2751 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char sin(); below. */
@@ -2671,7 +2770,7 @@ sin();
; return 0; }
EOF
-if { (eval echo configure:2675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_sin=yes"
else
@@ -2692,7 +2791,7 @@ MATH_LIBS="-lm"
fi
echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
-echo "configure:2696: checking for main in -lieee" >&5
+echo "configure:2795: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2700,14 +2799,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lieee $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2704 "configure"
+#line 2803 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:2711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2738,7 +2837,7 @@ fi
libbsd=no
if test "`uname -s`" = "AIX" ; then
echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:2742: checking for gettimeofday in -lbsd" >&5
+echo "configure:2841: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2746,7 +2845,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2750 "configure"
+#line 2849 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2757,7 +2856,7 @@ int main() {
gettimeofday()
; return 0; }
EOF
-if { (eval echo configure:2761: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2788,9 +2887,9 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking stdlib.h""... $ac_c" 1>&6
-echo "configure:2792: checking stdlib.h" >&5
+echo "configure:2891: checking stdlib.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 2794 "configure"
+#line 2893 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2805,7 +2904,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 2809 "configure"
+#line 2908 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2819,7 +2918,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 2823 "configure"
+#line 2922 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2851,16 +2950,16 @@ echo "$ac_t""$tk_ok" 1>&6
#--------------------------------------------------------------------
echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6
-echo "configure:2855: checking fd_set and sys/select" >&5
+echo "configure:2954: checking fd_set and sys/select" >&5
cat > conftest.$ac_ext <<EOF
-#line 2857 "configure"
+#line 2956 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
fd_set readMask, writeMask;
; return 0; }
EOF
-if { (eval echo configure:2864: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tk_ok=yes
else
@@ -2872,7 +2971,7 @@ fi
rm -f conftest*
if test $tk_ok = no; then
cat > conftest.$ac_ext <<EOF
-#line 2876 "configure"
+#line 2975 "configure"
#include "confdefs.h"
#include <sys/select.h>
EOF
@@ -2904,12 +3003,12 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2908: checking for ANSI C header files" >&5
+echo "configure:3007: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2913 "configure"
+#line 3012 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2917,7 +3016,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2934,7 +3033,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2938 "configure"
+#line 3037 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2952,7 +3051,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2956 "configure"
+#line 3055 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2973,7 +3072,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2977 "configure"
+#line 3076 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2984,7 +3083,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -3008,12 +3107,12 @@ EOF
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3012: checking for mode_t" >&5
+echo "configure:3111: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3017 "configure"
+#line 3116 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3041,12 +3140,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3045: checking for pid_t" >&5
+echo "configure:3144: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3050 "configure"
+#line 3149 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3074,12 +3173,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3078: checking for size_t" >&5
+echo "configure:3177: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3083 "configure"
+#line 3182 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3107,12 +3206,12 @@ EOF
fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3111: checking for uid_t in sys/types.h" >&5
+echo "configure:3210: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3116 "configure"
+#line 3215 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -3149,17 +3248,17 @@ for ac_hdr in sys/time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3153: checking for $ac_hdr" >&5
+echo "configure:3252: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3158 "configure"
+#line 3257 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3186,12 +3285,12 @@ fi
done
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3190: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3289: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3195 "configure"
+#line 3294 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -3200,7 +3299,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:3204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -3226,16 +3325,16 @@ fi
#-------------------------------------------
echo $ac_n "checking pw_gecos in struct pwd""... $ac_c" 1>&6
-echo "configure:3230: checking pw_gecos in struct pwd" >&5
+echo "configure:3329: checking pw_gecos in struct pwd" >&5
cat > conftest.$ac_ext <<EOF
-#line 3232 "configure"
+#line 3331 "configure"
#include "confdefs.h"
#include <pwd.h>
int main() {
struct passwd pwd; pwd.pw_gecos;
; return 0; }
EOF
-if { (eval echo configure:3239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tk_ok=yes
else
@@ -3268,7 +3367,7 @@ fi
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:3272: checking for X" >&5
+echo "configure:3371: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -3330,12 +3429,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 3334 "configure"
+#line 3433 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3404,14 +3503,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3408 "configure"
+#line 3507 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:3415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
@@ -3501,12 +3600,12 @@ fi
if test "$no_x" = ""; then
if test "$x_includes" = ""; then
cat > conftest.$ac_ext <<EOF
-#line 3505 "configure"
+#line 3604 "configure"
#include "confdefs.h"
#include <X11/XIntrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3609: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3526,15 +3625,15 @@ rm -f conftest*
fi
if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
echo $ac_n "checking for X11 header files""... $ac_c" 1>&6
-echo "configure:3530: checking for X11 header files" >&5
+echo "configure:3629: checking for X11 header files" >&5
XINCLUDES="# no special path needed"
cat > conftest.$ac_ext <<EOF
-#line 3533 "configure"
+#line 3632 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3637: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -3570,7 +3669,7 @@ rm -f conftest*
if test "$no_x" = yes; then
echo $ac_n "checking for X11 libraries""... $ac_c" 1>&6
-echo "configure:3574: checking for X11 libraries" >&5
+echo "configure:3673: checking for X11 libraries" >&5
XLIBSW=nope
dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
for i in $dirs ; do
@@ -3590,7 +3689,7 @@ echo "configure:3574: checking for X11 libraries" >&5
fi
if test "$XLIBSW" = nope ; then
echo $ac_n "checking for XCreateWindow in -lXwindow""... $ac_c" 1>&6
-echo "configure:3594: checking for XCreateWindow in -lXwindow" >&5
+echo "configure:3693: checking for XCreateWindow in -lXwindow" >&5
ac_lib_var=`echo Xwindow'_'XCreateWindow | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3598,7 +3697,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXwindow $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3602 "configure"
+#line 3701 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3609,7 +3708,7 @@ int main() {
XCreateWindow()
; return 0; }
EOF
-if { (eval echo configure:3613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3694,7 +3793,7 @@ esac
#--------------------------------------------------------------------
echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:3698: checking for main in -lXbsd" >&5
+echo "configure:3797: checking for main in -lXbsd" >&5
ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3702,14 +3801,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3706 "configure"
+#line 3805 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3732,12 +3831,12 @@ fi
tk_checkBoth=0
echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:3736: checking for connect" >&5
+echo "configure:3835: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3741 "configure"
+#line 3840 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -3760,7 +3859,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:3764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_connect=yes"
else
@@ -3782,7 +3881,7 @@ fi
if test "$tk_checkSocket" = 1; then
echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:3786: checking for main in -lsocket" >&5
+echo "configure:3885: checking for main in -lsocket" >&5
ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3790,14 +3889,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3794 "configure"
+#line 3893 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3823,12 +3922,12 @@ if test "$tk_checkBoth" = 1; then
tk_oldLibs=$LIBS
LIBS="$LIBS -lsocket -lnsl"
echo $ac_n "checking for accept""... $ac_c" 1>&6
-echo "configure:3827: checking for accept" >&5
+echo "configure:3926: checking for accept" >&5
if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3832 "configure"
+#line 3931 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char accept(); below. */
@@ -3851,7 +3950,7 @@ accept();
; return 0; }
EOF
-if { (eval echo configure:3855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_accept=yes"
else
@@ -3873,12 +3972,12 @@ fi
fi
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:3877: checking for gethostbyname" >&5
+echo "configure:3976: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3882 "configure"
+#line 3981 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -3901,7 +4000,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:3905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gethostbyname=yes"
else
@@ -3919,7 +4018,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:3923: checking for main in -lnsl" >&5
+echo "configure:4022: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3927,14 +4026,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3931 "configure"
+#line 4030 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3974,13 +4073,13 @@ LIBS="$LIBS$THREADS_LIBS"
if test -d /usr/include/mit ; then
echo $ac_n "checking MIT X libraries""... $ac_c" 1>&6
-echo "configure:3978: checking MIT X libraries" >&5
+echo "configure:4077: checking MIT X libraries" >&5
tk_oldCFlags=$CFLAGS
CFLAGS="$CFLAGS -I/usr/include/mit"
tk_oldLibs=$LIBS
LIBS="$LIBS -lX11-mit"
cat > conftest.$ac_ext <<EOF
-#line 3984 "configure"
+#line 4083 "configure"
#include "confdefs.h"
#include <X11/Xlib.h>
@@ -3991,7 +4090,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
@@ -4018,12 +4117,12 @@ fi
MATH_LIBS=""
echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4022: checking for sin" >&5
+echo "configure:4121: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4027 "configure"
+#line 4126 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char sin(); below. */
@@ -4046,7 +4145,7 @@ sin();
; return 0; }
EOF
-if { (eval echo configure:4050: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_sin=yes"
else
@@ -4067,7 +4166,7 @@ MATH_LIBS="-lm"
fi
echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
-echo "configure:4071: checking for main in -lieee" >&5
+echo "configure:4170: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4075,14 +4174,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lieee $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4079 "configure"
+#line 4178 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4109,14 +4208,14 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
-echo "configure:4113: checking whether char is unsigned" >&5
+echo "configure:4212: checking whether char is unsigned" >&5
if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$GCC" = yes; then
# GCC predefines this symbol on systems where it applies.
cat > conftest.$ac_ext <<EOF
-#line 4120 "configure"
+#line 4219 "configure"
#include "confdefs.h"
#ifdef __CHAR_UNSIGNED__
yes
@@ -4138,7 +4237,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 4142 "configure"
+#line 4241 "configure"
#include "confdefs.h"
/* volatile prevents gcc2 from optimizing the test away on sparcs. */
#if !defined(__STDC__) || __STDC__ != 1
@@ -4148,7 +4247,7 @@ main() {
volatile char c = 255; exit(c < 0);
}
EOF
-if { (eval echo configure:4152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_char_unsigned=yes
else
@@ -4181,12 +4280,12 @@ fi
echo $ac_n "checking for strtod""... $ac_c" 1>&6
-echo "configure:4185: checking for strtod" >&5
+echo "configure:4284: checking for strtod" >&5
if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4190 "configure"
+#line 4289 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char strtod(); below. */
@@ -4209,7 +4308,7 @@ strtod();
; return 0; }
EOF
-if { (eval echo configure:4213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_strtod=yes"
else
@@ -4231,12 +4330,12 @@ fi
if test "$tcl_strtod" = 1; then
echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6
-echo "configure:4235: checking for Solaris2.4/Tru64 strtod bugs" >&5
+echo "configure:4334: checking for Solaris2.4/Tru64 strtod bugs" >&5
if test "$cross_compiling" = yes; then
tcl_ok=0
else
cat > conftest.$ac_ext <<EOF
-#line 4240 "configure"
+#line 4339 "configure"
#include "confdefs.h"
extern double strtod();
@@ -4256,7 +4355,7 @@ else
exit(0);
}
EOF
-if { (eval echo configure:4260: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4359: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
tcl_ok=1
else
@@ -4288,7 +4387,7 @@ EOF
echo $ac_n "checking how to build libraries""... $ac_c" 1>&6
-echo "configure:4292: checking how to build libraries" >&5
+echo "configure:4391: checking how to build libraries" >&5
# Check whether --enable-shared or --disable-shared was given.
if test "${enable_shared+set}" = set; then
enableval="$enable_shared"
@@ -4321,17 +4420,13 @@ EOF
eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"
-TCL_LIB_SPEC='-L$(TCL_BIN_DIR) $(TCL_LIB_FLAG)'
-TCL_STUB_LIB_SPEC='-L$(TCL_BIN_DIR) $(TCL_STUB_LIB_FLAG)'
-
if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
TK_LIB_FILE=libtk${TK_SHARED_LIB_SUFFIX}
- MAKE_LIB="\${SHLIB_LD} -o \$@ \${OBJS} \$(TK_LD_SEARCH_FLAGS) ${TCL_STUB_LIB_SPEC} \${SHLIB_LD_LIBS}"
+ MAKE_LIB="\${SHLIB_LD} -o \$@ \${OBJS} \$(TK_LD_SEARCH_FLAGS) \${TCL_STUB_LIB_SPEC} \${SHLIB_LD_LIBS}"
RANLIB=":"
-# TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
- TCL_STUB_FLAGS=""
+ TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
else
TK_SHLIB_CFLAGS=""
TK_LIB_FILE=libtk${TK_UNSHARED_LIB_SUFFIX}
@@ -4354,15 +4449,20 @@ if test "$SHARED_BUILD" = 0 -o $TCL_NEEDS_EXP_FILE = 0; then
eval TK_LIB_FLAG="-ltk`echo ${VERSION} | tr -d .`\${TK_DBGX}"
fi
TK_BUILD_LIB_SPEC="-L`pwd` ${TK_LIB_FLAG}"
- TK_LIB_SPEC="-L${exec_prefix}/lib ${TK_LIB_FLAG}"
+ TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
TK_BUILD_EXP_FILE=""
TK_EXP_FILE=""
else
TK_BUILD_EXP_FILE="lib.exp"
eval "TK_EXP_FILE=libtk${TCL_EXPORT_FILE_SUFFIX}"
-
- TK_BUILD_LIB_SPEC="-bI:`pwd`/${TK_BUILD_EXP_FILE}"
- TK_LIB_SPEC="-bI:${exec_prefix}/lib/${TK_EXP_FILE}"
+
+ if test "$GCC" = "yes" ; then
+ TK_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TK_BUILD_EXP_FILE} -L`pwd`"
+ TK_LIB_SPEC="-Wl,-bI:${libdir}/${TK_EXP_FILE} -L`pwd`"
+ else
+ TK_BUILD_LIB_SPEC="-bI:`pwd`/${TK_BUILD_EXP_FILE}"
+ TK_LIB_SPEC="-bI:${libdir}/${TK_EXP_FILE}"
+ fi
fi
TK_SHARED_BUILD=${SHARED_BUILD}
@@ -4388,22 +4488,16 @@ else
fi
TK_BUILD_STUB_LIB_SPEC="-L`pwd` ${TK_STUB_LIB_FLAG}"
-TK_STUB_LIB_SPEC="-L${exec_prefix}/lib ${TK_STUB_LIB_FLAG}"
+TK_STUB_LIB_SPEC="-L${libdir} ${TK_STUB_LIB_FLAG}"
TK_BUILD_STUB_LIB_PATH="`pwd`/${TK_STUB_LIB_FILE}"
-TK_STUB_LIB_PATH="${exec_prefix}/lib/${TK_STUB_LIB_FILE}"
-
-
-
-
-
-
+TK_STUB_LIB_PATH="${libdir}/${TK_STUB_LIB_FILE}"
+eval "TK_LIB_FILE=${TK_LIB_FILE}"
-eval "TK_LIB_FILE=${TK_LIB_FILE}"
@@ -4432,8 +4526,6 @@ eval "TK_LIB_FILE=${TK_LIB_FILE}"
-#AC_SUBST(TCL_BUILD_STUB_LIB_SPEC)
-#AC_SUBST(TCL_BUILD_LIB_SPEC)
@@ -4602,14 +4694,25 @@ s%@CC@%$CC%g
s%@RANLIB@%$RANLIB%g
s%@CPP@%$CPP%g
s%@TCL_THREADS@%$TCL_THREADS%g
+s%@TCL_VERSION@%$TCL_VERSION%g
s%@TCL_BIN_DIR@%$TCL_BIN_DIR%g
s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g
s%@TCL_LIB_FILE@%$TCL_LIB_FILE%g
+s%@TCL_LIB_FLAG@%$TCL_LIB_FLAG%g
+s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g
+s%@TCL_STUB_LIB_FILE@%$TCL_STUB_LIB_FILE%g
+s%@TCL_STUB_LIB_FLAG@%$TCL_STUB_LIB_FLAG%g
+s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g
s%@AR@%$AR%g
s%@DL_LIBS@%$DL_LIBS%g
s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g
s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g
s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g
+s%@TK_VERSION@%$TK_VERSION%g
+s%@TK_MAJOR_VERSION@%$TK_MAJOR_VERSION%g
+s%@TK_MINOR_VERSION@%$TK_MINOR_VERSION%g
+s%@TK_PATCH_LEVEL@%$TK_PATCH_LEVEL%g
+s%@TK_DBGX@%$TK_DBGX%g
s%@TK_STUB_LIB_FILE@%$TK_STUB_LIB_FILE%g
s%@TK_STUB_LIB_FLAG@%$TK_STUB_LIB_FLAG%g
s%@TK_BUILD_STUB_LIB_SPEC@%$TK_BUILD_STUB_LIB_SPEC%g
@@ -4625,7 +4728,6 @@ s%@CFLAGS_DEFAULT@%$CFLAGS_DEFAULT%g
s%@LDFLAGS_DEFAULT@%$LDFLAGS_DEFAULT%g
s%@LDFLAGS_DEBUG@%$LDFLAGS_DEBUG%g
s%@LDFLAGS_OPTIMIZE@%$LDFLAGS_OPTIMIZE%g
-s%@TK_DBGX@%$TK_DBGX%g
s%@EXTRA_CFLAGS@%$EXTRA_CFLAGS%g
s%@MATH_LIBS@%$MATH_LIBS%g
s%@MAKE_LIB@%$MAKE_LIB%g
@@ -4636,21 +4738,13 @@ s%@SHLIB_LD@%$SHLIB_LD%g
s%@SHLIB_LD_LIBS@%$SHLIB_LD_LIBS%g
s%@SHLIB_SUFFIX@%$SHLIB_SUFFIX%g
s%@SHLIB_VERSION@%$SHLIB_VERSION%g
-s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g
-s%@TCL_LIB_FLAG@%$TCL_LIB_FLAG%g
-s%@TCL_DBGX@%$TCL_DBGX%g
-s%@TCL_VERSION@%$TCL_VERSION%g
s%@TK_BUILD_LIB_SPEC@%$TK_BUILD_LIB_SPEC%g
s%@TK_CC_SEARCH_FLAGS@%$TK_CC_SEARCH_FLAGS%g
s%@TK_LD_SEARCH_FLAGS@%$TK_LD_SEARCH_FLAGS%g
s%@TK_LIB_FILE@%$TK_LIB_FILE%g
s%@TK_LIB_FLAG@%$TK_LIB_FLAG%g
s%@TK_LIB_SPEC@%$TK_LIB_SPEC%g
-s%@TK_MAJOR_VERSION@%$TK_MAJOR_VERSION%g
-s%@TK_MINOR_VERSION@%$TK_MINOR_VERSION%g
-s%@TK_PATCH_LEVEL@%$TK_PATCH_LEVEL%g
s%@TK_SRC_DIR@%$TK_SRC_DIR%g
-s%@TK_VERSION@%$TK_VERSION%g
s%@XINCLUDES@%$XINCLUDES%g
s%@XLIBSW@%$XLIBSW%g
s%@TK_SHARED_BUILD@%$TK_SHARED_BUILD%g
diff --git a/unix/configure.in b/unix/configure.in
index a3227f0..42a2a8d 100644
--- a/unix/configure.in
+++ b/unix/configure.in
@@ -2,8 +2,10 @@
dnl This file is an input file used by the GNU "autoconf" program to
dnl generate the file "configure", which is run during Tk installation
dnl to configure the system for the local environment.
+#
+# RCS: @(#) $Id: configure.in,v 1.63.2.1 2002/02/05 02:25:18 wolfsuit Exp $
+
AC_INIT(../generic/tk.h)
-# RCS: @(#) $Id: configure.in,v 1.63 2001/08/08 18:41:10 dgp Exp $
TK_VERSION=8.4
TK_MAJOR_VERSION=8
@@ -12,12 +14,18 @@ TK_PATCH_LEVEL="a4"
VERSION=${TK_VERSION}
LOCALES="de en es fr"
+#------------------------------------------------------------------------
+# Handle the --prefix=... option
+#------------------------------------------------------------------------
+
if test "${prefix}" = "NONE"; then
prefix=/usr/local
fi
if test "${exec_prefix}" = "NONE"; then
exec_prefix=$prefix
fi
+# libdir must be a fully qualified path and (not ${exec_prefix}/lib)
+eval libdir="$libdir"
# Make sure srcdir is fully qualified!
srcdir=`cd $srcdir ; pwd`
TK_SRC_DIR=`cd $srcdir/..; pwd`
@@ -337,17 +345,13 @@ SC_ENABLE_SHARED
eval eval "TK_SHARED_LIB_SUFFIX=${SHARED_LIB_SUFFIX}"
eval eval "TK_UNSHARED_LIB_SUFFIX=${UNSHARED_LIB_SUFFIX}"
-TCL_LIB_SPEC='-L$(TCL_BIN_DIR) $(TCL_LIB_FLAG)'
-TCL_STUB_LIB_SPEC='-L$(TCL_BIN_DIR) $(TCL_STUB_LIB_FLAG)'
-
if test "${SHARED_BUILD}" = "1" -a "${SHLIB_SUFFIX}" != ""; then
TK_SHLIB_CFLAGS="${SHLIB_CFLAGS}"
TK_LIB_FILE=libtk${TK_SHARED_LIB_SUFFIX}
- MAKE_LIB="\${SHLIB_LD} -o \[$]@ \${OBJS} \$(TK_LD_SEARCH_FLAGS) ${TCL_STUB_LIB_SPEC} \${SHLIB_LD_LIBS}"
+ MAKE_LIB="\${SHLIB_LD} -o \[$]@ \${OBJS} \$(TK_LD_SEARCH_FLAGS) \${TCL_STUB_LIB_SPEC} \${SHLIB_LD_LIBS}"
RANLIB=":"
-# TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
- TCL_STUB_FLAGS=""
+ TCL_STUB_FLAGS="-DUSE_TCL_STUBS"
else
TK_SHLIB_CFLAGS=""
TK_LIB_FILE=libtk${TK_UNSHARED_LIB_SUFFIX}
@@ -370,15 +374,20 @@ if test "$SHARED_BUILD" = 0 -o $TCL_NEEDS_EXP_FILE = 0; then
eval TK_LIB_FLAG="-ltk`echo ${VERSION} | tr -d .`\${TK_DBGX}"
fi
TK_BUILD_LIB_SPEC="-L`pwd` ${TK_LIB_FLAG}"
- TK_LIB_SPEC="-L${exec_prefix}/lib ${TK_LIB_FLAG}"
+ TK_LIB_SPEC="-L${libdir} ${TK_LIB_FLAG}"
TK_BUILD_EXP_FILE=""
TK_EXP_FILE=""
else
TK_BUILD_EXP_FILE="lib.exp"
eval "TK_EXP_FILE=libtk${TCL_EXPORT_FILE_SUFFIX}"
-
- TK_BUILD_LIB_SPEC="-bI:`pwd`/${TK_BUILD_EXP_FILE}"
- TK_LIB_SPEC="-bI:${exec_prefix}/lib/${TK_EXP_FILE}"
+
+ if test "$GCC" = "yes" ; then
+ TK_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TK_BUILD_EXP_FILE} -L`pwd`"
+ TK_LIB_SPEC="-Wl,-bI:${libdir}/${TK_EXP_FILE} -L`pwd`"
+ else
+ TK_BUILD_LIB_SPEC="-bI:`pwd`/${TK_BUILD_EXP_FILE}"
+ TK_LIB_SPEC="-bI:${libdir}/${TK_EXP_FILE}"
+ fi
fi
TK_SHARED_BUILD=${SHARED_BUILD}
@@ -404,9 +413,17 @@ else
fi
TK_BUILD_STUB_LIB_SPEC="-L`pwd` ${TK_STUB_LIB_FLAG}"
-TK_STUB_LIB_SPEC="-L${exec_prefix}/lib ${TK_STUB_LIB_FLAG}"
+TK_STUB_LIB_SPEC="-L${libdir} ${TK_STUB_LIB_FLAG}"
TK_BUILD_STUB_LIB_PATH="`pwd`/${TK_STUB_LIB_FILE}"
-TK_STUB_LIB_PATH="${exec_prefix}/lib/${TK_STUB_LIB_FILE}"
+TK_STUB_LIB_PATH="${libdir}/${TK_STUB_LIB_FILE}"
+
+eval "TK_LIB_FILE=${TK_LIB_FILE}"
+
+AC_SUBST(TK_VERSION)
+AC_SUBST(TK_MAJOR_VERSION)
+AC_SUBST(TK_MINOR_VERSION)
+AC_SUBST(TK_PATCH_LEVEL)
+AC_SUBST(TK_DBGX)
AC_SUBST(TK_STUB_LIB_FILE)
AC_SUBST(TK_STUB_LIB_FLAG)
@@ -419,8 +436,6 @@ AC_SUBST(TK_STUB_FLAGS)
AC_SUBST(TK_BUILD_EXP_FILE)
AC_SUBST(TK_EXP_FILE)
-eval "TK_LIB_FILE=${TK_LIB_FILE}"
-
AC_SUBST(TCL_STUB_FLAGS)
AC_SUBST(TK_BUILD_EXP_FILE)
AC_SUBST(TK_EXP_FILE)
@@ -431,7 +446,6 @@ AC_SUBST(CFLAGS_OPTIMIZE)
AC_SUBST(LDFLAGS_DEFAULT)
AC_SUBST(LDFLAGS_DEBUG)
AC_SUBST(LDFLAGS_OPTIMIZE)
-AC_SUBST(TK_DBGX)
AC_SUBST(DL_LIBS)
AC_SUBST(EXTRA_CFLAGS)
AC_SUBST(MATH_LIBS)
@@ -445,26 +459,13 @@ AC_SUBST(SHLIB_LD)
AC_SUBST(SHLIB_LD_LIBS)
AC_SUBST(SHLIB_SUFFIX)
AC_SUBST(SHLIB_VERSION)
-AC_SUBST(TCL_BIN_DIR)
-AC_SUBST(TCL_LIB_SPEC)
-AC_SUBST(TCL_LIB_FLAG)
-#AC_SUBST(TCL_BUILD_STUB_LIB_SPEC)
-#AC_SUBST(TCL_BUILD_LIB_SPEC)
-AC_SUBST(TCL_DBGX)
-AC_SUBST(TCL_LIB_FLAG)
-AC_SUBST(TCL_SRC_DIR)
-AC_SUBST(TCL_VERSION)
AC_SUBST(TK_BUILD_LIB_SPEC)
AC_SUBST(TK_CC_SEARCH_FLAGS)
AC_SUBST(TK_LD_SEARCH_FLAGS)
AC_SUBST(TK_LIB_FILE)
AC_SUBST(TK_LIB_FLAG)
AC_SUBST(TK_LIB_SPEC)
-AC_SUBST(TK_MAJOR_VERSION)
-AC_SUBST(TK_MINOR_VERSION)
-AC_SUBST(TK_PATCH_LEVEL)
AC_SUBST(TK_SRC_DIR)
-AC_SUBST(TK_VERSION)
AC_SUBST(XINCLUDES)
AC_SUBST(XLIBSW)
AC_SUBST(TK_SHARED_BUILD)
diff --git a/unix/tcl.m4 b/unix/tcl.m4
index 0fafaf3..76eeace 100644
--- a/unix/tcl.m4
+++ b/unix/tcl.m4
@@ -58,7 +58,7 @@ AC_DEFUN(SC_PATH_TCLCONFIG, [
# check in a few common install locations
if test x"${ac_cv_c_tclconfig}" = x ; then
- for i in `ls -d ${prefix}/lib 2>/dev/null` \
+ for i in `ls -d ${exec_prefix}/lib 2>/dev/null` \
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
@@ -153,7 +153,7 @@ AC_DEFUN(SC_PATH_TKCONFIG, [
fi
# check in a few common install locations
if test x"${ac_cv_c_tkconfig}" = x ; then
- for i in `ls -d ${prefix}/lib 2>/dev/null` \
+ for i in `ls -d ${exec_prefix}/lib 2>/dev/null` \
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
@@ -219,16 +219,43 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [
fi
#
- # The eval is required to do the TCL_DBGX substitution in the
- # TCL_LIB_FILE variable
+ # If the TCL_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TCL_LIB_SPEC will be set to the value
+ # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+ # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
#
- eval TCL_LIB_FILE=${TCL_LIB_FILE}
- eval TCL_LIB_FLAG=${TCL_LIB_FLAG}
+ if test -f $TCL_BIN_DIR/Makefile ; then
+ TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+ TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+ TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+ fi
+
+ #
+ # eval is required to do the TCL_DBGX substitution
+ #
+
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+ eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
+
+ eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+ eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+ AC_SUBST(TCL_VERSION)
AC_SUBST(TCL_BIN_DIR)
AC_SUBST(TCL_SRC_DIR)
+
AC_SUBST(TCL_LIB_FILE)
+ AC_SUBST(TCL_LIB_FLAG)
+ AC_SUBST(TCL_LIB_SPEC)
+
+ AC_SUBST(TCL_STUB_LIB_FILE)
+ AC_SUBST(TCL_STUB_LIB_FLAG)
+ AC_SUBST(TCL_STUB_LIB_SPEC)
])
#------------------------------------------------------------------------
@@ -361,8 +388,14 @@ AC_DEFUN(SC_ENABLE_THREADS, [
else
AC_CHECK_LIB(c,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
if test "$tcl_ok" = "no"; then
- TCL_THREADS=0
- AC_MSG_WARN("Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...")
+ AC_CHECK_LIB(c_r,pthread_mutex_init,tcl_ok=yes,tcl_ok=no)
+ if test "$tcl_ok" = "yes"; then
+ # The space is needed
+ THREADS_LIBS=" -pthread"
+ else
+ TCL_THREADS=0
+ AC_MSG_WARN("Don t know how to find pthread lib on your system - you must disable thread support or edit the LIBS in the Makefile...")
+ fi
fi
fi
fi
@@ -423,6 +456,51 @@ AC_DEFUN(SC_ENABLE_SYMBOLS, [
fi
])
+#------------------------------------------------------------------------
+# SC_ENABLE_LANGINFO --
+#
+# Allows use of modern nl_langinfo check for better l10n.
+# This is only relevant for Unix.
+#
+# Arguments:
+# none
+#
+# Results:
+#
+# Adds the following arguments to configure:
+# --enable-langinfo=yes|no (default is yes)
+#
+# Defines the following vars:
+# HAVE_LANGINFO Triggers use of nl_langinfo if defined.
+#
+#------------------------------------------------------------------------
+
+AC_DEFUN(SC_ENABLE_LANGINFO, [
+ AC_ARG_ENABLE(langinfo,
+ [ --enable-langinfo use nl_langinfo if possible to determine
+ encoding at startup, otherwise use old heuristic],
+ [langinfo_ok=$enableval], [langinfo_ok=yes])
+
+ HAVE_LANGINFO=0
+ if test "$langinfo_ok" = "yes"; then
+ if test "$langinfo_ok" = "yes"; then
+ AC_CHECK_HEADER(langinfo.h,[langinfo_ok=yes],[langinfo_ok=no])
+ fi
+ fi
+ AC_MSG_CHECKING([whether to use nl_langinfo])
+ if test "$langinfo_ok" = "yes"; then
+ AC_TRY_COMPILE([#include <langinfo.h>],
+ [nl_langinfo(CODESET);],[langinfo_ok=yes],[langinfo_ok=no])
+ if test "$langinfo_ok" = "no"; then
+ langinfo_ok="no (could not compile with nl_langinfo)";
+ fi
+ if test "$langinfo_ok" = "yes"; then
+ AC_DEFINE(HAVE_LANGINFO)
+ fi
+ fi
+ AC_MSG_RESULT([$langinfo_ok])
+])
+
#--------------------------------------------------------------------
# SC_CONFIG_CFLAGS
#
@@ -568,7 +646,6 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [
# Step 3: set configuration options based on system name and version.
do64bit_ok=no
- fullSrcDir=`cd $srcdir; pwd`
EXTRA_CFLAGS=""
TCL_EXPORT_FILE_SUFFIX=""
UNSHARED_LIB_SUFFIX=""
@@ -598,6 +675,7 @@ dnl AC_CHECK_TOOL(AR, ar, :)
fi
AC_MSG_RESULT(Using $CC for compiling with threads)
fi
+ LIBS="$LIBS -lc"
# AIX-5 uses ELF style dynamic libraries
SHLIB_CFLAGS=""
SHLIB_LD="/usr/ccs/bin/ld -G -z text"
@@ -635,8 +713,9 @@ dnl AC_CHECK_TOOL(AR, ar, :)
fi
AC_MSG_RESULT(Using $CC for compiling with threads)
fi
+ LIBS="$LIBS -lc"
SHLIB_CFLAGS=""
- SHLIB_LD="$fullSrcDir/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
+ SHLIB_LD="${TCL_SRC_DIR}/unix/ldAix /bin/ld -bhalt:4 -bM:SRE -bE:lib.exp -H512 -T512 -bnoentry"
SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX=".so"
DL_OBJS="tclLoadDl.o"
@@ -919,7 +998,7 @@ dnl AC_CHECK_TOOL(AR, ar, :)
# FreeBSD 3.* and greater have ELF.
SHLIB_CFLAGS="-fPIC"
SHLIB_LD="ld -Bshareable -x"
- SHLIB_LD_LIBS=""
+ SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX=".so"
DL_OBJS="tclLoadDl.o"
DL_LIBS=""
@@ -932,6 +1011,19 @@ dnl AC_CHECK_TOOL(AR, ar, :)
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so'
TCL_LIB_VERSIONS_OK=nodots
;;
+ Rhapsody-*|Darwin-*)
+ SHLIB_CFLAGS="-fno-common"
+ SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
+ TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_MAJOR_VERSION} -current_version \${VERSION} -install_name \${LIB_RUNTIME_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr a000000"
+ SHLIB_LD_LIBS='${LIBS}'
+ SHLIB_SUFFIX=".dylib"
+ DL_OBJS="tclLoadDyld.o"
+ DL_LIBS=""
+ LDFLAGS="-prebind"
+ LD_SEARCH_FLAGS=""
+ CFLAGS_OPTIMIZE="-O3"
+ EXTRA_CFLAGS="-arch ppc -pipe"
+ ;;
NEXTSTEP-*)
SHLIB_CFLAGS=""
SHLIB_LD="cc -nostdlib -r"
@@ -984,9 +1076,10 @@ dnl AC_CHECK_TOOL(AR, ar, :)
fi
# see pthread_intro(3) for pthread support on osf1, k.furukawa
if test "${TCL_THREADS}" = "1" ; then
+ EXTRA_CFLAGS="${EXTRA_CFLAGS} -DHAVE_PTHREAD_ATTR_SETSTACKSIZE"
EXTRA_CFLAGS="${EXTRA_CFLAGS} -DTCL_THREAD_STACK_MIN=PTHREAD_STACK_MIN*64"
+ LIBS=`echo $LIBS | sed s/-lpthreads//`
if test "$GCC" = "yes" ; then
- LIBS=`echo $LIBS | sed s/-lpthreads//`
LIBS="$LIBS -lpthread -lmach -lexc"
else
EXTRA_CFLAGS="${EXTRA_CFLAGS} -pthread"
@@ -1083,7 +1176,11 @@ dnl AC_CHECK_TOOL(AR, ar, :)
DL_OBJS="tclLoadDl.o"
DL_LIBS="-ldl"
LDFLAGS=""
- LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ if test "$GCC" = "yes" ; then
+ LD_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
+ else
+ LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
+ fi
;;
SunOS-5*)
@@ -1285,6 +1382,8 @@ dnl AC_CHECK_TOOL(AR, ar, :)
;;
NetBSD-*|FreeBSD-*|OpenBSD-*)
;;
+ Rhapsody-*|Darwin-*)
+ ;;
RISCos-*)
;;
SCO_SV-3.2*)
diff --git a/unix/tkUnix.c b/unix/tkUnix.c
index 769a0b7..1dcbb2a 100644
--- a/unix/tkUnix.c
+++ b/unix/tkUnix.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUnix.c,v 1.4 1999/04/16 01:51:45 stanton Exp $
+ * RCS: @(#) $Id: tkUnix.c,v 1.4.18.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include <tkInt.h>
@@ -68,10 +68,10 @@ TkGetServerInfo(interp, tkwin)
*----------------------------------------------------------------------
*/
-char *
+CONST char *
TkGetDefaultScreenName(interp, screenName)
Tcl_Interp *interp; /* Interp used to find environment variables. */
- char *screenName; /* Screen name from command line, or NULL. */
+ CONST char *screenName; /* Screen name from command line, or NULL. */
{
if ((screenName == NULL) || (screenName[0] == '\0')) {
screenName = Tcl_GetVar2(interp, "env", "DISPLAY", TCL_GLOBAL_ONLY);
diff --git a/unix/tkUnixCursor.c b/unix/tkUnixCursor.c
index 8755a3c..e548dc5 100644
--- a/unix/tkUnixCursor.c
+++ b/unix/tkUnixCursor.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUnixCursor.c,v 1.4 1999/04/16 01:51:45 stanton Exp $
+ * RCS: @(#) $Id: tkUnixCursor.c,v 1.4.18.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -154,7 +154,7 @@ TkGetCursorByName(interp, tkwin, string)
TkUnixCursor *cursorPtr = NULL;
Cursor cursor = None;
int argc;
- char **argv = NULL;
+ CONST char **argv = NULL;
Pixmap source = None;
Pixmap mask = None;
Display *display = Tk_Display(tkwin);
diff --git a/unix/tkUnixDefault.h b/unix/tkUnixDefault.h
index c58179c..957b2e9 100644
--- a/unix/tkUnixDefault.h
+++ b/unix/tkUnixDefault.h
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUnixDefault.h,v 1.11 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkUnixDefault.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#ifndef _TKUNIXDEFAULT
@@ -423,6 +423,7 @@
* Defaults for texts:
*/
+#define DEF_TEXT_AUTO_SEPARATORS "1"
#define DEF_TEXT_BG_COLOR NORMAL_BG
#define DEF_TEXT_BG_MONO WHITE
#define DEF_TEXT_BORDER_WIDTH "2"
@@ -457,6 +458,7 @@
#define DEF_TEXT_STATE "normal"
#define DEF_TEXT_TABS ""
#define DEF_TEXT_TAKE_FOCUS (char *) NULL
+#define DEF_TEXT_UNDO "0"
#define DEF_TEXT_WIDTH "80"
#define DEF_TEXT_WRAP "char"
#define DEF_TEXT_XSCROLL_COMMAND ""
diff --git a/unix/tkUnixEvent.c b/unix/tkUnixEvent.c
index 4353154..1a5832f 100644
--- a/unix/tkUnixEvent.c
+++ b/unix/tkUnixEvent.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUnixEvent.c,v 1.3 1999/04/16 01:51:46 stanton Exp $
+ * RCS: @(#) $Id: tkUnixEvent.c,v 1.3.18.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -118,7 +118,7 @@ DisplayExitHandler(clientData)
TkDisplay *
TkpOpenDisplay(display_name)
- char *display_name;
+ CONST char *display_name;
{
TkDisplay *dispPtr;
Display *display = XOpenDisplay(display_name);
diff --git a/unix/tkUnixInit.c b/unix/tkUnixInit.c
index 1e28f02..520a786 100644
--- a/unix/tkUnixInit.c
+++ b/unix/tkUnixInit.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUnixInit.c,v 1.4.18.1 2001/10/15 09:22:00 wolfsuit Exp $
+ * RCS: @(#) $Id: tkUnixInit.c,v 1.4.18.2 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkInt.h"
@@ -72,7 +72,7 @@ TkpGetAppName(interp, namePtr)
Tcl_Interp *interp;
Tcl_DString *namePtr; /* A previously initialized Tcl_DString. */
{
- char *p, *name;
+ CONST char *p, *name;
name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
if ((name == NULL) || (*name == 0)) {
@@ -105,8 +105,8 @@ TkpGetAppName(interp, namePtr)
void
TkpDisplayWarning(msg, title)
- char *msg; /* Message to be displayed. */
- char *title; /* Title of warning. */
+ CONST char *msg; /* Message to be displayed. */
+ CONST char *title; /* Title of warning. */
{
Tcl_Channel errChannel = Tcl_GetStdChannel(TCL_STDERR);
if (errChannel) {
diff --git a/unix/tkUnixMenu.c b/unix/tkUnixMenu.c
index 10e0659..fb61b69 100644
--- a/unix/tkUnixMenu.c
+++ b/unix/tkUnixMenu.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkUnixMenu.c,v 1.5 2001/10/12 13:30:31 tmh Exp $
+ * RCS: @(#) $Id: tkUnixMenu.c,v 1.5.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -877,8 +877,8 @@ DrawMenuUnderline(menuPtr, mePtr, d, gc, tkfont, fmPtr, x, y, width, height)
int activeBorderWidth;
int leftEdge;
char *label = Tcl_GetStringFromObj(mePtr->labelPtr, NULL);
- char *start = Tcl_UtfAtIndex(label, mePtr->underline);
- char *end = Tcl_UtfNext(start);
+ CONST char *start = Tcl_UtfAtIndex(label, mePtr->underline);
+ CONST char *end = Tcl_UtfNext(start);
Tk_GetPixelsFromObj(NULL, menuPtr->tkwin,
menuPtr->activeBorderWidthPtr, &activeBorderWidth);
diff --git a/unix/tkUnixSend.c b/unix/tkUnixSend.c
index 597911f..362b676 100644
--- a/unix/tkUnixSend.c
+++ b/unix/tkUnixSend.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: tkUnixSend.c,v 1.4 1999/04/16 01:51:47 stanton Exp $
+ * RCS: @(#) $Id: tkUnixSend.c,v 1.4.18.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -603,7 +603,7 @@ ValidateName(dispPtr, name, commWindow, oldOK)
Atom actualType;
char *property;
Tk_ErrorHandler handler;
- char **argv;
+ CONST char **argv;
property = NULL;
@@ -1508,7 +1508,7 @@ SendEventProc(clientData, eventPtr)
Tcl_DStringAppend(&reply, Tcl_GetStringResult(remoteInterp),
-1);
if (result == TCL_ERROR) {
- char *varValue;
+ CONST char *varValue;
varValue = Tcl_GetVar2(remoteInterp, "errorInfo",
(char *) NULL, TCL_GLOBAL_ONLY);
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
index 9fff250..dded8b2 100644
--- a/unix/tkUnixWm.c
+++ b/unix/tkUnixWm.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: tkUnixWm.c,v 1.9 2001/08/28 19:41:55 hobbs Exp $
+ * RCS: @(#) $Id: tkUnixWm.c,v 1.9.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkPort.h"
@@ -196,7 +196,7 @@ typedef struct TkWmInfo {
ProtocolHandler *protPtr; /* First in list of protocol handlers for
* this window (NULL means none). */
int cmdArgc; /* Number of elements in cmdArgv below. */
- char **cmdArgv; /* Array of strings to store in the
+ CONST char **cmdArgv; /* Array of strings to store in the
* WM_COMMAND property. NULL means nothing
* available. */
char *clientMachine; /* String to store in WM_CLIENT_MACHINE
@@ -323,6 +323,9 @@ static int ParseGeometry _ANSI_ARGS_((Tcl_Interp *interp,
char *string, TkWindow *winPtr));
static void ReparentEvent _ANSI_ARGS_((WmInfo *wmPtr,
XReparentEvent *eventPtr));
+static void TkWmStackorderToplevelWrapperMap _ANSI_ARGS_((
+ TkWindow *winPtr,
+ Tcl_HashTable *reparentTable));
static void TopLevelReqProc _ANSI_ARGS_((ClientData dummy,
Tk_Window tkwin));
static void UpdateCommand _ANSI_ARGS_((TkWindow *winPtr));
@@ -818,7 +821,7 @@ Tk_WmCmd(clientData, interp, argc, argv)
if (winPtr == NULL) {
return TCL_ERROR;
}
- if (!(winPtr->flags & TK_TOP_LEVEL)) {
+ if (!Tk_IsTopLevel(winPtr)) {
Tcl_AppendResult(interp, "window \"", winPtr->pathName,
"\" isn't a top-level window", (char *) NULL);
return TCL_ERROR;
@@ -917,7 +920,8 @@ Tk_WmCmd(clientData, interp, argc, argv)
Window *cmapList;
TkWindow *winPtr2;
int count, i, windowArgc, gotToplevel;
- char buffer[20], **windowArgv;
+ CONST char **windowArgv;
+ char buffer[20];
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # arguments: must be \"",
@@ -990,7 +994,7 @@ Tk_WmCmd(clientData, interp, argc, argv)
} else if ((c == 'c') && (strncmp(argv[1], "command", length) == 0)
&& (length >= 3)) {
int cmdArgc;
- char **cmdArgv;
+ CONST char **cmdArgv;
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # arguments: must be \"",
@@ -1748,6 +1752,99 @@ Tk_WmCmd(clientData, interp, argc, argv)
}
wmPtr->flags |= WM_UPDATE_SIZE_HINTS;
goto updateGeom;
+ } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
+ && (length >= 2)) {
+ TkWindow **windows, **window_ptr;
+
+ if ((argc != 3) && (argc != 5)) {
+ Tcl_AppendResult(interp, "wrong # arguments: must be \"",
+ argv[0],
+ " stackorder window ?isabove|isbelow? ?window?\"",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (argc == 3) {
+ windows = TkWmStackorderToplevel(winPtr);
+ if (windows == NULL) {
+ panic("TkWmStackorderToplevel failed");
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ Tcl_AppendElement(interp, (*window_ptr)->pathName);
+ }
+ ckfree((char *) windows);
+ return TCL_OK;
+ }
+ } else {
+ TkWindow *winPtr2;
+ int index1=-1, index2=-1, result;
+
+ winPtr2 = (TkWindow *) Tk_NameToWindow(interp, argv[4], tkwin);
+ if (winPtr2 == NULL) {
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsTopLevel(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't a top-level window", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr)) {
+ Tcl_AppendResult(interp, "window \"", winPtr->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Lookup stacking order of all toplevels that are children
+ * of "." and find the position of winPtr and winPtr2
+ * in the stacking order.
+ */
+
+ windows = TkWmStackorderToplevel(winPtr->mainPtr->winPtr);
+
+ if (windows == NULL) {
+ Tcl_AppendResult(interp, "TkWmStackorderToplevel failed",
+ (char *) NULL);
+ return TCL_ERROR;
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ if (*window_ptr == winPtr)
+ index1 = (window_ptr - windows);
+ if (*window_ptr == winPtr2)
+ index2 = (window_ptr - windows);
+ }
+ if (index1 == -1)
+ panic("winPtr window not found");
+ if (index2 == -1)
+ panic("winPtr2 window not found");
+
+ ckfree((char *) windows);
+ }
+
+ c = argv[3][0];
+ length = strlen(argv[3]);
+ if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isabove", length) == 0)) {
+ result = index1 > index2;
+ } else if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isbelow", length) == 0)) {
+ result = index1 < index2;
+ } else {
+ Tcl_AppendResult(interp, "bad argument \"", argv[3],
+ "\": must be isabove or isbelow", (char *) NULL);
+ return TCL_ERROR;
+ }
+ Tcl_SetIntObj(Tcl_GetObjResult(interp), result);
+ return TCL_OK;
+ }
} else if ((c == 's') && (strncmp(argv[1], "state", length) == 0)
&& (length >= 2)) {
if ((argc < 3) || (argc > 4)) {
@@ -1954,8 +2051,8 @@ Tk_WmCmd(clientData, interp, argc, argv)
"focusmodel, frame, geometry, grid, group, iconbitmap, ",
"iconify, iconmask, iconname, iconposition, ",
"iconwindow, maxsize, minsize, overrideredirect, ",
- "positionfrom, protocol, resizable, sizefrom, state, title, ",
- "transient, or withdraw",
+ "positionfrom, protocol, resizable, sizefrom, stackorder, ",
+ "state, title, transient, or withdraw",
(char *) NULL);
return TCL_ERROR;
}
@@ -4073,6 +4170,135 @@ TkWmProtocolEventProc(winPtr, eventPtr)
/*
*----------------------------------------------------------------------
*
+ * TkWmStackorderToplevelWrapperMap --
+ *
+ * This procedure will create a table that maps the reparent wrapper
+ * X id for a toplevel to the TkWindow structure that is wraps.
+ * Tk keeps track of a mapping from the window X id to the TkWindow
+ * structure but that does us no good here since we only get the X
+ * id of the wrapper window. Only those toplevel windows that are
+ * mapped have a position in the stacking order.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Adds entries to the passed hashtable.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+TkWmStackorderToplevelWrapperMap(winPtr, table)
+ TkWindow *winPtr; /* TkWindow to recurse on */
+ Tcl_HashTable *table; /* Maps X id to TkWindow */
+{
+ TkWindow *childPtr;
+ Tcl_HashEntry *hPtr;
+ Window wrapper;
+ int newEntry;
+
+ if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {
+ wrapper = (winPtr->wmInfoPtr->reparent != None)
+ ? winPtr->wmInfoPtr->reparent
+ : winPtr->wmInfoPtr->wrapperPtr->window;
+
+ hPtr = Tcl_CreateHashEntry(table,
+ (char *) wrapper, &newEntry);
+ Tcl_SetHashValue(hPtr, winPtr);
+ }
+
+ for (childPtr = winPtr->childList; childPtr != NULL;
+ childPtr = childPtr->nextPtr) {
+ TkWmStackorderToplevelWrapperMap(childPtr, table);
+ }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkWmStackorderToplevel --
+ *
+ * This procedure returns the stack order of toplevel windows.
+ *
+ * Results:
+ * An array of pointers to tk window objects in stacking order
+ * or else NULL if there was an error.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+TkWindow **
+TkWmStackorderToplevel(parentPtr)
+ TkWindow *parentPtr; /* Parent toplevel window. */
+{
+ Window dummy1, dummy2, vRoot;
+ Window *children;
+ unsigned int numChildren, i;
+ TkWindow *childWinPtr, **windows, **window_ptr;
+ Tcl_HashTable table;
+ Tcl_HashEntry *hPtr;
+ Tcl_HashSearch search;
+
+ /*
+ * Map X Window ids to a TkWindow of the wrapped toplevel.
+ */
+
+ Tcl_InitHashTable(&table, TCL_ONE_WORD_KEYS);
+ TkWmStackorderToplevelWrapperMap(parentPtr, &table);
+
+ window_ptr = windows = (TkWindow **) ckalloc((table.numEntries+1)
+ * sizeof(TkWindow *));
+
+ /*
+ * Special cases: If zero or one toplevels were mapped
+ * there is no need to call XQueryTree.
+ */
+
+ switch (table.numEntries) {
+ case 0:
+ windows[0] = NULL;
+ goto done;
+ case 1:
+ hPtr = Tcl_FirstHashEntry(&table, &search);
+ windows[0] = (TkWindow *) Tcl_GetHashValue(hPtr);
+ windows[1] = NULL;
+ goto done;
+ }
+
+ vRoot = parentPtr->wmInfoPtr->vRoot;
+ if (vRoot == None) {
+ vRoot = RootWindowOfScreen(Tk_Screen((Tk_Window) parentPtr));
+ }
+
+ if (XQueryTree(parentPtr->display, vRoot, &dummy1, &dummy2,
+ &children, &numChildren) == 0) {
+ ckfree((char *) windows);
+ windows = NULL;
+ } else {
+ for (i = 0; i < numChildren; i++) {
+ hPtr = Tcl_FindHashEntry(&table, (char *) children[i]);
+ if (hPtr != NULL) {
+ childWinPtr = (TkWindow *) Tcl_GetHashValue(hPtr);
+ *window_ptr++ = childWinPtr;
+ }
+ }
+ if ((window_ptr - windows) != table.numEntries)
+ panic("num matched toplevel windows does not equal num children");
+ *window_ptr = NULL;
+ }
+
+ done:
+ Tcl_DeleteHashTable(&table);
+ return windows;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
* TkWmRestackToplevel --
*
* This procedure restacks a top-level window.
diff --git a/win/Makefile.in b/win/Makefile.in
index 6f81cd4..b8a6ac3 100644
--- a/win/Makefile.in
+++ b/win/Makefile.in
@@ -4,7 +4,7 @@
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
-# RCS: @(#) $Id: Makefile.in,v 1.44 2001/09/10 03:23:54 mdejong Exp $
+# RCS: @(#) $Id: Makefile.in,v 1.44.2.1 2002/02/05 02:25:18 wolfsuit Exp $
TCLVERSION = @TCL_VERSION@
VERSION = @TK_VERSION@
@@ -84,6 +84,7 @@ TCL_BIN_DIR = @TCL_BIN_DIR@
# for this version of Tk ("srcdir" will be replaced or has already
# been replaced by the configure script):
TCL_GENERIC_DIR = @TCL_SRC_DIR@/generic
+TCL_TOOL_DIR = @TCL_SRC_DIR@/tools
# Converts a POSIX path to a Windows native path.
CYGPATH = @CYGPATH@
@@ -186,6 +187,13 @@ COPY = cp
TCLSH_PROG = @TCLSH_PROG@
+# TCL_EXE is the name of a tclsh executable that is available *BEFORE*
+# running make for the first time. Certain build targets (make genstubs)
+# need it to be available on the PATH. This executable should *NOT* be
+# required just to do a normal build although it can be required to run
+# make dist.
+TCL_EXE = tclsh
+
CC_SWITCHES = ${CFLAGS} ${CFLAGS_WARNING} ${SHLIB_CFLAGS} \
-I"${GENERIC_DIR_NATIVE}" -I"${WIN_DIR_NATIVE}" \
-I"${XLIB_DIR_NATIVE}" -I"${BITMAP_DIR_NATIVE}" \
@@ -397,6 +405,14 @@ shell: $(WISH)
PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
./$(WISH) $(SCRIPT)
+# This target can be used to run wish inside either gdb or insight
+gdb: $(WISH)
+ @echo "set env TCL_LIBRARY=$(TCL_SRC_DIR_NATIVE)/library" > gdb.run
+ @echo "set env TK_LIBRARY=$(ROOT_DIR_NATIVE)/library" >> gdb.run
+ PATH="$(PATH):$(TCL_BIN_DIR)"; export PATH; \
+ gdb ./$(WISH) --command=gdb.run
+ rm gdb.run
+
install: all install-binaries install-libraries install-doc install-demos
install-binaries: binaries
@@ -505,7 +521,7 @@ tktest : $(TKTEST)
# building tcltest in the Tcl bin directory. Just do it for them.
$(TCLTEST):
cd ${TCL_BIN_DIR} ; \
- make tcltest
+ $(MAKE) tcltest
$(TKTEST): $(TCLTEST) $(TK_LIB_FILE) $(TKTEST_OBJS) wish.$(RES) $(CAT32)
$(CC) $(CFLAGS) $(TKTEST_OBJS_NATIVE) $(TCL_LIB_FILE) \
@@ -584,3 +600,17 @@ distclean: clean
Makefile: $(SRC_DIR)/Makefile.in
./config.status
+
+#
+# Regenerate the stubs files.
+#
+
+$(GENERIC_DIR)/tkStubInit.c: $(GENERIC_DIR)/tk.decls \
+ $(GENERIC_DIR)/tkInt.decls
+ @echo "Warning: run \"make genstubs\" to regenerate tkStubInit.c"
+
+genstubs:
+ $(TCL_EXE) "$(TCL_TOOL_DIR}\genStubs.tcl" \
+ "$(GENERIC_DIR_NATIVE)" \
+ "$(GENERIC_DIR_NATIVE)\tk.decls" \
+ "$(GENERIC_DIR_NATIVE)\tkInt.decls"
diff --git a/win/buildall.vc.bat b/win/buildall.vc.bat
new file mode 100755
index 0000000..afd15c7
--- /dev/null
+++ b/win/buildall.vc.bat
@@ -0,0 +1,13 @@
+@echo off
+if "%MSVCDir%" == "" call c:\dev\devstudio60\vc98\bin\vcvars32.bat
+
+set INSTALLDIR=C:\tclTestArea
+set TCLDIR=..\..\tcl_head
+
+nmake -nologo -f makefile.vc release
+nmake -nologo -f makefile.vc release OPTS=static,linkexten
+nmake -nologo -f makefile.vc core OPTS=static,msvcrt
+nmake -nologo -f makefile.vc release OPTS=static,threads,linkexten
+nmake -nologo -f makefile.vc core OPTS=static,msvcrt,threads
+nmake -nologo -f makefile.vc release OPTS=threads
+pause
diff --git a/win/configure b/win/configure
index ae25dfa..0c774d9 100755
--- a/win/configure
+++ b/win/configure
@@ -548,6 +548,8 @@ fi
if test "${exec_prefix}" = "NONE"; then
exec_prefix=$prefix
fi
+# libdir must be a fully qualified path and (not ${exec_prefix}/lib)
+eval libdir="$libdir"
#------------------------------------------------------------------------
# Standard compiler checks
@@ -562,7 +564,7 @@ fi
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:566: checking for $ac_word" >&5
+echo "configure:568: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -592,7 +594,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:596: checking for $ac_word" >&5
+echo "configure:598: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -643,7 +645,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:647: checking for $ac_word" >&5
+echo "configure:649: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -675,7 +677,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:679: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:681: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -686,12 +688,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 690 "configure"
+#line 692 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:695: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -717,12 +719,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:721: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:723: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:726: checking whether we are using GNU C" >&5
+echo "configure:728: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -731,7 +733,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:735: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:737: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -750,7 +752,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:754: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:756: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -796,7 +798,7 @@ if test "${GCC}" = "yes" ; then
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:800: checking for $ac_word" >&5
+echo "configure:802: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -825,7 +827,7 @@ fi
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:829: checking for $ac_word" >&5
+echo "configure:831: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -854,7 +856,7 @@ fi
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:858: checking for $ac_word" >&5
+echo "configure:860: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -887,7 +889,7 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:891: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:893: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -919,12 +921,12 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:923: checking for Cygwin environment" >&5
+echo "configure:925: checking for Cygwin environment" >&5
if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 928 "configure"
+#line 930 "configure"
#include "confdefs.h"
int main() {
@@ -935,7 +937,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:939: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -957,13 +959,13 @@ test "$ac_cv_cygwin" = yes && CYGWIN=yes
#--------------------------------------------------------------------
echo $ac_n "checking for object suffix""... $ac_c" 1>&6
-echo "configure:961: checking for object suffix" >&5
+echo "configure:963: checking for object suffix" >&5
if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
rm -f conftest*
echo 'int i = 1;' > conftest.$ac_ext
-if { (eval echo configure:967: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
for ac_file in conftest.*; do
case $ac_file in
*.c) ;;
@@ -981,19 +983,19 @@ OBJEXT=$ac_cv_objext
ac_objext=$ac_cv_objext
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:985: checking for mingw32 environment" >&5
+echo "configure:987: checking for mingw32 environment" >&5
if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 990 "configure"
+#line 992 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -1012,7 +1014,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:1016: checking for executable suffix" >&5
+echo "configure:1018: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1022,7 +1024,7 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:1026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:1028: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj) ;;
@@ -1049,7 +1051,7 @@ ac_exeext=$EXEEXT
echo $ac_n "checking for building with threads""... $ac_c" 1>&6
-echo "configure:1053: checking for building with threads" >&5
+echo "configure:1055: checking for building with threads" >&5
# Check whether --enable-threads or --disable-threads was given.
if test "${enable_threads+set}" = set; then
enableval="$enable_threads"
@@ -1080,7 +1082,7 @@ EOF
echo $ac_n "checking how to build libraries""... $ac_c" 1>&6
-echo "configure:1084: checking how to build libraries" >&5
+echo "configure:1086: checking how to build libraries" >&5
# Check whether --enable-shared or --disable-shared was given.
if test "${enable_shared+set}" = set; then
enableval="$enable_shared"
@@ -1121,7 +1123,7 @@ EOF
# Step 0: Enable 64 bit support?
echo $ac_n "checking if 64bit support is requested""... $ac_c" 1>&6
-echo "configure:1125: checking if 64bit support is requested" >&5
+echo "configure:1127: checking if 64bit support is requested" >&5
# Check whether --enable-64bit or --disable-64bit was given.
if test "${enable_64bit+set}" = set; then
enableval="$enable_64bit"
@@ -1138,7 +1140,7 @@ fi
# Extract the first word of "cygpath", so it can be a program name with args.
set dummy cygpath; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1142: checking for $ac_word" >&5
+echo "configure:1144: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CYGPATH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1175,7 +1177,7 @@ fi
# set various compiler flags depending on whether we are using gcc or cl
echo $ac_n "checking compiler flags""... $ac_c" 1>&6
-echo "configure:1179: checking compiler flags" >&5
+echo "configure:1181: checking compiler flags" >&5
if test "${GCC}" = "yes" ; then
if test "$do64bit" = "yes" ; then
echo "configure: warning: "64bit mode not supported with GCC on Windows"" 1>&2
@@ -1183,7 +1185,7 @@ echo "configure:1179: checking compiler flags" >&5
SHLIB_LD=""
SHLIB_LD_LIBS=""
LIBS=""
- LIBS_GUI="-lgdi32 -lcomdlg32 -limm32"
+ LIBS_GUI="-lgdi32 -lcomdlg32 -limm32 -lcomctl32"
STLIB_LD='${AR} cr'
RC_OUT=-o
RC_TYPE=
@@ -1324,7 +1326,7 @@ echo "configure:1179: checking compiler flags" >&5
SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no"
SHLIB_LD_LIBS="user32.lib advapi32.lib"
LIBS="user32.lib advapi32.lib"
- LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib"
+ LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib"
RC_OUT=-fo
RC_TYPE=-r
RC_INCLUDE=-i
@@ -1350,13 +1352,19 @@ echo "configure:1179: checking compiler flags" >&5
LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
fi
+ # DL_LIBS is empty, but then we match the Unix version
+
+
+
+
+
#--------------------------------------------------------------------
# man2tcl needs this so that it can use errno.h
#--------------------------------------------------------------------
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1360: checking how to run the C preprocessor" >&5
+echo "configure:1368: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1371,13 +1379,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1375 "configure"
+#line 1383 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1388,13 +1396,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1392 "configure"
+#line 1400 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1406: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1405,13 +1413,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1409 "configure"
+#line 1417 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1415: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1437,17 +1445,17 @@ echo "$ac_t""$CPP" 1>&6
ac_safe=`echo "errno.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for errno.h""... $ac_c" 1>&6
-echo "configure:1441: checking for errno.h" >&5
+echo "configure:1449: checking for errno.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1446 "configure"
+#line 1454 "configure"
#include "confdefs.h"
#include <errno.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1479,7 +1487,7 @@ fi
echo $ac_n "checking for build with symbols""... $ac_c" 1>&6
-echo "configure:1483: checking for build with symbols" >&5
+echo "configure:1491: checking for build with symbols" >&5
# Check whether --enable-symbols or --disable-symbols was given.
if test "${enable_symbols+set}" = set; then
enableval="$enable_symbols"
@@ -1510,7 +1518,7 @@ TK_DBGX=${DBGX}
echo $ac_n "checking the location of tclConfig.sh""... $ac_c" 1>&6
-echo "configure:1514: checking the location of tclConfig.sh" >&5
+echo "configure:1522: checking the location of tclConfig.sh" >&5
if test -d ../../tcl8.4$TK_PATCH_LEVEL/win; then
TCL_BIN_DIR_DEFAULT=../../tcl8.4$TK_PATCH_LEVEL/win
@@ -1536,7 +1544,7 @@ fi
echo $ac_n "checking for existence of $TCL_BIN_DIR/tclConfig.sh""... $ac_c" 1>&6
-echo "configure:1540: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
+echo "configure:1548: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
if test -f "$TCL_BIN_DIR/tclConfig.sh" ; then
echo "$ac_t""loading" 1>&6
@@ -1545,11 +1553,40 @@ echo "configure:1540: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
echo "$ac_t""file not found" 1>&6
fi
- # The eval is required to do the TCL_DBGX substitution in the
- # TCL_LIB_FILE variable.
+ #
+ # If the TCL_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TCL_LIB_SPEC will be set to the value
+ # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+ # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f $TCL_BIN_DIR/Makefile ; then
+ TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+ TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+ TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+ fi
+
+ #
+ # eval is required to do the TCL_DBGX substitution
+ #
+
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+ eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
- eval TCL_LIB_FILE=${TCL_LIB_FILE}
- eval TCL_LIB_FLAG=${TCL_LIB_FLAG}
+ eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+ eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+
+
+
+
+
+
+
+
@@ -1558,7 +1595,7 @@ echo "configure:1540: checking for existence of $TCL_BIN_DIR/tclConfig.sh" >&5
echo $ac_n "checking for tclsh""... $ac_c" 1>&6
-echo "configure:1562: checking for tclsh" >&5
+echo "configure:1599: checking for tclsh" >&5
if eval "test \"`echo '$''{'ac_cv_path_tclsh'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1637,7 +1674,7 @@ CFG_TK_EXPORT_FILE_SUFFIX=${TK_EXPORT_FILE_SUFFIX}
# on symbols and static vs. shared.
#--------------------------------------------------------------------
-if test "$SHARED_BUILD" = 0 -o $TCL_NEEDS_EXP_FILE = 0; then
+if test "$SHARED_BUILD" = 0 -o "$TCL_NEEDS_EXP_FILE" = 0; then
if test "${DBGX}" = "d"; then
RC_DEFINES="${RC_DEFINE} STATIC_BUILD ${RC_DEFINE} DEBUG"
else
@@ -1721,6 +1758,11 @@ fi
+# undefined at this point for win
+
+
+
+
@@ -1879,11 +1921,21 @@ s%@OBJEXT@%$OBJEXT%g
s%@EXEEXT@%$EXEEXT%g
s%@TCL_THREADS@%$TCL_THREADS%g
s%@CYGPATH@%$CYGPATH%g
+s%@DL_LIBS@%$DL_LIBS%g
+s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g
+s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g
+s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g
s%@CPP@%$CPP%g
s%@MAN2TCLFLAGS@%$MAN2TCLFLAGS%g
+s%@TCL_VERSION@%$TCL_VERSION%g
s%@TCL_BIN_DIR@%$TCL_BIN_DIR%g
s%@TCL_SRC_DIR@%$TCL_SRC_DIR%g
s%@TCL_LIB_FILE@%$TCL_LIB_FILE%g
+s%@TCL_LIB_FLAG@%$TCL_LIB_FLAG%g
+s%@TCL_LIB_SPEC@%$TCL_LIB_SPEC%g
+s%@TCL_STUB_LIB_FILE@%$TCL_STUB_LIB_FILE%g
+s%@TCL_STUB_LIB_FLAG@%$TCL_STUB_LIB_FLAG%g
+s%@TCL_STUB_LIB_SPEC@%$TCL_STUB_LIB_SPEC%g
s%@TCLSH_PROG@%$TCLSH_PROG%g
s%@TK_VERSION@%$TK_VERSION%g
s%@TK_MAJOR_VERSION@%$TK_MAJOR_VERSION%g
@@ -1897,13 +1949,10 @@ s%@TK_STUB_LIB_FLAG@%$TK_STUB_LIB_FLAG%g
s%@TK_BUILD_STUB_LIB_SPEC@%$TK_BUILD_STUB_LIB_SPEC%g
s%@TK_SRC_DIR@%$TK_SRC_DIR%g
s%@TK_BIN_DIR@%$TK_BIN_DIR%g
-s%@TCL_VERSION@%$TCL_VERSION%g
s%@TCL_MAJOR_VERSION@%$TCL_MAJOR_VERSION%g
s%@TCL_MINOR_VERSION@%$TCL_MINOR_VERSION%g
s%@TCL_PATCH_LEVEL@%$TCL_PATCH_LEVEL%g
s%@TCL_DLL_FILE@%$TCL_DLL_FILE%g
-s%@TCL_STUB_LIB_FILE@%$TCL_STUB_LIB_FILE%g
-s%@TCL_STUB_LIB_FLAG@%$TCL_STUB_LIB_FLAG%g
s%@TCL_BUILD_STUB_LIB_SPEC@%$TCL_BUILD_STUB_LIB_SPEC%g
s%@TCL_DBGX@%$TCL_DBGX%g
s%@CFG_TK_SHARED_LIB_SUFFIX@%$CFG_TK_SHARED_LIB_SUFFIX%g
@@ -1912,9 +1961,6 @@ s%@CFG_TK_EXPORT_FILE_SUFFIX@%$CFG_TK_EXPORT_FILE_SUFFIX%g
s%@TK_SHARED_BUILD@%$TK_SHARED_BUILD%g
s%@DEPARG@%$DEPARG%g
s%@CFLAGS_DEFAULT@%$CFLAGS_DEFAULT%g
-s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g
-s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g
-s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g
s%@EXTRA_CFLAGS@%$EXTRA_CFLAGS%g
s%@STLIB_LD@%$STLIB_LD%g
s%@SHLIB_LD@%$SHLIB_LD%g
@@ -1945,8 +1991,14 @@ s%@MAKE_LIB@%$MAKE_LIB%g
s%@POST_MAKE_LIB@%$POST_MAKE_LIB%g
s%@MAKE_DLL@%$MAKE_DLL%g
s%@MAKE_EXE@%$MAKE_EXE%g
-s%@TK_XINCLUDES@%$TK_XINCLUDES%g
-s%@XINCLUDES@%$XINCLUDES%g
+s%@TK_BUILD_LIB_SPEC@%$TK_BUILD_LIB_SPEC%g
+s%@TK_CC_SEARCH_FLAGS@%$TK_CC_SEARCH_FLAGS%g
+s%@TK_LD_SEARCH_FLAGS@%$TK_LD_SEARCH_FLAGS%g
+s%@TK_LIB_FLAG@%$TK_LIB_FLAG%g
+s%@TK_LIB_SPEC@%$TK_LIB_SPEC%g
+s%@TK_STUB_LIB_SPEC@%$TK_STUB_LIB_SPEC%g
+s%@TK_BUILD_STUB_LIB_PATH@%$TK_BUILD_STUB_LIB_PATH%g
+s%@TK_STUB_LIB_PATH@%$TK_STUB_LIB_PATH%g
CEOF
EOF
diff --git a/win/configure.in b/win/configure.in
index cede0ee..2141edb 100644
--- a/win/configure.in
+++ b/win/configure.in
@@ -1,8 +1,9 @@
+#! /bin/bash -norc
# This file is an input file used by the GNU "autoconf" program to
# generate the file "configure", which is run during Tk installation
# to configure the system for the local environment.
#
-# RCS: @(#) $Id: configure.in,v 1.36 2001/08/08 18:41:10 dgp Exp $
+# RCS: @(#) $Id: configure.in,v 1.36.2.1 2002/02/05 02:25:18 wolfsuit Exp $
AC_INIT(../generic/tk.h)
@@ -22,6 +23,8 @@ fi
if test "${exec_prefix}" = "NONE"; then
exec_prefix=$prefix
fi
+# libdir must be a fully qualified path and (not ${exec_prefix}/lib)
+eval libdir="$libdir"
#------------------------------------------------------------------------
# Standard compiler checks
@@ -165,7 +168,7 @@ CFG_TK_EXPORT_FILE_SUFFIX=${TK_EXPORT_FILE_SUFFIX}
# on symbols and static vs. shared.
#--------------------------------------------------------------------
-if test "$SHARED_BUILD" = 0 -o $TCL_NEEDS_EXP_FILE = 0; then
+if test "$SHARED_BUILD" = 0 -o "$TCL_NEEDS_EXP_FILE" = 0; then
if test "${DBGX}" = "d"; then
RC_DEFINES="${RC_DEFINE} STATIC_BUILD ${RC_DEFINE} DEBUG"
else
@@ -214,9 +217,6 @@ AC_SUBST(TK_SHARED_BUILD)
AC_SUBST(CYGPATH)
AC_SUBST(DEPARG)
AC_SUBST(CFLAGS_DEFAULT)
-AC_SUBST(CFLAGS_DEBUG)
-AC_SUBST(CFLAGS_OPTIMIZE)
-AC_SUBST(CFLAGS_WARNING)
AC_SUBST(EXTRA_CFLAGS)
AC_SUBST(STLIB_LD)
AC_SUBST(SHLIB_LD)
@@ -251,7 +251,15 @@ AC_SUBST(MAKE_LIB)
AC_SUBST(POST_MAKE_LIB)
AC_SUBST(MAKE_DLL)
AC_SUBST(MAKE_EXE)
-AC_SUBST(TK_XINCLUDES)
-AC_SUBST(XINCLUDES)
+
+# undefined at this point for win
+AC_SUBST(TK_BUILD_LIB_SPEC)
+AC_SUBST(TK_CC_SEARCH_FLAGS)
+AC_SUBST(TK_LD_SEARCH_FLAGS)
+AC_SUBST(TK_LIB_FLAG)
+AC_SUBST(TK_LIB_SPEC)
+AC_SUBST(TK_STUB_LIB_SPEC)
+AC_SUBST(TK_BUILD_STUB_LIB_PATH)
+AC_SUBST(TK_STUB_LIB_PATH)
AC_OUTPUT(Makefile tkConfig.sh)
diff --git a/win/rc/tk.rc b/win/rc/tk.rc
index cdc1e6d..d026a34 100644
--- a/win/rc/tk.rc
+++ b/win/rc/tk.rc
@@ -1,4 +1,4 @@
-// RCS: @(#) $Id: tk.rc,v 1.7 2001/10/01 21:04:07 hobbs Exp $
+// RCS: @(#) $Id: tk.rc,v 1.7.2.1 2002/02/05 02:25:18 wolfsuit Exp $
//
// Version Resource Script
//
@@ -67,3 +67,15 @@ END
//
#include "tk_base.rc"
+
+//
+// This enables themed scrollbars in XP by trying to use comctl32 v6.
+//
+
+#ifndef RT_MANIFEST
+#define RT_MANIFEST 24
+#endif
+#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#endif
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "wish.exe.manifest"
diff --git a/win/rc/wish.exe.manifest b/win/rc/wish.exe.manifest
new file mode 100644
index 0000000..424000f
--- /dev/null
+++ b/win/rc/wish.exe.manifest
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="8.4.0.4"
+ processorArchitecture="X86"
+ name="Tcl.Tk.wish"
+ type="win32"
+/>
+<description>Tcl/Tk windowing shell (wish)</description>
+<dependency>
+<dependentAssembly>
+<assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="X86"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+/>
+</dependentAssembly>
+</dependency>
+</assembly>
diff --git a/win/rc/wish.rc b/win/rc/wish.rc
index 7d6ce2c..ab4aef9 100644
--- a/win/rc/wish.rc
+++ b/win/rc/wish.rc
@@ -1,4 +1,4 @@
-// RCS: @(#) $Id: wish.rc,v 1.6 2001/10/01 21:04:07 hobbs Exp $
+// RCS: @(#) $Id: wish.rc,v 1.6.2.1 2002/02/05 02:25:19 wolfsuit Exp $
//
// Version Resource Script
//
@@ -79,3 +79,15 @@ app ICON DISCARDABLE "wish.ico"
#ifdef STATIC_BUILD
#include "tk_base.rc"
#endif
+
+//
+// This enables themed scrollbars in XP by trying to use comctl32 v6.
+//
+
+#ifndef RT_MANIFEST
+#define RT_MANIFEST 24
+#endif
+#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#endif
+CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "wish.exe.manifest"
diff --git a/win/rules.vc b/win/rules.vc
new file mode 100644
index 0000000..8496d8a
--- /dev/null
+++ b/win/rules.vc
@@ -0,0 +1,185 @@
+#------------------------------------------------------------------------------
+# rules.vc --
+#
+# Microsoft Visual C++ makefile include for decoding the commandline
+# macros. This file does not need editing to build Tcl.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# Copyright (c) 2001 Tomasoft Engineering.
+#
+#------------------------------------------------------------------------------
+# RCS: @(#) $Id: rules.vc,v 1.1.2.1 2002/02/05 02:25:18 wolfsuit Exp $
+#------------------------------------------------------------------------------
+
+!ifndef _RULES_VC
+_RULES_VC = 1
+
+cc32 = $(CC) # built-in default.
+link32 = link
+lib32 = lib
+rc32 = $(RC) # built-in default.
+
+!ifndef INSTALLDIR
+INSTALLDIR = C:\Progra~1\Tcl
+!endif
+
+!ifndef MACHINE
+MACHINE = IX86
+!endif
+
+
+#----------------------------------------------------------
+# Decode the options requested.
+#----------------------------------------------------------
+!if "$(OPTS)" == "" || ![echo $(OPTS) | find /i "none" > nul]
+STATIC_BUILD = 0
+TCL_THREADS = 0
+DEBUG = 0
+PROFILE = 0
+MSVCRT = 0
+TCL_LINKWITHEXTENSIONS = 0
+!else
+!if ![echo $(OPTS) | find /i "static" > nul]
+!message *** Doing static
+STATIC_BUILD = 1
+!else
+STATIC_BUILD = 0
+!endif
+!if ![echo $(OPTS) | find /i "msvcrt" > nul]
+!message *** Doing msvcrt
+MSVCRT = 1
+!else
+MSVCRT = 0
+!endif
+!if ![echo $(OPTS) | find /i "linkexten" > nul]
+!message *** Doing linkexten
+TCL_LINKWITHEXTENSIONS = 1
+!else
+TCL_LINKWITHEXTENSIONS = 0
+!endif
+!if ![echo $(OPTS) | find /i "threads" > nul]
+!message *** Doing threads
+TCL_THREADS = 1
+!else
+TCL_THREADS = 0
+!endif
+!if ![echo $(OPTS) | find /i "symbols" > nul]
+!message *** Doing symbols
+DEBUG = 1
+!else
+DEBUG = 0
+!endif
+!if ![echo $(OPTS) | find /i "profile" > nul]
+!message *** Doing profile
+PROFILE = 1
+!else
+PROFILE = 0
+!endif
+!endif
+
+
+!if !$(STATIC_BUILD)
+# Make sure we don't build overly fat DLLs.
+MSVCRT = 1
+# Shouldn't statically put the extensions inside the shell when dynamic.
+TCL_LINKWITHEXTENSIONS = 0
+!endif
+
+
+#----------------------------------------------------------
+# Figure-out how to name our intermediate and output directories.
+# We wouldn't want different builds to use the same .obj files
+# by accident.
+#----------------------------------------------------------
+
+SUFX = tsdx
+
+!if $(DEBUG)
+BUILDDIRTOP = Debug
+DBGX = d
+!else
+BUILDDIRTOP = Release
+DBGX =
+SUFX = $(SUFX:d=)
+!endif
+
+TMP_DIRFULL = .\$(BUILDDIRTOP)\$(PROJECT)_ThreadedDynamicStaticX
+
+!if !$(STATIC_BUILD)
+TMP_DIRFULL = $(TMP_DIRFULL:Static=)
+SUFX = $(SUFX:s=)
+EXT = dll
+!if $(MSVCRT)
+TMP_DIRFULL = $(TMP_DIRFULL:X=)
+SUFX = $(SUFX:x=)
+!endif
+!else
+TMP_DIRFULL = $(TMP_DIRFULL:Dynamic=)
+EXT = lib
+!if !$(MSVCRT)
+TMP_DIRFULL = $(TMP_DIRFULL:X=)
+SUFX = $(SUFX:x=)
+!endif
+!endif
+
+!if !$(TCL_THREADS)
+TMP_DIRFULL = $(TMP_DIRFULL:Threaded=)
+SUFX = $(SUFX:t=)
+!endif
+
+!ifndef TMP_DIR
+TMP_DIR = $(TMP_DIRFULL)
+!ifndef OUT_DIR
+OUT_DIR = .\$(BUILDDIRTOP)
+!endif
+!else
+!ifndef OUT_DIR
+OUT_DIR = $(TMP_DIR)
+!endif
+!endif
+
+!message *** Intermediate directory will be '$(TMP_DIR)'
+!message *** Output directory will be '$(OUT_DIR)'
+!message *** Suffix for binaries will be '$(SUFX)'
+
+
+#----------------------------------------------------------
+# Decode the statistics requested.
+#----------------------------------------------------------
+!if "$(STATS)" == "" || ![echo $(STATS) | find /i "none" > nul]
+TCL_MEM_DEBUG = 0
+TCL_COMPILE_DEBUG = 0
+!else
+!if ![echo $(STATS) | find /i "memdbg" > nul]
+!message *** Doing memdbg
+TCL_MEM_DEBUG = 1
+!else
+TCL_MEM_DEBUG = 0
+!endif
+!if ![echo $(STATS) | find /i "compdbg" > nul]
+!message *** Doing compdbg
+TCL_COMPILE_DEBUG = 1
+!else
+TCL_COMPILE_DEBUG = 0
+!endif
+!endif
+
+OPTDEFINES =
+!if $(TCL_MEM_DEBUG)
+OPTDEFINES = -DTCL_MEM_DEBUG
+!endif
+!if $(TCL_COMPILE_DEBUG)
+OPTDEFINES = $(OPTDEFINES) -DTCL_COMPILE_DEBUG -DTCL_COMPILE_STATS
+!endif
+!if $(TCL_THREADS)
+OPTDEFINES = $(OPTDEFINES) -DTCL_THREADS=1
+!endif
+!if $(STATIC_BUILD)
+OPTDEFINES = $(OPTDEFINES) -DSTATIC_BUILD
+!endif
+
+!message *** Optional defines are '$(OPTDEFINES)'
+
+!endif
diff --git a/win/stubs.c b/win/stubs.c
index 60d2dc8..5fbc8d1 100644
--- a/win/stubs.c
+++ b/win/stubs.c
@@ -253,7 +253,7 @@ void
XSetCommand(display, w, argv, argc)
Display* display;
Window w;
- char** argv;
+ CONST char** argv;
int argc;
{
}
diff --git a/win/tcl.m4 b/win/tcl.m4
index 271984b..ec95eec 100644
--- a/win/tcl.m4
+++ b/win/tcl.m4
@@ -106,15 +106,44 @@ AC_DEFUN(SC_LOAD_TCLCONFIG, [
AC_MSG_RESULT([file not found])
fi
- # The eval is required to do the TCL_DBGX substitution in the
- # TCL_LIB_FILE variable.
+ #
+ # If the TCL_BIN_DIR is the build directory (not the install directory),
+ # then set the common variable name to the value of the build variables.
+ # For example, the variable TCL_LIB_SPEC will be set to the value
+ # of TCL_BUILD_LIB_SPEC. An extension should make use of TCL_LIB_SPEC
+ # instead of TCL_BUILD_LIB_SPEC since it will work with both an
+ # installed and uninstalled version of Tcl.
+ #
+
+ if test -f $TCL_BIN_DIR/Makefile ; then
+ TCL_LIB_SPEC=${TCL_BUILD_LIB_SPEC}
+ TCL_STUB_LIB_SPEC=${TCL_BUILD_STUB_LIB_SPEC}
+ TCL_STUB_LIB_PATH=${TCL_BUILD_STUB_LIB_PATH}
+ fi
+
+ #
+ # eval is required to do the TCL_DBGX substitution
+ #
+
+ eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
+ eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
+ eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
- eval TCL_LIB_FILE=${TCL_LIB_FILE}
- eval TCL_LIB_FLAG=${TCL_LIB_FLAG}
+ eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
+ eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
+ eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
+ AC_SUBST(TCL_VERSION)
AC_SUBST(TCL_BIN_DIR)
AC_SUBST(TCL_SRC_DIR)
+
AC_SUBST(TCL_LIB_FILE)
+ AC_SUBST(TCL_LIB_FLAG)
+ AC_SUBST(TCL_LIB_SPEC)
+
+ AC_SUBST(TCL_STUB_LIB_FILE)
+ AC_SUBST(TCL_STUB_LIB_FLAG)
+ AC_SUBST(TCL_STUB_LIB_SPEC)
])
#------------------------------------------------------------------------
@@ -347,7 +376,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [
SHLIB_LD=""
SHLIB_LD_LIBS=""
LIBS=""
- LIBS_GUI="-lgdi32 -lcomdlg32 -limm32"
+ LIBS_GUI="-lgdi32 -lcomdlg32 -limm32 -lcomctl32"
STLIB_LD='${AR} cr'
RC_OUT=-o
RC_TYPE=
@@ -488,7 +517,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [
SHLIB_LD="${LINKBIN} -dll -nologo -incremental:no"
SHLIB_LD_LIBS="user32.lib advapi32.lib"
LIBS="user32.lib advapi32.lib"
- LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib"
+ LIBS_GUI="gdi32.lib comdlg32.lib imm32.lib comctl32.lib"
RC_OUT=-fo
RC_TYPE=-r
RC_INCLUDE=-i
@@ -513,6 +542,12 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [
LDFLAGS_CONSOLE="-link -subsystem:console ${lflags}"
LDFLAGS_WINDOW="-link -subsystem:windows ${lflags}"
fi
+
+ # DL_LIBS is empty, but then we match the Unix version
+ AC_SUBST(DL_LIBS)
+ AC_SUBST(CFLAGS_DEBUG)
+ AC_SUBST(CFLAGS_OPTIMIZE)
+ AC_SUBST(CFLAGS_WARNING)
])
#------------------------------------------------------------------------
diff --git a/win/tkConfig.sh.in b/win/tkConfig.sh.in
index 09e4a90..f645a0f 100644
--- a/win/tkConfig.sh.in
+++ b/win/tkConfig.sh.in
@@ -11,7 +11,7 @@
#
# The information in this file is specific to a single platform.
#
-# RCS: @(#) $Id: tkConfig.sh.in,v 1.1 1999/06/16 22:54:03 surles Exp $
+# RCS: @(#) $Id: tkConfig.sh.in,v 1.1.16.1 2002/02/05 02:25:18 wolfsuit Exp $
# Tk's version number.
TK_VERSION='@TK_VERSION@'
@@ -32,7 +32,7 @@ TK_DBGX=@TK_DBGX@
TK_LIB_FILE='@TK_LIB_FILE@'
# Additional libraries to use when linking Tk.
-TK_LIBS='@XLIBSW@ @DL_LIBS@ @LIBS@ @MATH_LIBS@'
+TK_LIBS='@LIBS@ @LIBS_GUI@'
# Top-level directory in which Tcl's platform-independent files are
# installed.
@@ -42,12 +42,6 @@ TK_PREFIX='@prefix@'
# executables) are installed.
TK_EXEC_PREFIX='@exec_prefix@'
-# -I switch(es) to use to make all of the X11 include files accessible:
-TK_XINCLUDES='@XINCLUDES@'
-
-# Linker switch(es) to use to link with the X11 library archive.
-TK_XLIBSW='@XLIBSW@'
-
# -l flag to pass to the linker to pick up the Tcl library
TK_LIB_FLAG='@TK_LIB_FLAG@'
diff --git a/win/tkWinButton.c b/win/tkWinButton.c
index 0578b35..1d9850c 100644
--- a/win/tkWinButton.c
+++ b/win/tkWinButton.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinButton.c,v 1.12 2000/11/22 01:49:38 ericm Exp $
+ * RCS: @(#) $Id: tkWinButton.c,v 1.12.4.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#define OEMRESOURCE
@@ -584,10 +584,10 @@ TkpDisplayButton(clientData)
rect.right = Tk_Width(tkwin) - rect.left;
rect.bottom = Tk_Height(tkwin) - rect.top;
} else {
- rect.top = y-2;
- rect.left = x-2;
+ rect.top = y-1;
+ rect.left = x-1;
rect.right = x+butPtr->textWidth + 1;
- rect.bottom = y+butPtr->textHeight + 1;
+ rect.bottom = y+butPtr->textHeight + 2;
}
SetTextColor(dc, gc->foreground);
SetBkColor(dc, gc->background);
@@ -739,11 +739,18 @@ void
TkpComputeButtonGeometry(butPtr)
register TkButton *butPtr; /* Button whose geometry may have changed. */
{
- int width, height, avgWidth, txtWidth, txtHeight, drawRing = 0;
- int haveImage = 0, haveText = 0;
+ int txtWidth, txtHeight; /* Width and height of text */
+ int imgWidth, imgHeight; /* Width and height of image */
+ int width = 0, height = 0; /* Width and height of button */
+ int haveImage, haveText;
+ int avgWidth;
+ int minWidth;
+ /* Vertical and horizontal dialog units size in pixels. */
+ double vDLU, hDLU;
Tk_FontMetrics fm;
+
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
- Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
+ Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
if (butPtr->highlightWidth < 0) {
butPtr->highlightWidth = 0;
@@ -755,136 +762,301 @@ TkpComputeButtonGeometry(butPtr)
InitBoxes();
}
- width = 0;
- height = 0;
- txtWidth = 0;
- txtHeight = 0;
- avgWidth = 0;
-
+ /* Figure out image metrics */
if (butPtr->image != NULL) {
- Tk_SizeOfImage(butPtr->image, &width, &height);
+ Tk_SizeOfImage(butPtr->image, &imgWidth, &imgHeight);
haveImage = 1;
} else if (butPtr->bitmap != None) {
- Tk_SizeOfBitmap(butPtr->display, butPtr->bitmap, &width, &height);
+ Tk_SizeOfBitmap(butPtr->display, butPtr->bitmap,
+ &imgWidth, &imgHeight);
haveImage = 1;
+ } else {
+ imgWidth = 0;
+ imgHeight = 0;
+ haveImage = 0;
}
- if (!haveImage || butPtr->compound != COMPOUND_NONE) {
- /* Calculate geometry for the text */
- Tk_FreeTextLayout(butPtr->textLayout);
- butPtr->textLayout = Tk_ComputeTextLayout(butPtr->tkfont,
- Tcl_GetString(butPtr->textPtr), -1, butPtr->wrapLength,
- butPtr->justify, 0, &butPtr->textWidth, &butPtr->textHeight);
-
- txtWidth = butPtr->textWidth;
- txtHeight = butPtr->textHeight;
- haveText = (txtWidth != 0 && txtHeight != 0);
- avgWidth = Tk_TextWidth(butPtr->tkfont, "0", 1);
- Tk_GetFontMetrics(butPtr->tkfont, &fm);
- }
-
+ /*
+ * Figure out font metrics (even if we don't have text because we need
+ * DLUs (based on font, not text) for some spacing calculations below).
+ */
+ Tk_FreeTextLayout(butPtr->textLayout);
+ butPtr->textLayout = Tk_ComputeTextLayout(butPtr->tkfont,
+ Tcl_GetString(butPtr->textPtr), -1, butPtr->wrapLength,
+ butPtr->justify, 0, &butPtr->textWidth, &butPtr->textHeight);
+
+ txtWidth = butPtr->textWidth;
+ txtHeight = butPtr->textHeight;
+ haveText = (*(Tcl_GetString(butPtr->textPtr)) != '\0');
+ avgWidth = (Tk_TextWidth(butPtr->tkfont,
+ "abcdefghijklmnopqurstuvwzyABCDEFGHIJKLMNOPQURSTUVWZY",
+ 52) + 26) / 52;
+ Tk_GetFontMetrics(butPtr->tkfont, &fm);
+
+ /* Compute dialog units for layout calculations. */
+ hDLU = avgWidth / 4.0;
+ vDLU = fm.linespace / 8.0;
+
/*
- * If the button is compound (ie, it shows both an image and text),
+ * First, let's try to compute button size "by the book" (See "Microsoft
+ * Windows User Experience" (ISBN 0-7356-0566-1), Chapter 14 - Visual
+ * Design, Section 4 - Layout (page 448)).
+ *
+ * Note, that Tk "buttons" are Microsoft "Command buttons", Tk
+ * "checkbuttons" are Microsoft "check boxes", Tk "radiobuttons" are
+ * Microsoft "option buttons", and Tk "labels" are Microsoft "text
+ * labels".
+ */
+
+ /*
+ * Set width and height by button type; See User Experience table, p449.
+ */
+ switch (butPtr->type) {
+ case TYPE_BUTTON: {
+ if (haveText) {
+ /*
+ * First compute the minimum width of the button in
+ * characters. MWUE says that the button should be
+ * 50 DLUs. We allow 6 DLUs padding left and right.
+ * (There is no rule but this is consistent with the
+ * fact that button text is 8 DLUs high and buttons
+ * are 14 DLUs high.)
+ *
+ * The width is specified in characters. A character
+ * is, by definition, 4 DLUs wide. 11 char * 4 DLU
+ * is 44 DLU + 6 DLU padding = 50 DLU. Therefore,
+ * width = -11 -> MWUE compliant buttons.
+ */
+ if (butPtr->width < 0) {
+ /* Min width in characters */
+ minWidth = -(butPtr->width);
+ /* Allow for characters */
+ width = avgWidth * minWidth;
+ /* Add for padding */
+ width += (int)(0.5 + (6 * hDLU));
+ }
+
+ /*
+ * If shrink-wrapping was requested (width = 0) or
+ * if the text is wider than the default button width,
+ * adjust the button width up to suit.
+ */
+ if (butPtr->width == 0
+ || (txtWidth + (int)(0.5 + (6 * hDLU)) > width)) {
+ width = txtWidth + (int)(0.5 + (6 * hDLU));
+ }
+
+ /*
+ * The User Experience says 14 DLUs. Since text is, by
+ * definition, 8 DLU/line, this allows for multi-line text
+ * while working perfectly for single-line text.
+ */
+ height = txtHeight + (int)(0.5 + (6 * vDLU));
+
+ /*
+ * The above includes 6 DLUs of padding which should include
+ * defaults of 1 pixel of highlightwidth, 2 pixels of
+ * borderwidth, 1 pixel of padding and 1 pixel of extra inset
+ * on each side. Those will be added later so reduce width
+ * and height now to compensate.
+ */
+ width -= 10;
+ height -= 10;
+
+ /*
+ * Extra inset for the focus ring.
+ */
+ butPtr->inset += 1;
+ }
+ break;
+ }
+
+ case TYPE_LABEL: {
+ /*
+ * The User Experience says, "as wide as needed".
+ */
+ width = txtWidth;
+
+ /*
+ * The User Experience says, "8 (DLUs) per line of text."
+ * Since text is, by definition, 8 DLU/line, this allows
+ * for multi-line text while working perfectly for single-line
+ * text.
+ */
+ if (txtHeight) {
+ height = txtHeight;
+ } else {
+ /* If there's no text, we want the height to be one linespace */
+ /* WUZ - and no image? */
+ height = fm.linespace;
+ }
+ break;
+ }
+
+ case TYPE_RADIO_BUTTON:
+ case TYPE_CHECK_BUTTON: {
+ /* See note for TYPE_LABEL */
+ width = txtWidth;
+ /*
+ * The User Experience says 10 DLUs. (Is that one DLU above
+ * and below for the focus ring?) See note above about
+ * multi-line text and 8 DLU/line.
+ */
+ height = txtHeight + (int)(0.5 + (2.0 * vDLU));
+
+ /*
+ * The above includes 2 DLUs of padding which should include
+ * defaults of 1 pixel of highlightwidth, 0 pixels of
+ * borderwidth, and 1 pixel of padding on each side. Those
+ * will be added later so reduce height now to compensate.
+ */
+ height -= 4;
+
+ /*
+ * Extra inset for the focus ring.
+ */
+ butPtr->inset += 1;
+ break;
+ }
+ }/* switch */
+
+ /*
+ * At this point, the width and height are correct for a Tk text
+ * button, excluding padding and inset, but we have to allow for
+ * compound buttons. The image may be above, below, left, or right
+ * of the text.
+ */
+
+ /*
+ * If the button is compound (i.e., it shows both an image and text),
* the new geometry is a combination of the image and text geometry.
* We only honor the compound bit if the button has both text and an
* image, because otherwise it is not really a compound button.
*/
-
if (butPtr->compound != COMPOUND_NONE && haveImage && haveText) {
switch ((enum compound) butPtr->compound) {
case COMPOUND_TOP:
case COMPOUND_BOTTOM: {
/* Image is above or below text */
- height += txtHeight + butPtr->padY;
- width = (width > txtWidth ? width : txtWidth);
+ if (imgWidth > width) {
+ width = imgWidth;
+ }
+ height += imgHeight + butPtr->padY;
break;
}
case COMPOUND_LEFT:
case COMPOUND_RIGHT: {
/* Image is left or right of text */
- width += txtWidth + butPtr->padX;
- height = (height > txtHeight ? height : txtHeight);
+ /*
+ * Only increase width of button if image doesn't fit in
+ * slack space of default button width
+ */
+ if ((imgWidth + txtWidth + butPtr->padX) > width) {
+ width = imgWidth + txtWidth + butPtr->padX;
+ }
+
+ if (imgHeight > height) {
+ height = imgHeight;
+ }
break;
}
case COMPOUND_CENTER: {
/* Image and text are superimposed */
- width = (width > txtWidth ? width : txtWidth);
- height = (height > txtHeight ? height : txtHeight);
+ if (imgWidth > width) {
+ width = imgWidth;
+ }
+ if (imgHeight > height) {
+ height = imgHeight;
+ }
break;
}
- case COMPOUND_NONE: {break;}
- }
- if (butPtr->width > 0) {
+ } /* switch */
+
+ /* Fix up for minimum width */
+ if (butPtr->width < 0) {
+ /* minWidth in pixels (because there's an image */
+ minWidth = -(butPtr->width);
+ if (width < minWidth) {
+ width = minWidth;
+ }
+ } else if (butPtr->width > 0) {
width = butPtr->width;
}
+
if (butPtr->height > 0) {
height = butPtr->height;
}
-
- if ((butPtr->type >= TYPE_CHECK_BUTTON) && butPtr->indicatorOn) {
- butPtr->indicatorSpace = tsdPtr->boxWidth * 2;
- butPtr->indicatorDiameter = tsdPtr->boxHeight;
- }
width += 2*butPtr->padX;
height += 2*butPtr->padY;
- drawRing = 1;
- } else {
- if (haveImage) {
- if (butPtr->width > 0) {
- width = butPtr->width;
- }
- if (butPtr->height > 0) {
- height = butPtr->height;
- }
- if ((butPtr->type >= TYPE_CHECK_BUTTON) && butPtr->indicatorOn) {
- butPtr->indicatorSpace = tsdPtr->boxWidth * 2;
- butPtr->indicatorDiameter = tsdPtr->boxHeight;
- }
+ } else if (haveImage) {
+ if (butPtr->width > 0) {
+ width = butPtr->width;
} else {
- width = txtWidth;
- height = txtHeight;
- if (butPtr->width > 0) {
- width = butPtr->width * avgWidth;
- }
- if (butPtr->height > 0) {
- height = butPtr->height * fm.linespace;
- }
-
- if ((butPtr->type >= TYPE_CHECK_BUTTON) && butPtr->indicatorOn) {
- butPtr->indicatorDiameter = tsdPtr->boxHeight;
- butPtr->indicatorSpace = butPtr->indicatorDiameter + avgWidth;
- }
- drawRing = 1;
+ width = imgWidth;
+ }
+ if (butPtr->height > 0) {
+ height = butPtr->height;
+ } else {
+ height = imgHeight;
+ }
+ } else {
+ /* No image. May or may not be text. May or may not be compound. */
+
+ /*
+ * butPtr->width is in characters. We need to allow for that
+ * many characters on the face, not in the over-all button width
+ */
+ if (butPtr->width > 0) {
+ width = butPtr->width * avgWidth;
+ }
+
+ /*
+ * butPtr->height is in lines of text. We need to allow for
+ * that many lines on the face, not in the over-all button
+ * height.
+ */
+ if (butPtr->height > 0) {
+ height = butPtr->height * fm.linespace;
}
+
+ width += 2 * butPtr->padX;
+ height += 2 * butPtr->padY;
}
- /*
- * Increase the inset to allow for the focus ring.
- */
-
- if (drawRing && butPtr->type != TYPE_LABEL) {
- butPtr->inset += 3;
+ /* Fix up width and height for indicator sizing and spacing */
+ if (butPtr->type == TYPE_RADIO_BUTTON
+ || butPtr->type == TYPE_CHECK_BUTTON) {
+ if (butPtr->indicatorOn) {
+ butPtr->indicatorDiameter = tsdPtr->boxHeight;
+
+ /*
+ * Make sure we can see the whole indicator, even if the text
+ * or image is very small.
+ */
+ if (height < butPtr->indicatorDiameter) {
+ height = butPtr->indicatorDiameter;
+ }
+
+ /*
+ * There is no rule for space between the indicator and
+ * the text (the two are atomic on 'Windows) but the User
+ * Experience page 451 says leave 3 hDLUs between "text
+ * labels and their associated controls".
+ */
+ butPtr->indicatorSpace = butPtr->indicatorDiameter +
+ (int)(0.5 + (3.0 * hDLU));
+ width += butPtr->indicatorSpace;
+ }
}
-
+
/*
- * When issuing the geometry request, add extra space for the indicator,
- * if any, and for the border and padding, plus an extra pixel so the
- * display can be offset by 1 pixel in either direction for the raised
- * or lowered effect.
+ * Inset is always added to the size.
*/
+ width += 2 * butPtr->inset;
+ height += 2 * butPtr->inset;
- if ((butPtr->image == NULL) && (butPtr->bitmap == None)) {
- width += 2*butPtr->padX;
- height += 2*butPtr->padY;
- }
- if ((butPtr->type == TYPE_BUTTON)
- || ((butPtr->type >= TYPE_CHECK_BUTTON) && !butPtr->indicatorOn)) {
- width += 1;
- height += 1;
- }
- Tk_GeometryRequest(butPtr->tkwin, (int) (width + butPtr->indicatorSpace
- + 2*butPtr->inset), (int) (height + 2*butPtr->inset));
+ Tk_GeometryRequest(butPtr->tkwin, width, height);
Tk_SetInternalBorder(butPtr->tkwin, butPtr->inset);
}
diff --git a/win/tkWinCursor.c b/win/tkWinCursor.c
index 0d200e0..dabb9e4 100644
--- a/win/tkWinCursor.c
+++ b/win/tkWinCursor.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinCursor.c,v 1.4 1999/12/16 21:59:35 hobbs Exp $
+ * RCS: @(#) $Id: tkWinCursor.c,v 1.4.8.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkWinInt.h"
@@ -111,7 +111,7 @@ TkGetCursorByName(interp, tkwin, string)
}
if (string[0] == '@') {
int argc;
- char **argv = NULL;
+ CONST char **argv = NULL;
if (Tcl_SplitList(interp, string, &argc, &argv) != TCL_OK) {
return NULL;
}
diff --git a/win/tkWinDefault.h b/win/tkWinDefault.h
index d1d1286..679e7b8 100644
--- a/win/tkWinDefault.h
+++ b/win/tkWinDefault.h
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinDefault.h,v 1.11 2001/10/12 13:30:32 tmh Exp $
+ * RCS: @(#) $Id: tkWinDefault.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#ifndef _TKWINDEFAULT
@@ -428,6 +428,7 @@
* Defaults for texts:
*/
+#define DEF_TEXT_AUTO_SEPARATORS "1"
#define DEF_TEXT_BG_COLOR "SystemWindow"
#define DEF_TEXT_BG_MONO WHITE
#define DEF_TEXT_BORDER_WIDTH "2"
@@ -462,6 +463,7 @@
#define DEF_TEXT_STATE "normal"
#define DEF_TEXT_TABS ""
#define DEF_TEXT_TAKE_FOCUS (char *) NULL
+#define DEF_TEXT_UNDO "0"
#define DEF_TEXT_WIDTH "80"
#define DEF_TEXT_WRAP "char"
#define DEF_TEXT_XSCROLL_COMMAND ""
diff --git a/win/tkWinDialog.c b/win/tkWinDialog.c
index be6230d..894ecc2 100644
--- a/win/tkWinDialog.c
+++ b/win/tkWinDialog.c
@@ -8,7 +8,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinDialog.c,v 1.22 2001/10/01 21:20:55 hobbs Exp $
+ * RCS: @(#) $Id: tkWinDialog.c,v 1.22.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*
*/
@@ -19,6 +19,30 @@
#include <dlgs.h> /* includes common dialog template defines */
#include <cderr.h> /* includes the common dialog error codes */
+/*
+ * The new choose directory dialog is almost ready for prime time, but
+ * it has a very long first load time that needs to be checked to see
+ * if it can be sped up, as well as checked for cleanup. -- hobbs
+ * See Patch #468139
+ *
+#define USE_NEW_CHOOSEDIR 1
+ */
+#ifdef USE_NEW_CHOOSEDIR
+#include <shlobj.h> /* includes SHBrowseForFolder */
+
+/*
+ * The following structure is used by the new Tk_ChooseDirectoryObjCmd
+ * to pass data between it and its callback. Unqiue to Winodws platform.
+ */
+typedef struct ChooseDirData {
+ TCHAR utfInitDir[MAX_PATH]; /* Initial folder to use */
+ TCHAR utfRetDir[MAX_PATH]; /* Returned folder to use */
+ Tcl_Interp *interp;
+ int mustExist; /* true if file must exist to return from
+ * callback */
+} CHOOSEDIRDATA;
+#endif
+
typedef struct ThreadSpecificData {
int debugFlag; /* Flags whether we should output debugging
* information while displaying a builtin
@@ -116,8 +140,13 @@ typedef struct ChooseDir {
* Definitions of procedures used only in this file.
*/
+#ifdef USE_NEW_CHOOSEDIR
+static UINT APIENTRY ChooseDirectoryValidateProc(HWND hdlg, UINT uMsg,
+ LPARAM wParam, LPARAM lParam);
+#else
static UINT APIENTRY ChooseDirectoryHookProc(HWND hdlg, UINT uMsg,
WPARAM wParam, LPARAM lParam);
+#endif
static UINT CALLBACK ColorDlgHookProc(HWND hDlg, UINT uMsg, WPARAM wParam,
LPARAM lParam);
static int GetFileNameA(ClientData clientData,
@@ -197,7 +226,7 @@ Tk_ChooseColorObjCmd(clientData, interp, objc, objv)
static int inited = 0;
static COLORREF dwCustColors[16];
static long oldColor; /* the color selected last time */
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-initialcolor", "-parent", "-title", NULL
};
enum options {
@@ -364,8 +393,9 @@ ColorDlgHookProc(hDlg, uMsg, wParam, lParam)
ccPtr = (CHOOSECOLOR *) lParam;
title = (const char *) ccPtr->lCustData;
if ((title != NULL) && (title[0] != '\0')) {
- Tcl_UtfToExternalDString(NULL, title, -1, &ds);
- SetWindowText(hDlg, (TCHAR *) Tcl_DStringValue(&ds));
+ Tcl_WinUtfToTChar(title, -1, &ds);
+ (*tkWinProcs->setWindowText)(hDlg,
+ (TCHAR *) Tcl_DStringValue(&ds));
Tcl_DStringFree(&ds);
}
if (tsdPtr->debugFlag) {
@@ -477,15 +507,15 @@ GetFileNameW(clientData, interp, objc, objv, open)
Tcl_DString extString, filterString, dirString, titleString;
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- static char *saveOptionStrings[] = {
+ static CONST char *saveOptionStrings[] = {
"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
"-parent", "-title", NULL
};
- static char *openOptionStrings[] = {
+ static CONST char *openOptionStrings[] = {
"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
"-multiple", "-parent", "-title", NULL
};
- char **optionStrings;
+ CONST char **optionStrings;
enum options {
FILE_DEFAULT, FILE_TYPES, FILE_INITDIR, FILE_INITFILE,
@@ -952,15 +982,15 @@ GetFileNameA(clientData, interp, objc, objv, open)
Tcl_DString extString, filterString, dirString, titleString;
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- static char *saveOptionStrings[] = {
+ static CONST char *saveOptionStrings[] = {
"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
"-parent", "-title", NULL
};
- static char *openOptionStrings[] = {
+ static CONST char *openOptionStrings[] = {
"-defaultextension", "-filetypes", "-initialdir", "-initialfile",
"-multiple", "-parent", "-title", NULL
};
- char **optionStrings;
+ CONST char **optionStrings;
enum options {
FILE_DEFAULT, FILE_TYPES, FILE_INITDIR, FILE_INITFILE,
@@ -1532,6 +1562,397 @@ MakeFilter(interp, string, dsPtr)
return TCL_OK;
}
+#ifdef USE_NEW_CHOOSEDIR
+/*
+ *----------------------------------------------------------------------
+ *
+ * Tk_ChooseDirectoryObjCmd --
+ *
+ * This procedure implements the "tk_chooseDirectory" dialog box
+ * for the Windows platform. See the user documentation for details
+ * on what it does. Uses the newer SHBrowseForFolder explorer type
+ * interface.
+ *
+ * Results:
+ * See user documentation.
+ *
+ * Side effects:
+ * A modal dialog window is created. Tcl_SetServiceMode() is
+ * called to allow background events to be processed
+ *
+ *----------------------------------------------------------------------
+
+The procedure tk_chooseDirectory pops up a dialog box for the user to
+select a directory. The following option-value pairs are possible as
+command line arguments:
+
+-initialdir dirname
+
+Specifies that the directories in directory should be displayed when the
+dialog pops up. If this parameter is not specified, then the directories
+in the current working directory are displayed. If the parameter specifies
+a relative path, the return value will convert the relative path to an
+absolute path. This option may not always work on the Macintosh. This is
+not a bug. Rather, the General Controls control panel on the Mac allows
+the end user to override the application default directory.
+
+-parent window
+
+Makes window the logical parent of the dialog. The dialog is displayed on
+top of its parent window.
+
+-title titleString
+
+Specifies a string to display as the title of the dialog box. If this
+option is not specified, then a default title will be displayed.
+
+-mustexist boolean
+
+Specifies whether the user may specify non-existant directories. If this
+parameter is true, then the user may only select directories that already
+exist. The default value is false.
+
+New Behaviour:
+
+- If mustexist = 0 and a user entered folder does not exist, a prompt will
+ pop-up asking if the user wants another chance to change it. The old
+ dialog just returned the bogus entry. On mustexist = 1, the entries MUST
+ exist before exiting the box with OK.
+
+ Bugs:
+
+- If valid abs directory name is entered into the entry box and Enter
+ pressed, the box will close returning the name. This is inconsistent when
+ entering relative names or names with forward slashes, which are
+ invalidated then corrected in the callback. After correction, the box is
+ held open to allow further modification by the user.
+
+- Not sure how to implement localization of message prompts.
+ToDo:
+- Fix bugs.
+ *
+ */
+int
+Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
+ ClientData clientData; /* Main window associated with interpreter. */
+ Tcl_Interp *interp; /* Current interpreter. */
+ int objc; /* Number of arguments. */
+ Tcl_Obj *CONST objv[]; /* Argument objects. */
+{
+ char path[MAX_PATH];
+ int oldMode, result, i;
+ LPCITEMIDLIST pidl; /* Returned by browser */
+ BROWSEINFO bInfo; /* Used by browser */
+ CHOOSEDIRDATA cdCBData; /* Structure to pass back and forth */
+ LPMALLOC pMalloc; /* Used by shell */
+
+ Tk_Window tkwin;
+ HWND hWnd;
+ char *utfTitle; /* Title for window */
+ TCHAR saveDir[MAX_PATH];
+ Tcl_DString titleString; /* UTF Title */
+ Tcl_DString initDirString; /* Initial directory */
+ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
+ Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
+ static CONST char *optionStrings[] = {
+ "-initialdir", "-mustexist", "-parent", "-title", (char *) NULL
+ };
+ enum options {
+ DIR_INITIAL, DIR_EXIST, DIR_PARENT, FILE_TITLE
+ };
+
+ /*
+ * Initialize
+ */
+ result = TCL_ERROR;
+ path[0] = '\0';
+
+ ZeroMemory(&cdCBData, sizeof(CHOOSEDIRDATA));
+ cdCBData.interp = interp;
+
+ tkwin = (Tk_Window) clientData;
+ /*
+ * Process the command line options
+ */
+ for (i = 1; i < objc; i += 2) {
+ int index;
+ char *string;
+ Tcl_Obj *optionPtr, *valuePtr;
+
+ optionPtr = objv[i];
+ valuePtr = objv[i + 1];
+
+ if (Tcl_GetIndexFromObj(interp, optionPtr, optionStrings, "option",
+ 0, &index) != TCL_OK) {
+ goto cleanup;
+ }
+ if (i + 1 == objc) {
+ string = Tcl_GetStringFromObj(optionPtr, NULL);
+ Tcl_AppendResult(interp, "value for \"", string, "\" missing",
+ (char *) NULL);
+ goto cleanup;
+ }
+
+ string = Tcl_GetString(valuePtr);
+ switch ((enum options) index) {
+ case DIR_INITIAL: {
+ if (Tcl_TranslateFileName(interp, string,
+ &initDirString) == NULL) {
+ goto cleanup;
+ }
+ string = Tcl_DStringValue(&initDirString);
+ /*
+ * Convert possible relative path to full path to keep
+ * dialog happy
+ */
+ GetFullPathName(string, MAX_PATH, saveDir, NULL);
+ lstrcpyn(cdCBData.utfInitDir, saveDir, MAX_PATH);
+ Tcl_DStringFree(&initDirString);
+ break;
+ }
+ case DIR_EXIST: {
+ if (Tcl_GetBooleanFromObj(interp, valuePtr,
+ &cdCBData.mustExist) != TCL_OK) {
+ goto cleanup;
+ }
+ break;
+ }
+ case DIR_PARENT: {
+ tkwin = Tk_NameToWindow(interp, string, tkwin);
+ if (tkwin == NULL) {
+ goto cleanup;
+ }
+ break;
+ }
+ case FILE_TITLE: {
+ utfTitle = string;
+ break;
+ }
+ }
+ }
+
+ /*
+ * Get ready to call the browser
+ */
+
+ Tk_MakeWindowExist(tkwin);
+ hWnd = Tk_GetHWND(Tk_WindowId(tkwin));
+
+ /*
+ * Setup the parameters used by SHBrowseForFolder
+ */
+
+ bInfo.hwndOwner = hWnd;
+ bInfo.pszDisplayName = path;
+ bInfo.pidlRoot = NULL;
+ if (lstrlen(cdCBData.utfInitDir) == 0) {
+ GetCurrentDirectory(MAX_PATH, cdCBData.utfInitDir);
+ }
+ bInfo.lParam = (LPARAM) &cdCBData;
+
+ if (utfTitle != NULL) {
+ Tcl_UtfToExternalDString(NULL, utfTitle, -1, &titleString);
+ bInfo.lpszTitle = (LPTSTR) Tcl_DStringValue(&titleString);
+ } else {
+ bInfo.lpszTitle = "Please choose a directory, then select OK.";
+ }
+
+ /*
+ * Set flags to add edit box (needs 4.71 Shell DLLs), status text line,
+ * validate edit box and
+ */
+ bInfo.ulFlags = BIF_EDITBOX | BIF_STATUSTEXT | BIF_RETURNFSANCESTORS
+ | BIF_VALIDATE;
+
+ /*
+ * Callback to handle events
+ */
+ bInfo.lpfn = (BFFCALLBACK) ChooseDirectoryValidateProc;
+
+ /*
+ * Display dialog in background and process result.
+ * We look to give the user a chance to change their mind
+ * on an invalid folder if mustexist is 0;
+ */
+
+ oldMode = Tcl_SetServiceMode(TCL_SERVICE_ALL);
+ GetCurrentDirectory(MAX_PATH, saveDir);
+ if (SHGetMalloc(&pMalloc) == NOERROR) {
+ pidl = SHBrowseForFolder(&bInfo);
+ /* Null for cancel button or invalid dir, otherwise valid*/
+ if (pidl != NULL) {
+ if (!SHGetPathFromIDList(pidl, path)) {
+ Tcl_SetResult(interp, "Error: Not a file system folder\n",
+ TCL_VOLATILE);
+ };
+ pMalloc->lpVtbl->Free(pMalloc, (void *) pidl);
+ } else if (lstrlen(cdCBData.utfRetDir) > 0) {
+ lstrcpy(path, cdCBData.utfRetDir);
+ }
+ pMalloc->lpVtbl->Release(pMalloc);
+ }
+ SetCurrentDirectory(saveDir);
+ Tcl_SetServiceMode(oldMode);
+
+ /*
+ * Ensure that hWnd is enabled, because it can happen that we
+ * have updated the wrapper of the parent, which causes us to
+ * leave this child disabled (Windows loses sync).
+ */
+ EnableWindow(hWnd, 1);
+
+ /*
+ * Change the pathname to the Tcl "normalized" pathname, where
+ * back slashes are used instead of forward slashes
+ */
+ Tcl_ResetResult(interp);
+ if (*path) {
+ char *p;
+ Tcl_DString ds;
+
+ Tcl_ExternalToUtfDString(NULL, (char *) path, -1, &ds);
+ for (p = Tcl_DStringValue(&ds); *p != '\0'; p++) {
+ if (*p == '\\') {
+ *p = '/';
+ }
+ }
+ Tcl_AppendResult(interp, Tcl_DStringValue(&ds), NULL);
+ Tcl_DStringFree(&ds);
+ }
+
+ result = TCL_OK;
+
+ if (utfTitle != NULL) {
+ Tcl_DStringFree(&titleString);
+ }
+
+ cleanup:
+ return result;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * ChooseDirectoryValidateProc --
+ *
+ * Hook procedure called by the explorer ChooseDirectory dialog when events
+ * occur. It is used to validate the text entry the user may have entered.
+ *
+ * Results:
+ * Returns 0 to allow default processing of message, or 1 to
+ * tell default dialog procedure not to close.
+ *
+ *----------------------------------------------------------------------
+ */
+static UINT APIENTRY
+ChooseDirectoryValidateProc (
+ HWND hwnd,
+ UINT message,
+ LPARAM lParam,
+ LPARAM lpData)
+{
+ TCHAR selDir[MAX_PATH];
+ CHOOSEDIRDATA *chooseDirSharedData;
+ Tcl_DString initDirString;
+ char string[MAX_PATH];
+ ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
+ Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
+
+ chooseDirSharedData = (CHOOSEDIRDATA *)lpData;
+
+#ifdef _WIN64
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, lpData);
+#else
+ SetWindowLong(hwnd, GWL_USERDATA, lpData);
+#endif
+
+ if (tsdPtr->debugFlag) {
+ tsdPtr->debugInterp = (Tcl_Interp *) chooseDirSharedData->interp;
+ Tcl_DoWhenIdle(SetTkDialog, (ClientData) hwnd);
+ }
+ chooseDirSharedData->utfRetDir[0] = '\0';
+ switch (message) {
+ case BFFM_VALIDATEFAILED:
+ /*
+ * First save and check to see if it is a valid path name, if
+ * so then make that path the one shown in the
+ * window. Otherwise, it failed the check and should be treated
+ * as such. Use Set/GetCurrentDirectory which allows relative
+ * path names and names with forward slashes. Use
+ * Tcl_TranslateFileName to make sure names like ~ are
+ * converted correctly.
+ */
+ Tcl_TranslateFileName(chooseDirSharedData->interp,
+ (char *)lParam, &initDirString);
+ lstrcpyn (string, Tcl_DStringValue(&initDirString), MAX_PATH);
+ Tcl_DStringFree(&initDirString);
+
+ if (SetCurrentDirectory((char *)string) == 0) {
+ LPTSTR lpFilePart[MAX_PATH];
+ /*
+ * Get the full path name to the user entry,
+ * at this point it doesn't exist so see if
+ * it is supposed to. Otherwise just return it.
+ */
+ GetFullPathName(string, MAX_PATH,
+ chooseDirSharedData->utfRetDir, /*unused*/ lpFilePart);
+ if (chooseDirSharedData->mustExist) {
+ /*
+ * User HAS to select a valid directory.
+ */
+ wsprintf(selDir, _T("Directory '%.200s' does not exist,\nplease select or enter an existing directory."), chooseDirSharedData->utfRetDir);
+ MessageBox(NULL, selDir, NULL, MB_ICONEXCLAMATION|MB_OK);
+ return 1;
+ }
+ } else {
+ /*
+ * Changed to new folder OK, return immediatly with the
+ * current directory in utfRetDir.
+ */
+ GetCurrentDirectory(MAX_PATH, chooseDirSharedData->utfRetDir);
+ return 0;
+ }
+ return 0;
+
+ case BFFM_SELCHANGED:
+ /*
+ * Set the status window to the currently selected path.
+ * And enable the OK button if a file system folder, otherwise
+ * disable the OK button for things like server names.
+ * perhaps a new switch -enablenonfolders can be used to allow
+ * non folders to be selected.
+ *
+ * Not called when user changes edit box directly.
+ */
+
+ if (SHGetPathFromIDList((LPITEMIDLIST) lParam, selDir)) {
+ SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, (LPARAM) selDir);
+ // enable the OK button
+ SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM) 1);
+ //EnableWindow(GetDlgItem(hwnd, IDOK), TRUE);
+ SetCurrentDirectory(selDir);
+ } else {
+ // disable the OK button
+ SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM) 0);
+ //EnableWindow(GetDlgItem(hwnd, IDOK), FALSE);
+ }
+ UpdateWindow(hwnd);
+ return 1;
+
+ case BFFM_INITIALIZED:
+ /*
+ * Directory browser intializing - tell it where to start from,
+ * user specified parameter.
+ */
+ SetCurrentDirectory((char *) lpData);
+ SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)lpData);
+ SendMessage(hwnd, BFFM_ENABLEOK, 0, (LPARAM) 1);
+ break;
+
+ }
+ return 0;
+}
+#else
/*
*----------------------------------------------------------------------
*
@@ -1569,7 +1990,7 @@ Tk_ChooseDirectoryObjCmd(clientData, interp, objc, objv)
Tcl_DString titleString, dirString;
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-initialdir", "-mustexist", "-parent", "-title",
NULL
};
@@ -1976,6 +2397,7 @@ ChooseDirectoryHookProc(
}
return 0;
}
+#endif
/*
*----------------------------------------------------------------------
@@ -2003,13 +2425,14 @@ Tk_MessageBoxObjCmd(clientData, interp, objc, objv)
int objc; /* Number of arguments. */
Tcl_Obj *CONST objv[]; /* Argument objects. */
{
+ Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
Tk_Window tkwin, parent;
HWND hWnd;
char *message, *title;
int defaultBtn, icon, type;
int i, oldMode, flags, winCode;
Tcl_DString messageString, titleString;
- static char *optionStrings[] = {
+ static CONST char *optionStrings[] = {
"-default", "-icon", "-message", "-parent",
"-title", "-type", NULL
};
@@ -2120,12 +2543,16 @@ Tk_MessageBoxObjCmd(clientData, interp, objc, objv)
flags |= icon | type | MB_SYSTEMMODAL;
- Tcl_UtfToExternalDString(NULL, message, -1, &messageString);
- Tcl_UtfToExternalDString(NULL, title, -1, &titleString);
+ Tcl_UtfToExternalDString(unicodeEncoding, message, -1, &messageString);
+ Tcl_UtfToExternalDString(unicodeEncoding, title, -1, &titleString);
oldMode = Tcl_SetServiceMode(TCL_SERVICE_ALL);
- winCode = MessageBox(hWnd, Tcl_DStringValue(&messageString),
- Tcl_DStringValue(&titleString), flags);
+ /*
+ * MessageBoxW exists for all platforms. Use it to allow unicode
+ * error message to be displayed correctly where possible by the OS.
+ */
+ winCode = MessageBoxW(hWnd, (WCHAR *) Tcl_DStringValue(&messageString),
+ (WCHAR *) Tcl_DStringValue(&titleString), flags);
(void) Tcl_SetServiceMode(oldMode);
/*
diff --git a/win/tkWinDraw.c b/win/tkWinDraw.c
index 5b09693..cefded7 100644
--- a/win/tkWinDraw.c
+++ b/win/tkWinDraw.c
@@ -10,7 +10,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinDraw.c,v 1.9 2000/10/24 23:51:33 ericm Exp $
+ * RCS: @(#) $Id: tkWinDraw.c,v 1.9.6.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkWinInt.h"
@@ -589,6 +589,12 @@ TkPutImage(colors, ncolors, display, d, gc, image, src_x, src_y, dest_x,
image->data, infoPtr, DIB_RGB_COLORS);
ckfree((char *) infoPtr);
}
+ if(!bitmap) {
+ panic("Fail to allocate bitmap\n");
+ DeleteDC(dcMem);
+ TkWinReleaseDrawableDC(d, dc, &state);
+ return;
+ }
bitmap = SelectObject(dcMem, bitmap);
BitBlt(dc, dest_x, dest_y, width, height, dcMem, src_x, src_y, SRCCOPY);
DeleteObject(SelectObject(dcMem, bitmap));
diff --git a/win/tkWinInit.c b/win/tkWinInit.c
index 944d1d0..8e10570 100644
--- a/win/tkWinInit.c
+++ b/win/tkWinInit.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinInit.c,v 1.4.8.1 2001/10/15 09:22:01 wolfsuit Exp $
+ * RCS: @(#) $Id: tkWinInit.c,v 1.4.8.2 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkWinInt.h"
@@ -76,17 +76,18 @@ TkpGetAppName(interp, namePtr)
Tcl_Interp *interp;
Tcl_DString *namePtr; /* A previously initialized Tcl_DString. */
{
- int argc;
- char **argv = NULL, *name, *p;
+ int argc, namelength;
+ CONST char **argv = NULL, *name, *p;
name = Tcl_GetVar(interp, "argv0", TCL_GLOBAL_ONLY);
+ namelength = -1;
if (name != NULL) {
Tcl_SplitPath(name, &argc, &argv);
if (argc > 0) {
name = argv[argc-1];
p = strrchr(name, '.');
if (p != NULL) {
- *p = '\0';
+ namelength = p - name;
}
} else {
name = NULL;
@@ -94,8 +95,9 @@ TkpGetAppName(interp, namePtr)
}
if ((name == NULL) || (*name == 0)) {
name = "tk";
+ namelength = -1;
}
- Tcl_DStringAppend(namePtr, name, -1);
+ Tcl_DStringAppend(namePtr, name, namelength);
if (argv != NULL) {
ckfree((char *)argv);
}
@@ -120,9 +122,18 @@ TkpGetAppName(interp, namePtr)
void
TkpDisplayWarning(msg, title)
- char *msg; /* Message to be displayed. */
- char *title; /* Title of warning. */
+ CONST char *msg; /* Message to be displayed. */
+ CONST char *title; /* Title of warning. */
{
- MessageBox(NULL, msg, title, MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
+ Tcl_Encoding unicodeEncoding = Tcl_GetEncoding(NULL, "unicode");
+ Tcl_DString msgString, titleString;
+
+ Tcl_UtfToExternalDString(unicodeEncoding, msg, -1, &msgString);
+ Tcl_UtfToExternalDString(unicodeEncoding, title, -1, &titleString);
+ MessageBoxW(NULL, (WCHAR *) Tcl_DStringValue(&msgString),
+ (WCHAR *) Tcl_DStringValue(&titleString),
+ MB_OK | MB_ICONEXCLAMATION | MB_SYSTEMMODAL
| MB_SETFOREGROUND | MB_TOPMOST);
+ Tcl_DStringFree(&msgString);
+ Tcl_DStringFree(&titleString);
}
diff --git a/win/tkWinInt.h b/win/tkWinInt.h
index 57eef8d..81c643a 100644
--- a/win/tkWinInt.h
+++ b/win/tkWinInt.h
@@ -11,7 +11,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinInt.h,v 1.11 2001/03/30 23:50:17 hobbs Exp $
+ * RCS: @(#) $Id: tkWinInt.h,v 1.11.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#ifndef _TKWININT
@@ -164,6 +164,32 @@ EXTERN LRESULT CALLBACK TkWinChildProc _ANSI_ARGS_((HWND hwnd, UINT message,
*/
EXTERN void TkWinUpdatingClipboard(int mode);
+/*
+ * The following structure keeps track of whether we are using the
+ * multi-byte or the wide-character interfaces to the operating system.
+ * System calls should be made through the following function table.
+ *
+ * While some system calls need to use this A/W jump-table, it is not
+ * necessary for all calls to do it, which is why you won't see this
+ * used throughout the Tk code, but only in key areas. -- hobbs
+ */
+
+typedef struct TkWinProcs {
+ int useWide;
+ LRESULT (WINAPI *callWindowProc)(WNDPROC lpPrevWndFunc, HWND hWnd,
+ UINT Msg, WPARAM wParam, LPARAM lParam);
+ LRESULT (WINAPI *defWindowProc)(HWND hWnd, UINT Msg, WPARAM wParam,
+ LPARAM lParam);
+ ATOM (WINAPI *registerClass)(CONST WNDCLASS *lpWndClass);
+ BOOL (WINAPI *setWindowText)(HWND hWnd, LPCTSTR lpString);
+ HWND (WINAPI *createWindowEx)(DWORD dwExStyle, LPCTSTR lpClassName,
+ LPCTSTR lpWindowName, DWORD dwStyle, int x, int y,
+ int nWidth, int nHeight, HWND hWndParent, HMENU hMenu,
+ HINSTANCE hInstance, LPVOID lpParam);
+} TkWinProcs;
+
+EXTERN TkWinProcs *tkWinProcs;
+
#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT
diff --git a/win/tkWinMenu.c b/win/tkWinMenu.c
index f612690..a20d37d 100644
--- a/win/tkWinMenu.c
+++ b/win/tkWinMenu.c
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinMenu.c,v 1.16 2001/10/12 13:30:32 tmh Exp $
+ * RCS: @(#) $Id: tkWinMenu.c,v 1.16.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#define OEMRESOURCE
@@ -461,7 +461,7 @@ GetEntryText(mePtr)
: Tcl_GetStringFromObj(mePtr->labelPtr, NULL);
char *accel = (mePtr->accelPtr == NULL) ? ""
: Tcl_GetStringFromObj(mePtr->accelPtr, NULL);
- char *p, *next;
+ CONST char *p, *next;
Tcl_DString itemString;
/*
@@ -913,6 +913,7 @@ TkWinHandleMenuEvent(phwnd, pMessage, pwParam, plParam, plResult)
(ClientData) menuPtr);
ReconfigureWindowsMenu((ClientData) menuPtr);
}
+ RecursivelyClearActiveMenu(menuPtr);
if (!tsdPtr->inPostMenu) {
Tcl_Interp *interp;
int code;
@@ -1078,6 +1079,18 @@ TkWinHandleMenuEvent(phwnd, pMessage, pwParam, plParam, plResult)
} else {
TkActivateMenuEntry(menuPtr, -1);
}
+ } else {
+ /* On windows, menu entries should highlight even if they
+ ** are disabled. (I know this seems dumb, but it is the way
+ ** native windows menus works so we ought to mimic it.)
+ ** The ENTRY_PLATFORM_FLAG1 flag will indicate that the
+ ** entry should be highlighted even though it is disabled.
+ */
+ if (itemPtr->itemState & ODS_SELECTED) {
+ mePtr->entryFlags |= ENTRY_PLATFORM_FLAG1;
+ } else {
+ mePtr->entryFlags &= ~ENTRY_PLATFORM_FLAG1;
+ }
}
tkfont = Tk_GetFontFromObj(menuPtr->tkwin, menuPtr->fontPtr);
@@ -1140,6 +1153,7 @@ TkWinHandleMenuEvent(phwnd, pMessage, pwParam, plParam, plResult)
Tcl_ServiceAll();
}
}
+ break;
}
}
return returnResult;
@@ -1172,6 +1186,10 @@ RecursivelyClearActiveMenu(
MenuSelectEvent(menuPtr);
for (i = 0; i < menuPtr->numEntries; i++) {
mePtr = menuPtr->entries[i];
+ if (mePtr->state == ENTRY_ACTIVE) {
+ mePtr->state = ENTRY_NORMAL;
+ }
+ mePtr->entryFlags &= ~ENTRY_PLATFORM_FLAG1;
if (mePtr->type == CASCADE_ENTRY) {
if ((mePtr->childMenuRefPtr != NULL)
&& (mePtr->childMenuRefPtr->menuPtr != NULL)) {
@@ -1710,8 +1728,8 @@ DrawMenuUnderline(
{
if (mePtr->underline >= 0) {
char *label = Tcl_GetStringFromObj(mePtr->labelPtr, NULL);
- char *start = Tcl_UtfAtIndex(label, mePtr->underline);
- char *end = Tcl_UtfNext(start);
+ CONST char *start = Tcl_UtfAtIndex(label, mePtr->underline);
+ CONST char *end = Tcl_UtfNext(start);
Tk_UnderlineChars(menuPtr->display, d,
gc, tkfont, label, x + mePtr->indicatorSpace,
@@ -2408,7 +2426,8 @@ DrawMenuEntryBackground(
int width, /* width of rectangle to draw */
int height) /* height of rectangle to draw */
{
- if (mePtr->state == ENTRY_ACTIVE) {
+ if (mePtr->state == ENTRY_ACTIVE
+ || (mePtr->entryFlags & ENTRY_PLATFORM_FLAG1)!=0 ) {
bgBorder = activeBorder;
}
Tk_Fill3DRectangle(menuPtr->tkwin, d, bgBorder,
diff --git a/win/tkWinWm.c b/win/tkWinWm.c
index b2041c5..cb6bca6 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.31 2001/10/12 13:30:32 tmh Exp $
+ * RCS: @(#) $Id: tkWinWm.c,v 1.31.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkWinInt.h"
@@ -53,6 +53,14 @@ typedef struct ProtocolHandler {
#define HANDLER_SIZE(cmdLength) \
((unsigned) (sizeof(ProtocolHandler) - 3 + cmdLength))
+/*
+ * Helper type passed via lParam to TkWmStackorderToplevelEnumProc
+ */
+typedef struct TkWmStackorderToplevelPair {
+ Tcl_HashTable *table;
+ TkWindow **window_ptr;
+} TkWmStackorderToplevelPair;
+
/*
* This structure represents the contents of a icon, in terms of its
* image. The HICON is an internal Windows format. Most of these
@@ -232,7 +240,7 @@ typedef struct TkWmInfo {
ProtocolHandler *protPtr; /* First in list of protocol handlers for
* this window (NULL means none). */
int cmdArgc; /* Number of elements in cmdArgv below. */
- char **cmdArgv; /* Array of strings to store in the
+ CONST char **cmdArgv; /* Array of strings to store in the
* WM_COMMAND property. NULL means nothing
* available. */
char *clientMachine; /* String to store in WM_CLIENT_MACHINE
@@ -342,7 +350,6 @@ static Tcl_ThreadDataKey dataKey;
* because they must be shared across threads.
*/
-static WNDCLASS toplevelClass; /* Class for toplevel windows. */
static int initialized; /* Flag indicating whether module has
* been initialized. */
TCL_DECLARE_MUTEX(winWmMutex)
@@ -371,6 +378,9 @@ static int ParseGeometry _ANSI_ARGS_((Tcl_Interp *interp,
static void RefreshColormap _ANSI_ARGS_((Colormap colormap,
TkDisplay *dispPtr));
static void SetLimits _ANSI_ARGS_((HWND hwnd, MINMAXINFO *info));
+static void TkWmStackorderToplevelWrapperMap _ANSI_ARGS_((
+ TkWindow *winPtr,
+ Tcl_HashTable *table));
static LRESULT CALLBACK TopLevelProc _ANSI_ARGS_((HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam));
static void TopLevelEventProc _ANSI_ARGS_((ClientData clientData,
@@ -659,8 +669,6 @@ static int ReadICOHeader( Tcl_Channel channel )
static int InitWindowClass(WinIconPtr titlebaricon) {
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
- WNDCLASS * classPtr;
- classPtr = &toplevelClass;
if (! tsdPtr->initialized) {
tsdPtr->initialized = 1;
@@ -670,9 +678,17 @@ static int InitWindowClass(WinIconPtr titlebaricon) {
if (! initialized) {
Tcl_MutexLock(&winWmMutex);
if (! initialized) {
+ Tcl_DString classString;
+ WNDCLASS class;
initialized = 1;
/*
+ * The only difference between WNDCLASSW and WNDCLASSA are
+ * in pointers, so we can use the generic structure WNDCLASS.
+ */
+ ZeroMemory(&class, sizeof(WNDCLASS));
+
+ /*
* When threads are enabled, we cannot use CLASSDC because
* threads will then write into the same device context.
*
@@ -681,23 +697,20 @@ static int InitWindowClass(WinIconPtr titlebaricon) {
* which also initializes a WNDCLASS structure.
*/
- #ifdef TCL_THREADS
- classPtr->style = CS_HREDRAW | CS_VREDRAW;
- #else
- classPtr->style = CS_HREDRAW | CS_VREDRAW | CS_CLASSDC;
- #endif
- classPtr->cbClsExtra = 0;
- classPtr->cbWndExtra = 0;
- classPtr->hInstance = Tk_GetHINSTANCE();
- classPtr->hbrBackground = NULL;
- classPtr->lpszMenuName = NULL;
- classPtr->lpszClassName = TK_WIN_TOPLEVEL_CLASS_NAME;
- classPtr->lpfnWndProc = WmProc;
+#ifdef TCL_THREADS
+ class.style = CS_HREDRAW | CS_VREDRAW;
+#else
+ class.style = CS_HREDRAW | CS_VREDRAW | CS_CLASSDC;
+#endif
+ class.hInstance = Tk_GetHINSTANCE();
+ Tcl_WinUtfToTChar(TK_WIN_TOPLEVEL_CLASS_NAME, -1, &classString);
+ class.lpszClassName = (LPCTSTR) Tcl_DStringValue(&classString);
+ class.lpfnWndProc = WmProc;
if (titlebaricon == NULL) {
- classPtr->hIcon = LoadIcon(Tk_GetHINSTANCE(), "tk");
+ class.hIcon = LoadIcon(Tk_GetHINSTANCE(), "tk");
} else {
- classPtr->hIcon = GetIcon(titlebaricon, ICON_BIG);
- if (classPtr->hIcon == NULL) {
+ class.hIcon = GetIcon(titlebaricon, ICON_BIG);
+ if (class.hIcon == NULL) {
return TCL_ERROR;
}
/*
@@ -706,11 +719,12 @@ static int InitWindowClass(WinIconPtr titlebaricon) {
*/
tsdPtr->iconPtr = titlebaricon;
}
- classPtr->hCursor = LoadCursor(NULL, IDC_ARROW);
+ class.hCursor = LoadCursor(NULL, IDC_ARROW);
- if (!RegisterClass(classPtr)) {
+ if (!(*tkWinProcs->registerClass)(&class)) {
panic("Unable to register TkTopLevel class");
}
+ Tcl_DStringFree(&classString);
}
Tcl_MutexUnlock(&winWmMutex);
}
@@ -883,13 +897,16 @@ WinSetIcon(interp, titlebaricon, tkw)
wmPtr = ((TkWindow*)tkw)->wmInfoPtr;
hwnd = wmPtr->wrapper;
if (hwnd == NULL) {
- Tcl_AppendResult(interp,"Can't set icon; window has no wrapper.", (char*)NULL);
+ Tcl_AppendResult(interp,
+ "Can't set icon; window has no wrapper.", (char*)NULL);
return TCL_ERROR;
}
}
- SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)GetIcon(titlebaricon, ICON_SMALL));
- SendMessage(hwnd,WM_SETICON,ICON_BIG,(LPARAM)GetIcon(titlebaricon, ICON_BIG));
-
+ SendMessage(hwnd, WM_SETICON, ICON_SMALL,
+ (LPARAM) GetIcon(titlebaricon, ICON_SMALL));
+ SendMessage(hwnd, WM_SETICON, ICON_BIG,
+ (LPARAM) GetIcon(titlebaricon, ICON_BIG));
+
/* Update the iconPtr we keep for each WmInfo structure. */
if (wmPtr->iconPtr != NULL) {
/* Free any old icon ptr which is associated with this window. */
@@ -1486,7 +1503,7 @@ UpdateWrapper(winPtr)
WINDOWPLACEMENT place;
HICON hSmallIcon = NULL;
HICON hBigIcon = NULL;
- Tcl_DString titleString;
+ Tcl_DString titleString, classString;
int *childStateInfo = NULL;
ThreadSpecificData *tsdPtr = (ThreadSpecificData *)
Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData));
@@ -1573,11 +1590,14 @@ UpdateWrapper(winPtr)
*/
tsdPtr->createWindow = winPtr;
- Tcl_UtfToExternalDString(NULL, wmPtr->titleUid, -1, &titleString);
- wmPtr->wrapper = CreateWindowEx(wmPtr->exStyle,
- TK_WIN_TOPLEVEL_CLASS_NAME,
- Tcl_DStringValue(&titleString), wmPtr->style, x, y, width,
- height, parentHWND, NULL, Tk_GetHINSTANCE(), NULL);
+ Tcl_WinUtfToTChar(wmPtr->titleUid, -1, &titleString);
+ Tcl_WinUtfToTChar(TK_WIN_TOPLEVEL_CLASS_NAME, -1, &classString);
+ wmPtr->wrapper = (*tkWinProcs->createWindowEx)(wmPtr->exStyle,
+ (LPCTSTR) Tcl_DStringValue(&classString),
+ (LPCTSTR) Tcl_DStringValue(&titleString),
+ wmPtr->style, x, y, width, height,
+ parentHWND, NULL, Tk_GetHINSTANCE(), NULL);
+ Tcl_DStringFree(&classString);
Tcl_DStringFree(&titleString);
#ifdef _WIN64
SetWindowLongPtr(wmPtr->wrapper, GWLP_USERDATA, (LONG_PTR) winPtr);
@@ -1616,8 +1636,10 @@ UpdateWrapper(winPtr)
}
oldWrapper = SetParent(child, wmPtr->wrapper);
if (oldWrapper) {
- hSmallIcon = (HICON) SendMessage(oldWrapper,WM_GETICON,ICON_SMALL,(LPARAM)NULL);
- hBigIcon = (HICON) SendMessage(oldWrapper,WM_GETICON,ICON_BIG,(LPARAM)NULL);
+ hSmallIcon = (HICON) SendMessage(oldWrapper, WM_GETICON, ICON_SMALL,
+ (LPARAM) NULL);
+ hBigIcon = (HICON) SendMessage(oldWrapper, WM_GETICON, ICON_BIG,
+ (LPARAM) NULL);
}
if (oldWrapper && (oldWrapper != wmPtr->wrapper)
@@ -2187,7 +2209,7 @@ Tk_WmCmd(clientData, interp, argc, argv)
TkWindow **cmapList;
TkWindow *winPtr2;
int i, windowArgc, gotToplevel;
- char **windowArgv;
+ CONST char **windowArgv;
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # arguments: must be \"",
@@ -2256,7 +2278,7 @@ Tk_WmCmd(clientData, interp, argc, argv)
} else if ((c == 'c') && (strncmp(argv[1], "command", length) == 0)
&& (length >= 3)) {
int cmdArgc;
- char **cmdArgv;
+ CONST char **cmdArgv;
if ((argc != 3) && (argc != 4)) {
Tcl_AppendResult(interp, "wrong # arguments: must be \"",
@@ -3044,6 +3066,99 @@ Tk_WmCmd(clientData, interp, argc, argv)
}
}
goto updateGeom;
+ } else if ((c == 's') && (strncmp(argv[1], "stackorder", length) == 0)
+ && (length >= 2)) {
+ TkWindow **windows, **window_ptr;
+
+ if ((argc != 3) && (argc != 5)) {
+ Tcl_AppendResult(interp, "wrong # arguments: must be \"",
+ argv[0],
+ " stackorder window ?isabove|isbelow? ?window?\"",
+ (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (argc == 3) {
+ windows = TkWmStackorderToplevel(winPtr);
+ if (windows == NULL) {
+ panic("TkWmStackorderToplevel failed");
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ Tcl_AppendElement(interp, (*window_ptr)->pathName);
+ }
+ ckfree((char *) windows);
+ return TCL_OK;
+ }
+ } else {
+ TkWindow *winPtr2;
+ int index1=-1, index2=-1, result;
+
+ winPtr2 = (TkWindow *) Tk_NameToWindow(interp, argv[4], tkwin);
+ if (winPtr2 == NULL) {
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsTopLevel(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't a top-level window", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr)) {
+ Tcl_AppendResult(interp, "window \"", winPtr->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ if (!Tk_IsMapped(winPtr2)) {
+ Tcl_AppendResult(interp, "window \"", winPtr2->pathName,
+ "\" isn't mapped", (char *) NULL);
+ return TCL_ERROR;
+ }
+
+ /*
+ * Lookup stacking order of all toplevels that are children
+ * of "." and find the position of winPtr and winPtr2
+ * in the stacking order.
+ */
+
+ windows = TkWmStackorderToplevel(winPtr->mainPtr->winPtr);
+
+ if (windows == NULL) {
+ Tcl_AppendResult(interp, "TkWmStackorderToplevel failed",
+ (char *) NULL);
+ return TCL_ERROR;
+ } else {
+ for (window_ptr = windows; *window_ptr ; window_ptr++) {
+ if (*window_ptr == winPtr)
+ index1 = (window_ptr - windows);
+ if (*window_ptr == winPtr2)
+ index2 = (window_ptr - windows);
+ }
+ if (index1 == -1)
+ panic("winPtr window not found");
+ if (index2 == -1)
+ panic("winPtr2 window not found");
+
+ ckfree((char *) windows);
+ }
+
+ c = argv[3][0];
+ length = strlen(argv[3]);
+ if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isabove", length) == 0)) {
+ result = index1 > index2;
+ } else if ((length > 2) && (c == 'i')
+ && (strncmp(argv[3], "isbelow", length) == 0)) {
+ result = index1 < index2;
+ } else {
+ Tcl_AppendResult(interp, "bad argument \"", argv[3],
+ "\": must be isabove or isbelow", (char *) NULL);
+ return TCL_ERROR;
+ }
+ Tcl_SetIntObj(Tcl_GetObjResult(interp), result);
+ return TCL_OK;
+ }
} else if ((c == 's') && (strncmp(argv[1], "state", length) == 0)
&& (length >= 2)) {
if ((argc < 3) || (argc > 4)) {
@@ -3137,9 +3252,9 @@ Tk_WmCmd(clientData, interp, argc, argv)
wmPtr->titleUid = Tk_GetUid(argv[3]);
if (!(wmPtr->flags & WM_NEVER_MAPPED) && wmPtr->wrapper != NULL) {
Tcl_DString titleString;
- Tcl_UtfToExternalDString(NULL, wmPtr->titleUid, -1,
- &titleString);
- SetWindowText(wmPtr->wrapper, Tcl_DStringValue(&titleString));
+ Tcl_WinUtfToTChar(wmPtr->titleUid, -1, &titleString);
+ (*tkWinProcs->setWindowText)(wmPtr->wrapper,
+ (LPCTSTR) Tcl_DStringValue(&titleString));
Tcl_DStringFree(&titleString);
}
}
@@ -3224,8 +3339,8 @@ Tk_WmCmd(clientData, interp, argc, argv)
"focusmodel, frame, geometry, grid, group, iconbitmap, ",
"iconify, iconmask, iconname, iconposition, ",
"iconwindow, maxsize, minsize, overrideredirect, ",
- "positionfrom, protocol, resizable, sizefrom, state, title, ",
- "transient, or withdraw",
+ "positionfrom, protocol, resizable, sizefrom, stackorder ",
+ "state, title, transient, or withdraw",
(char *) NULL);
return TCL_ERROR;
}
@@ -4150,6 +4265,172 @@ TkWmProtocolEventProc(winPtr, eventPtr)
/*
*----------------------------------------------------------------------
*
+ * TkWmStackorderToplevelEnumProc --
+ *
+ * This procedure is invoked once for each HWND Window on the
+ * display as a result of calling EnumWindows from
+ * TkWmStackorderToplevel.
+ *
+ * Results:
+ * TRUE to request further iteration.
+ *
+ * Side effects:
+ * Adds entries to the passed array of TkWindows.
+ *
+ *----------------------------------------------------------------------
+ */
+
+BOOL CALLBACK TkWmStackorderToplevelEnumProc(hwnd, lParam)
+ HWND hwnd; /* handle to parent window */
+ LPARAM lParam; /* application-defined value */
+{
+ Tcl_HashEntry *hPtr;
+ TkWindow *childWinPtr;
+
+ TkWmStackorderToplevelPair *pair =
+ (TkWmStackorderToplevelPair *) lParam;
+
+ /*fprintf(stderr, "Looking up HWND %d\n", hwnd);*/
+
+ hPtr = Tcl_FindHashEntry(pair->table, (char *) hwnd);
+ if (hPtr != NULL) {
+ childWinPtr = (TkWindow *) Tcl_GetHashValue(hPtr);
+ /* Double check that same HWND does not get passed twice */
+ if (childWinPtr == NULL) {
+ panic("duplicate HWND in TkWmStackorderToplevelEnumProc");
+ } else {
+ Tcl_SetHashValue(hPtr, NULL);
+ }
+ /*fprintf(stderr, "Found mapped HWND %d -> %x (%s)\n", hwnd,
+ childWinPtr, childWinPtr->pathName);*/
+ *(pair->window_ptr)-- = childWinPtr;
+ }
+ return TRUE;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkWmStackorderToplevelWrapperMap --
+ *
+ * This procedure will create a table that maps the wrapper
+ * HWND id for a toplevel to the TkWindow structure that is wraps.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Adds entries to the passed hashtable.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static void
+TkWmStackorderToplevelWrapperMap(winPtr, table)
+ TkWindow *winPtr; /* TkWindow to recurse on */
+ Tcl_HashTable *table; /* Table to maps HWND to TkWindow */
+{
+ TkWindow *childPtr;
+ Tcl_HashEntry *hPtr;
+ HWND wrapper;
+ int newEntry;
+
+ if (Tk_IsMapped(winPtr) && Tk_IsTopLevel(winPtr)) {
+ wrapper = TkWinGetWrapperWindow((Tk_Window) winPtr);
+
+ /*fprintf(stderr, "Mapped HWND %d to %x (%s)\n", wrapper,
+ winPtr, winPtr->pathName);*/
+
+ hPtr = Tcl_CreateHashEntry(table,
+ (char *) wrapper, &newEntry);
+ Tcl_SetHashValue(hPtr, winPtr);
+ }
+
+ for (childPtr = winPtr->childList; childPtr != NULL;
+ childPtr = childPtr->nextPtr) {
+ TkWmStackorderToplevelWrapperMap(childPtr, table);
+ }
+}
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkWmStackorderToplevel --
+ *
+ * This procedure returns the stack order of toplevel windows.
+ *
+ * Results:
+ * An array of pointers to tk window objects in stacking order
+ * or else NULL if there was an error.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+TkWindow **
+TkWmStackorderToplevel(parentPtr)
+ TkWindow *parentPtr; /* Parent toplevel window. */
+{
+ TkWmStackorderToplevelPair pair;
+ TkWindow **windows;
+ Tcl_HashTable table;
+ Tcl_HashEntry *hPtr;
+ Tcl_HashSearch search;
+
+ /*
+ * Map HWND ids to a TkWindow of the wrapped toplevel.
+ */
+
+ Tcl_InitHashTable(&table, TCL_ONE_WORD_KEYS);
+ TkWmStackorderToplevelWrapperMap(parentPtr, &table);
+
+ windows = (TkWindow **) ckalloc((table.numEntries+1)
+ * sizeof(TkWindow *));
+
+ /*
+ * Special cases: If zero or one toplevels were mapped
+ * there is no need to call EnumWindows.
+ */
+
+ switch (table.numEntries) {
+ case 0:
+ windows[0] = NULL;
+ goto done;
+ case 1:
+ hPtr = Tcl_FirstHashEntry(&table, &search);
+ windows[0] = (TkWindow *) Tcl_GetHashValue(hPtr);
+ windows[1] = NULL;
+ goto done;
+ }
+
+ /*
+ * We will be inserting into the array starting at the end
+ * and working our way to the beginning since EnumWindows
+ * returns windows in highest to lowest order.
+ */
+
+ pair.table = &table;
+ pair.window_ptr = windows + table.numEntries;
+ *pair.window_ptr-- = NULL;
+
+ if (EnumWindows((WNDENUMPROC) TkWmStackorderToplevelEnumProc,
+ (LPARAM) &pair) == 0) {
+ ckfree((char *) windows);
+ windows = NULL;
+ } else {
+ if (pair.window_ptr != (windows-1))
+ panic("num matched toplevel windows does not equal num children");
+ }
+
+ done:
+ Tcl_DeleteHashTable(&table);
+ return windows;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
* TkWmRestackToplevel --
*
* This procedure restacks a top-level window.
@@ -5195,7 +5476,8 @@ WmProc(hwnd, message, wParam, lParam)
* This allows us to pass the message onto the
* native menus [Bug: 2272]
*/
- result = DefWindowProc(hwnd, message, wParam, lParam);
+ result = (*tkWinProcs->defWindowProc)(hwnd, message,
+ wParam, lParam);
goto done;
}
@@ -5228,10 +5510,11 @@ WmProc(hwnd, message, wParam, lParam)
result = 0;
} else if (!Tk_TranslateWinEvent(child, message, wParam, lParam,
&result)) {
- result = DefWindowProc(hwnd, message, wParam, lParam);
+ result = (*tkWinProcs->defWindowProc)(hwnd, message,
+ wParam, lParam);
}
} else {
- result = DefWindowProc(hwnd, message, wParam, lParam);
+ result = (*tkWinProcs->defWindowProc)(hwnd, message, wParam, lParam);
}
done:
diff --git a/win/tkWinX.c b/win/tkWinX.c
index 3599bd0..149e8dd 100644
--- a/win/tkWinX.c
+++ b/win/tkWinX.c
@@ -10,10 +10,11 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkWinX.c,v 1.15 2001/09/21 21:26:09 hobbs Exp $
+ * RCS: @(#) $Id: tkWinX.c,v 1.15.2.1 2002/02/05 02:25:18 wolfsuit Exp $
*/
#include "tkWinInt.h"
+#include <commctrl.h>
/*
* The zmouse.h file includes the definition for WM_MOUSEWHEEL.
@@ -27,6 +28,38 @@
#include <imm.h>
+static TkWinProcs asciiProcs = {
+ 0,
+
+ (LRESULT (WINAPI *)(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg,
+ WPARAM wParam, LPARAM lParam)) CallWindowProcA,
+ (LRESULT (WINAPI *)(HWND hWnd, UINT Msg, WPARAM wParam,
+ LPARAM lParam)) DefWindowProcA,
+ (ATOM (WINAPI *)(CONST WNDCLASS *lpWndClass)) RegisterClassA,
+ (BOOL (WINAPI *)(HWND hWnd, LPCTSTR lpString)) SetWindowTextA,
+ (HWND (WINAPI *)(DWORD dwExStyle, LPCTSTR lpClassName,
+ LPCTSTR lpWindowName, DWORD dwStyle, int x, int y,
+ int nWidth, int nHeight, HWND hWndParent, HMENU hMenu,
+ HINSTANCE hInstance, LPVOID lpParam)) CreateWindowExA,
+};
+
+static TkWinProcs unicodeProcs = {
+ 1,
+
+ (LRESULT (WINAPI *)(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg,
+ WPARAM wParam, LPARAM lParam)) CallWindowProcW,
+ (LRESULT (WINAPI *)(HWND hWnd, UINT Msg, WPARAM wParam,
+ LPARAM lParam)) DefWindowProcW,
+ (ATOM (WINAPI *)(CONST WNDCLASS *lpWndClass)) RegisterClassW,
+ (BOOL (WINAPI *)(HWND hWnd, LPCTSTR lpString)) SetWindowTextW,
+ (HWND (WINAPI *)(DWORD dwExStyle, LPCTSTR lpClassName,
+ LPCTSTR lpWindowName, DWORD dwStyle, int x, int y,
+ int nWidth, int nHeight, HWND hWndParent, HMENU hMenu,
+ HINSTANCE hInstance, LPVOID lpParam)) CreateWindowExW,
+};
+
+TkWinProcs *tkWinProcs;
+
/*
* Declarations of static variables used in this file.
*/
@@ -154,6 +187,21 @@ TkWinXInit(hInstance)
}
childClassInitialized = 1;
+ if (TkWinGetPlatformId() == VER_PLATFORM_WIN32_NT) {
+ /*
+ * This is necessary to enable the use of themeable elements on XP,
+ * so we don't even try and call it for Win9*.
+ */
+
+ INITCOMMONCONTROLSEX comctl;
+ ZeroMemory(&comctl, sizeof(comctl));
+ (void) InitCommonControlsEx(&comctl);
+
+ tkWinProcs = &unicodeProcs;
+ } else {
+ tkWinProcs = &asciiProcs;
+ }
+
tkInstance = hInstance;
/*
@@ -277,10 +325,10 @@ TkWinGetPlatformId()
*----------------------------------------------------------------------
*/
-char *
+CONST char *
TkGetDefaultScreenName(interp, screenName)
Tcl_Interp *interp; /* Not used. */
- char *screenName; /* If NULL, use default string. */
+ CONST char *screenName; /* If NULL, use default string. */
{
if ((screenName == NULL) || (screenName[0] == '\0')) {
screenName = winScreenName;
@@ -307,7 +355,7 @@ TkGetDefaultScreenName(interp, screenName)
TkDisplay *
TkpOpenDisplay(display_name)
- char *display_name;
+ CONST char *display_name;
{
Screen *screen;
HDC dc;