From 15c3ec6ba3d96f2c4cdcf275ed2f40252040ec8f Mon Sep 17 00:00:00 2001 From: joedf Date: Wed, 22 Sep 2021 11:22:19 -0400 Subject: [PATCH] add source files v0.9.3.1 --- source/NiftyWindows.ahk | 2338 +++++++++++++++++++++++++++++++++++++++ source/build.txt | 1 + source/changes.txt | 260 +++++ source/features.pdf | Bin 0 -> 140478 bytes source/license.txt | 280 +++++ source/readme.txt | 471 ++++++++ source/version.txt | 1 + 7 files changed, 3351 insertions(+) create mode 100644 source/NiftyWindows.ahk create mode 100644 source/build.txt create mode 100644 source/changes.txt create mode 100644 source/features.pdf create mode 100644 source/license.txt create mode 100644 source/readme.txt create mode 100644 source/version.txt diff --git a/source/NiftyWindows.ahk b/source/NiftyWindows.ahk new file mode 100644 index 0000000..8d3bbd7 --- /dev/null +++ b/source/NiftyWindows.ahk @@ -0,0 +1,2338 @@ +/* + * Copyright (c) 2004-2005 by Enovatic-Solutions. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * ---------------------------------------------------------------------- + * If you have any suggestions of new features or further questions + * feel free to contact the author. + * + * Company: Enovatic-Solutions (IT Service Provider) + * Author: Oliver Pfeiffer, Bremen (GERMANY) + * Homepage: http://www.enovatic.org/ + * Email: contact@enovatic.org + */ + + + +; NiftyWindows Version 0.9.3.1 +; http://www.enovatic.org/products/niftywindows/ + +; AutoHotkey Version 1.0.36.01 +; http://www.autohotkey.com/ + + + +#SingleInstance force +#HotkeyInterval 1000 +#MaxHotkeysPerInterval 100 +#NoTrayIcon + + + +; [SYS] autostart section + +SplitPath, A_ScriptFullPath, SYS_ScriptNameExt, SYS_ScriptDir, SYS_ScriptExt, SYS_ScriptNameNoExt, SYS_ScriptDrive +SYS_ScriptVersion = 0.9.3.1 +SYS_ScriptBuild = 20050702195845 +SYS_ScriptInfo = %SYS_ScriptNameNoExt% %SYS_ScriptVersion% + +Process, Priority, , HIGH +SetBatchLines, -1 +; TODO : a nulled key delay may produce problems for WinAmp control +SetKeyDelay, 0, 0 +SetMouseDelay, 0 +SetDefaultMouseSpeed, 0 +SetWinDelay, 0 +SetControlDelay, 0 + +Gosub, SYS_ParseCommandLine +Gosub, CFG_LoadSettings +Gosub, CFG_ApplySettings + +MIR_MirandaFullPath = %ProgramFiles%\Miranda\Miranda32.exe +SplitPath, MIR_MirandaFullPath, , MIR_MirandaDir + +if ( !A_IsCompiled ) + SetTimer, REL_ScriptReload, 1000 + +OnExit, SYS_ExitHandler + +Gosub, TRY_TrayInit +Gosub, SYS_ContextCheck +Gosub, UPD_AutoCheckForUpdate + +Return + + + +; [SYS] parses command line parameters + +SYS_ParseCommandLine: + Loop %0% + If ( (%A_Index% = "/x") or (%A_Index% = "/exit") ) + ExitApp +Return + + + +; [SYS] exit handler + +SYS_ExitHandler: + Gosub, AOT_ExitHandler + Gosub, ROL_ExitHandler + Gosub, TRA_ExitHandler + Gosub, CFG_SaveSettings +ExitApp + + + +; [SYS] context check + +SYS_ContextCheck: + Gosub, SYS_TrayTipBalloonCheck + If ( !SYS_TrayTipBalloon ) + { + Gosub, SUS_SuspendSaveState + Suspend, On + MsgBox, 4148, Balloon Handler - %SYS_ScriptInfo%, The balloon messages are disabled on your system. These visual messages`nabove the system tray are often used by tools as additional information four`nyour interest.`n`nNiftyWindows uses balloon messages to show you some important operating`ndetails. If you leave the messages disabled NiftyWindows will show some plain`nmessages as tooltips instead (in front of the system tray).`n`nDo you want to enable balloon messages now (highly recommended)? + Gosub, SUS_SuspendRestoreState + IfMsgBox, Yes + { + SYS_TrayTipBalloon = 1 + RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, EnableBalloonTips, %SYS_TrayTipBalloon% + RegWrite, REG_DWORD, HKEY_LOCAL_MACHINE, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, EnableBalloonTips, %SYS_TrayTipBalloon% + SendMessage, 0x001A, , , , ahk_id 0xFFFF ; 0x001A is WM_SETTINGCHANGE ; 0xFFFF is HWND_BROADCAST + Sleep, 500 ; lets the other windows relax + } + } + + IfNotExist, %A_ScriptDir%\readme.txt + { + TRY_TrayEvent := "Help" + Gosub, TRY_TrayEvent + Suspend, On + Sleep, 10000 + ExitApp, 1 + } + + IfNotExist, %A_ScriptDir%\license.txt + { + TRY_TrayEvent := "View License" + Gosub, TRY_TrayEvent + Suspend, On + Sleep, 10000 + ExitApp, 1 + } + + TRY_TrayEvent := "About" + Gosub, TRY_TrayEvent +Return + + + +; [SYS] handles tooltips + +SYS_ToolTipShow: + If ( SYS_ToolTipText ) + { + If ( !SYS_ToolTipSeconds ) + SYS_ToolTipSeconds = 2 + SYS_ToolTipMillis := SYS_ToolTipSeconds * 1000 + CoordMode, Mouse, Screen + CoordMode, ToolTip, Screen + If ( !SYS_ToolTipX or !SYS_ToolTipY ) + { + MouseGetPos, SYS_ToolTipX, SYS_ToolTipY + SYS_ToolTipX += 16 + SYS_ToolTipY += 24 + } + ToolTip, %SYS_ToolTipText%, %SYS_ToolTipX%, %SYS_ToolTipY% + SetTimer, SYS_ToolTipHandler, %SYS_ToolTipMillis% + } + SYS_ToolTipText = + SYS_ToolTipSeconds = + SYS_ToolTipX = + SYS_ToolTipY = +Return + +SYS_ToolTipFeedbackShow: + If ( SYS_ToolTipFeedback ) + Gosub, SYS_ToolTipShow + SYS_ToolTipText = + SYS_ToolTipSeconds = + SYS_ToolTipX = + SYS_ToolTipY = +Return + +SYS_ToolTipHandler: + SetTimer, SYS_ToolTipHandler, Off + ToolTip +Return + + + +; [SYS] handles balloon messages + +SYS_TrayTipShow: + If ( SYS_TrayTipText ) + { + If ( !SYS_TrayTipTitle ) + SYS_TrayTipTitle = %SYS_ScriptInfo% + If ( !SYS_TrayTipSeconds ) + SYS_TrayTipSeconds = 10 + If ( !SYS_TrayTipOptions ) + SYS_TrayTipOptions = 17 + SYS_TrayTipMillis := SYS_TrayTipSeconds * 1000 + Gosub, SYS_TrayTipBalloonCheck + If ( SYS_TrayTipBalloon and !A_IconHidden ) + { + TrayTip, %SYS_TrayTipTitle%, %SYS_TrayTipText%, %SYS_TrayTipSeconds%, %SYS_TrayTipOptions% + SetTimer, SYS_TrayTipHandler, %SYS_TrayTipMillis% + } + Else + { + TrayTip + SYS_ToolTipText = %SYS_TrayTipTitle%:`n`n%SYS_TrayTipText% + SYS_ToolTipSeconds = %SYS_TrayTipSeconds% + SysGet, SYS_TrayTipDisplay, Monitor + SYS_ToolTipX = %SYS_TrayTipDisplayRight% + SYS_ToolTipY = %SYS_TrayTipDisplayBottom% + Gosub, SYS_ToolTipShow + } + } + SYS_TrayTipTitle = + SYS_TrayTipText = + SYS_TrayTipSeconds = + SYS_TrayTipOptions = +Return + +SYS_TrayTipHandler: + SetTimer, SYS_TrayTipHandler, Off + TrayTip +Return + +SYS_TrayTipBalloonCheck: + RegRead, SYS_TrayTipBalloonCU, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, EnableBalloonTips + SYS_TrayTipBalloonCU := ErrorLevel or SYS_TrayTipBalloonCU + RegRead, SYS_TrayTipBalloonLM, HKEY_LOCAL_MACHINE, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, EnableBalloonTips + SYS_TrayTipBalloonLM := ErrorLevel or SYS_TrayTipBalloonLM + SYS_TrayTipBalloon := SYS_TrayTipBalloonCU and SYS_TrayTipBalloonLM +Return + + + +; [SUS] provides suspend services + +#Esc:: +SUS_SuspendToggle: + Suspend, Permit + If ( !A_IsSuspended ) + { + Suspend, On + SYS_TrayTipText = NiftyWindows is suspended now.`nPress WIN+ESC to resume it again. + SYS_TrayTipOptions = 2 + } + Else + { + Suspend, Off + SYS_TrayTipText = NiftyWindows is resumed now.`nPress WIN+ESC to suspend it again. + } + Gosub, SYS_TrayTipShow + Gosub, TRY_TrayUpdate +Return + +SUS_SuspendSaveState: + SUS_Suspended := A_IsSuspended +Return + +SUS_SuspendRestoreState: + If ( SUS_Suspended ) + Suspend, On + Else + Suspend, Off +Return + +SUS_SuspendHandler: + IfWinActive, A + { + WinGet, SUS_WinID, ID + If ( !SUS_WinID ) + Return + WinGet, SUS_WinMinMax, MinMax, ahk_id %SUS_WinID% + WinGetPos, SUS_WinX, SUS_WinY, SUS_WinW, SUS_WinH, ahk_id %SUS_WinID% + + If ( (SUS_WinMinMax = 0) and (SUS_WinX = 0) and (SUS_WinY = 0) and (SUS_WinW = A_ScreenWidth) and (SUS_WinH = A_ScreenHeight) ) + { + WinGetClass, SUS_WinClass, ahk_id %SUS_WinID% + WinGet, SUS_ProcessName, ProcessName, ahk_id %SUS_WinID% + SplitPath, SUS_ProcessName, , , SUS_ProcessExt + If ( (SUS_WinClass != "Progman") and (SUS_ProcessExt != "scr") and !SUS_FullScreenSuspend ) + { + SUS_FullScreenSuspend = 1 + SUS_FullScreenSuspendState := A_IsSuspended + If ( !A_IsSuspended ) + { + Suspend, On + SYS_TrayTipText = A full screen window was activated.`nNiftyWindows is suspended now.`nPress WIN+ESC to resume it again. + SYS_TrayTipOptions = 2 + Gosub, SYS_TrayTipShow + Gosub, TRY_TrayUpdate + } + } + } + Else + { + If ( SUS_FullScreenSuspend ) + { + SUS_FullScreenSuspend = 0 + If ( A_IsSuspended and !SUS_FullScreenSuspendState ) + { + Suspend, Off + SYS_TrayTipText = A full screen window was deactivated.`nNiftyWindows is resumed now.`nPress WIN+ESC to suspend it again. + Gosub, SYS_TrayTipShow + Gosub, TRY_TrayUpdate + } + } + } + } +Return + + + +; [SYS] provides reversion of all visual effects + +/** + * This powerful hotkey removes all visual effects (like on exit) that have + * been made before by NiftyWindows. You can use this action as a fall-back + * solution to quickly revert any always-on-top, rolled windows and + * transparency features you've set before. + */ + +^#BS:: +^!BS:: +SYS_RevertVisualEffects: + Gosub, AOT_SetAllOff + Gosub, ROL_RollDownAll + Gosub, TRA_TransparencyAllOff + SYS_TrayTipText = All visual effects (AOT, Roll, Transparency) were reverted. + Gosub, SYS_TrayTipShow +Return + + + +; [NWD] nifty window dragging + +/** + * This is the most powerful feature of NiftyWindows. The area of every window + * is tiled in a virtual 9-cell grid with three columns and rows. The center + * cell is the largest one and you can grab and move a window around by clicking + * and holding it with the right mouse button. The other eight corner cells are + * used to resize a resizable window in the same manner. + */ + +$RButton:: +$+RButton:: +$+!RButton:: +$+^RButton:: +$+#RButton:: +$+!^RButton:: +$+!#RButton:: +$+^#RButton:: +$+!^#RButton:: +$!RButton:: +$!^RButton:: +$!#RButton:: +$!^#RButton:: +$^RButton:: +$^#RButton:: +$#RButton:: + NWD_ResizeGrids = 5 + CoordMode, Mouse, Screen + MouseGetPos, NWD_MouseStartX, NWD_MouseStartY, NWD_WinID + If ( !NWD_WinID ) + Return + WinGetPos, NWD_WinStartX, NWD_WinStartY, NWD_WinStartW, NWD_WinStartH, ahk_id %NWD_WinID% + WinGet, NWD_WinMinMax, MinMax, ahk_id %NWD_WinID% + WinGet, NWD_WinStyle, Style, ahk_id %NWD_WinID% + WinGetClass, NWD_WinClass, ahk_id %NWD_WinID% + GetKeyState, NWD_CtrlState, Ctrl, P + + ; the and'ed condition checks for popup window: + ; (WS_POPUP) and !(WS_DLGFRAME | WS_SYSMENU | WS_THICKFRAME) + If ( (NWD_WinClass = "Progman") or ((NWD_CtrlState = "U") and (((NWD_WinStyle & 0x80000000) and !(NWD_WinStyle & 0x4C0000)) or (NWD_WinClass = "ExploreWClass") or (NWD_WinClass = "CabinetWClass") or (NWD_WinClass = "IEFrame") or (NWD_WinClass = "MozillaWindowClass") or (NWD_WinClass = "OpWindow") or (NWD_WinClass = "ATL:ExplorerFrame") or (NWD_WinClass = "ATL:ScrapFrame"))) ) + { + NWD_ImmediateDownRequest = 1 + NWD_ImmediateDown = 0 + NWD_PermitClick = 1 + } + Else + { + NWD_ImmediateDownRequest = 0 + NWD_ImmediateDown = 0 + NWD_PermitClick = 1 + } + + NWD_Dragging := (NWD_WinClass != "Progman") and ((NWD_CtrlState = "D") or ((NWD_WinMinMax != 1) and !NWD_ImmediateDownRequest)) + + ; checks wheter the window has a sizing border (WS_THICKFRAME) + If ( (NWD_CtrlState = "D") or (NWD_WinStyle & 0x40000) ) + { + If ( (NWD_MouseStartX >= NWD_WinStartX + NWD_WinStartW / NWD_ResizeGrids) and (NWD_MouseStartX <= NWD_WinStartX + (NWD_ResizeGrids - 1) * NWD_WinStartW / NWD_ResizeGrids) ) + NWD_ResizeX = 0 + Else + If ( NWD_MouseStartX > NWD_WinStartX + NWD_WinStartW / 2 ) + NWD_ResizeX := 1 + Else + NWD_ResizeX := -1 + + If ( (NWD_MouseStartY >= NWD_WinStartY + NWD_WinStartH / NWD_ResizeGrids) and (NWD_MouseStartY <= NWD_WinStartY + (NWD_ResizeGrids - 1) * NWD_WinStartH / NWD_ResizeGrids) ) + NWD_ResizeY = 0 + Else + If ( NWD_MouseStartY > NWD_WinStartY + NWD_WinStartH / 2 ) + NWD_ResizeY := 1 + Else + NWD_ResizeY := -1 + } + Else + { + NWD_ResizeX = 0 + NWD_ResizeY = 0 + } + + If ( NWD_WinStartW and NWD_WinStartH ) + NWD_WinStartAR := NWD_WinStartW / NWD_WinStartH + Else + NWD_WinStartAR = 0 + + ; TODO : this is a workaround (checks for popup window) for the activation + ; bug of AutoHotkey -> can be removed as soon as the known bug is fixed + If ( !((NWD_WinStyle & 0x80000000) and !(NWD_WinStyle & 0x4C0000)) ) + IfWinNotActive, ahk_id %NWD_WinID% + WinActivate, ahk_id %NWD_WinID% + + ; TODO : the hotkeys must be enabled in the 2nd block because the 1st block + ; activates them only for the first call (historical problem of AutoHotkey) + Hotkey, Shift, NWD_IgnoreKeyHandler + Hotkey, Ctrl, NWD_IgnoreKeyHandler + Hotkey, Alt, NWD_IgnoreKeyHandler + Hotkey, LWin, NWD_IgnoreKeyHandler + Hotkey, RWin, NWD_IgnoreKeyHandler + Hotkey, Shift, On + Hotkey, Ctrl, On + Hotkey, Alt, On + Hotkey, LWin, On + Hotkey, RWin, On + SetTimer, NWD_IgnoreKeyHandler, 100 + SetTimer, NWD_WindowHandler, 10 +Return + +NWD_SetDraggingOff: + NWD_Dragging = 0 +Return + +NWD_SetClickOff: + NWD_PermitClick = 0 + NWD_ImmediateDownRequest = 0 +Return + +NWD_SetAllOff: + Gosub, NWD_SetDraggingOff + Gosub, NWD_SetClickOff +Return + +NWD_IgnoreKeyHandler: + GetKeyState, NWD_RButtonState, RButton, P + GetKeyState, NWD_ShiftState, Shift, P + GetKeyState, NWD_CtrlState, Ctrl, P + GetKeyState, NWD_AltState, Alt, P + ; TODO : unlike the other modifiers, Win does not exist + ; as a virtual key (but Ctrl, Alt and Shift do) + GetKeyState, NWD_LWinState, LWin, P + GetKeyState, NWD_RWinState, RWin, P + If ( (NWD_LWinState = "D") or (NWD_RWinState = "D") ) + NWD_WinState = D + Else + NWD_WinState = U + + If ( (NWD_RButtonState = "U") and (NWD_ShiftState = "U") and (NWD_CtrlState = "U") and (NWD_AltState = "U") and (NWD_WinState = "U") ) + { + SetTimer, NWD_IgnoreKeyHandler, Off + Hotkey, Shift, Off + Hotkey, Ctrl, Off + Hotkey, Alt, Off + Hotkey, LWin, Off + Hotkey, RWin, Off + } +Return + +NWD_WindowHandler: + SetWinDelay, -1 + CoordMode, Mouse, Screen + MouseGetPos, NWD_MouseX, NWD_MouseY + WinGetPos, NWD_WinX, NWD_WinY, NWD_WinW, NWD_WinH, ahk_id %NWD_WinID% + GetKeyState, NWD_RButtonState, RButton, P + GetKeyState, NWD_ShiftState, Shift, P + GetKeyState, NWD_AltState, Alt, P + ; TODO : unlike the other modifiers, Win does not exist + ; as a virtual key (but Ctrl, Alt and Shift do) + GetKeyState, NWD_LWinState, LWin, P + GetKeyState, NWD_RWinState, RWin, P + If ( (NWD_LWinState = "D") or (NWD_RWinState = "D") ) + NWD_WinState = D + Else + NWD_WinState = U + + If ( NWD_RButtonState = "U" ) + { + SetTimer, NWD_WindowHandler, Off + + If ( NWD_ImmediateDown ) + MouseClick, RIGHT, %NWD_MouseX%, %NWD_MouseY%, , , U + Else + If ( NWD_PermitClick and (!NWD_Dragging or ((NWD_MouseStartX = NWD_MouseX) and (NWD_MouseStartY = NWD_MouseY))) ) + { + MouseClick, RIGHT, %NWD_MouseStartX%, %NWD_MouseStartY%, , , D + MouseClick, RIGHT, %NWD_MouseX%, %NWD_MouseY%, , , U + } + + Gosub, NWD_SetAllOff + NWD_ImmediateDown = 0 + } + Else + { + NWD_MouseDeltaX := NWD_MouseX - NWD_MouseStartX + NWD_MouseDeltaY := NWD_MouseY - NWD_MouseStartY + + If ( NWD_MouseDeltaX or NWD_MouseDeltaY ) + { + If ( NWD_ImmediateDownRequest and !NWD_ImmediateDown ) + { + MouseClick, RIGHT, %NWD_MouseStartX%, %NWD_MouseStartY%, , , D + MouseMove, %NWD_MouseX%, %NWD_MouseY% + NWD_ImmediateDown = 1 + NWD_PermitClick = 0 + } + + If ( NWD_Dragging ) + { + If ( !NWD_ResizeX and !NWD_ResizeY ) + { + NWD_WinNewX := NWD_WinStartX + NWD_MouseDeltaX + NWD_WinNewY := NWD_WinStartY + NWD_MouseDeltaY + NWD_WinNewW := NWD_WinStartW + NWD_WinNewH := NWD_WinStartH + } + Else + { + NWD_WinDeltaW = 0 + NWD_WinDeltaH = 0 + If ( NWD_ResizeX ) + NWD_WinDeltaW := NWD_ResizeX * NWD_MouseDeltaX + If ( NWD_ResizeY ) + NWD_WinDeltaH := NWD_ResizeY * NWD_MouseDeltaY + If ( NWD_WinState = "D" ) + { + If ( NWD_ResizeX ) + NWD_WinDeltaW *= 2 + If ( NWD_ResizeY ) + NWD_WinDeltaH *= 2 + } + NWD_WinNewW := NWD_WinStartW + NWD_WinDeltaW + NWD_WinNewH := NWD_WinStartH + NWD_WinDeltaH + If ( NWD_WinNewW < 0 ) + If ( NWD_WinState = "D" ) + NWD_WinNewW *= -1 + Else + NWD_WinNewW := 0 + If ( NWD_WinNewH < 0 ) + If ( NWD_WinState = "D" ) + NWD_WinNewH *= -1 + Else + NWD_WinNewH := 0 + If ( (NWD_AltState = "D") and NWD_WinStartAR ) + { + NWD_WinNewARW := NWD_WinNewH * NWD_WinStartAR + NWD_WinNewARH := NWD_WinNewW / NWD_WinStartAR + If ( NWD_WinNewW < NWD_WinNewARW ) + NWD_WinNewW := NWD_WinNewARW + If ( NWD_WinNewH < NWD_WinNewARH ) + NWD_WinNewH := NWD_WinNewARH + } + NWD_WinDeltaX = 0 + NWD_WinDeltaY = 0 + If ( NWD_WinState = "D" ) + { + NWD_WinDeltaX := NWD_WinStartW / 2 - NWD_WinNewW / 2 + NWD_WinDeltaY := NWD_WinStartH / 2 - NWD_WinNewH / 2 + } + Else + { + If ( NWD_ResizeX = -1 ) + NWD_WinDeltaX := NWD_WinStartW - NWD_WinNewW + If ( NWD_ResizeY = -1 ) + NWD_WinDeltaY := NWD_WinStartH - NWD_WinNewH + } + NWD_WinNewX := NWD_WinStartX + NWD_WinDeltaX + NWD_WinNewY := NWD_WinStartY + NWD_WinDeltaY + } + + If ( NWD_ShiftState = "D" ) + NWD_WinNewRound = -1 + Else + NWD_WinNewRound = 0 + + Transform, NWD_WinNewX, Round, %NWD_WinNewX%, %NWD_WinNewRound% + Transform, NWD_WinNewY, Round, %NWD_WinNewY%, %NWD_WinNewRound% + Transform, NWD_WinNewW, Round, %NWD_WinNewW%, %NWD_WinNewRound% + Transform, NWD_WinNewH, Round, %NWD_WinNewH%, %NWD_WinNewRound% + + If ( (NWD_WinNewX != NWD_WinX) or (NWD_WinNewY != NWD_WinY) or (NWD_WinNewW != NWD_WinW) or (NWD_WinNewH != NWD_WinH) ) + { + WinMove, ahk_id %NWD_WinID%, , %NWD_WinNewX%, %NWD_WinNewY%, %NWD_WinNewW%, %NWD_WinNewH% + + If ( SYS_ToolTipFeedback ) + { + WinGetPos, NWD_ToolTipWinX, NWD_ToolTipWinY, NWD_ToolTipWinW, NWD_ToolTipWinH, ahk_id %NWD_WinID% + SYS_ToolTipText = Window Drag: (X:%NWD_ToolTipWinX%, Y:%NWD_ToolTipWinY%, W:%NWD_ToolTipWinW%, H:%NWD_ToolTipWinH%) + Gosub, SYS_ToolTipFeedbackShow + } + } + } + } + } +Return + + + +; [MIW {NWD}] minimize/roll on right + left mouse button + +/** + * Minimizes the selected window (if minimizable) to the task bar. If you press + * the left button over the titlebar the selected window will be rolled up + * instead of being minimized. You have to apply this action again to roll the + * window back down. + */ + +$LButton:: +$^LButton:: + GetKeyState, MIW_RButtonState, RButton, P + If ( (MIW_RButtonState = "D") and (!NWD_ImmediateDown) and (NWD_WinClass != "Progman") ) + { + GetKeyState, MIW_CtrlState, Ctrl, P + WinGet, MIW_WinStyle, Style, ahk_id %NWD_WinID% + SysGet, MIW_CaptionHeight, 4 ; SM_CYCAPTION + SysGet, MIW_BorderHeight, 7 ; SM_CXDLGFRAME + MouseGetPos, , MIW_MouseY + + If ( MIW_MouseY <= MIW_CaptionHeight + MIW_BorderHeight ) + { + ; checks wheter the window has a sizing border (WS_THICKFRAME) + If ( (MIW_CtrlState = "D") or (MIW_WinStyle & 0x40000) ) + { + Gosub, NWD_SetAllOff + ROL_WinID = %NWD_WinID% + Gosub, ROL_RollToggle + } + } + Else + { + ; the second condition checks for minimizable window: + ; (WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX) + If ( (MIW_CtrlState = "D") or (MIW_WinStyle & 0xCA0000 = 0xCA0000) ) + { + Gosub, NWD_SetAllOff + WinMinimize, ahk_id %NWD_WinID% + SYS_ToolTipText = Window Minimize + Gosub, SYS_ToolTipFeedbackShow + } + } + } + Else + { + ; this feature should be implemented by using a timer because + ; AutoHotkeys threading blocks the first thread if another + ; one is started (until the 2nd is stopped) + + Thread, priority, 1 + MouseClick, LEFT, , , , , D + KeyWait, LButton + MouseClick, LEFT, , , , , U + } +Return + + + +; [CLW {NWD}] close/send bottom on right + middle mouse button || double click on middle mouse button + +/** + * Closes the selected window (if closeable) as if you click the close button + * in the titlebar. If you press the middle button over the titlebar the + * selected window will be sent to the bottom of the window stack instead of + * being closed. + */ + +$MButton:: +$^MButton:: + GetKeyState, CLW_RButtonState, RButton, P + If ( (CLW_RButtonState = "D") and (!NWD_ImmediateDown) and (NWD_WinClass != "Progman") ) + { + GetKeyState, CLW_CtrlState, Ctrl, P + WinGet, CLW_WinStyle, Style, ahk_id %NWD_WinID% + SysGet, CLW_CaptionHeight, 4 ; SM_CYCAPTION + SysGet, CLW_BorderHeight, 7 ; SM_CXDLGFRAME + MouseGetPos, , CLW_MouseY + + If ( CLW_MouseY <= CLW_CaptionHeight + CLW_BorderHeight ) + { + Gosub, NWD_SetAllOff + Send, !{Esc} + SYS_ToolTipText = Window Bottom + Gosub, SYS_ToolTipFeedbackShow + } + Else + { + ; the second condition checks for closeable window: + ; (WS_CAPTION | WS_SYSMENU) + If ( (CLW_CtrlState = "D") or (CLW_WinStyle & 0xC80000 = 0xC80000) ) + { + Gosub, NWD_SetAllOff + WinClose, ahk_id %NWD_WinID% + SYS_ToolTipText = Window Close + Gosub, SYS_ToolTipFeedbackShow + } + } + } + Else + { + ; TODO : workaround for "MouseClick, LEFT, , , 2" due to inactive titlebar problem + + Thread, Priority, 1 + CoordMode, Mouse, Screen + MouseGetPos, CLW_MouseX, CLW_MouseY + MouseClick, LEFT, %CLW_MouseX%, %CLW_MouseY% + Sleep, 10 + MouseGetPos, CLW_MouseNewX, CLW_MouseNewY + MouseClick, LEFT, %CLW_MouseX%, %CLW_MouseY% + MouseMove, %CLW_MouseNewX%, %CLW_MouseNewY% + } +Return + + + +; [TSM {NWD}] toggles windows start menu || moves window to previous display || maximize to multiple windows on the left + +/** + * This additional button is used to toggle the windows start menu. + */ + +$XButton1:: +$^XButton1:: + If ( NWD_ImmediateDown ) + Return + + GetKeyState, TSM_RButtonState, RButton, P + If ( TSM_RButtonState = "U" ) + { + Send, {LWin} + } + Else + IfWinActive, A + { + WinGet, TSM_WinID, ID + If ( !TSM_WinID ) + Return + WinGetClass, TSM_WinClass, ahk_id %TSM_WinID% + + If ( TSM_WinClass != "Progman" ) + { + Gosub, NWD_SetAllOff + GetKeyState, TSM_CtrlState, Ctrl, P + If ( TSM_CtrlState = "U" ) + { + Send, ^< + SYS_ToolTipText = Window Move: LEFT + Gosub, SYS_ToolTipFeedbackShow + } + ; Else + ; TODO : maximize to multiple displays on the left (planned feature) + } + } +Return + + + +; [MAW {NWD}] toggles window maximizing || moves window to next display || maximize to multiple windows on the right + +/** + * This additional button is used to toggle the maximize state of the active + * window (if maximizable). + */ + +$XButton2:: +$^XButton2:: + If ( NWD_ImmediateDown ) + Return + + IfWinActive, A + { + WinGet, MAW_WinID, ID + If ( !MAW_WinID ) + Return + WinGetClass, MAW_WinClass, ahk_id %MAW_WinID% + If ( MAW_WinClass = "Progman" ) + Return + + GetKeyState, MAW_RButtonState, RButton, P + If ( MAW_RButtonState = "U" ) + { + GetKeyState, MAW_CtrlState, Ctrl, P + WinGet, MAW_WinStyle, Style + + ; the second condition checks for maximizable window: + ; (WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX) + If ( (MAW_CtrlState = "D") or (MAW_WinStyle & 0xC90000 = 0xC90000) ) + { + WinGet, MAW_MinMax, MinMax + If ( MAW_MinMax = 0 ) + { + WinMaximize + SYS_ToolTipText = Window Maximize + Gosub, SYS_ToolTipFeedbackShow + } + Else + If ( MAW_MinMax = 1 ) + { + WinRestore + SYS_ToolTipText = Window Restore + Gosub, SYS_ToolTipFeedbackShow + } + } + } + Else + { + Gosub, NWD_SetAllOff + GetKeyState, MAW_CtrlState, Ctrl, P + If ( MAW_CtrlState = "U" ) + { + Send, ^> + SYS_ToolTipText = Window Move: RIGHT + Gosub, SYS_ToolTipFeedbackShow + } + ; Else + ; TODO : maximize to multiple displays on the right (planned feature) + } + } +Return + + + +; [TSW {NWD}] provides alt-tab-menu to the right mouse button + mouse wheel + +/** + * Provides a quick task switcher (alt-tab-menu) controlled by the mouse wheel. + */ + +WheelDown:: + GetKeyState, TSW_RButtonState, RButton, P + If ( (TSW_RButtonState = "D") and (!NWD_ImmediateDown) ) + { + ; TODO : this is a workaround because the original tabmenu + ; code of AutoHotkey is buggy on some systems + GetKeyState, TSW_LAltState, LAlt + If ( TSW_LAltState = "U" ) + { + Gosub, NWD_SetAllOff + Send, {LAlt down}{Tab} + SetTimer, TSW_WheelHandler, 1 + } + Else + Send, {Tab} + } + Else + Send, {WheelDown} +Return + +WheelUp:: + GetKeyState, TSW_RButtonState, RButton, P + If ( (TSW_RButtonState = "D") and (!NWD_ImmediateDown) ) + { + ; TODO : this is a workaround because the original tabmenu + ; code of AutoHotkey is buggy on some systems + GetKeyState, TSW_LAltState, LAlt + If ( TSW_LAltState = "U" ) + { + Gosub, NWD_SetAllOff + Send, {LAlt down}+{Tab} + SetTimer, TSW_WheelHandler, 1 + } + Else + Send, +{Tab} + } + Else + Send, {WheelUp} +Return + +TSW_WheelHandler: + GetKeyState, TSW_RButtonState, RButton, P + If ( TSW_RButtonState = "U" ) + { + SetTimer, TSW_WheelHandler, Off + GetKeyState, TSW_LAltState, LAlt + If ( TSW_LAltState = "D" ) + Send, {LAlt up} + } +Return + + + +; [AOT] toggles always on top + +/** + * Toggles the always-on-top attribute of the selected/active window. + */ + +#SC029:: +#LButton:: +AOT_SetToggle: + Gosub, AOT_CheckWinIDs + SetWinDelay, -1 + + IfInString, A_ThisHotkey, LButton + { + MouseGetPos, , , AOT_WinID + If ( !AOT_WinID ) + Return + IfWinNotActive, ahk_id %AOT_WinID% + WinActivate, ahk_id %AOT_WinID% + } + + IfWinActive, A + { + WinGet, AOT_WinID, ID + If ( !AOT_WinID ) + Return + WinGetClass, AOT_WinClass, ahk_id %AOT_WinID% + If ( AOT_WinClass = "Progman" ) + Return + + WinGet, AOT_ExStyle, ExStyle, ahk_id %AOT_WinID% + If ( AOT_ExStyle & 0x8 ) ; 0x8 is WS_EX_TOPMOST + { + SYS_ToolTipText = Always on Top: OFF + Gosub, AOT_SetOff + } + Else + { + SYS_ToolTipText = Always on Top: ON + Gosub, AOT_SetOn + } + Gosub, SYS_ToolTipFeedbackShow + } +Return + +AOT_SetOn: + Gosub, AOT_CheckWinIDs + SetWinDelay, -1 + IfWinNotExist, ahk_id %AOT_WinID% + Return + IfNotInString, AOT_WinIDs, |%AOT_WinID% + AOT_WinIDs = %AOT_WinIDs%|%AOT_WinID% + WinSet, AlwaysOnTop, On, ahk_id %AOT_WinID% +Return + +AOT_SetOff: + Gosub, AOT_CheckWinIDs + SetWinDelay, -1 + IfWinNotExist, ahk_id %AOT_WinID% + Return + StringReplace, AOT_WinIDs, AOT_WinIDs, |%A_LoopField%, , All + WinSet, AlwaysOnTop, Off, ahk_id %AOT_WinID% +Return + +AOT_SetAllOff: + Gosub, AOT_CheckWinIDs + Loop, Parse, AOT_WinIDs, | + If ( A_LoopField ) + { + AOT_WinID = %A_LoopField% + Gosub, AOT_SetOff + } +Return + +#^SC029:: + Gosub, AOT_SetAllOff + SYS_ToolTipText = Always on Top: ALL OFF + Gosub, SYS_ToolTipFeedbackShow +Return + +AOT_CheckWinIDs: + DetectHiddenWindows, On + Loop, Parse, AOT_WinIDs, | + If ( A_LoopField ) + IfWinNotExist, ahk_id %A_LoopField% + StringReplace, AOT_WinIDs, AOT_WinIDs, |%A_LoopField%, , All +Return + +AOT_ExitHandler: + Gosub, AOT_SetAllOff +Return + + + +; [ROL] rolls up/down a window to/from its title bar + +ROL_RollToggle: + Gosub, ROL_CheckWinIDs + SetWinDelay, -1 + IfWinNotExist, ahk_id %ROL_WinID% + Return + WinGetClass, ROL_WinClass, ahk_id %ROL_WinID% + If ( ROL_WinClass = "Progman" ) + Return + + IfNotInString, ROL_WinIDs, |%ROL_WinID% + { + SYS_ToolTipText = Window Roll: UP + Gosub, ROL_RollUp + } + Else + { + WinGetPos, , , , ROL_WinHeight, ahk_id %ROL_WinID% + If ( ROL_WinHeight = ROL_WinRolledHeight%ROL_WinID% ) + { + SYS_ToolTipText = Window Roll: DOWN + Gosub, ROL_RollDown + } + Else + { + SYS_ToolTipText = Window Roll: UP + Gosub, ROL_RollUp + } + } + Gosub, SYS_ToolTipFeedbackShow +Return + +ROL_RollUp: + Gosub, ROL_CheckWinIDs + SetWinDelay, -1 + IfWinNotExist, ahk_id %ROL_WinID% + Return + WinGetClass, ROL_WinClass, ahk_id %ROL_WinID% + If ( ROL_WinClass = "Progman" ) + Return + + WinGetPos, , , , ROL_WinHeight, ahk_id %ROL_WinID% + IfInString, ROL_WinIDs, |%ROL_WinID% + If ( ROL_WinHeight = ROL_WinRolledHeight%ROL_WinID% ) + Return + SysGet, ROL_CaptionHeight, 4 ; SM_CYCAPTION + SysGet, ROL_BorderHeight, 7 ; SM_CXDLGFRAME + If ( ROL_WinHeight > (ROL_CaptionHeight + ROL_BorderHeight) ) + { + IfNotInString, ROL_WinIDs, |%ROL_WinID% + ROL_WinIDs = %ROL_WinIDs%|%ROL_WinID% + ROL_WinOriginalHeight%ROL_WinID% := ROL_WinHeight + WinMove, ahk_id %ROL_WinID%, , , , , (ROL_CaptionHeight + ROL_BorderHeight) + WinGetPos, , , , ROL_WinRolledHeight%ROL_WinID%, ahk_id %ROL_WinID% + } +Return + +ROL_RollDown: + Gosub, ROL_CheckWinIDs + SetWinDelay, -1 + If ( !ROL_WinID ) + Return + IfNotInString, ROL_WinIDs, |%ROL_WinID% + Return + WinGetPos, , , , ROL_WinHeight, ahk_id %ROL_WinID% + If( ROL_WinHeight = ROL_WinRolledHeight%ROL_WinID% ) + WinMove, ahk_id %ROL_WinID%, , , , , ROL_WinOriginalHeight%ROL_WinID% + StringReplace, ROL_WinIDs, ROL_WinIDs, |%ROL_WinID%, , All + ROL_WinOriginalHeight%ROL_WinID% = + ROL_WinRolledHeight%ROL_WinID% = +Return + +ROL_RollDownAll: + Gosub, ROL_CheckWinIDs + Loop, Parse, ROL_WinIDs, | + If ( A_LoopField ) + { + ROL_WinID = %A_LoopField% + Gosub, ROL_RollDown + } +Return + +#^r:: + Gosub, ROL_RollDownAll + SYS_ToolTipText = Window Roll: ALL DOWN + Gosub, SYS_ToolTipFeedbackShow +Return + +ROL_CheckWinIDs: + DetectHiddenWindows, On + Loop, Parse, ROL_WinIDs, | + If ( A_LoopField ) + IfWinNotExist, ahk_id %A_LoopField% + { + StringReplace, ROL_WinIDs, ROL_WinIDs, |%A_LoopField%, , All + ROL_WinOriginalHeight%A_LoopField% = + ROL_WinRolledHeight%A_LoopField% = + } +Return + +ROL_ExitHandler: + Gosub, ROL_RollDownAll +Return + + + +; [TRA] provides window transparency + +/** + * Adjusts the transparency of the active window in ten percent steps + * (opaque = 100%) which allows the contents of the windows behind it to shine + * through. If the window is completely transparent (0%) the window is still + * there and clickable. If you loose a transparent window it will be extremly + * complicated to find it again because it's invisible (see the first hotkey + * in this list for emergency help in such situations). + */ + +#WheelUp:: +#+WheelUp:: +#WheelDown:: +#+WheelDown:: + Gosub, TRA_CheckWinIDs + SetWinDelay, -1 + IfWinActive, A + { + WinGet, TRA_WinID, ID + If ( !TRA_WinID ) + Return + WinGetClass, TRA_WinClass, ahk_id %TRA_WinID% + If ( TRA_WinClass = "Progman" ) + Return + + IfNotInString, TRA_WinIDs, |%TRA_WinID% + TRA_WinIDs = %TRA_WinIDs%|%TRA_WinID% + TRA_WinAlpha := TRA_WinAlpha%TRA_WinID% + TRA_PixelColor := TRA_PixelColor%TRA_WinID% + + IfInString, A_ThisHotkey, + + TRA_WinAlphaStep := 255 * 0.01 ; 1 percent steps + Else + TRA_WinAlphaStep := 255 * 0.1 ; 10 percent steps + + If ( TRA_WinAlpha = "" ) + TRA_WinAlpha = 255 + + IfInString, A_ThisHotkey, WheelDown + TRA_WinAlpha -= TRA_WinAlphaStep + Else + TRA_WinAlpha += TRA_WinAlphaStep + + If ( TRA_WinAlpha > 255 ) + TRA_WinAlpha = 255 + Else + If ( TRA_WinAlpha < 0 ) + TRA_WinAlpha = 0 + + If ( !TRA_PixelColor and (TRA_WinAlpha = 255) ) + { + Gosub, TRA_TransparencyOff + SYS_ToolTipText = Transparency: OFF + } + Else + { + TRA_WinAlpha%TRA_WinID% = %TRA_WinAlpha% + + If ( TRA_PixelColor ) + WinSet, TransColor, %TRA_PixelColor% %TRA_WinAlpha%, ahk_id %TRA_WinID% + Else + WinSet, Transparent, %TRA_WinAlpha%, ahk_id %TRA_WinID% + + TRA_ToolTipAlpha := TRA_WinAlpha * 100 / 255 + Transform, TRA_ToolTipAlpha, Round, %TRA_ToolTipAlpha% + SYS_ToolTipText = Transparency: %TRA_ToolTipAlpha% `% + } + Gosub, SYS_ToolTipFeedbackShow + } +Return + +#^LButton:: +#^MButton:: + Gosub, TRA_CheckWinIDs + SetWinDelay, -1 + CoordMode, Mouse, Screen + CoordMode, Pixel, Screen + MouseGetPos, TRA_MouseX, TRA_MouseY, TRA_WinID + If ( !TRA_WinID ) + Return + WinGetClass, TRA_WinClass, ahk_id %TRA_WinID% + If ( TRA_WinClass = "Progman" ) + Return + + IfWinNotActive, ahk_id %TRA_WinID% + WinActivate, ahk_id %TRA_WinID% + IfNotInString, TRA_WinIDs, |%TRA_WinID% + TRA_WinIDs = %TRA_WinIDs%|%TRA_WinID% + + IfInString, A_ThisHotkey, MButton + { + AOT_WinID = %TRA_WinID% + Gosub, AOT_SetOn + TRA_WinAlpha%TRA_WinID% := 25 * 255 / 100 + } + + TRA_WinAlpha := TRA_WinAlpha%TRA_WinID% + + ; TODO : the transparency must be set off first, + ; this may be a bug of AutoHotkey + WinSet, TransColor, OFF, ahk_id %TRA_WinID% + PixelGetColor, TRA_PixelColor, %TRA_MouseX%, %TRA_MouseY%, RGB + WinSet, TransColor, %TRA_PixelColor% %TRA_WinAlpha%, ahk_id %TRA_WinID% + TRA_PixelColor%TRA_WinID% := TRA_PixelColor + + IfInString, A_ThisHotkey, MButton + SYS_ToolTipText = Transparency: 25 `% + %TRA_PixelColor% color (RGB) + Always on Top + Else + SYS_ToolTipText = Transparency: %TRA_PixelColor% color (RGB) + Gosub, SYS_ToolTipFeedbackShow +Return + +#MButton:: + Gosub, TRA_CheckWinIDs + SetWinDelay, -1 + MouseGetPos, , , TRA_WinID + If ( !TRA_WinID ) + Return + IfWinNotActive, ahk_id %TRA_WinID% + WinActivate, ahk_id %TRA_WinID% + IfNotInString, TRA_WinIDs, |%TRA_WinID% + Return + Gosub, TRA_TransparencyOff + + SYS_ToolTipText = Transparency: OFF + Gosub, SYS_ToolTipFeedbackShow +Return + +TRA_TransparencyOff: + Gosub, TRA_CheckWinIDs + SetWinDelay, -1 + If ( !TRA_WinID ) + Return + IfNotInString, TRA_WinIDs, |%TRA_WinID% + Return + StringReplace, TRA_WinIDs, TRA_WinIDs, |%TRA_WinID%, , All + TRA_WinAlpha%TRA_WinID% = + TRA_PixelColor%TRA_WinID% = + ; TODO : must be set to 255 first to avoid the black-colored-window problem + WinSet, Transparent, 255, ahk_id %TRA_WinID% + WinSet, TransColor, OFF, ahk_id %TRA_WinID% + WinSet, Transparent, OFF, ahk_id %TRA_WinID% + WinSet, Redraw, , ahk_id %TRA_WinID% +Return + +TRA_TransparencyAllOff: + Gosub, TRA_CheckWinIDs + Loop, Parse, TRA_WinIDs, | + If ( A_LoopField ) + { + TRA_WinID = %A_LoopField% + Gosub, TRA_TransparencyOff + } +Return + +#^t:: + Gosub, TRA_TransparencyAllOff + SYS_ToolTipText = Transparency: ALL OFF + Gosub, SYS_ToolTipFeedbackShow +Return + +TRA_CheckWinIDs: + DetectHiddenWindows, On + Loop, Parse, TRA_WinIDs, | + If ( A_LoopField ) + IfWinNotExist, ahk_id %A_LoopField% + { + StringReplace, TRA_WinIDs, TRA_WinIDs, |%A_LoopField%, , All + TRA_WinAlpha%A_LoopField% = + TRA_PixelColor%A_LoopField% = + } +Return + +TRA_ExitHandler: + Gosub, TRA_TransparencyAllOff +Return + + + +; [EJC] opens/closes a drive + +/** + * Opens or closes an installed CD/DVD-ROM reader/writer drive tray. The drives + * are assigned to their hotkeys by the certain drive number in your system. The + * hotkeys are used in the sequence of the key placement on your physical + * keyboard from left to right (1 refers to the first and 0 to the tenth drive). + * So you are limited to a total number of 10 drives controlled by NiftyWindows. + */ + +#MaxThreadsBuffer On +$#0:: +$#1:: +$#2:: +$#3:: +$#4:: +$#5:: +$#6:: +$#7:: +$#8:: +$#9:: + DriveGet, EJC_DriveList, List, CDROM + StringLen, EJC_DriveListLength, EJC_DriveList + StringRight, EJC_PressedDrive, A_ThisHotkey, 1 + + If ( !EJC_PressedDrive ) + EJC_PressedDrive := 10 + + If ( EJC_PressedDrive <= EJC_DriveListLength ) + { + StringMid, EJC_DriveLabel, EJC_DriveList, EJC_PressedDrive, 1 + SYS_ToolTipText = Drive Eject: %EJC_DriveLabel% + Gosub, SYS_ToolTipFeedbackShow + Gosub, SUS_SuspendSaveState + Suspend, On + Drive, Eject, %EJC_DriveLabel%: + If ( A_TimeSinceThisHotkey < 250 ) + Drive, Eject, %EJC_DriveLabel%:, 1 + Gosub, SUS_SuspendRestoreState + } + Else + { + Transform, EJC_PressedDrive, Mod, %EJC_PressedDrive%, 10 + Send, #%EJC_PressedDrive% + } +Return +#MaxThreadsBuffer Off + + + +; [MUT] toggles the audio mute + +/** + * Toggles the muteness of an installed audio card. + */ + +Pause:: + SoundSet, +1, , Mute + SoundGet, MUT_MuteState, , MUTE + SYS_ToolTipText = Audio Mute: %MUT_MuteState% + Gosub, SYS_ToolTipFeedbackShow +Return + + + +; [SCR] starts the user defined screensaver + +/** + * Starts the user defined screensaver (password protection aware). + */ + +#s up:: +^#s up:: + RegRead, SCR_Saver, HKEY_CURRENT_USER, Control Panel\Desktop, SCRNSAVE.EXE + If ( !ErrorLevel and SCR_Saver ) + { + SendMessage, 0x112, 0xF140, 0, , Program Manager ; 0x112 is WM_SYSCOMMAND ; 0xF140 is SC_SCREENSAVE + + If ( A_ThisHotkey != "^#s up" ) + Return + + SplitPath, SCR_Saver, SCR_SaverFileName + Process, Wait, %SCR_SaverFileName%, 5 + If ( ErrorLevel ) + { + Gosub, SUS_SuspendSaveState + Suspend, On + Sleep, 5000 + Gosub, SUS_SuspendRestoreState + Process, Exist, %SCR_SaverFileName% + If ( ErrorLevel ) + SendMessage, 0x112, 0xF170, 2, , Program Manager ; 0x112 is WM_SYSCOMMAND ; 0xF170 is SC_MONITORPOWER ; (2 = off, 1 = standby, -1 = on) + } + } + Else + { + SYS_TrayTipText = No screensaver specified in display settings (control panel). + SYS_TrayTipOptions = 2 + Gosub, SYS_TrayTipShow + } +Return + + + +; [SIZ {NWD}] provides several size adjustments to windows + +/** + * Adjusts the transparency of the active window in ten percent steps + * (opaque = 100%) which allows the contents of the windows behind it to shine + * through. If the window is completely transparent (0%) the window is still + * there and clickable. If you loose a transparent window it will be extremly + * complicated to find it again because it's invisible (see the first hotkey in + * this list for emergency help in such situations). + */ + +!WheelUp:: +!+WheelUp:: +!^WheelUp:: +!#WheelUp:: +!+^WheelUp:: +!+#WheelUp:: +!^#WheelUp:: +!+^#WheelUp:: +!WheelDown:: +!+WheelDown:: +!^WheelDown:: +!#WheelDown:: +!+^WheelDown:: +!+#WheelDown:: +!^#WheelDown:: +!+^#WheelDown:: + ; TODO : the following code block is a workaround to handle + ; virtual ALT calls in WheelDown/Up functions + GetKeyState, SIZ_AltState, Alt, P + If ( SIZ_AltState = "U" ) + { + IfInString, A_ThisHotkey, WheelDown + Gosub, WheelDown + Else + Gosub, WheelUp + Return + } + + If ( NWD_Dragging or NWD_ImmediateDown ) + Return + + SetWinDelay, -1 + CoordMode, Mouse, Screen + IfWinActive, A + { + WinGet, SIZ_WinID, ID + If ( !SIZ_WinID ) + Return + WinGetClass, SIZ_WinClass, ahk_id %SIZ_WinID% + If ( SIZ_WinClass = "Progman" ) + Return + + GetKeyState, SIZ_CtrlState, Ctrl, P + WinGet, SIZ_WinMinMax, MinMax, ahk_id %SIZ_WinID% + WinGet, SIZ_WinStyle, Style, ahk_id %SIZ_WinID% + + ; checks wheter the window isn't maximized and has a sizing border (WS_THICKFRAME) + If ( (SIZ_CtrlState = "D") or ((SIZ_WinMinMax != 1) and (SIZ_WinStyle & 0x40000)) ) + { + WinGetPos, SIZ_WinX, SIZ_WinY, SIZ_WinW, SIZ_WinH, ahk_id %SIZ_WinID% + + If ( SIZ_WinW and SIZ_WinH ) + { + SIZ_AspectRatio := SIZ_WinW / SIZ_WinH + + IfInString, A_ThisHotkey, WheelDown + SIZ_Direction = 1 + Else + SIZ_Direction = -1 + + IfInString, A_ThisHotkey, + + SIZ_Factor = 0.01 + Else + SIZ_Factor = 0.1 + + SIZ_WinNewW := SIZ_WinW + SIZ_Direction * SIZ_WinW * SIZ_Factor + SIZ_WinNewH := SIZ_WinH + SIZ_Direction * SIZ_WinH * SIZ_Factor + + IfInString, A_ThisHotkey, # + { + SIZ_WinNewX := SIZ_WinX + (SIZ_WinW - SIZ_WinNewW) / 2 + SIZ_WinNewY := SIZ_WinY + (SIZ_WinH - SIZ_WinNewH) / 2 + } + Else + { + SIZ_WinNewX := SIZ_WinX + SIZ_WinNewY := SIZ_WinY + } + + If ( SIZ_WinNewW > A_ScreenWidth ) + { + SIZ_WinNewW := A_ScreenWidth + SIZ_WinNewH := SIZ_WinNewW / SIZ_AspectRatio + } + If ( SIZ_WinNewH > A_ScreenHeight ) + { + SIZ_WinNewH := A_ScreenHeight + SIZ_WinNewW := SIZ_WinNewH * SIZ_AspectRatio + } + + Transform, SIZ_WinNewX, Round, %SIZ_WinNewX% + Transform, SIZ_WinNewY, Round, %SIZ_WinNewY% + Transform, SIZ_WinNewW, Round, %SIZ_WinNewW% + Transform, SIZ_WinNewH, Round, %SIZ_WinNewH% + + WinMove, ahk_id %SIZ_WinID%, , SIZ_WinNewX, SIZ_WinNewY, SIZ_WinNewW, SIZ_WinNewH + + If ( SYS_ToolTipFeedback ) + { + WinGetPos, SIZ_ToolTipWinX, SIZ_ToolTipWinY, SIZ_ToolTipWinW, SIZ_ToolTipWinH, ahk_id %SIZ_WinID% + SYS_ToolTipText = Window Size: (X:%SIZ_ToolTipWinX%, Y:%SIZ_ToolTipWinY%, W:%SIZ_ToolTipWinW%, H:%SIZ_ToolTipWinH%) + Gosub, SYS_ToolTipFeedbackShow + } + } + } + } +Return + +!NumpadAdd:: +!^NumpadAdd:: +!#NumpadAdd:: +!^#NumpadAdd:: +!NumpadSub:: +!^NumpadSub:: +!#NumpadSub:: +!^#NumpadSub:: + If ( NWD_Dragging or NWD_ImmediateDown ) + Return + + SetWinDelay, -1 + CoordMode, Mouse, Screen + IfWinActive, A + { + WinGet, SIZ_WinID, ID + If ( !SIZ_WinID ) + Return + WinGetClass, SIZ_WinClass, ahk_id %SIZ_WinID% + If ( SIZ_WinClass = "Progman" ) + Return + + GetKeyState, SIZ_CtrlState, Ctrl, P + WinGet, SIZ_WinMinMax, MinMax, ahk_id %SIZ_WinID% + WinGet, SIZ_WinStyle, Style, ahk_id %SIZ_WinID% + + ; checks wheter the window isn't maximized and has a sizing border (WS_THICKFRAME) + If ( (SIZ_CtrlState = "D") or ((SIZ_WinMinMax != 1) and (SIZ_WinStyle & 0x40000)) ) + { + WinGetPos, SIZ_WinX, SIZ_WinY, SIZ_WinW, SIZ_WinH, ahk_id %SIZ_WinID% + + IfInString, A_ThisHotkey, NumpadAdd + If ( SIZ_WinW < 160 ) + SIZ_WinNewW = 160 + Else + If ( SIZ_WinW < 320 ) + SIZ_WinNewW = 320 + Else + If ( SIZ_WinW < 640 ) + SIZ_WinNewW = 640 + Else + If ( SIZ_WinW < 800 ) + SIZ_WinNewW = 800 + Else + If ( SIZ_WinW < 1024 ) + SIZ_WinNewW = 1024 + Else + If ( SIZ_WinW < 1152 ) + SIZ_WinNewW = 1152 + Else + If ( SIZ_WinW < 1280 ) + SIZ_WinNewW = 1280 + Else + If ( SIZ_WinW < 1400 ) + SIZ_WinNewW = 1400 + Else + If ( SIZ_WinW < 1600 ) + SIZ_WinNewW = 1600 + Else + SIZ_WinNewW = 1920 + Else + If ( SIZ_WinW <= 320 ) + SIZ_WinNewW = 160 + Else + If ( SIZ_WinW <= 640 ) + SIZ_WinNewW = 320 + Else + If ( SIZ_WinW <= 800 ) + SIZ_WinNewW = 640 + Else + If ( SIZ_WinW <= 1024 ) + SIZ_WinNewW = 800 + Else + If ( SIZ_WinW <= 1152 ) + SIZ_WinNewW = 1024 + Else + If ( SIZ_WinW <= 1280 ) + SIZ_WinNewW = 1152 + Else + If ( SIZ_WinW <= 1400 ) + SIZ_WinNewW = 1280 + Else + If ( SIZ_WinW <= 1600 ) + SIZ_WinNewW = 1400 + Else + If ( SIZ_WinW <= 1920 ) + SIZ_WinNewW = 1600 + Else + SIZ_WinNewW = 1920 + + If ( SIZ_WinNewW > A_ScreenWidth ) + SIZ_WinNewW := A_ScreenWidth + SIZ_WinNewH := 3 * SIZ_WinNewW / 4 + If ( SIZ_WinNewW = 1280 ) + SIZ_WinNewH := 1024 + + IfInString, A_ThisHotkey, # + { + SIZ_WinNewX := SIZ_WinX + (SIZ_WinW - SIZ_WinNewW) / 2 + SIZ_WinNewY := SIZ_WinY + (SIZ_WinH - SIZ_WinNewH) / 2 + } + Else + { + SIZ_WinNewX := SIZ_WinX + SIZ_WinNewY := SIZ_WinY + } + + Transform, SIZ_WinNewX, Round, %SIZ_WinNewX% + Transform, SIZ_WinNewY, Round, %SIZ_WinNewY% + Transform, SIZ_WinNewW, Round, %SIZ_WinNewW% + Transform, SIZ_WinNewH, Round, %SIZ_WinNewH% + + WinMove, ahk_id %SIZ_WinID%, , SIZ_WinNewX, SIZ_WinNewY, SIZ_WinNewW, SIZ_WinNewH + + If ( SYS_ToolTipFeedback ) + { + WinGetPos, SIZ_ToolTipWinX, SIZ_ToolTipWinY, SIZ_ToolTipWinW, SIZ_ToolTipWinH, ahk_id %SIZ_WinID% + SYS_ToolTipText = Window Size: (X:%SIZ_ToolTipWinX%, Y:%SIZ_ToolTipWinY%, W:%SIZ_ToolTipWinW%, H:%SIZ_ToolTipWinH%) + Gosub, SYS_ToolTipFeedbackShow + } + } + } +Return + + + +; [XWN] provides X Window like focus switching (focus follows mouse) + +/** + * Provided a 'X Window' like focus switching by mouse cursor movement. After + * activation of this feature (by using the responsible entry in the tray icon + * menu) the focus will follow the mouse cursor with a delayed focus change + * (after movement end) of 500 milliseconds (half a second). This feature is + * disabled per default to avoid any confusion due to the new user-interface-flow. + */ + +XWN_FocusHandler: + CoordMode, Mouse, Screen + MouseGetPos, XWN_MouseX, XWN_MouseY, XWN_WinID + If ( !XWN_WinID ) + Return + + If ( (XWN_MouseX != XWN_MouseOldX) or (XWN_MouseY != XWN_MouseOldY) ) + { + IfWinNotActive, ahk_id %XWN_WinID% + XWN_FocusRequest = 1 + Else + XWN_FocusRequest = 0 + + XWN_MouseOldX := XWN_MouseX + XWN_MouseOldY := XWN_MouseY + XWN_MouseMovedTickCount := A_TickCount + } + Else + If ( XWN_FocusRequest and (A_TickCount - XWN_MouseMovedTickCount > 500) ) + { + WinGetClass, XWN_WinClass, ahk_id %XWN_WinID% + If ( XWN_WinClass = "Progman" ) + Return + + ; checks wheter the selected window is a popup menu + ; (WS_POPUP) and !(WS_DLGFRAME | WS_SYSMENU | WS_THICKFRAME) + WinGet, XWN_WinStyle, Style, ahk_id %XWN_WinID% + If ( (XWN_WinStyle & 0x80000000) and !(XWN_WinStyle & 0x4C0000) ) + Return + + IfWinNotActive, ahk_id %XWN_WinID% + WinActivate, ahk_id %XWN_WinID% + + XWN_FocusRequest = 0 + } +Return + + + +; [GRP] groups windows for quick task switching + +/** + * Activates the next window in a process window group that was defined + * gradually before with the given CTRL modifier. This feature causes the first + * window of the responsible group to be activated. Using it a second time will + * activate the next window in the series and so on. By using process window + * groups you can organize and access your process windows in semantic groups + * quickly. + */ + +^#F1:: +^#F2:: +^#F3:: +^#F4:: +^#F5:: +^#F6:: +^#F7:: +^#F8:: +^#F9:: +^#F10:: +^#F11:: +^#F12:: +^#F13:: +^#F14:: +^#F15:: +^#F16:: +^#F17:: +^#F18:: +^#F19:: +^#F20:: +^#F21:: +^#F22:: +^#F23:: +^#F24:: + IfWinActive, A + { + WinGet, GRP_WinID, ID + If ( !GRP_WinID ) + Return + WinGetClass, GRP_WinClass, ahk_id %GRP_WinID% + If ( GRP_WinClass = "Progman" ) + Return + WinGet, GRP_WinPID, PID + If ( !GRP_WinPID ) + Return + + StringMid, GRP_GroupNumber, A_ThisHotkey, 3, 3 + GroupAdd, Group%GRP_GroupNumber%, ahk_PID %GRP_WinPID% + + SYS_ToolTipText = Active window was added to group %GRP_GroupNumber%. + Gosub, SYS_ToolTipFeedbackShow + } +Return + +#F1:: +#F2:: +#F3:: +#F4:: +#F5:: +#F6:: +#F7:: +#F8:: +#F9:: +#F10:: +#F11:: +#F12:: +#F13:: +#F14:: +#F15:: +#F16:: +#F17:: +#F18:: +#F19:: +#F20:: +#F21:: +#F22:: +#F23:: +#F24:: + StringMid, GRP_GroupNumber, A_ThisHotkey, 2, 3 + GroupActivate, Group%GRP_GroupNumber% + + SYS_ToolTipText = Activated next window in group %GRP_GroupNumber%. + Gosub, SYS_ToolTipFeedbackShow +Return + +!#F1:: +!#F2:: +!#F3:: +!#F4:: +!#F5:: +!#F6:: +!#F7:: +!#F8:: +!#F9:: +!#F10:: +!#F11:: +!#F12:: +!#F13:: +!#F14:: +!#F15:: +!#F16:: +!#F17:: +!#F18:: +!#F19:: +!#F20:: +!#F21:: +!#F22:: +!#F23:: +!#F24:: + StringMid, GRP_GroupNumber, A_ThisHotkey, 3, 3 + GroupClose, Group%GRP_GroupNumber%, A + + SYS_ToolTipText = Closed all windows in group %GRP_GroupNumber%. + Gosub, SYS_ToolTipFeedbackShow +Return + + + +; [MIR] toggles the visibility of miranda buddy list + +/** + * Toggles the visibility of the Miranda buddy list (if installed). Currently + * Miranda does not provide a hotkey to activate the buddy list if the window + * is still visible. Instead the opened (but not activated) buddy list will be + * minimized. This is not expected so this NiftyWindows feature provides the + * needed service asked by so many people. + */ + +^+b:: + IfExist, %MIR_MirandaFullPath% + { + SetTitleMatchMode, 3 + DetectHiddenWindows, On + MIR_MirandaStart = 0 + IfWinNotExist, Miranda IM + { + Run, %MIR_MirandaFullPath%, %MIR_MirandaDir% + WinWait, Miranda IM + MIR_MirandaStart=1 + Sleep, 500 + } + DetectHiddenWindows, Off + IfWinActive, Miranda IM + { + If ( !MIR_MirandaStart ) + WinHide + } + Else + IfWinExist, Miranda IM + WinActivate + Else + { + DetectHiddenWindows, On + IfWinExist, Miranda IM + { + WinShow + WinActivate + } + } + } + Else + Send, ^+b +Return + + + +; [MIR] toggles the visibility of last used miranda message container + +/** + * Toggles the visibility of the last used Miranda message container + * (if installed). Currently Miranda does not provide a hotkey to activate the + * last used message container if there is no unread message waiting for your + * attention. So this hotkey will make a container visible (if it is minimized) + * and activate it. If there is no existing message container, this hotkey will + * do nothing. + */ + +~^+u:: + IfExist, %MIR_MirandaFullPath% + { + Sleep, 500 + SetTitleMatchMode, 3 + IfWinExist, ahk_class #32770 + { + WinGetTitle, MIR_Title + IfNotInString MIR_Title, Mail + IfWinNotActive + WinActivate + } + } + Else + Send, ^+u +Return + + + +; [TRY] handles the tray icon/menu + +TRY_TrayInit: + Menu, TRAY, NoStandard + Menu, TRAY, Tip, %SYS_ScriptInfo% + + If ( !A_IsCompiled ) + { + Menu, AutoHotkey, Standard + Menu, TRAY, Add, AutoHotkey, :AutoHotkey + Menu, TRAY, Add + } + + Menu, TRAY, Add, Help, TRY_TrayEvent + Menu, TRAY, Default, Help + Menu, TRAY, Add + Menu, TRAY, Add, About, TRY_TrayEvent + Menu, TRAY, Add + Menu, TRAY, Add, Mail Author, TRY_TrayEvent + Menu, TRAY, Add, View License, TRY_TrayEvent + Menu, TRAY, Add, Visit Website, TRY_TrayEvent + Menu, TRAY, Add, Check For Update, TRY_TrayEvent + Menu, TRAY, Add + + Menu, MouseHooks, Add, Left Mouse Button, TRY_TrayEvent + Menu, MouseHooks, Add, Middle Mouse Button, TRY_TrayEvent + Menu, MouseHooks, Add, Right Mouse Button, TRY_TrayEvent + Menu, MouseHooks, Add, Fourth Mouse Button, TRY_TrayEvent + Menu, MouseHooks, Add, Fifth Mouse Button, TRY_TrayEvent + Menu, TRAY, Add, Mouse Hooks, :MouseHooks + + Menu, TRAY, Add, ToolTip Feedback, TRY_TrayEvent + Menu, TRAY, Add, Auto Suspend, TRY_TrayEvent + Menu, TRAY, Add, Focus Follows Mouse, TRY_TrayEvent + Menu, TRAY, Add, Suspend All Hooks, TRY_TrayEvent + Menu, TRAY, Add, Revert Visual Effects, TRY_TrayEvent + Menu, TRAY, Add, Hide Tray Icon, TRY_TrayEvent + Menu, TRAY, Add + Menu, TRAY, Add, Exit, TRY_TrayEvent + + Gosub, TRY_TrayUpdate + + If ( A_IconHidden ) + Menu, TRAY, Icon +Return + +TRY_TrayUpdate: + If ( CFG_LeftMouseButtonHook ) + Menu, MouseHooks, Check, Left Mouse Button + Else + Menu, MouseHooks, UnCheck, Left Mouse Button + If ( CFG_MiddleMouseButtonHook ) + Menu, MouseHooks, Check, Middle Mouse Button + Else + Menu, MouseHooks, UnCheck, Middle Mouse Button + If ( CFG_RightMouseButtonHook ) + Menu, MouseHooks, Check, Right Mouse Button + Else + Menu, MouseHooks, UnCheck, Right Mouse Button + If ( CFG_FourthMouseButtonHook ) + Menu, MouseHooks, Check, Fourth Mouse Button + Else + Menu, MouseHooks, UnCheck, Fourth Mouse Button + If ( CFG_FifthMouseButtonHook ) + Menu, MouseHooks, Check, Fifth Mouse Button + Else + Menu, MouseHooks, UnCheck, Fifth Mouse Button + If ( SYS_ToolTipFeedback ) + Menu, TRAY, Check, ToolTip Feedback + Else + Menu, TRAY, UnCheck, ToolTip Feedback + If ( SUS_AutoSuspend ) + Menu, TRAY, Check, Auto Suspend + Else + Menu, TRAY, UnCheck, Auto Suspend + If ( XWN_FocusFollowsMouse ) + Menu, TRAY, Check, Focus Follows Mouse + Else + Menu, TRAY, UnCheck, Focus Follows Mouse + If ( A_IsSuspended ) + Menu, TRAY, Check, Suspend All Hooks + Else + Menu, TRAY, UnCheck, Suspend All Hooks +Return + +TRY_TrayEvent: + If ( !TRY_TrayEvent ) + TRY_TrayEvent = %A_ThisMenuItem% + + If ( TRY_TrayEvent = "Help" ) + IfExist, %A_ScriptDir%\readme.txt + Run, "%A_ScriptDir%\readme.txt" + Else + { + SYS_TrayTipText = File couldn't be accessed:`n%A_ScriptDir%\readme.txt + SYS_TrayTipOptions = 3 + Gosub, SYS_TrayTipShow + } + + If ( TRY_TrayEvent = "About" ) + { + SYS_TrayTipText = Copyright (c) 2004-2005 by Enovatic-Solutions.`nAll rights reserved. Use is subject to license terms.`n`nCompany:`tEnovatic-Solutions (IT Service Provider)`nAuthor:`t`tOliver Pfeiffer`, Bremen (GERMANY)`nEmail:`t`tniftywindows@enovatic.org + Gosub, SYS_TrayTipShow + } + + If ( TRY_TrayEvent = "Mail Author" ) + Run, mailto:niftywindows@enovatic.org?subject=%SYS_ScriptInfo% (build %SYS_ScriptBuild%) + + If ( TRY_TrayEvent = "View License" ) + IfExist, %A_ScriptDir%\license.txt + Run, "%A_ScriptDir%\license.txt" + Else + { + SYS_TrayTipText = File couldn't be accessed:`n%A_ScriptDir%\license.txt + SYS_TrayTipOptions = 3 + Gosub, SYS_TrayTipShow + } + + If ( TRY_TrayEvent = "Visit Website" ) + Run, http://www.enovatic.org/products/niftywindows/ + + If ( TRY_TrayEvent = "Check For Update" ) + Gosub, UPD_CheckForUpdate + + If ( TRY_TrayEvent = "ToolTip Feedback" ) + SYS_ToolTipFeedback := !SYS_ToolTipFeedback + + If ( TRY_TrayEvent = "Auto Suspend" ) + { + SUS_AutoSuspend := !SUS_AutoSuspend + Gosub, CFG_ApplySettings + } + + If ( TRY_TrayEvent = "Focus Follows Mouse" ) + { + XWN_FocusFollowsMouse := !XWN_FocusFollowsMouse + Gosub, CFG_ApplySettings + } + + If ( TRY_TrayEvent = "Suspend All Hooks" ) + Gosub, SUS_SuspendToggle + + If ( TRY_TrayEvent = "Revert Visual Effects" ) + Gosub, SYS_RevertVisualEffects + + If ( TRY_TrayEvent = "Hide Tray Icon" ) + { + SYS_TrayTipText = Tray icon will be hidden now.`nPress WIN+X to show it again. + SYS_TrayTipOptions = 2 + SYS_TrayTipSeconds = 5 + Gosub, SYS_TrayTipShow + SetTimer, TRY_TrayHide, 5000 + } + + If ( TRY_TrayEvent = "Exit" ) + ExitApp + + If ( TRY_TrayEvent = "Left Mouse Button" ) + { + CFG_LeftMouseButtonHook := !CFG_LeftMouseButtonHook + Gosub, CFG_ApplySettings + } + + If ( TRY_TrayEvent = "Middle Mouse Button" ) + { + CFG_MiddleMouseButtonHook := !CFG_MiddleMouseButtonHook + Gosub, CFG_ApplySettings + } + + If ( TRY_TrayEvent = "Right Mouse Button" ) + { + CFG_RightMouseButtonHook := !CFG_RightMouseButtonHook + Gosub, CFG_ApplySettings + } + + If ( TRY_TrayEvent = "Fourth Mouse Button" ) + { + CFG_FourthMouseButtonHook := !CFG_FourthMouseButtonHook + Gosub, CFG_ApplySettings + } + + If ( TRY_TrayEvent = "Fifth Mouse Button" ) + { + CFG_FifthMouseButtonHook := !CFG_FifthMouseButtonHook + Gosub, CFG_ApplySettings + } + + Gosub, TRY_TrayUpdate + TRY_TrayEvent = +Return + +TRY_TrayHide: + SetTimer, TRY_TrayHide, Off + Menu, TRAY, NoIcon +Return + + + +; [EDT] edits this script in notepad + +^#!F9:: + If ( A_IsCompiled ) + Return + + Gosub, SUS_SuspendSaveState + Suspend, On + MsgBox, 4129, Edit Handler - %SYS_ScriptInfo%, You pressed the hotkey for editing this script:`n`n%A_ScriptFullPath%`n`nDo you really want to edit? + Gosub, SUS_SuspendRestoreState + IfMsgBox, OK + Run, notepad.exe %A_ScriptFullPath% +Return + + + +; [REL] reloads this script on change + +REL_ScriptReload: + If ( A_IsCompiled ) + Return + + FileGetAttrib, REL_Attribs, %A_ScriptFullPath% + IfInString, REL_Attribs, A + { + FileSetAttrib, -A, %A_ScriptFullPath% + If ( REL_InitDone ) + { + Gosub, SUS_SuspendSaveState + Suspend, On + MsgBox, 4145, Update Handler - %SYS_ScriptInfo%, The following script has changed:`n`n%A_ScriptFullPath%`n`nReload and activate this script? + Gosub, SUS_SuspendRestoreState + IfMsgBox, OK + Reload + } + } + REL_InitDone = 1 +Return + + + +; [EXT] exits this script + +#x:: + If ( A_IconHidden ) + { + Menu, TRAY, Icon + SYS_TrayTipText = Tray icon is shown now.`nPress WIN+X again to exit NiftyWindows. + SYS_TrayTipSeconds = 5 + Gosub, SYS_TrayTipShow + Return + } + + If ( A_IsCompiled ) + { + SYS_TrayTipText = NiftyWindows will exit now.`nYou can find it here (to start it again):`n%A_ScriptFullPath% + SYS_TrayTipOptions = 2 + SYS_TrayTipSeconds = 5 + Gosub, SYS_TrayTipShow + Suspend, On + Sleep, 5000 + ExitApp + } + + Gosub, SUS_SuspendSaveState + Suspend, On + MsgBox, 4145, Exit Handler - %SYS_ScriptInfo%, You pressed the hotkey for exiting this script:`n`n%A_ScriptFullPath%`n`nDo you really want to exit? + Gosub, SUS_SuspendRestoreState + IfMsgBox, OK + ExitApp +Return + + + +; [CFG] handles the persistent configuration + +CFG_LoadSettings: + CFG_IniFile = %A_ScriptDir%\%SYS_ScriptNameNoExt%.ini + IniRead, SUS_AutoSuspend, %CFG_IniFile%, Main, AutoSuspend, 1 + IniRead, XWN_FocusFollowsMouse, %CFG_IniFile%, WindowHandling, FocusFollowsMouse, 0 + IniRead, SYS_ToolTipFeedback, %CFG_IniFile%, Visual, ToolTipFeedback, 1 + IniRead, UPD_LastUpdateCheck, %CFG_IniFile%, UpdateCheck, LastUpdateCheck, %A_MM% + IniRead, CFG_LeftMouseButtonHook, %CFG_IniFile%, MouseHooks, LeftMouseButton, 1 + IniRead, CFG_MiddleMouseButtonHook, %CFG_IniFile%, MouseHooks, MiddleMouseButton, 1 + IniRead, CFG_RightMouseButtonHook, %CFG_IniFile%, MouseHooks, RightMouseButton, 1 + IniRead, CFG_FourthMouseButtonHook, %CFG_IniFile%, MouseHooks, FourthMouseButton, 1 + IniRead, CFG_FifthMouseButtonHook, %CFG_IniFile%, MouseHooks, FifthMouseButton, 1 +Return + +CFG_SaveSettings: + CFG_IniFile = %A_ScriptDir%\%SYS_ScriptNameNoExt%.ini + IniWrite, %SUS_AutoSuspend%, %CFG_IniFile%, Main, AutoSuspend + IniWrite, %XWN_FocusFollowsMouse%, %CFG_IniFile%, WindowHandling, FocusFollowsMouse + IniWrite, %SYS_ToolTipFeedback%, %CFG_IniFile%, Visual, ToolTipFeedback + IniWrite, %UPD_LastUpdateCheck%, %CFG_IniFile%, UpdateCheck, LastUpdateCheck + IniWrite, %CFG_LeftMouseButtonHook%, %CFG_IniFile%, MouseHooks, LeftMouseButton + IniWrite, %CFG_MiddleMouseButtonHook%, %CFG_IniFile%, MouseHooks, MiddleMouseButton + IniWrite, %CFG_RightMouseButtonHook%, %CFG_IniFile%, MouseHooks, RightMouseButton + IniWrite, %CFG_FourthMouseButtonHook%, %CFG_IniFile%, MouseHooks, FourthMouseButton + IniWrite, %CFG_FifthMouseButtonHook%, %CFG_IniFile%, MouseHooks, FifthMouseButton +Return + +CFG_ApplySettings: + If ( SUS_AutoSuspend ) + SetTimer, SUS_SuspendHandler, 1000 + Else + SetTimer, SUS_SuspendHandler, Off + + If ( XWN_FocusFollowsMouse ) + SetTimer, XWN_FocusHandler, 100 + Else + SetTimer, XWN_FocusHandler, Off + + If ( CFG_LeftMouseButtonHook ) + CFG_LeftMouseButtonHookStr = On + Else + CFG_LeftMouseButtonHookStr = Off + + If ( CFG_MiddleMouseButtonHook ) + CFG_MiddleMouseButtonHookStr = On + Else + CFG_MiddleMouseButtonHookStr = Off + + If ( CFG_RightMouseButtonHook ) + CFG_RightMouseButtonHookStr = On + Else + CFG_RightMouseButtonHookStr = Off + + If ( CFG_FourthMouseButtonHook ) + CFG_FourthMouseButtonHookStr = On + Else + CFG_FourthMouseButtonHookStr = Off + + If ( CFG_FifthMouseButtonHook ) + CFG_FifthMouseButtonHookStr = On + Else + CFG_FifthMouseButtonHookStr = Off + + Hotkey, $LButton, %CFG_LeftMouseButtonHookStr% + Hotkey, $^LButton, %CFG_LeftMouseButtonHookStr% + Hotkey, #LButton, %CFG_LeftMouseButtonHookStr% + Hotkey, #^LButton, %CFG_LeftMouseButtonHookStr% + + Hotkey, #MButton, %CFG_MiddleMouseButtonHookStr% + Hotkey, #^MButton, %CFG_MiddleMouseButtonHookStr% + Hotkey, $MButton, %CFG_MiddleMouseButtonHookStr% + Hotkey, $^MButton, %CFG_MiddleMouseButtonHookStr% + + Hotkey, $RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+!RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+^RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+!^RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+!#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+^#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $+!^#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $!RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $!^RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $!#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $!^#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $^RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $^#RButton, %CFG_RightMouseButtonHookStr% + Hotkey, $#RButton, %CFG_RightMouseButtonHookStr% + + Hotkey, $XButton1, %CFG_FourthMouseButtonHookStr% + Hotkey, $^XButton1, %CFG_FourthMouseButtonHookStr% + + Hotkey, $XButton2, %CFG_FifthMouseButtonHookStr% + Hotkey, $^XButton2, %CFG_FifthMouseButtonHookStr% +Return + + + +; [UPD] checks for a new build + +UPD_CheckForUpdate: + UPD_CheckSuccess = + Random, UPD_Random + If ( TEMP ) + UPD_BuildFile = %TEMP%\%SYS_ScriptNameNoExt%.%UPD_Random%.tmp + Else + UPD_BuildFile = %SYS_ScriptDir%\%SYS_ScriptNameNoExt%.%UPD_Random%.tmp + Gosub, SUS_SuspendSaveState + Suspend, On + URLDownloadToFile, http://www.enovatic.org/products/niftywindows/files/build.txt?random=%UPD_Random%, %UPD_BuildFile% + Gosub, SUS_SuspendRestoreState + If ( !ErrorLevel ) + { + FileReadLine, UPD_Build, %UPD_BuildFile%, 1 + If ( !ErrorLevel ) + If UPD_Build is digit + { + UPD_CheckSuccess = 1 + UPD_LastUpdateCheck = %A_MM% + If ( UPD_Build > SYS_ScriptBuild ) + { + SYS_TrayTipText = There is a new version available. Please check website. + SYS_TrayTipOptions = 1 + Run, http://www.enovatic.org/products/niftywindows/ + } + Else + SYS_TrayTipText = There is no new version available. + } + Else + SYS_TrayTipText = wrong build pattern in downloaded build file + Else + SYS_TrayTipText = downloaded build file couldn't be read + } + Else + SYS_TrayTipText = build file couldn't be downloaded + FileDelete, %UPD_BuildFile% + If ( !UPD_CheckSuccess ) + { + SYS_TrayTipText = Check for update failed:`n%SYS_TrayTipText% + SYS_TrayTipOptions = 3 + } + Gosub, SYS_TrayTipShow +Return + +UPD_AutoCheckForUpdate: + If ( UPD_LastUpdateCheck != A_MM ) + { + Gosub, SUS_SuspendSaveState + Suspend, On + MsgBox, 4132, Update Handler - %SYS_ScriptInfo%, You haven't checked for updates for a long period of time (at least one month).`n`nDo you want NiftyWindows to check for a new version now (highly recommended)? + Gosub, SUS_SuspendRestoreState + IfMsgBox, Yes + Gosub, UPD_CheckForUpdate + Else + UPD_LastUpdateCheck = %A_MM% + } +Return + +^#!b:: + If ( !A_IsCompiled ) + { + UPD_VersionFile = %SYS_ScriptDir%\version.txt + IfExist, %UPD_VersionFile% + { + FileDelete, %UPD_VersionFile% + If ( ErrorLevel ) + Return + } + FileAppend, %SYS_ScriptVersion%, %UPD_VersionFile% + If ( ErrorLevel ) + Return + + UPD_BuildFile = %SYS_ScriptDir%\build.txt + IfExist, %UPD_BuildFile% + { + FileDelete, %UPD_BuildFile% + If ( ErrorLevel ) + Return + } + FileAppend, %A_NowUTC%, %UPD_BuildFile% + If ( ErrorLevel ) + Return + + SYS_TrayTipText = Version and build files were written successfully:`n%UPD_VersionFile%`n%UPD_BuildFile% + SYS_TrayTipOptions = 2 + SYS_TrayTipSeconds = 5 + Gosub, SYS_TrayTipShow + } +Return diff --git a/source/build.txt b/source/build.txt new file mode 100644 index 0000000..54281d2 --- /dev/null +++ b/source/build.txt @@ -0,0 +1 @@ +20050702195845 \ No newline at end of file diff --git a/source/changes.txt b/source/changes.txt new file mode 100644 index 0000000..13c7c56 --- /dev/null +++ b/source/changes.txt @@ -0,0 +1,260 @@ + + NIFTYWINDOWS VERSION 0.9.3.1 + +Company: Enovatic-Solutions (IT Service Provider) +Author: Oliver Pfeiffer, Bremen (GERMANY) +Homepage: http://www.enovatic.org/products/niftywindows/ +Email: niftywindows@enovatic.org + + + CHANGE LOG + +This change log contains details of the changes between versions. +Please be aware that the log *may* be incomplete. + +[ADD] + added +[REM] + removed +[IMP] + improved +[UPD] + updated +[FIX] + fixed + + * 2005/07/02 Version 0.9.3.1 + + [UPD] + Updated the documentation. + + [UPD] + Updated AutoHotkey to version 1.0.36.01. + + [UPD] + Updated UPX (packer for executables) to version 1.25. Files + that were packed and encrypted with the old UPX version 1.24 + (as NiftyWindows before) might confuse (alerted by mistake) + some security software. The current version of NiftyWindows + isn't encrypted anymore but still compressed using UPX version + 1.25. + + [FIX] + Fixed /CTRL+WIN+S/ to enable power management after screen + saver activation. This feature is very useful if you already + know that you are going to leave the system for a long period + of time. + + * 2005/03/14 Version 0.9.3 + + [UPD] + Updated the documentation. + + [UPD] + Updated AutoHotkey to version 1.0.30.03. + + [IMP] + Provided several minor improvements to most features. + + [UPD] + Released the full source code under the GNU General Public + License (GPL) . + + [ADD] + Provided a 'X Window' like focus switching by mouse cursor + movement. After activation of this feature (by using the + responsible entry in the tray icon menu) the focus will follow + the mouse cursor with a delayed focus change (after movement + end) of 500 milliseconds (half a second). This feature is + disabled per default to avoid any confusion due to the new + user-interface-flow. + + [ADD] + Provided some new hotkeys to organize and access your process + windows in semantic groups quickly. Use /CTRL+WIN+F1..F24/ to + add all windows of the active process to the responsible group + and use /WIN+F1..F24/ to step through the group easily. Take a + look in the readme for further details of this innovative feature. + + * 2005/02/28 Version 0.9.2 + + [UPD] + Updated the documentation. + + [UPD] + Updated AutoHotkey to version 1.0.29. + + [ADD] + Provided a global hotkey (/CTRL+ALT+BACKSPACE/) to remove + *all* visual effects (like on exit) that have been made before + by NiftyWindows. You can use this action as fall-back solution + to revert any always-on-top, rolled windows and transparency + features you've set before quickly. + + [ADD] + Provided many new features to adjust several transparency + settings of your windows. Especially the pixel (not window) + transparency is unknown to most people and can now be used + easily by NiftyWindows. Take a look in the readme to join this + complex feature. + + [ADD] + Provided some new hotkeys (/WIN+0..9/) to open and close the + drive trays of the installed CD/DVD-ROM readers/writers. The + hotkeys are used in the sequence of the key placement on your + physical keyboard from left to right (1 refers to the first + and 0 to the tenth drive). + + [ADD] + Provided a tooltip feedback for most of the NiftyWindows + features. These tooltips can be enabled or disabled by + clicking the responsible entry in the tray menu. The current + setting is stored in the applications ini file to make it + persistent (application directory). [thanks Ronald] + + [ADD] + Provided an easy to use resize mode (/ALT+WHEEL/) to change + the size of the active window in steps of 10 or 1 percent. + + [ADD] + Provided a web aware resize mode (/ALT+NumAdd/NumSub/) to + change the size of the active window in steps of the standard + screen resolutions. /ALT+NumAdd/ increases to the next higher, + /ALT+NumSub/ decreases to the previous lower resolution. + [thanks Ronald] + + [ADD] + Provided a check for update service (menu entry and monthly + reminder) to stay easily up to date with all NiftyWindows + features. NiftyWindows does never perform any update check + without your interactive admission before the check. + + [ADD] + Provided a tray icon (with menu) that contains several + interaction components. You can disable the mouse hooks for + all buttons separately in the responsible submenu to keep the + original behaviour of any button. This makes sense if you need + some special handling provided by some applications like + Internet Explorer or Mozilla/Firefox (e.g. previous/next on + fourth and fifth mouse button or close-tab on middle). + + [UPD] + Changed the always on top hotkey from /CTRL+^/ to /WIN+^/. + + [IMP] + Provided an additional hotkey (/CTRL+WIN+S/) to launch the + screensaver with the addition that the display(s) will be + powered down shortly (five seconds) after the screensaver + started successfully. This feature is very useful if you + already know that you are going to leave the system for a long + period of time. [thanks Christian] + + * 2005/01/28 Version 0.9.1 + + [UPD] + Updated the documentation. + + [UPD] + Updated AutoHotkey to version 1.0.25.09. + + [ADD] + Provided a forced mode modifier (/CTRL/) to use the window + interactions independently of the current window state. With + this forced mode you can drag and resize the special windows + specified in the readme (makes sense) as well as adjust the + bounds of context menus and other (naturally) unchangeable GUI + components (be careful). [thanks Daniel] + + [ADD] + Provided a new feature combination to roll windows up to their + titlebars. Press /RIGHT_BUTTON+LEFT_BUTTON/ over the caption + of a window to roll it up instead of minimize it (normal + behaviour). You have to apply this action again to roll the + window back down. [thanks Daniel] + + [ADD] + Provided a new mouse button combination + (/RIGHT_BUTTON+MIDDLE_BUTTON/) to close the selected window as + if you click the close button in the titlebar. + + [ADD] + Provided a new feature combination to send the selected window + to the bottom of the windows stack. Press + /RIGHT_BUTTON+MIDDLE_BUTTON/ over the caption of a window to + use this action. [thanks Carsten] + + [ADD] + Provided two hotkeys (/CTRL+SHIFT+B/ and /CTRL+SHIFT+U/) to + control the visibility of Miranda's buddy list and message + windows. This feature is applied only if the Miranda + executable can be found at: %ProgramFiles%\Miranda\Miranda32.exe + + [UPD] + Changed the modifier for the virtual grid from /CTRL/ to + /SHIFT/ (due to the new forced mode). + + [UPD] + Changed the key/mouse combination for the alt-tab-menu from + /CTRL+WHEEL/ to /RIGHT_BUTTON+WHEEL/. [thanks Stephen] + + [UPD] + Updated the list (dragging disabled) of certain windows whose + mouse behaviour may have a special handling controlled by the + application. Currently the following windows (and its possible + child windows) have been taken into account: + + Windows Explorer; Cabinet; Internet Explorer; Mozilla/Firefox; + Opera; Xplore + + [IMP] + All popup menus/windows are excluded from dragging (otherwise + you can drag around the start or context menus which is funny + but does not make any sense) (see forced mode). + + [IMP] + By now the toggle maximize feature does not work on windows + that do not provide the maximize button in the titlebar (see + forced mode). + + [IMP] + By now the resize feature does not work on windows that do not + provide a thick frame for the normal resize operation (see + forced mode). + + [FIX] + Fixed the visual update effects of VMWare (and similar) windows. + + * 2005/01/04 Version 0.9 + + This is the first public release of NiftyWindows (using + AutoHotkey version 1.0.24). + +------------------------------------------------------------------------ + + + TODO + +This list is incomplete, but contains the most important things. + + * Extend the configuration menu to enable/disable all features + separately. + + * Make the eject drive feature operating simultaneously to + open/close multiple drives at the same time. + +------------------------------------------------------------------------ + + + KNOWN PROBLEMS + +If the area (see below) in this section is empty there are currently no +known unsolved problems. Please be aware that there *may* be unknown +problems. + + * There are some visual problems when using the transparency + features on Java windows (JFrame, JWindow, JDialog, etc.). You can + fix this easily by adding the following VM parameter to the java + command line: + + java -Dsun.java2d.noddraw=true (...) + diff --git a/source/features.pdf b/source/features.pdf new file mode 100644 index 0000000000000000000000000000000000000000..17b29f4e187c2ce07b982c176bb5199fc30ee716 GIT binary patch literal 140478 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

$f5SNOkwt1ZMm_vWyHdtkY?P zv%<8O@lqAb1Bc6Bo=vi8nLXv!jD9UvroYj7K8~N^#)_w@^LHeu12P?NiQm8q$BA2A z_*f_tFmsBfhBV#luP@xq?TKCK#Xx+M-m;%dWbD2&@pClUzXFe_|1N)#`GLP%LC= z{r)wdiQ3k zO{JRhAb~mUQce*Vef`M*de>HfegpKUUZ=Z6w4YIDqXL>2!P(v%K%in_3%r6lx?qOI zeb;p{h0h`J)pq?OKPt}$0KfUGok@j@Y6!!V`qI|hBk+7F+izH{{*sF;8L@7P`3nz{ z1~a)`D^9&`9R37IdL%`=M=~E_J}@E7wjvC^Yo#);$Ejb0;n$RK0U2?V|0-mcjfYldvf5tjGUJo`AXpz14v{@i@8m zYjuBIn(1K#Qi_(Dhp!B`kMKy`DC38W2Coe@)hvh;BurrR8K{~%_$=;=ad?XLerj&G z-uayq54wC>mU(Y86x(Tj05eA<$x1s3W{>SGbziP-G)UCA(MJ4JE4BfdJCT?AhJ!DSTyLRY8 zn4-_uZGH@XzIWSj{U>vzKTA(aHoz*VJ}H1?EX-68L1SUTczHb?3A*<@X{9}3%l1+f z&j?Exz}?jpRBkJ$U%cUDo1v^vyY*bGIS8GiEmwS7){tm)X`_;tpaiw zd;?3o_^Iq$nZ62_d)IC81HHHi5%WxA?ELB5Zcaf+o?2c=%*c3TYh{At(;J0xtGAWd zUe)E2DGXxeC<3I3!IdTz#d&J$PRp>m_ql2giwdzxIj|u<1dNDVo`ex10OToA>$=AH3`&!SiJC1UA#_^yxnE`k#|F zRqN%9Mhs6tSuL(YfYaG@Il_oS$#6;SUi{`G+{8@;XTAdc%9``3yEAF`p}K$yD%$@y zELCmg==y&5%hUEg<$mGWWBtbOVd-d!uCXMnTID;4^FUq~qEd9ib@_WeO|+K~Necit5&vUJa09asa~U+V>{CeVDx zK@M8FsoDg0NDHJ=TB)T_u^1PKYg=Xp{rN&T1mfhr{$OjR9Jgs^LaEdi(P-sZ zKU*!o#&)=pZMOmH&s82{kELuZUz%wLq~8M3Trg4HPy)Fl67R2G7!Dd4n9&1#_m&^}-08<4UKT0YJ7_2x+$r4)*I)SWO_hRP;4Mxaw6i>@giB9UPMcKCP|U2fQ)2lQ7>6L?LrCi zaIB}T==Y+`)CwaHxy?LfStCS&sK~hXpM@}~J>Tqku#L#0 zgt!B5P-ZnOVc?DD%Jjv0ohJEqav!CBPK2U8 zlu&~rsIIdZkDBy^QO?vK3x_e~Mb`Og*3YW!>Qdy8rZpjG(OSa_OAXVnOkBQnEozV1 zqVSbC^KN7X&#I5$$ss(9hHIx4Z?b>ANH+Ui=BGxt^qwMCxZGl2eh-A*=kJf{;0S)<$|4z+>V8Jf#{kuPHxRZz4ebyN zd+$4Unex3ViE6x+{jtRS66)UV<0l`!*&xh8qP6QQ-UH{zc6{){Y;X4~EwT3T(>J_8 zvmr0@GhKRRhKvK@#ENo(uf@yrPH@{y?3`1e;jBlBs^jzc13XR)-pOQ=Y1%zd&9IrN zg=vB@_Tn?&mW(J3oLhT9pgp7ZAJ31gp`L+*F?C=lEfuy*x8U_!;?A7}t%N7fZth<- zmgsK=8^1n-t5k4Vi5f)K!B4yO!Wu)H1qy$kCkLV;68RCBh!j#*D~|Xg!79W`Z(uPU z-HfRk$b*fFQxRd#G(17h2Z32fZxT-Vj4ldkitKJmvQewWmvpRxiapACJ|^57RmqL= zw5XScX86-k2%>Fq7_1t+;AzgYNLflD<1s<2q_>IBVB~idqaL%Ry~+_AXqnP(odCEC z&b$QmVX}x}Pe0YC?bD~IQ*&k6q`OuB?ls4D{p9CuMP~~0NX|=dD^ZK3NY)=3K$BMwGS(dSHL(i@(P77OmlM_qf9d4)~&1gHZ;Dsu5N`WK<=km^nA=FY6l;Ym$j z=!~O}w+O$b_8#V3i}dMs+v*48PYzEQ#j<3dOh#js7BIgPz1y(yBB5Te$=|?qzetgv zf5^~!Us?Pvij%l-;y@Eh09#IBZgqVK62plA^aF~l_(EE3SWCVSc6xoW4ZHP0O>B=|D|zEt zEYWG3IxoMg6l5CSCH)qYaVG?Z!#l8gTYL2Tn>~f(#83K@{wxDt_21BFYy8aA^wR+b zZ;~g2B0N?!(Cr;VylhX^rW)JdA0A;}5QGYSsXjSz2z)($-@~P1EpYb|z0@Ik!#Ge0 z{Q^~%he%LXs=ALRStVYJ*!3oQvEyh!&9vV}iCFr|6`^oZE=Rs%xy`A-5e7W(^WA#y zg*0j%0_kdt%deE#%?d?wxZc)xh>nQNN+a=yc9|FCfqq@%(aAQC%J?aGbiarCwOrGh z<*)h%7aHsojZT^0VAV>;6EEjS*102dFJ0YKqDsO8lXve!rrWh`#Do(oLo`fFwv-@BMP{`2s36=Z$>Y1*l zskSW%%$F`;5>e3d_2RqNUDK!3MYs^AOTF6+N)PVJ-QsA`cUtqb!N@#^h-uzg6$e+W zDf;dD1E~UhTyJ~*FLJY~_){a`*~mp{t2XY57bkd=As?jrr!i_=H|;3hzKL-JJvrjR zUU15Pg2!=!>?x*WCKy|Os6LCaS0Vq!z6wUYiX;n?Y>JV>$X>K6s}?&O`UWQAOPhfS9ol1_zlra1r%4Y<$xt?6Zpm3DD`rcV5g2!dW7| z(;uGSx0FDKpP%mbPEfx1-}ED;M)hJ8G8T%phTN2B>)s%eAXhg_oL zvhEnW%R~RNBFw#*F+tEZCb+zFaEC>w9zIjR_%L0-ux>Z21r28!;OpXnKYHC-%GVYwnb z2!b|8jD@*op{EqQ`nrSPUGeq)QqL5~3R5f|-#1fHCmUu7o7B(_(MRjb9Ol^a6S|e@ zo|U^u`@K1p@(EWs6B{weVSiB;C;}vSVaeQ^B*}g{d95Z5m-BSd)YQvsv!vCrQ6XA> zEK^({HQ~hZAO^&-jq2#^GWZj(KIK};Q%s1Ep3Oc>C}Z8O0mS9+dS)0RqTz(8RX9ce zdeqxEhXWES=O2rGa7w>rSlbTxdG4v1H#>f5yo1QUpdmEn%e?XhlmaWNrTL5lYw8!w zE|kuWdC10OHey`i_Wr^YCylD|NU#>-8=q!VFFJHG8Rju}bKEp2k~{Yc8Li7$n$v*$ zEY4Lgs~{}nM%x+HIG}z|Kh(FdjG{OV#_4quXzs$6l@m)_+O|XAC5+0=Kj}o7RulAi zxEP18On{Z}3)roL#~jnrolMC1vsZs|0D@?*ZJOO1iV6FuNJ9Xy*fZV4(tR{~gD_;) z5{&!eoqOYZfn&?90V#E5Jr-Hlr;Zntqx&)wn;<{`H=Jn1du(I|rAf*Dtr|mHGOl~S z((p%*po;jNjT>BOE8U5SU*#SgIO3cWoO4}kYmMQJX+>D^E6JmYjz1!?Ad1-T`AEOx z2S%IBK_Q`0^E>T^5k{ks1SSX@o&`P#H*C;~v~Ud;?IwL9NhH-5)uHfkH^GR$J;6rR+wh&yV`C}yA)D2QkMAZKdBR|QHa$IZwv)D4KZx>fLhOoWX9f+d&0(XA zRSr(@t;FvzYS-}lvMV&o+8OVPH4=F#LhJG#@Tl8TMGt*XfIpA@dQYKOc~gbB3{p&f zb_F?Ck6^dNlcI(eaD(~o&N7k*>pm6a;SYjgd;2k?*1?Gq-;wDtbGVI&xxxI=5#e#G zw%T(We^!TFARjn0Z8l$HU?t_s1{;&)JE8U4hCStskmC~<{>@8qet&%kFK{d+3R^&m z4D3ik*Q4EqHl>4o_IN}Rv<#Tge6uLa(z#BQXYZ1bJ@#nbbl;@@JbRX}9(_eJ65rUUg3EYUYskMMH3Fi9 z)UAR~HEOz9b88zK^SeKNzoB^TMu7%Z6_PcE3sX<&W2ZoJZ;yYIz({a8y$&(NdAOIX zFBQjI?wj@Z)IbE$cE*akPGfYq!PrufHY2BLz!MP)#}|tf)MZ-csV(a_N5n2mBou{u zP)BQL3Kn^d2=|R0>6?M?&3i#olrHX?QQ{_qg{~3m z;aAuLgz}3;Y|3Ac^mkDfLD7qvc??`&(#{nEJvNdvS%7h~a>{!UpPR*-CrUe9sc;$| z*s>A_EK=hq;U+BBHwIDvP2Zzvkz$Ypkh|*ceT9&Yu1n_er#C1QdEtzmGIWV{6?G(Qu2jKb_lZqp8#3WWBKG9vCXm8 zZ+8{(_IpPlxse&N$;0fO!G$PLS7%5{Z4IIIu^!^g0}ciWR*{U^PqLiI^PTTI-~T)1WZ(Xs`=Uwlv%#Il5pas^}7nTCnwE*A!}O`bE--CetvaYYlwf!i3Z zRu#YU@VpOfl4K5@I#GRTl{!O+Ja7`LDtb74u z-g;qnXaS$tJGx#YYfmJ|6P!N!#=7Wk-tlrZo@|U2I^RHK>vUoM@b>&d#_z=f%R^q` zLRu@IbH+UfUENC33boSL6fnIEPHY{Hk?RX`4rwpz!r0sDI5^v%&>O+y)@bu6|7lD@y4{;_tE2t`d z63bK$RNwP{-j=X%d@?k9%qE?^{@r@>YQ!H+5!%^ZI5rAz>u$vy)?BdfH)bm6YU&P- zd#deC6B-DK-tz9uIv+eR=h}T$Y8yB3zUT%%yw#d((TAR-C3;!((Ot zwC(A^q#BEYT{aX)^aCo+??Pb#Kd!C7{EUVt@@2~c4fGtNvoIFeP`H1sQbmL!#^(oo z`j`9{F1I=6cqcS_MYsdgRy>?sVPfs^9&nPQQ@$A1vsALN_owwv8PJe}gKu+{yb46E z>ML#r+)uHp5_z-nY0NJvU3Bm^cVVV8Zu;7Eer3Sk6JX)kJc*|3eeYbXmXziu>P6y9 z-@q13C+*)VPpLbeM_BntY$E1b8xx=-q?r`2pJz1-}4 zF;uzXgOc&Ql5M?AQtd0+Bd4F>dex|XfAIeVEp~h|>~Wb|$y!KzZI)5U892Eey)7{q zZZ6(7xeof&>#`KVvzfsRSJPK;21F6|OFDR6D0(*v2|A)v6x;NIb>woDXuW}wBJXic+52=H(3geCpeENu$A~@-=)`t1$KKRARRA5;tt@OG{yNeuqgyo z?<9~KVDhOn36ethucZSNmsqf!)6#rjxUa1D{NUJ9tw7Zbl*q{$)sr}D*-7jSlFeq7t9q& z*_J*@E{o(Q*E8jxo!hr6qMTx^lI&CCIg=q&TYK=mHX&^ji&cHVo}42oy|(f|#by6? zcSBVcu4w!k1?&DBYFgzsovTbDCs=nzMYW^3FvOsz7>bO@LBmjJ=dfYGp12G40BO5u z$KmpKZVzHA?IEn{XR|4N4)F0hGHx4Bp!3S&Q3(OBc7@G~-#7V>_j-vTf3Kji-@+2AoLG!dZHC5GOY>3v8G-n(7p0EhRg*mOV}O_-{4=jkgd?rcSg_D4 z$W2+chtsftHFr9Wutj@%dSh|TyBPn}%+QVD?P{py)%~m8=k=dwVNMlf+-WVjvU>|D zOS>)EPt#PBLiFKy#SZ z^~OoKPW$ZF!(-a=6sr2r@fLEK@+8_CDtLa6>>wTcT^USJ5d0Ab;fm^52`u7ndKziN zN!gA)3qQMwLkl+M128oem+2q&w7gC`j|mp=Q$;{R`1|uIA>d?k;}E+oFszRoze<%9scc&GDvbtD{uoVI6>-7!YIVD zLbUw*$vbrPR>A%WkvjnFFOH75wxKSxU7A zmz*>AEI+6v4;@4>lztoRJ)}l7W*2xFu%x(V5{9|f^MU=Ui?L2|%Xe~K393T9S;>i^ zmV{d_!Q)y?VH1n|g>8*d12=KFW8{--I~VGJ*k`TV7Q>yBB|`|efYB*(7CBaTDCPS1 zUYHWF)cfaFcgWu{@VGU!_poGI2){t$5oB< z>zW72FW2uf=p-h$Z;;^{l__XmwU}uGQrhkOtR3(QGeCC}QPxtHB-Ha5fiSuFVE3Rr zq*B7?p+6G~`&s_r^KdToG@<2ryM)6jwir<*`#!F<8>l#a>*rRd_L?9Z=|1_cfwnwF zJVIwf8Gfve1j{9+bX7c>3nOJ*24k#!{4f0xqc?)G;_033&^9_L zsBim?Lw#-tbsO4Dj38so8Y&83<8-Vgvcz@{&YrQ;79R+MYri-J-`*evlg_q+q-qpX zOp&LMG841Jz%i0R33A*}Uyg&~J5v_0kJ#a;1z-9SH5hcMQ4g&!SYQSrCDx zsUop?F59zX;{S1*YfQe_ZtNVk`*_%hGQdHH?$trFgM$(LRpR>iX2^KbG@6pi{tIW+|8nJL$usV_XW43jVPvz4~QPHpAXt0W$5?QEvLXr>; z2>QYgvTsgj5k78U_-5K9WAmy67UrV9pl=s*dGE-MIpk)gZP=_$N->=F4PyNk1K#@L zaHY4M$h6${6G6X_DQuJn#J>lxl!V`LU)T*owB3rvaeH!nV(J0&C0eC|~RYIRP zy?@lG{FV#ir^lJ%wH4xFlL@i;c)*XWLqUl)Z|#L?u3R)2dwWj}Vj(vUr&TvH{$u=yd2j<{O%RO2=of8&lfsKZPMDR_ENx zo7zc*Tp*wUN;^aszHy{~;p}x;B#ddI^ol}5ckQ4)mv`Zk?_BA%y!6{26QsKU-0kH@ zr5fs@>bI>15_A=*X)IhdaLL0Tkze-KJ#rGSyyb8GSfel!)^q55%CuIrzEv(-g^}0h zoES%c0DJxoGrN-V(??x%6jEKk22#Nq?9LtW>s|dXQby@3G^g&D{y~b8oGXyw3 zJxW?y+r`j-3u^bEx^BdiV1JbO;u1q80J5E&I=*>A&Ru5lTj_y_>-8cq)sS)h8ExKx zGzFY-NR7icJ1cs)sJTbPeGfHJnzNVltR@7iL2&U9<)qazOi0fz;D{J@-_2FGs z=*P}H{GJugYiuIQu!!}2a4W&lB;;VTe2zs);IK!v?SU74Q)=6@w5H`U+vJ|kO*c;USbM68`hwAyvj2QS@|-U9Zo>jXlvthmOd(B{`$=+ z79FmF6}~u0HQ;+w8|_XPdX6{P#32)DeO0XnTcvR%z4I%SzqqzPtcilJi|BAd)4}V) zP`=B_tN+SM?JBSw#8cPMjLEcpH_iTq0M~@*X>e)=SFFFa_XBfOg z)9W=YymywPvFnnxZShzW=N$gBUqI6%L)KE_;)A#U>U(x5DHKL}F{!$@?YtEIc<}Q= zD~5G2*88k!Kg{NrJJjBNahU##UCxtwcd1oyI&)FK;E+Vm_L;e}P& z+L7L&8N4z!W#GZ^X%*Um-qc5Zja-zvNZ7l)L|EVrV6=n^s5H)FGST`VQOpFm^z+~B z-X`rrY7Z_DAh(b!6};1aj?~r_#oAT1XiBg-Z_|-KaFU)b!utOtz;U-#{I+uBM1NS! z%;h#w*o+yN*qb-~_4|&u5!kt~JdEjbTQ+4C+0F=MJjQt#3@`N?4=+-9fx z*=`rITmX4NB}mLDhTG0GqG=ei2Fhc_RE#tw_Uo3U0pMBI4sMw<78|3n?gx@;i(oP* zzIxd8gIB)7y*ebwr=0y9`${Iut;Y7u`A5M202*82Q&%~}k+H2jQ$H7`k)jh}?tFf; zs|8aXN_T=GK@=g$8}SY3lIX0AA5F!KTh9suEga0E#fE=dv2-+{HWwpK(|=*@@cbpj zaAM#u2{~%8o)#Z?Ptz1=Ly#+v-wZnwQNF%WzyS0p%p<9CR|cPd(osCBn?D;rG)F$n zoyi{G)Co*;_(RY;tqsbUoVdrvAmJ9A{ILm9Yd-=WLT^1orYZAXvS^5cefI3_E@D}x z`U%;@ydRl`L{LtOox9ZNOd8>~NT@BkIJK6@T$z=~4-|!s0ALWr(81Gh!7IQ%HkL4e?f$?&4n5 ze5}1Ya5JKh(bh*A-wX{BSn>(A&}>Lt212_bSRoSZ@E*gsWwg<*4BL9%M#dViztEfQ zooi&YT&YfWoRLf(2y46M-5`@dP{;AX@pfo#uG1#_B0Z!lgdEL=&8C&L!w3Sb1fQY#9>)DtSL`<#6cKKIZ*r7 ztSNp!60{0vZ4pc;#WkIQgA!qp1lV?QB-s@5%hc0E+h!XMIkvKpJ1d>8bZ{|-M4Tz> zu%Mz7*I0Sr9tw>?&2F@M`wHWX2(kTQIC zKeoLwaI%h)RQTa580IeVikXNu_caTU<_{K|y@Q>huI0b@Y#+qAe^MFc4UJ6!6{zpNRkokk@ z_+iro)cPm__?{f>%!C}wtc08_i~yD?3n4pz6v+vw!U^Cuvazy%P$B{EA9a}s*#R~# z04tP}m4lEIP>+L!1+bs(4+orpW&jjOcEBem04c!y;S2zp6X1gNqZxKKfZ+q^p9lbi zO?3cklMAp5(DYwL&JSWHApJQfzzoPT{{i=-F~H$}TTFk^Y+3$2pFGoFTvR}M^}nV~ z#Kl2O!9mx-5MYs&lP3H~8n5t$(812}!(wgoS4mdxuaeN0KPu_#{_!CwO~@c)ZD*Hk+{U1<#5L^F-;;&W#F#an3|Hkn*uB`$g zgOa=i!0pF7C1~kyT0?~}eJ*9x#&<;9vMLc-lERsvj_z`%G95Sz1bxBP`u&`H0;8f? zCV|R;^IF3GV+sBP+TVKn7e)4u-u~UoxH_Z@;!a)%M+HW_^6!mYhF~CJ4Z9g+h)$6M z?N%WPItQ7eGTyKKyq~^?D3zn=FW&mbzPwFoSn;L#%$b}<8tS(ZlV^T$)_~{vA0hlj z$o&rxbQlaFKiQ*-I888E%>!#ty0Q;;Z{yLtEI>M@#T^C)lLih9g)Lct&&7N}(&W_8 zkg>8G(PCFTY>KO{R_T}Y0wXrNT^UD<(}4H>pCJ4zwEea2UXOPpi`v{qU)9}wTT+qVM(BQuxrf6qs`QK{^ z*;(8C_gY`<9R3%TtgNgZ>Q|GHHEhpWYxkAVUp`zNbi%GAmnuq|(>|KXpR zlb(f@ot2G{nVp`UiG`J!kcF9*o{5Q#ixV&a^o)QN^5?<;#G=23K+yW*g8Pq!^g&jK zXAlR(pT7m4zrx}lXTqP?t^b0Ajf;bx8Q_+ckOknFg^7!k<0B{o;IXiA0Bl_JoXlLT zf5dMF0GPkX^#2<${~;RxufZ^}aMCjYSoi;e!o&%ww90QJ#x0F=KL;r|B8zlG%g z@!sPjWd8lm!z_6l*-A-chXEJfmAF_tNIz&XmT%Y%t(r9p*TbJSb%`a=I48SxcHr2& zxJSNUMXY2QQi;xm zo7NIuFP@o*SfQb!cQ(YZ)J;v*e(jk#z_PsOqm@vw`JK_33%5mGI&=9vtL{*XepU;y zOoI)aC^~|ZPUB;4n~^U7%ymLk_Vl*S_C6x5fIvvI4IA&qV~L`a>?0SgNqTU$9{dCRQ}sW7pe{pQK(nnww4)~Ugd z>qm0)IFN>{dg*CzgE){G9>MY6-U9+NoZJL+XO#`nk1ZK;H{6CIv{}H!ZT+tr{>g<< z2N%@bp9w`)vj@+NWR1{QY2mDqCNQR=jZvt%1P{ltK^qa(ZHW2lm{2OLsPEY%G{oXD z38QW+*l|VWF`}rl>YhN?vCf&mJuP+! zG2_Fvqz@MNQTH>QWR>lYMj8I2Z%U9DG?J_a)P^xeQO% zO{{KIr%_PK8I34RPunEo!|L@-=5SlV6f&1zy7rv!PEfF6+)nZzb_yBHYCehEQ1dUN z7+HGi7YT|!1gHaX5Tw6d{%~7ou}B>T6zW^1Tm`d@^ecev*Dx94!t)iSb3_LPh^3I$ zGrN4Cwux#Iot%O$%p9Z-X*`B>ENn7P-vvVwBGB5?{L~s|w&l}UMz>pT87vL#RK|j( z#aX*g+Qq@I3o3aP8g?cgdiImnd}IP#libnjNEx)SIX;~m18#D1cbXDZd&bjBxwP5| zI=~sV%A`fN{%W1tLt?+DhyZL#`sj8F+q}t3#w-6?dcj6=QJRHoYSH{9_)2ude*+^$c*=|1KE}QKq5EEb|@?2Y2gGx&<&2lW?gG2b`N%jRqLh?>oQSsq6bl zf>xmcf-j}3_?pvk`SWSL-1!vu_xe-i&r5nb{=+rr8n{_;qfFl01O32WNQ|cI9dt-p z_b_$!(>;Xt-}D1TwW&Yp&Sp;e5Cu`pTP{ry_+{pP>!lVpAxVf~6A^mca6hy2QZIeP#8w0dNCEvu@#5>$5eyLiZIJNYnTbl$c}GU? zMUe;Dz2F8Yw$3kPYfMtllYz(arGYk3yX4Qon>hi0e{Wv_XqeLEo-&kL|ACDCkwuQ^ z5oVeL6foJ<7l45qGb{NmTthuED3V8xMJAj&U6*MYHxgwea}A(XG5dSo9| zt8yKiFapjj!Ipa)4Ma407#e|oqNW!{v*_E4LuRih?mDCDIxc4?Zf{|y=FNL~0DB5k z`nklf)1W-+T1^nKJk@7^=NX3T!FSSV5~M%pHEfJAK&Ou!M(gcTtof{96oFBZ3fxIV zk@?ih!UpklwmU6g;;x15)b;xgawu8>jq+-(P~}qDKV|hr0INGMU{*o0oIFX<{XoAM zzW>e|q-r+kY;&GpnKPu-09+QRgd8;G>g7(5Za_8IpV5W^?D^sSa7yG0RJxr}O$xq( z8rIU<@a&Y{r5?X*R9)I1S>%|U<4DIxx%2M$?p;3^=C`^t&k zK|bsPLa~qCmS+Y@j^qyNtJ}(k_`G7?78`-6=M&t~V&+JT7De&Dck`<`xwbtP(C+*^ z)C9n^>2My6-hC@rp!U4u`>5zMZMq?4f#U4mL_;? zEv$k!nbL6$P;rkW&0orPfP#Z&6Snixb7d#{ad-q7+$<;gxv(>-sM0m9!t@oU_~&6d z1NJTh+bpUC+dV~b^momKmRo-e&zBIIq@KW%05?O@{SM?Fb!KveR|2GyuQw>QBU1*j z!Ik=)n6H6n-1XHhgtUs3fWi1fYmym@=i=?1)3x{SOoLPvf^aEg$yX@3E6=5*;nIus zz5IF?u&!T;tdH-KJltbJ0}P$vCQgTs8G9WGhlFx0fHLx}wVjKzcB0%=**Oj=dr#(U zwE3d5=Y!{X%ADw*$dNP}d7y(+j^Fn@hcCvnYlVIeROpAZ*NaU}(}^@@nwBreM574cwTd^IQ|+A$DykWuoAJc_w&Bh)Jr&ubE#KjeP9C(FII6b6h*V5U2VB zOQ0_xd9GCRskevo9zi&Bfcgmr29cLzS{8^>I7n_`PE+_e3?i*(%^iqumjO}Gi|9EC z3M74r=#S`|cFYFNTNE8a8JNY>dJ$W<#6bHJ?jU1gN!~T^4AOw3h&>n05nZ`g^Cz{l zpCZpmwx^^;+0^D7P|rQ3W)8|L+v?VIm>|EqLR%?JjJE9!O0iffpt=)EEk9$cemi^G z(Sr+o><4Y@t?n8Tlze4*2t#b^`kB0WN?v5FkQ|!O3J)%>eLFvclQuT&@L(SX0u&)W z7@*quC@XpP!5cR=<0%1#GaN@B$yzB7$qK>+Db$>l$%>&*a_^bn(*s=+Ir!6ZL1o2bL zYw@jobKeH2W`|m2df|K-Z^dhxnF7C`c>qp3tApcT(1sxFEAvCqs8zDM3q4JjAYcc$ zH`m?uA47bpStfQGI6%L~arO1v2;xbeGt(+X3!&-J=d?MNfPETZVDDE(vw86+4G6YR zC0X8DL!A(sx6m)F5GYDyv6vPg&fq4B zdbIC*D-VgB2#E1J&_|^qM(DyDZ(0Yu3(j9eh*m1(S$R!w`vp*cgu9Z(uvEEOJu|r4&3kU8*eKD(vhd z(NYEWw|8TuO=@gkv$KdnAi!e#?W8`^!NzZS-D{>}uz_e2q<< zUd#D7$WMNEm!Pr8sMt7i_An^2Nww-ISji$LeOOmP1pWQm;j@{-oVt|KgAGSEzk0{e z1@Leh6BM2J7_IdTr}f4Fa!&`+=PWg|dt{cT3D&sAy8!vkkSTg}F=z|Vdw(#|ss`ux zp`tL8V7N)L<*vID>_uEF*Dk$TfWyl2I_gAxL_E=zd2(&kPuT@DiJ($7@W(Vd4XRb< z>VN*(VZ9`Q38NhqJ@{>#=C#c~udr`r88s0C@CbD(^NxZL3Fwk(*eSe_*CMk^59q0o zKtKS~z^$Bi5r~l_j_s8MQ>yIP@pG_5L2l?AUi(A{1qCg$AcZhdQ^kYV|J0AM<989G z&A|R^?QDz`m|``L+&08zf6?Q!(y;pJ584hkrDD4D+0D*buTC!W=H3jQ8suoz{^Otu zh9i8AClkJCo2?lZHOJ=YgR!pwjHD4Q+W;_nreFe~U#0hIw=0JV^;o;!_ZR1s<~q|z zJRM#p6LMIU$G_yIRdezYFmB4iEz#RyB74=tky%iiRoor){OC1DXo<`j0J+7%X3f5O zIfdYkd$JS^i9KZm)#4FV5jQ740h}&0rRB-9v_Rqtb_``r3uHmr+;#D$t6OiF*B=oH z)$2C*vo}tIF}&Er}=L7!7^DZ#vBfOS-g!VwSJnQh#RxVr@A zym_p}X9KU)L#<;Z!t)2x>v_)_i;WRkH5e#W+WNW*G}fm6_^!!)(vUai5t!gWsk^;- z*cA#oH>@0wz?_iA#-*>C74iXOL2l?*~~;Lh4wa5>XXYO1?xpS+HdLCsqPby5cq;5WhH9R#jNOcdpB=S&=%nQ)N#C zp`DKEMnYK|lt6GP5Pc0pdGU-us~dXP z*9|4RBy>ErIb?y-SFg+Jyobm znN&M^DL=8_N{9zPNV=>4qVTLHB2rsmyh8Q_r9{6t(llqX>La7=vnxBR)Ak`k0itBI zoB6CWZU^snF8+1NiCJOIy2yDsKtnUP(;fqXUV1nMgWvyx>S2R42NTh^buD>;l1Vyh zH%;Hgz<}HAXi>8i&?KhdMket4r#BNOjtG9sKG41!(N0i1MyT5JmA~Z^$`^J(HE(6K z0#YXox?Vx<#}ENr7%omS!>yvTh;igN>-0zw-+ebJNn6A&4ICh~`b~Z>T8PWZdq<_U z#Zg13arF>)*hkBXBw&HLTmizS)M#;a{089^CfK8HQqLl;aa<31hA!hD0(-P${m{fR zN6vr$lWfcqv+NKyhC#=jo{oJsJ-8ZOT>pTj{q-Q6O&fa^q=M4UoFU` zgc8^JL3AQW46fU2{jmfL3DQb+iPYjYn|l5@Pkkt87?=a}AN+Fy9Q?a*@96S26&FBj z#(c-FMZ3d}4iS&6mo*g}39DnR67v~OIgc(Kl^+_3V|Z&*h^IKwhH16IE43{Yd?JR;DY}=NAr6uQxbqrdCDR#W z36(!LX|`9*+(By$f0|eOl+!qGFqmSswr}uFYjQQd5I4`xNt0zz#V>Xx54@FtAAEsx zBW6ionBMZy!j#7teg5}$}lN~ zQr~DcS~kAR#YXbfVfA8tvDw9wcciGxO3I7)Cip<0>{vjIKZ|pdNMgvbD@ET;Uj4XU zyMn8S28arqxLs}aN%TUnZrrzDrI4#bD4Oktw20Z)9~OJRXNrU+AlSFh=^)E~)DiO@ zt@RN_#^|Idd-Ve65F~>3Q}t(DPyVIusVfC(KkRi6TsSN~)9!lgRKT1)Q7Wb;T`Il# zdz32H278oi!T)Cq5?$ZJGSc+7q7ANB?Jkd=(>Kbh97^U$sW{sE!9|tbpqJ4z7%HGF z@zlo=o@B#!i^h*a)OId8D0#;DvIMdU)h1R4R^jr^&W*O#9WKHI!U(My|%IgNpke-$~ zJi$glPT8{@rsF1%399$Y7J=#ymTFY2*BG-w^*60;{7ol=%qk*aJt~t4-8&6*!HXR+ zz#V8YD!Ii*@!Xo>ZLXjUK}vRJ5O>-^O|`KM!txj#R|dm9Y3@YXNdXX!lAzTHXUJsa zOqATErLA;#3$flh<{WRXKrWB@oed{e$Rmzhwm}-?5R%cDkZ{-5QKrv|jy9HY8L#z?#>@h4qAgY-RVfeoWwJ~Hk=xse|ua&^ktnY_-N(DKfJ3wrfq)!ORpx=8OpRUTd;*gKRy#fcObd@|5I4KEp;pxe- z*XKw^HRAr5B<$am9SKKD*nL$#;eOPg5mbE@h?$2Nz&?8LR!VK|PD67;+<;9&0~$7q zIcbj(UZv&jns8|$idhn)E3h3_Cmix+^1rF-7Wkfoakqrp3Qk;gtbqLD1mSEnG842@ zce~(O>nVI=qGxKDauhRVSrM8NPP`>7lA1Hm%Q8tLU-8Q<9bxex&Fgl!vJoIiq?TLl zlU5gxVC~cyb{E8+^=&-i$R7%6w@u;tsrA8k%RMHNO=N;{fWBOW(zbqqAJvibC1OQl zobA3IhKv^N2zP3d?$aA2EnD)oAl4`h%# zbZ=w!Y4M|&9x-^sUEBBMB+>voeWOR(@%Da+yfq$jtrXhg4qwiVsIZj0ekM8;P?<2B zYzNxWt%Ku5HFtKtqI{bh&Y@|*U?>DcMEoOg*}v-RMqP--)Lj)Z8XtXYqVMZW1Ni_y zwmxa$^CH*69uVIr5VU+?v6qaYN@4F|+VqcjEMs?}sq7j*f6XpA69%oUkE$!woIch7mdU=Rb6ZtfBIrI|^8#M$yr#Zx;MrhL}=w9kbN! z<;RtL5k;UCl6(3Yf4XG8U@G3a4@s6)z;9DoPZgq0AZRfbrHau z5w29BF=i`!bBD~Vg`{X42VBekJhNsI^rS_d&}>{)=PBt8Q+3r4K~d-G{e8%mBWU*% zjhtM=2;M+7q+?CQ?mlGJq9pb%(yg%pc4R)Kj&cf(u+oyJK_}k#56>w`?98zE^E#|O z=|}2vD3oTwE8w3;lih>%(ymlmJTpH?tx+vgIqWjn{)%ZIBUNj-X<5zS<{pxt5EiIc z(&R|bIm<@*Kf=NnFcqz6w1rvK&c2vwZx`X55FW=}f-<$eJGfmsH2jphGy6f+C5o6p#q_R9;A?tB>T%ba->seihQFW+BXqxW*&>a+U;bt~>9GK&XUZM>B8< zP62e#5i7K8M0Rb@22cYAGiiXy)fL>Sbip-8d1?}FMwEiabk;i(`Tv5Uzoi8m!*}-d z@2v2Dz=(h5V*e{o{r?D~{D+MA@Au*V1x5KQh5f%J*?$@lcm+Eo|HLS5@(|kNQEl=) z^#{Oc!$nHf^22qqUP?B0k&!-m6}c3#`;OpT+(_@l|4Cu|2Uz>hk6}}GlfT`fGr{>> z*LHyBKCei)5VpqF%vY>L{GTHJ4FLX;Pyf$|+BPfv>0E|K+t*Ooc=K99Sn{K*JI}&h z#r`e-Q^fzq3j9l!{a2xTK^aLU1wksIZ%Scq>>z9GDz7A?{O_3HuaW#~+(c{)ZH@jS zcytm*-wwn4I|VBKz51UW1is7uJN*^f5&v6={ZmmW+p5@@e{W)p&-kzG`M*=1zwyAg zcKC;+`gRxpn>hS;wCexAi2J`B&wpw-hQATXUvdAffd4mY`AvAL<46F$qgeEWO6obYK_zx5joo#;P1KK!-x z{Y?n|Q{~WnZ~2ecS-2>|sMB#N`e@hOb1hT9du-OI(;yufr$>T8x&FC1S_n5;jD0vg?Vv=GA@~&M^KQ_7tn1pA zjCmO$b_YaR28SM-Qf_XW&8Wle&iG>l*x8>D2V+rB`Rk9dSV^oP;-eH4e}vhX!P?jU zUN8#SWZ1-BbIiQ^mxa_5w7D}(l=)op>NjU=d9fFE3P5j@Mazl7kV~%+wu1FFFPem> zn}*Af7efaCMMx958Q0Wztj;gT-zOXC>ayo=C$ zsM=~LowpEns0xXrc3CRUnq`raE5jOTEC;)yEKc~>Nv@^F7z1NQah6f^g7%Y1dFdiE z?@yJAIZ`vfgPFNc`--16)uc?|i~qcmRZAZ3bVx=s$@{g8GE?M3Vs5hc1`AZ^Sj%;$ zjJA-=rEuFV9fKx3!r&^1F1F0!Hn{fja*TEF2d_1duW@=ZqyQ5yS&B2Pe5Aa_-@*&T zIh%`A&QT%8){?9<_Idl@!1aWUN8IL;99b!p1 z&tm*&BfR!!bs|Gn^|8yGnA_6(eEhn@+3Z)Sc|z&3;V6Ba5w+w>9fb2L`UtH;n_3?A z1K3~Fgw1X2q#%k>ChmNj@Do9rxHEq%(j zC^}}H6ei9RIC$@7-2W;^A`n)Cxp{BLOa7SIZuv!^?+p+7ZdcZv>9+@_j}A-(mvkP{v#0wL(&8|Sx!Oqr$y>=bGO=P*`Nf@A*K`)PIqc;P(qN`o9J|_!(FaYxZ&xT4ZRzj zZst8?bXU)ae{}i#^Bz`N(*D5q&B!5zUG(W|>YsuGhl;$?y8{4%4&Bbn3#no&!+|7i z$LFt>m=qG1n&|nNz?ri798{D5uyUh_Lw9r1E4+-WCIPmFekm?$AQST1?hwDcmL*4y z_Ut(%d>Cg)m~ZU%bJO_FmMHRfP}`fPMLm{s0R8r&V&z`m>kp%iPrY+C+xIxWSgnV* zxM6r3!{1eli7c;#ky=#9#mUjftdToUfgm_zm## zy;J~3c@K^XmP(hC8%1@rMq|f}T zQeTJpGRZ;z+dI9Un$d7CK9rj$zF!;@ULxrWx|q_Gjo9<3`v=FzwyS;jn62AVZ<9Yi zU8R`@7<%kH7SSWIl|^5A`BZ^(_#j_DP&is|i@=;=MD8seIG$$l+1)UCaL0A z5|N*jfq0x@OYu-Y{*8YIvs;ra9cA(SkDD0xuZ!iN)azAXx2L$1v=IstdEP(<;5@{Z z5N?bU+~uF*+T|+));8gcPs^jbz#N>{MSqOJo8_slTL^9iaQxoG*L|(^Z1sP?KEUp4 z`{xbuSNP%0|Afn#ctQUy9wyJPJ?%Wcr`^sgsdck}ddCaXlwvesw}kvQuI_CurSnN?U2CrNu!MxUoINl_)D=>@tGc;3~M%naaSy_2y{~iF4-7RGQ}0EL6>T zn3iy++Taf^%@V!>B4K=d5;Op0L2X_EHpzK!VByJGF&kn<@*6$Ftjh0qgYyH;WP{KZ z0LIH>N!styk;5T{tr@{*Npn2-VHAO7l0|-D=DDC5T>rWCYVD|TZl>eanMeS{)HbTR z^ppg|MI^@Dd>6f?{c8_8Jd~rBPdDF`<9^Mz2@wX?g)M}IhZvJyU(87&fLT&mh!5;j z(>6Wukt0m@ffD7Jnl~X>gsL#Q!RprO5593tU$;QO9J@iTFjI zyB>y%xnpLVAFAiZp6e%rDHYm=^`wV6&_Qn=b(yh=C>BfT{V$Ux48e-=7sBmZo0m#l zVB%dQ0JqD5;#Z`VrksoGPC`2ku`vitl67c8dHmT+#S@IxR$rOKB;4L26w06?c>0rD zz_iD1=INkM`7+crUuBXaTz}Xi#{u11G?|NRCOwq=>tQcVF7&220zy0YkJ;wNHhg6{ z%W^N5)^#M8p?sd|dVARcUEVB5sr>QEDRTnThe;0c`RAhHcZ#Bl$)^D^#1}Y6#5T>M z&_g6~FpoxOD*}?P;p;cqA2L2LP_VAB^Bj#=O+Pa8K-6FGa8haBkrrxrpQAz4n{)iG z&;?lm2~?8<-xhb&HBu@JLuX7cA&%$OBhr(Zm8e1s6F!={e`l5V1zGR~1zHNYUHT)% zbuXKCPk)e0GjhN~-v_3KN*x!LTg47R;3DuKk*?C@d>Jku8xeu-@AC$*pjkZB=9f%r zrylqums?JTD3o6LITOoK2azPvztiifn}(amPqC3c=lqBPpQX-3DpVaHqYl)6S32cV z0`dIQbgme5-PfL7cwHVV_pRY#ucECBXFZ12NL8**BX+%`MD~37mw7)*KF2cP*APGn zO&l-Vf?7MjpUVW(cB3`~Ux}2|`>jawjO4V*X~`Uf#%t#Nu0q_^_>o^_UtoYX{a36??I?}a9`SckMoEewaYk1nco?v>Ona+Z zOs~$(HMCeO5ZUD-`1%e>T`O;?x9h_Z;8%T|v2u9?yK+ZciAOb6eRFt5Ip(+RGh!b< zfnHfNh3e9qVmzJ0!?rJa>F%=!Wbo~7Gt6 zibB!^Lu+3XQZ`W*lrb+d_?la@_Isz*wMxK|7Uh2nFcxjAHT!31ueN=_GT>RE1g`?R zC<>1u8J#sGj#Sqw&WQ!@Ks?AtY&?MX*A!g}_Ai(_w}1<{K$^3Q>sj$sg?zf|r=%OD z8)(fc-CK$`%Tb6?a0LRzfmasao872r4>%(c{*e9 z-IHvNIt(B^hu=O;UDAx;_^72k=vxv3w1C(7&FF$2xo^MdJ37keYpo+Ex(JDfx*y44 z3*5>XFx^?`p^PJ2fEk}I(f%psz~xJRi9q7rQeo~K+=>>t^K$p&mzFQyi3%i%j}M2MCr0;__bXSBs?6lLJxS?iQ51>{sBdjCt8|d&ZM;~OsKipb zr(h4&BT&-y+eY*-MMI2rp3`0~ouxiFFfKYZA*#^5eT1>xO}mi>T*-E1y;WlMdG9Xf zyUkiVcmTbefgJ{rKBSLY<@gs4KchH{VO~LjP?SNi90Z82ZfN}169>UFPGwv7@Bk#A z->x7SNlcu`ahiC10>iPebrtX(NhICAMIB&XWI=!TITQ`&GkjrZ&KT`Bw+1f*WH45b zg077-0}+tH>@SFq-mDpeDIIHG#fpbZBk4bEFg9Y}^<%`3{CjfS6a~8Bj|VLMze~E| zr6s5*)HadmBR_VKst+x6@B0F(!IRW(cd#GbG{@$NTe&K$}c%KZRu8g?DFHEGS*8gjyMw>ctUzX=6r)p+Y2W zHq^-(?@c}sSs={PQv$J*2L(Rbv5!R3wrS4l_M4ezbOmY%~#>T^d7Uyl-vkGq3`n{$dg*&e8YFOvpIbtFjsT zSF+SAq2z4o!L%%LLwih8mR&RV2Zwe8p3?Tj_I(;))HSk&J<)BtZ1$!5@KzfQh0BJM zI7@l8?!Lo+&T?P8wVdCccG|-DTX_vcHouTOQ#($>xbz<8 zg1JiYp-A6m!kqH|`I{4y6r7 zn$uWEJ3>RcXGkXlCh3s?MCRME;$o!GDH(>2#@b0Z1#j{0;LxU&O_9r+u`9?@YqI}l zE<1;uo$NwqZ#E=qrAG`xn)fjyI_c@`3l_l1$0eJRrpYW-!?q%T=(6em)mT`={VDvl zs}n{{i!292@3b;QQ`sgFw$=Dx=i`d&1k>#>0ytC%P-*I+L8k=PoFZ)MW(3$`7Th0b zgvX*MCtfa++^-`^H35@}!hdb|an?LRIIW!ozyJOC20hU96;y9knU{zYY)wZ_|CVj` z=go$0+Ypi$wW$}ws4>QCw)6SRXJ8cHGi;C&lFH6Q2cC(uYITc%Zk5fHO35H~$yj~7 zTS+8G;#6j7J3TKwc05|G>hh`;i5TJIiU@Vlh8&@QsvCkKZT~P)XSU*e6Hg0Q0trV& z_)JS^)}eI1+5u;x$(_mEyPEoRefZ)1tCmFf;!uEjzW{EX-4O(c!Lud+tzE7~K!e^@ zN&%XinMLL0A>vI|BU>^9yLgyAO&g2yoaj0X3Z`Pz%ov-_Fz4A1=;K|2MPkK*Y0EEO zEL^>l1m4o{LoG7lU8d?iO|5Vhv}s=UYK~z6sf;XkVIZ(%1pF)QES31^C9jpb&Vi43 zuR~)7U+7F1sosF(=AfE;#XKVB0KEB#imGzLSgk|!dELLU0*&lkH3?=9)(>yGW zo%PBiTjF)d=GU4a|6*vd*424FuzFVT_{%LeN zLP_T2;t33>4;6pgO447}&yqO0;F<(Q2?Za2P}0ANoGO9Yfw!LH2`}GDvnWi)QB-B^ z^<(6bcT}7V$8-XnF>GgvNa5|^731`B^id%rGpe=@= zSz^6RRnInEY#3JK+mO2TNC6#NR8!6x9d#{2_wBN^0m#&`!bUMgxK6!q<9d>`VYp14 zF2i)uqAhMjQ4}!3!3(nBM1uuI2Rn5~$1&jfT(Aaq7Cb#h&R4U_y@o_b2FSS(RdvFFxr9@fvaj;5*2+vAJgo zK6@j-n6n02o1$|()5N#B^bUSCskWdIIWzs#KhH{Iik@6LCEcC@im8pO&cRH8=l34N z0TDC1r-k`bpybJ4@oU}ye;L9?ie?9KY$Q4VkDGEqOT^a?-rTFH(h43iqekB(p#{>g zhDkuofrSQ|&)byO>JQ=@z z{1P{SsTj$Pp%r*Xbg4@6ZC9VswFBJxg^u?nVp}get-&J*_8i(h2WxZd>HbQcU?X~m z=a}N-upGX4)Vn@V7h*oVD!t}eyN)Y&((frGq!T*{E_7boigZjcngLPd7szl1$7=H+7UfemggD+)D zE6<1YF$2bhCndS;z~j<;;99Y1)kn4AdelA^nj9hBaZFciGpnlKTXMw`qR8-^W(~^@Sb$BdJ_0-8#Fx(wm&T>gm&Z zr3FkFQ<)~JTv5OBu%9zG@G!arSb-)CW#}_0m=-34Ee%?{z*G&xfeMs8=cj56DZ6_* zuX8=^ZrgRj8=u7oxJFCzI0CU#8h)a-nxLDi^^$zAb<`mAJG+Z{8$tWkQHHKQ7eN~h zl7ldc_K&$((UkiyH*iQ$P`wDc7#STopAdg!o~U=#5nbNw=62#+i9Yg^QAc9j0IwQd z%`+9iWvCWNpz3`Xhh?J>^fo{bw4G{^I-Y z8AWi*p`-`A>20w8$hqu|S`z;xY$x-N-=mt?-GwneNaPfsDC6+!ALF9G4!8JdNTr13 z=13Xf4)37al=5Ng9~A2If^UKMV>Z>MpXFB?%h<(0!sTE%74k`A*t90rmev8vw~tcK z$Ex2g_KMAYTJ?g>CCl%GsBP5k29IV8>2*?Hd!ZG+SVwbvz;bacx@e~^^Hv9PIS=zI z77Qlp*={l>`2oHr#i2(eA#)(k7Q6^Th*_tJuJsleQt(DG&t@-t?iBRE-u?Mzt}XNWYs>myYr;+Lqtx~F(p z&jjQNuVu;+H$i}VAkP?tL8kR+jM`-TEEQXWV?HMh{vz61eMs;hzXS0dhqys~#war8WsDM#zFE%^E$ zF7wTzpWN`S4yvfr%GEf|>26c(Q})-|ana{@kEFX7z$K7n6ft&461LPiOaO+p6^VW( zqu2%^x5@Ty=S~wyIjvcOH2Y*XvE231bPG%0R2HyA-+C=c)fss&3vu0 zA{``cz*IB6+&zO34IxEGTLJ$)6|`vTuRWzBfRC0ubHDhdZRn9XU*f_6$=OC4W=gV~ z_u67do^qS6Xox5n&tX2@fxpP8C8fEZ`=MQVy$f;0#}AV6bzgCbFH-) zVUSY3E_rVRluy;v#_coN&uK9Gk_UI^z2#8iG;DX?62yyDfnU+=^8zdki$-m~fZ&{4_bSf&ODqKG3c)_pZJ2}-|`ka`~aXlEl z0TZX`%=hy}On4Up{FSRljW$Nb-xkZK_yw0$*F}l~JJ{j$lk}u+`7Ru_1!a~pz-Yt1@yKT`Pnl((JzsP ztVAs7rr(L+R{M6BhB0w~hs>=eh55D{b#AGX6(IYVWs|&?f@r*|yZgqCj6Zjmj9S!* zOX%d9gCB~vLlnsOk<;)}X99ruG0rQ88tv*tf1K81Di%aA%#{ISvTkPrym*I&jg`gr z!06h?V!O;%1!w~5q!+C6O?@G2&MRS9Y0>PuI1G(nDxb9XN}B)rD6q%=fYrG#Pv&HS zq4_9igrZK+hjfpI7xae^>ocQa)>n5vm&f+WMKWJbRSG0uFVtr!nnCku_UsS((4c0^ zgUD)ljV7}!xOx$akKPV9HD>9|l-oAoF>*uqBy?OPbq`(B{lZ>31wEE%gUBj~13T$4 zwrJEDnNA2{`m)h`B?vrL@+ijBfFXL+8W@swt^TN_{#jkXS7V|5x)6FkBL2G`iB$9H zRLw8!$ovLhr#-tVSGV9oi{jt}i~}`=84+>slOtvi;W7te{7S;s59L5>6yY?%S;PJAM6qrGPoG^~WD{9@Vr8kuGH1 z9|k+nq||9Y!9SBLcyxL4D0iVf3N{`p5l5^{S5Yo?mwZ4wL?XNZZZ%6yl&mPk`B~wa zhFvG%oV5M2YJaY#cLnNSBoTZ*XELvO<8sCAK5&O3U&d?tU6i|Cwp}kP++&r+GsW^v z3#eJY+XM?3Auh;+>1QQyGM zo9@$s-R~7UNOMOdu{-QsVPue&Q|Guc2SN1B$iTHC=WCuEML;wc39rRrmT_2`MQ-)>*?%R;QX6A0w#e7-Qr4D9uDi|0rn4kYmbm&^98nj-^IC%7`8PS2#VpCXqp$WgB3 zS4V5!RFWg?byYRvbD?yVOxDCL#NG z0XRA6z04^Cxv`?9+5s&ef+=RfK^08wMXl*)(NU(3(CxcwwN(t*y@qosi0 zqS>F3F*QZ@_|j7UufEPXy0UFs_i<9OZ96NrZQHiZicuA-V%xS=v5kstJ9*jn-gDnM zd%yPPpWo`E_c_NHtF^Uy8}s)y;mnQuOX|8|V-Uak@l+n4J|0wHq;n&^Q_yqj++#&y zBjyj)Y>ffS=Gu4{GrPbG+^-tS?o2<2k8nQUhK#E7&rO!5=B_LGY$~orv3{$39-wTj z9>-bV!)677K^B^89QPoueq?{~6!I?JqL4tLFuquH+D5qR%B~coiL~I2ULk-&`8)_6 zVqNX7bBV%F_=YL^hkwX!GK04EF|QB1$__Gf{<8tL#nDYZAO>C0K*$qt)JIk(p6t@c zRrHLp{>P8{XQRt|()%oKl^j+7y+Z~+)G=qvJ*-6_1OOV0FhC~cxJcJ1L>-ibYRQlP zTwG)qF$TpR-kH$q= z-zZ3g{$`ZtxM{vtmw$ZzgC<*ouvP2$%u%owT%&ku!gqs+aIK8*bNE3Z87P~_q;56G z)1OL$ibe896_4>tYR6BVaa2Wwld{z^2PijpVS31&bapXPi|~OY-R|rg#Wv8Ngc|)$4U_K=V<9yqJ7E~(KDIs0VPX4hu;BrI9a$*M!yvRQ#4yg6NmGmQBL>al zs3tnF*}`REx|GWNaT&%yWM?$)pJ>qiLJ#GKm1DX67p z%BZn>S|G8OS@V>5`}J%c1pOKY)6(~sVSs}8x5lL>vhQpjgA}MY=da<1=?9`V`fRm4 zL}CRi z4AfC+X20^X5l$WOyTMW$^Lum5BwpGXZ~w=J!Qbt4ZRp$0i{R6_g&_o+9^3kI5#XL! zeHnzL%O^M)+c@wxMuT)czl5P7wy#)sh!xw7-ndY$+77)zYB5}3sIm*~lWju2brI>T zd$)Szj;34j=HB-3m9ujn^HQNBtM{Z3|e=yvwS>TNMLxs0krdo9h2l5Veib{!11;LS?MQ0XSa-;nl zlT+#+8beTU&BE7~6Hl*Rl$U*Rk4NHRazKgC%l0s_2<}qL~5FzZ`X2E;vKWyV|VnpT# zFlo`kvg!3F3r0QL%TKKzzI}vHh<2*|BpVnAK&qo6!@~GXq5Ew#9x08s_^k*|!vewK zd#LzQ!!}bCHbZZm{1joATBDFzVcIy5%S>|wEq;zdHz~{UzVb*B!*x70 z2Az;KRRDr>A1zoiDHLCT!FKAZl(h|gUoxN2jmS$XDF72g{GRh;1qq$UH zd$Bf+Byxc)eLTZn!~`+(K*1P8@$Ba)%z|!N2GlP9&xewh#mR_~q=|{wLHIgT)t>-x z1)D9QO}C6qx%#pQowqa|sENp|7o#qCOTCK2S8x8_^X~)4Fc{%0$lh#R*en}E62uv> zI>g$5sawxnx)6LcgvyB$rFV7Wt`V(DsEmQS$Z%JUm?Z8>z>N1i_8BU+_bWm`TryRU zfAO}za{urJ(ewTF5#VO%5H#SebQ^m$Dh>z?mFG=nW@+K$zE!t!JjRTRUzm(`17#*`u z1>-y*`ADao%?A|sWXiL|+sYbO1CLC87yrzFPll9%6Bov4GhomAK1gm%xbzcuY=^8A zyv?80Pkw{JjVj$(BgzY>Zli*{U!bQELpA%&f)nShYalSOg-QL*+pVPGcMOVH!W18Q zQXy_VS%6&XkI9D1$49M38Nc4-2vm^n6>r2TF*OdRziFdtfxCf zAbGK(s37`Ngvh&%{`vRQKByxlvgV=eF*Bz<5ZK=>Q*HyHySs%$>pryPCdJtJJkZ}f zeS*ti@$7`=rewR3FmV_A*mUZYxxjnS^Gg$o*R%Mzy!elBG!lw2m3<}9#D&CuvM9$? z@*8u8SoeZQos~R@h=<+lGu?J&tTjnrEE}EYlKB|>90ch>nM6A#At`h$&Uh;Ykw_YV zD{JUYl`@>xe9_6zC%X5FFT$*>)Pvd1QeDz*zPaV%?6d}nLy{vnc;K)<->nu{Buv~d za}O(wp+}kJ2yXPSq*5-5gSO?~zYeXsfi&wvKcIduNHLo$DN~ZK1;y_`JHj-c-fv5# z87j#Tbz{^HEmx+Q37RSnvgA)B2!fHNCzEc&{EZQ8F+EB89@m;_YoI~tS@fH}!0<%f z9a}3-MB=f2EF;uN<@Zl(BPe206>yz2;`?r-x8Dy;b87h~{eumxTnigfq6#3AaLefG(P*2RLh? zd8%&MA*ylsCVxWLM66ADt%usY3kZA4Xnq*Ui`X7F+z=xs!@cmfNE5cw07ccWjNPIc z?ybKc9?K_bNUZ@cLBK^kx=@^1*i)lVcDoqvmNnmJ=xWDH@shs|%*JscSJkXg<&hsS zkQ$FT(s&P}82sG!4W2J4z^`YhS16Al-RA>?)fo~IGEi!#ZG3N?K>5|>n@_4*S3JH%|N!sQzk)DnE{k|F8o7ivu|I=Ns*+%@HgOpvfC21$pw-U+OJ9-*>AGN&{!} zki{4tA|V3pwT`egzqr)RO?jdx$sjN=0<~(nBReH{Q{j{4r(cmCDP@&p2j?x*beo9{q z6T6=NX-EeJ@!j-&M29){QBo-jOa^!sXNGR_WUF|mw5I&F#kOYaiPL$bC#LzREU`@m z3Ic3xUfe;_GuMcU3MEiX-@R9$IF|8%lE$X?Pv)a>WIn+Oo}lz@Y-CV)f-UfPD=KYC znc}hht=AaHH)A&9(5W6~b!MX~i&ucW=E~SnEh|h+`QeixnxKe_DjRU8IpY$3A4QD) z47Epn3>n6ZUf)$5R(e+GhfRh>6M95$`@n3UMrD5Q+jG_~OvJ`fkU+UJ_~5AXX8wvF zKPAg_F~<+e*+^RIA+tkeadh8~;HC#km-_qN9z!t0M8WAzYswg86w)7|hHtCw^+zQk zFNr_$@;|zm6A%Q$c5qQ%+Y}v<8toC<=! zA}2p^O~1pY#GKn2b4#(B@<9g!7qk(s5nk}KR!3Kg$raTC7M0Z5nNk?mD#ek4elJQ2 z4V%PAM^3!UC*Z(Ff|bByz#El7?wS+7d26`b=tlMH`BgG|JXN@8m z0WcteWfRTL#ArsV>MCu|GsULtxd=uv!{J)q0=3_--zePh}%kiA0XE)-W{R#_b zU6!*L<5M*w+P2>RW3sB*-eW^J8{@?2E?1BIbX~3{7d?3iC3Q>SLxGGMS+ak9ta^yLv zE%l*_w-Hj;4j%MCZ}1;PM*P{Z3dNXHjJQT)+l+)k867cBR z>5QUP%i1=6iV!;s#B0E(nRv;I2IEn3oN3z{^ytG3tYI^6GX`Ux9d z8M@sobkmmjwJ=U6=Z#hGnha|6N`o`7iPK3E0@_YEfg zDSf*d*tA`TkUAyE-0PA3a20*s)2gr@3j$|yLLC4=ll7zqzYSt~m1{T9$wU{mCQ&_F zKDt5_vhuJ6tPhHBX&7hOKw^VgLRUDuiyveclN{wRXS-adL87_|3Ay$FjZRfcyA=XX z^f|e1T%+8eIQR$C%?@JldJEqG5u>02d+f(ed8DKD^k=FD1*&+sdaJ(PStlZ+USQ}vTYW~ zc9I}&2IiYrF4}B#)FfSFV?ukqkkseETz;+(mPC(sWszGt1boLr45tqR^|cza80!mN zTTU$&wqJx*x61)#NUBa)#Ttp!p?gLlg6(+=Zb-F{U&_5f(CWM#l3U~Yop~!d(Q@SO z0w%@Cgo#>)S&A87YZ}~u8tVnkL#+pE?REe;r3rz)nC8=4iOKsQ!q+im85?BtGqAqs z5|fAId<}Hyq3d~g+gEzA)RnA;8&pX1fq%ICkO`d2_5K)q4PLg=7rwGi<_WzC>*q^) zi@ymeh$_TmCOkW-ZCWPs#tOpJo3A)rHHXnnh(ms(9~YVhI;nw9k3gOCSgVkIs0!hR zgoL)So2up*X){0<(BAu>IOQ&lYxMMD&H~Ei8y+u;OPv5=*^?x{`o$M}11T>|;ZkOT%fY$uR$kODqi2;29-3>)TpxG{T_1vjbQu+#tKMD%eXUs5yl9`}<_m|huWUIA%$H@P_j%a?5e zuIE+B8V^t*RMPm6#m6ad4b|XPH?YvSJ96hp&bH@2M~r;DH1PtwhwWYMv98Nl7l-yF!WcIYXi3vO+*joL$zh` zEPk|nNR637#7i51e9V?MfY}P2R(ZQB%rFyg}cg=1q275e}EEUh~;fz}Fyl<%RlP={+#5VbRa`Q@1Kd3`jy&dYh%^9!d%!Cz>=$ztc$zdrcz4gs|NWE#^p*w%li{yWR|BfC z{$!eORfo^qLidoQzO&_|OS|nUM<37QqtXs&HPyIe5@I%i!_`Xb4b@jQveY)CFM0kX zc}nBOqRUk6-9S#cl-SZffzTRQ78g$_%ChmS5DSo<=FgEto4J&yJrap4_<@w*n56`ONxHkjQcuwu9F;a>^-^u5aP z9#ui%srs#`NEy}U#o3^2I$ANq#Bp?SLxYuqQ!C|ziLGmx(FBFI!D_VCEw@WB%TfyD zLJTL@&l<9SA@rd0MF*l+)mWV&$48y5yl*@Yyx!g6P_sE@1FSu-6&-1CM@3gcA&SB- znIAnaRQcPy$cm;EKSGAYqwgS{3QPHFyX}X5xwhP_GJv7$G!fW*zlK4T&Nmi`>)uS2&ur6Fq8=cyxES-E$8o|huN zv*5Q&2{I+y^>YsXS1DA+AH^{K83cx3F+SJiF#_BxmYBj6KqDAFYuH1^;uszx^M+i6 z&zrc^2M%7jbCu)(ws3p4K$fi6tMENx@f1#TI7IvApj$6%yaE=jo%qvh06xbrVMTTj zQd>-z${o~?Tn{!^ca7bdDQvJR9WQK4xjh+kZnp5H>_mQene$B~ssKbYBO1Y5Vsmm2 zy;)khStXwL_zXwWv528yO?waVNu{L~?D;}97lA1ZirR#k_o(7po?oR*J1@-;85bQ< z%(g_6*z7CqF9BF-{Q7#0FkJNoevXsQ4`u>OjdPFpU8#TEl=^5%fdX;k(XBu7lp&GA zMf6twGzJ>_pkD~U6Kj4{)IHG;@!zYtu7?GW5MT8fff7?(ZIy6EU9G=9UfQ?ALZ+fT zb!Kj}1co@LaHn*8)YyQu^`xL+5p-r&iyO>h%lCA}3TVx`^bb&V$XqO3)3|E$j2-ll zRDxZO#AXg+Z?W#8L-up}Y@c@#Hm*6BuzX0ra8U_kWj0@bbM`Cr|9Vr|%{#|7p81Kw z5F}3$w%#=z<#G=WzIc(hWA2d-l4EM@TWe*b&e_EK`~bLF^=v-nVt1FW?zO!By3B-b(te#JWHALXsQHg`NWh(pZcintOl(o;5=g z8;3;gZg>%&de3oO#qwn^{6e+u*xi+CWK|ivu;U{XKuL~}U|WAp2EAS-XxxsvLLb@P z;hHJmPZtTbyLmLOUG&g%RVqYXpXc(R2k1#Po=Wq8x|&x)y9rD8U{k%mR&Zh@?xsrR zGq4-&RpUy@;+&Q66=B--NLm%2yF4}8I#vY*i0y-y{~m084UzrWrTIm!ASmDG^2MY$9e5;BvPMd;a#5VO)JIT0@q#yGmp1x1Pv~HMDIZa zhLhVX7p91R{}^6k`j4tjUe@)@{fC3TaOPyQEJg1s_6f|Y2Q>Gmbd*kut4~Tei<-S@ zUc(4b*JmMv9UMRV%^FUjtamQ;g4=T^G34${@aa^x-i57E_^fv{_A}>3YdSrjWFEro zWF-f02;f>un69;#mq4i;!|`*$n7sWNbW~Y)V%y6!sJ9!1c>#+jvy z-Z;QMZa}kv`iA0A&3=b6j z78(}BvU}B!m`C0M5yKkZE*w}|vo~Kk6~L=O^08<2zz0MnPeh9$&#@Mo@?bdwxcG71 zv@YbQ81GF(RO&H?wePvp<=`EOmp+IGW)&(%#ZfIVg0NbWE`BtX+Q30buByDJp4FA! z7$3eg_v||3Hw;E6rzVz~wi2b!GWf74V}p0(Yy`p6beeKt11-hT{sw{#r3I6uc`XvA z5q#6rn58WO;2*g-kFV0+?c3Kd`h)}rn%?J$tUuzt0X0P@eFP}E81Kc4Ku{W9rzOuk zu{Xh_n)3PV5P%7t#odXV_hV?-Dh!|?{omW>X!bbc5jW#vJCimz`{&aSeEoW#cg@)H zRqPyc-w*?6McR{ymNXhX@UI1nBHusf*xEHvTbP#6!;X3??t@?jl*b)H=aYw5$HA>} zt2IY)rq`hu3&mQz2^MQRl!@R=_(#S#_<69CZbCyJ6g%_!*)u?W6Tx}mS&I_ZS>+B5 zT&|p^;ar1ZGvC>&F{+vsV&l-|>)ft_WphIe!JUsJxcVBHTle}Cp=IxI|G<9Ia~HC< z5Z1i~j^`kKE>Q{%+kjeSki<_RyM}hgz0(Wi`j?KVZY-ll7(G;zG%4F4{`mT#S0C&g zjuaqv?B#T3YQ^7I#wcmshh}ugO`-|;4 z^^ArNg4Zkzdix9Nthysc9>7P~8=HjhkU!K7MN}&mG|4<%m`!N~(OL^JDE6`nA_pKr z*#HFJ8_kdwrWbU6NeWBoJF>Xq7L}2WW!9744&2X~OeLSXtwL%uZ&!rLL1~DwgNes| zqQpD*1v{67UxV#jUVnA&PtlJs%boLTt(!ovr<2gd4X4cMu9@kdNkcn1l*gI!Crjt% z>akoqRV2W`~9ui_Hnrz`Cj@(US2l(ZUh?N)hEpWM|2N*0Kg%BNL-c|JaD6pIz^K-|mBa)8Hufas+0k zW=N1b&Z)!N__g)w1ZN<<0^TQIP8AW{0f+CJbZo~Y`Cy5AN$^XfCtxXvc>qsUD4R4> zh@uAvMrWj8aSRaw+Gir;%(q7QgIcO#ZYm=n+h#K?6Bco* zBMRPs4!*t(PtgMT9Aio|6q8cpdY6(VzDHhp1Pprl(EmOaJ)@*l{6(iH55&?WezUp& z$T87f>gkNna@3uwoP0j}{I)KR(A>{C-7cZ|dy6ch2-fL-TP*+SeQNv3;pgfLnGF!v zHfamOPYo2uy|G3CY8I6O9KLj z;irz^wqjGCuBqN4mk{2o9#gJ`%vryx0OUrLqC3CdXKMaQN)fs5;4Neb7EN{xNa{hC zDzFj_#q_nk=UOlz-uH#d+!QbgCtfDV`YbnI#24RXD(gmw`|xEwKt%?0dxGd>PEiK$ zz~m~mR~~~DuU{5Y$MQWS@~>uERzNrlt6KW*T}=G5sJ#N^1<6=GBTY#_Ky`6^v@Lh8 z3x#6Wjek^va|&o7k*McTsXo-Pg}laf5ypUu8xuq#KnIwpu)yRbT5EH$pR=d5*;-NL z;xv8_K?IU4aB% z1B}%6JJ&OS+-m)Z=q>R7`12hnRsV;tib=Ccl3%D@APcjhF`n zMP%*BW+egLf?rmI8JQxzY{BJKS$z(#=8YuwIPhCKE~!UZ5~UA4A}p_=>PR3 z`xovgdX;#x4~W2*%z_H}XGH`nH@btde~PCMQ2Z=H@VigTf?8w&Y|4!4QaiHWC$SrW&u%9I-Hze>y^V6efpu+fi_cduwxug&5t>E7s#z^BIYAP9W(Y6ck?K`8e&y z=;86%VzQ7v!ndc&OJVIeedhjo9|%rRXyq{8z8GOa*!}4|AG(5EygnET^Z-zWiSpkf zha2_>W!pQ85P*F#o!R(5;0|)^FZp>(LUAxkIDQO?TqQm{Ox~d^Ix2?e*puD(!cf7#>xhu0a?fB1{Z+M9^{kso@Dl#AH+8YJxBHJc|6L}W64l%jvfi(VFM~J}SK}{} zHOk*&x^a*i3y(=8X3yYTZRR^!dQTT$5rVER7WQAC_si&pfWn?le<+B)As^Iv-T%c1 zQ?Ych`MQH)X_YV>hO>=k8{J*;?pNiHO@jOie|2XrewuLO$O@(|Guq!K1OK|Azq0*z zwegK#W}44HZ?6=M(V}~Q<#RH0a4|Q z>70hF3?ajRqqqoJnAutX1H|PI&Z0j&iX9<2}f&iN;DM2Q&!2%?HSJo11FoGUdT2C+`#CMeK z4YdnMJaNNXMqNY>-Z@=2u}md|9tp<`Nwf1+s$*ek=Z9X zvR}X*eHr4Z6xKUN%QWR9834jFN!u*^YTSy}d#!Uk%kIDkAo3*kaT|fI`!jQ8Yr*qY z$AO=g9&ulhLDx6`7|yT3+=%*wC&xe%wrU_$a9ZVZ5NVPy8q_Ba^YuFYA*NpF-l542 z<0XXAUQMjB*y$9m^w}Ge;$;5QBd|bz^yrelbNNZO@q3cR>@*OP-L;-I z5w=6k4)Is}q6ZqqLurOb(RkfFUgBV8OpTdn*U@z9Uk7N-OyRhl(|t>3q98uIofW8= zN}IA@KHZZY0i&O+M^GfLPznRbl>0)bqMpB59?=2cF4j`!u6Cn5&DkUoqz>RkyR!sHcDV^D+-@`sxWp)<%_Fe7*?-ezVK=YKdlkEhA|Bjc@>!qqV-F zH`TWh9pxHpzqR_rN>~NN*nBV=j~uoit=8ir8CtB$*qys`#{y;>P95Vj@!I7psF@?> zfPv!woAwzY01VtQmX-^Kw~>vCT`s#&dR4vpM0o2wT0O}_$rNA29%W_~6QSG(iqsO% z-b#r#zGq{RRq-2!OD1HkC!;c13<4Qgv7SO4g>-GQ z>|48Fkk%OpddL*S6Z}#Fzp{xS^vx_{?VU5lfwd9N`S6Y47q7=Z=pSLw)tZ3xu zja1jP@cjc-D7mos7Fk+>NA#pg8szVkZ#i4Qld4ix`Wi1*rZvxV8}|v6x*`uoNW`xw zk;>14u*$V1RV@r0aEUNQKztGU%mdlDl;6z^HKn6Oq27JiGC`|JGXq3{QjoI*7zx*t zRZKz^aBd>Y4<8I&r+7omI**BKmO3>#tFz$an^NZ5jJ{v(E+(0u>P8rFLXjlVm8H0Q zH`{5rSY>WPPwGHr&I>lbd&HkW-2?`AnX-gfZfC>gEswlk*+W`yeki8=_Xz0P>Q2_TiMBC}R!9_-50+Yq0m$Nx!g00}h7IRP=)>yjxHmLsc+`5+X% z7so+6wPNrTiWGaISkmrcX|X2w_)q+MOL4dTS8vG-9p1jHdUhh*o-}?@n3KA-FPL}M z0Y=kAS5VZ#atzVGehDpj2G$SeCo`c)8^1jZqyK8fg5P}DlLHJM)h%zNL^%ed3>zdH zm4{Z??^QUAB#MIRJ6fNMt7E8o<{EdgWW^;J{0#js5fF z+Azl#FA>At$0xgJs_580tku4jmR{3!M|;HHn|CAc+>>_*{eg}iJA`R%3?F>3N~8s> zxULbf69+CLRsF_?ApK(&oCXc46s1$3?dLw5&}2=jh7^A6hu}F=R~TTiM_-)lIiTtL z7Oj$fZ6YCMfb71x^{)AASk~nM`J7gr+_WqX;@h^olf42l4OjsT6bI&js4ksTTrP6K zrGPeXKHer}M^qinyzZg9YAEGkCK#guhi?YQox0R-(>$k{;}r{?Um3#*bQ1_aD^ml5 zP@a_ca4q`7;|4ix;aU9wEt&N@xw1f-%t#7Y!2RB6Ym_|HQ_5jyxP@)^X0l-D)MUH1 zLaK@e@2euk8D~I<{m{-t)Zb$$pp3@;g!s%Rk3uE2a3m6Gg@I8LQixOZqj)74Zzso4 z+S52Y6eYPN>1+q3b|xi}l39=~CKTehpjTg1rkjF$6~z!Qj@5$tTDZ-Lh1?QGrW^TG zyx|~mflN80p;C?ez2|5_nQnyVi0lsEaAi>&t-wB4^9s$vzh72|kD@Chw-jRJ70lCg z;!`~>?YO~aAYla`-zGv8>kyvT(T$76C_O%cWfWsa#*01Uj{XAV2A|eD(Pw)S7t@(B z+z3h6d1z8VFM5BXEybh#x$DY$(TzwZc2RR^yo$x@TYrY zC0o)5qf~!5=kh48w@eB?jShne-*jkkgGbS%<{QY?CK@&I&x}m7I4d3#CiA0FpGPHz zwuEupJLQ5F$BC=ed1}awT9%y(E3^`=U5Mwa*8=yVL6`>GO0#~oweJA#7v8U%t z1P!>6$M)2v5*K`ZXw#^pWCg62pe9+z+FUYT7J%Oc5Z+EADDv;tj`sE~I>9bjIF^KyZyR9$)a7HR|FzL7YEq$cyiE~at z*&MU`;EqI>K{O%SjJ-heAF9A{gt@#=PrY%4Vz!#xrek+6rSN`M2Ga|(%pR1G+oGCh@#=hktja9waMj8j{I&#us+PJb zWr|?Ve1Gx&j;5BK27}9__}EuGRwt=bmz&fV8SgZuGZOrL)n+C_@FBGu2}ze85FyU) zmB`3enVfBzOP=ss2XtdrTwlNpXH|dz?QPX`H=MMWJ10Tq!BP(xOSYoJIMqxE6{>{` z1f{0^pzNu=Sj+l;0HNeL9?tj_#pc22H57=FNZ2mx4Nr9gfm4LgWxq&HFwW4(&$a8P zm>5*^TM#spWJ=#7L1+sr$tJB$*A@m>_oRpVXM9XtqsD~4Vt<%2hQH25RjG4`xC9rd6*FX2d{;Fv%1c*KH0-%5t}tyLr^b|T?RG?>b!s5cC;NPMd- zhZIo>hG(^vpSA#8lV#K8YDg)zp$ZPTIPQ<0mFz?8WsTu%oU_5!gY<0QCAL0Hc0%Mv z955Fg< z#Ifupq-wfo!bTuP;z6yWqp!d3)QY9`jcZ+<`pzej>j5u1%J;>{;!11sIMMjItHk-R1D6Lq=TAfae@f5g-$ru+?K84QNqFN+8l1X*h{qM_Yx6*#KQ=YJy-MCV?3b| zzC(?#)gMz?7S1_`=c3;Dc|}7Jc`d{J3_uoONUhpJe_IrBfq@0*)&l~UX7FH8#*af0!le7jFI!E!PU_V)p`FVw+tzi5EN+@)K%bH!{OK^&cC1`P z-H&_7arTG45Q)XmIK4_27$ac7V{AWk!e?}>d@r0!`ezr*!^zYP4nWBCW$gg?-;0oq zmG!HsWd;ZRm&6EQV`cm5YyEW*+Wkvo2QYuNY5uN#wPF6QF)@BM%KjF|%=*uKES!Ij zV`O1x{d{Y_(G z`}?yova)dg{W%y}**O1MgPr{!+84?H@A;TnSXsZ?g8xzXOJo0g4Q3X$FSP#OIBEb^W_#`>GkEYzz)YCDWc6| zXvWUW%*4XZ#A?iD!eYi^X!4cIh}GDb$%v7Kk)4r`=WDHv*qB*4IoR00RCWNTDZtp6 o*_6$YlbOwg!