1 (изменено: Mikki, 2012-08-29 17:53:28)

Тема: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Для собственных нужд накрапал скриптик с таймерами.
Таймеры фиксированные - 100сек, 200сек,...
Для более гибкой работы с ними есть поле "pre-show" - за сколько сек. до окончания таймера выдавать сигнал (чтобы успеть совершить необходимые операции по истечению полной длинны таймера. В моем случае - проверить выставленные параметры и приготовиться к запуску процесса исследований)
Кол-во кнопок выставляется только изнутри скрипта. В экзешнике - ни как.


Основной вопрос по скрипту - как запомнить две иконки в скомпилированном скрипте, чтобы небыло необходимости их таскать вместе с исполняемым файлом?



..да, вот только что подумал - если на машине у вас не стоит скрипт позволяющий таскать окна за любую его часть, то вы не передвинете окно таймера...извините.

added: архив с иконками почему-то не прикрепляется. Вставьте пожалуйста свои любые

#SingleInstance Force
#Persistent
#NoEnv
SetTitleMatchMode 2
DetectHiddenWindows On

qq:=5 ; Количество кнопок которые вы хотите иметь
W2Show:=0                                                        ; флаг индикации видимости второго окна


mcTray1 := "timer_stopped.ico"
mcTray2 := "timer_clock.ico"
Menu, Tray, Icon, %McTray1%,, 1
Menu, Tray, add
Menu, Tray, add, Reload
Menu, Tray, add, Show Timer, ShowTimer
Menu, Tray, Default, Show Timer
Menu, Tray, Click, 1


Gui, +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 ; окно поверх всего, без рамок,границ,заголовия
Gui, 1:Margin, 1, 1                                                ; маленькие рамки вокруг элементов и по краям окна
Gui, 1:Font, s7, Times New Roman
Gui, 1:Add, Text, x0 y-3 w21 h23 vText1, pre-`nshow
Gui, 2:+AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000  ; окно поверх всего, без рамок,границ,заголовия
Gui, 2:Add, Text, vTextSec, ---- seconds passed


GuiControlGet, But1, Pos, Text1                                    ; запоминаю позицию элемента от которого потом буду строить кнопки
But1Y += But1H

Gui, 1:Font, s7
Gui, 1:Add, Edit, x+5 y1 w30 h17 vDelay Limit Right Number, 10    ; значение: на сколько секунд заранее выдастся предупреждение об окончании таймера
Gui, 1:Font, s12
Gui, 1:Add, Text, x%But1X% y%But1Y% w0 h1                        ; невидимый элемент от которого рисуются кнопки

loop, %qq%                                                         ; задание кнопок
    Gui, 1:Add, Button, x2 y+0 w40 h20 gTime, % A_Index*100

Gui, 1:Add, Button, x45 yp+10 w10 h10 gTClose, ×                ; кнопка закрытия скрипта
GuiControlGet, Sec1, Pos, 100                                    ; определение координат расположения текста s e c o n d
GuiControlGet, Sec2, Pos, ×

Gui, 1:Font, s10
Gui, 1:Add, Text, % "x" Sec2X " y" Sec1Y , s`ne`nc`no`nn`nd        ; для красоты... текст s e c o n d

SysGet, WorkArea, MonitorWorkArea
Gui, 1:Show, % "yCenter x" WorkAreaRight-Sec2X-20                ; показываем основное окно выбора таймера

Return

; подпрограммы запуска таймера с звуковым оповещением, отображением оставшегося времени в тултипе трея, на втором окне..и доп действием по необходимости (у меня - активация нужного окна)
Time:
    Gui, Submit
    dd:=A_GuiControl-Delay                                        ; определяет на сколько реально запускать таймер, согласно значению "предпоказа"
    
    Menu, TRAY, Tip, %dd% seconds timer                            ; изменение иконки в трее и тултипа
    ;TrayTip,, %dd% seconds timer, 3  ;почему-то не отображает вообще тултипы...зарэмил
    Menu, Tray, Icon, %McTray2%,, 1

    StartTime := A_TickCount
    SetTimer TimeCount, 100                                        ;отображение кол-ва оставшихся секунд

    Sleep, dd*1000
    
    SoundBeep, 750, 100                                            ;звуки проигрываемые при окончании таймера
    SoundBeep, 750, 100
    SoundBeep, 750, 100
    
    SetTimer TimeCount, off
    
    IfWinExist, Ipc2000                                            ; действие выполняемое по окончанию скрипта
        WinActivate
        
    GuiControl, 2:Text, TextSec, %dd% seconds passed
    
    if !W2Show {                                                ; показываем окно с сообщением об окончившемся таймере
        Gui, 2:Show
        Menu, Tray, Rename, Show Timer, Hide Timer
        W2Show:=1-W2Show
        }
    SetTimer HideTimer, 3000                                    ; закрываем через 3 сек. окно с сообщением об окончившемся таймере

    Gui, 1:Show                                                    ; показываем основное окно
    Menu, Tray, Icon, %McTray1%,, 1                                ; меняем обратно иконку в трее
    Menu, TRAY, Tip,                                            ; ставим стандартный тултип
    
return

;подпрограмма подсчета оставшихся секунд в таймере
TimeCount:
    SetFormat, float, 6.1
    tt:=dd-(A_TickCount-StartTime)/1000
    GuiControl, 2:Text, TextSec, %tt% seconds left
Return

;подпрограмма отображения/убирания окна с "бегущим" таймером
ShowTimer:
    if !W2Show {
        Gui, 2:Show
        Menu, Tray, Rename, Show Timer, Hide Timer
}    else 
HideTimer:
{
        Gui, 2:Hide
        Menu, Tray, Rename, Hide Timer, Show Timer
        SetTimer HideTimer, off
}
    W2Show:=1-W2Show
Return    


;для экзешника - полезно чтобы обнулить запущенный таймер
Reload:
    Reload
Return

;завершение работы скрипта
TClose:
    ExitApp
Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

2

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Как говорил один известный персонаж, "либо что-то случилось, либо одно из двух".
То ли я неправильно понял концепцию, то ли неправильно понял скрипт.
Концепцию я понял следующим образом. Пользователь определяет время срабатывания таймера (вернее один из фиксированных временных промежутков) и время уведомления о предстоящем срабатывании таймера (точнее за какое время до этого должно быть сделано уведомление); после запуска таймера, через какое-то время скрипт уведомляет, что скоро таймер сработает; по истечении установленного периода таймер срабатывает, запуская нужное событие. То есть, установив 100 секунд и 5 секунд, получим уведомление через 95 секунд и запуск нужного события через 100.
Сущность же скрипта, так сказать его "тело", как я понял, сводится к "Sleep, dd*1000", где dd - разница между выбранным фиксированным промежутком и временем уведомления. То есть получается, что таймер сработает раньше, тогда, когда должен был просто уведомить о приближении времени срабатывания (в примере со 100 и 5 секундами - сработает в 95). С моей профанской точки зрения после этого напрашивается "Sleep, Delay*1000"
Или, как обычно, я что-то упускаю?

BIG BROTHER IS WATCHING YOU.

3

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Все правильно вы изложили,..а я - нет. В сущности термины"срабатывание таймера" и "время уведомления о срабатывании таймера" это одно и тоже. Получается параметр "pre-show" это просто возможность более гибкого настраивания таймера - на 34 сек, на 149 сек итд (да, согласен, возможность не прозрачная, а скорее - завуалированная) Просто, мне как раз и надо, чтобы действия по окончанию таймера производились за 5-10-13 сек до его окончания, чтобы я успел подготовиться за этот маленький отрезок времени (5-10-13 сек.) к действиям в реале которые надо произвести вакурат после 200 секунд (открыть/закрыть заслонку, выключить прибор и.т.д.)......Как смог так и объяснил, pardon.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

4

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Mikki пишет:

... pardon.

Да полно Вам, к чему тут пардоны? Было бы обидно, если бы я наоборот не концепцию недопонял, а скрипт.
Я просто пытаюсь родить как раз функцию-таймер с уведомлениями, но времени не хватает на сопутствующее углубление в справку. Идея состоит в том, чтобы разбить общее время ожидания на краткие промежутки и с этими малыми интервалами посредством SetTimer запускать подпрограмму, которая сверит фактически оставшееся до срабатывания время с требуемым, скорректирует и перезапустит при необходимости SetTimer, сохранит в переменную данные об оставшемся до срабатывания времени, а при наступлении требуемого времени запустит целевую подпрограмму.

BIG BROTHER IS WATCHING YOU.

5

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Korobkof, вот рыба под ваш скрипт (переделанный мой). Я в него попытался ввести перетаскивание окна левой клавишей мышки, но потому что (у меня корявые ручки) я плохо знаком с програмированием, у меня не получилось переделать его под два окна. Надеюсь у вас получится.

#SingleInstance Force
#Persistent
#NoEnv
SetTitleMatchMode 2
DetectHiddenWindows On

;qq:=5 ; Количество кнопок которые вы хотите иметь
W2Show:=0														; флаг индикации видимости второго окна
;OnMessage(WM_CHAR:=0x102, "WM_CHAR")       ;для фильтрования введенных символов = только HEX
OnMessage(WM_KEYDOWN:=0x100, "WM_CHAR") ; для фильтрования нажатия Enter


mcTray1 := "timer_stopped.ico"
mcTray2 := "timer_clock.ico"
Menu, Tray, Icon, %McTray1%,, 1
Menu, Tray, add
Menu, Tray, add, Reload
Menu, Tray, add, Show Timer, ShowTimer
Menu, Tray, Default, Show Timer
Menu, Tray, Click, 1

Gui, 2:+AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000  ; окно поверх всего, без рамок,границ,заголовия
Gui, 2:Add, Text, vTextSec, −−−− seconds passed

Gui, +AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 ; окно поверх всего, без рамок,границ,заголовия
Gui, 1:Margin, 1, 1												; маленькие рамки вокруг элементов и по краям окна
Gui, 1:Font, s10, Times New Roman
Gui, 1:Add, Text,   vText1, Timer =
Gui, 1:Add, Edit, x+5 y1 w100 h22 vDelay Limit Right Number hwndhEdit, 100	; значение: на сколько секунд заранее выдастся предупреждение об окончании таймера
Gui, 1:Add, Button, x+2 y-0 w10 h10 gTClose, ×				; кнопка закрытия скрипта

SysGet, WorkArea, MonitorWorkArea
Gui, 1:Show, % "xCenter y" WorkAreaBottom/2-40				; показываем основное окно выбора таймера

;Return

OnMessage(WM_LBUTTONDOWN:=0x201, "WindowProc")
Gui, 1:+HWNDhGUI
Gui, 2:+HWNDhGUI2
Return
 
WindowProc(wParam, lParam, uMsg, hWnd)
{
   global hGUI,hGUI2
	SetFormat IntegerFast, H
   If uMsg=0x201 
   {
     If (hWnd=%hGui%)
		PostMessage, WM_NCLBUTTONDOWN:=0xA1, HTCAPTION:=2,,, % "ahk_id"hGUI
     If (hWnd=%hGui2%)
		PostMessage, WM_NCLBUTTONDOWN:=0xA1, HTCAPTION:=2,,, % "ahk_id"hGUI2
	}
	SetFormat IntegerFast, D
}


WM_CHAR(wp, lp, msg, hwnd)
{
   global hEdit
   static IsCheck
   if (hwnd != hEdit)
      return
 
	if % msg=0x100 And wp=0xD
		GoSub, Time	
}

; подпрограммы запуска таймера с звуковым оповещением, отображением оставшегося времени в тултипе трея, на втором окне..и доп действием по необходимости (у меня - активация нужного окна)
Time:
	Gui, Submit
	dd:=Delay										; определяет на сколько реально запускать таймер, согласно значению "предпоказа"
	
	Menu, TRAY, Tip, %dd% seconds timer							; изменение иконки в трее и тултипа
	Menu, Tray, Icon, %McTray2%,, 1

	StartTime := A_TickCount

	SetTimer TimeCount, 100										;отображение кол-ва оставшихся секунд
	Sleep, dd*1000
	SetTimer TimeCount, off
	
	GuiControl, 2:Text, TextSec, %dd% seconds passed
	SoundBeep, 750, 100											;звуки проигрываемые при окончании таймера
	SoundBeep, 750, 100
	SoundBeep, 750, 100

	if !W2Show												; показываем окно с сообщением об окончившемся таймере
		Gosub, ShowTimer
	SetTimer HideTimer, 3000									; закрываем через 3 сек. окно с сообщением об окончившемся таймере

	Gui, 1:Show													; показываем основное окно
	Menu, Tray, Icon, %McTray1%,, 1								; меняем обратно иконку в трее
	Menu, TRAY, Tip,											; ставим стандартный тултип	
	return

;подпрограмма подсчета оставшихся секунд в таймере
TimeCount:
	SetFormat, float, 6.1
	tt:=dd-(A_TickCount-StartTime)/1000
	GuiControl, 2:Text, TextSec, %tt% seconds left
	Return

;подпрограмма отображения/убирания окна с "бегущим" таймером
ShowTimer:
	if !W2Show {
		Gui, 2:Show
		Menu, Tray, Rename, Show Timer, Hide Timer
}	else 
HideTimer:
{
		Gui, 2:Hide
		Menu, Tray, Rename, Hide Timer, Show Timer
		SetTimer HideTimer, off
}
	W2Show:=1-W2Show
	Return	


;для экзешника - полезно чтобы обнулить запущенный таймер
Reload:
	Reload
	Return

;завершение работы скрипта
TClose:
	ExitApp
Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

6 (изменено: Mikki, 2012-08-29 19:13:00)

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

creature.ws, спасибо вам за всестороннюю помощь, однако понять, что делать дальше с полученными объектами/функциями после обработки иконок, я пока не в силах. (кроме того, что скрипт может создать иконку и обращаться к ней...я правильно понял?)

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

7

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

что делать дальше с полученными объектами/функциями после обработки иконок

Достаточно включить вторую функцию в свой скрипт и вызывать её при необходимости создать файл иконки.

8

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Mikki пишет:

...как запомнить две иконки в скомпилированном скрипте, чтобы небыло необходимости их таскать вместе с исполняемым файлом?

Str:="some tiptext...`nstate: ", TipInfo1:=Str "in action", TipInfo2:=Str "is idle"
IconHex1= ; green_icon
(Join
00000100010010100000010020006804000016000000280000001000000020000000010020000000000040040000
00000000000000000000000000000000353C00FF353C00FF353C00FF363C00FF353C00FF353C00FF353C00FF363B
00FF363B00FF363C00FF353C00FF363C00FF353C00FF363C00FF363C00FF353C00FF374201FF384300FF374200FF
374200FF323131FF323231FF384200FF374200FF384200FF374200FF384200FF323132FF323232FF374200FF3842
01FF384200FF3A4A00FF3A4A00FF394A00FFF3F4F4FFF4F3F4FF3A4A00FF394900FF394A00FF394A00FF3A4900FF
F3F3F3FFF3F3F3FF394901FF2E2E2EFF3A4900FF3A4900FF3D5200FF3C5201FFEEEEEEFF2C2B2CFF3C5200FF3C51
00FF3C5200FF2B2B2BFF2C2B2BFF2C2B2BFF3C5200FF3C5200FFEFEEEEFF2B2B2BFF3C5201FF3C5200FF3F5B00FF
3F5B01FFE9E8E8FF282728FF3F5B01FF3F5B01FFE9E9E9FFE8E9E9FFE9E8E9FF3F5B01FF282728FF3F5B01FFE8E9
E9FF282827FF3F5B01FF3F5B01FF426500FF426501FFE2E2E2FF232424FF416401FFE2E2E2FF416501FF426401FF
426500FFE2E2E2FF232324FF426500FFE2E2E2FF232324FF416401FF426500FF456E01FF456F01FFDCDCDCFF1F20
1FFF456F00FF456E01FF456F00FF456F00FF456E01FFDCDCDCFF20201FFF456F00FFDCDCDCFF201F1FFF446F01FF
456E00FF487901FF487901FFD5D6D6FF487901FF487901FF487901FF487901FF1B1B1BFF1B1B1BFFD5D5D6FF4879
00FF487901FFD5D6D5FF487900FF1B1B1BFF487900FF4B8401FFCFCFCFFF4B8401FF171717FF4B8301FF4B8401FF
CFCFCFFFCFCFCFFFCFCFCFFF4B8401FF4B8301FF4B8301FF4B8301FFCFCFCFFF4B8301FF4B8401FF4E8E01FF4F8D
01FFC8C9C8FF121312FF4E8D01FFC8C8C9FF131213FF4E8D01FF4E8D01FF4E8E01FF4E8E01FF4F8D01FFC9C9C9FF
131312FF4E8E01FF4E8E01FF519701FF519701FFC3C2C3FF0F0E0FFF519801FFC3C2C2FF0F0F0FFF519702FF5197
01FF519701FF0E0E0FFF519701FFC2C2C3FF0F0F0FFF519701FF519702FF54A101FF54A001FFBDBDBDFF0B0B0BFF
54A001FFBDBDBCFF54A001FF0B0B0BFF0B0B0BFFBDBCBCFF54A002FF54A001FFBDBCBDFF0B0B0BFF54A001FF54A0
02FF57A902FF56A902FFB8B7B7FF070707FF57A901FF56A901FFB7B7B8FFB8B7B7FFB7B8B7FF56A901FF56A801FF
56A801FFB8B8B8FF080708FF57A901FF56A901FF58B001FF58B001FFB3B3B2FF59B001FF050504FF050504FF59B0
02FF58B001FF59B001FF58B002FF59B001FF040505FFB3B3B2FF58B001FF58B002FF59B001FF5BB601FF5BB601FF
5BB601FFAFAFAFFFAFAFAFFF5BB602FF5BB601FF5BB601FF5BB601FF5AB602FFAFAFAFFFAFAFAFFF5AB601FF5BB6
01FF5BB602FF5BB602FF5CBB01FF5CBB02FF5CBB02FF5CBB01FF5CBB02FF5CBB02FF5CBB01FF5CBB02FF5CBB01FF
5CBB02FF5CBB01FF5CBB02FF5CBB01FF5CBB02FF5CBB02FF5CBB02FF000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
)
IconHex2= ; red_icon
(Join
00000100010010100000010020006804000016000000280000001000000020000000010020000000000040040000
0000000000000000000000000000000004045DFF04045DFF04045DFF04045DFF04045DFF03045DFF04045DFF0404
5DFF04045DFF04045EFF04045EFF03045DFF04045DFF04045DFF04045DFF04035DFF090865FF090965FF090966FF
080965FF323131FF323231FF080966FF090865FF090865FF080965FF090965FF323132FF323232FF090865FF0809
65FF090965FF0F0F6EFF0F0F6EFF0E0E6EFFF3F4F4FFF4F3F4FF0F0E6FFF0F0F6FFF0E0E6EFF0E0F6EFF0F0E6FFF
F3F3F3FFF3F3F3FF0F0F6FFF2E2E2EFF0F0E6EFF0E0F6FFF151579FF161579FFEEEEEEFF2C2B2CFF161579FF1515
79FF161579FF2B2B2BFF2C2B2BFF2C2B2BFF161579FF151579FFEFEEEEFF2B2B2BFF151579FF151679FF1D1D84FF
1D1D85FFE9E8E8FF282728FF1C1C85FF1C1C85FFE9E9E9FFE8E9E9FFE9E8E9FF1D1C85FF282728FF1D1C85FFE8E9
E9FF282827FF1C1D85FF1D1C85FF252491FF252491FFE2E2E2FF232424FF242491FFE2E2E2FF242591FF252491FF
252492FFE2E2E2FF232324FF242491FFE2E2E2FF232324FF252491FF252491FF2D2D9EFF2C2D9EFFDCDCDCFF1F20
1FFF2D2D9EFF2C2D9EFF2C2C9EFF2C2C9EFF2C2C9EFFDCDCDCFF20201FFF2C2C9DFFDCDCDCFF201F1FFF2D2D9EFF
2C2C9EFF3535ABFF3534ABFFD5D6D6FF3534ABFF3534ABFF3435ABFF3434ABFF1B1B1BFF1B1B1BFFD5D5D6FF3435
ABFF3434ABFFD5D6D5FF3535ABFF1B1B1BFF3534ABFF3C3CB8FFCFCFCFFF3D3DB8FF171717FF3D3DB9FF3C3CB8FF
CFCFCFFFCFCFCFFFCFCFCFFF3D3CB8FF3D3CB8FF3D3CB8FF3D3CB8FFCFCFCFFF3C3CB8FF3D3DB8FF4545C5FF4545
C5FFC8C9C8FF121312FF4544C5FFC8C8C9FF131213FF4544C5FF4545C5FF4545C4FF4545C5FF4445C5FFC9C9C9FF
131312FF4545C5FF4545C4FF4D4CD1FF4C4CD1FFC3C2C3FF0F0E0FFF4D4CD1FFC3C2C2FF0F0F0FFF4D4CD1FF4C4C
D2FF4D4CD1FF0E0E0FFF4D4CD1FFC2C2C3FF0F0F0FFF4D4CD1FF4D4CD2FF5354DCFF5354DDFFBDBDBDFF0B0B0BFF
5354DDFFBDBDBCFF5453DDFF0B0B0BFF0B0B0BFFBDBCBCFF5454DDFF5353DDFFBDBCBDFF0B0B0BFF5454DDFF5454
DDFF5A5AE8FF5A5AE7FFB8B7B7FF070707FF5A5AE8FF5A5AE8FFB7B7B8FFB8B7B7FFB7B8B7FF5A5AE7FF5A5AE8FF
5B5BE8FFB8B8B8FF080708FF5B5AE7FF5B5AE7FF6060F1FF6060F1FFB3B3B2FF6060F1FF050504FF050504FF6060
F1FF6160F1FF6060F1FF6060F1FF6060F1FF040505FFB3B3B2FF6060F1FF6061F1FF6060F1FF6565F8FF6565F9FF
6565F9FFAFAFAFFFAFAFAFFF6565F9FF6665F9FF6565F9FF6566F9FF6565F8FFAFAFAFFFAFAFAFFF6665F9FF6565
F9FF6565F9FF6565F9FF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF
6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF6969FFFF000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
)
NumPut(VarSetCapacity(NOTIFYICONDATA, A_PtrSize=4 ? 26:48, 0), NOTIFYICONDATA, 0)
Loop, 2
{
   ++Counter
   VarSetCapacity(IconData%A_Index%, nSize%A_Index%:=StrLen(IconHex%A_Index%)//2)
   Loop, % nSize%A_Index%
      NumPut("0x"SubStr(IconHex%Counter%, 2*A_Index-1, 2), IconData%Counter%, A_Index-1, "UChar")
   hIcon%A_Index%:=DllCall("CreateIconFromResourceEx", "Ptr", &IconData%A_Index%+22
                                                     , "UInt", NumGet(&IconData%A_Index%+14)
                                                     , "Char", 1
                                                     , "UInt", 0x30000
                                                     , "Int", 0
                                                     , "Int", 0
                                                     , "UInt", 0x40
                                                     , "Ptr")
}
IconHex1:=IconHex2:=IconData1:=IconData2:=nSize1:=nSize2:=Counter:=""
TrayIcon(A_ScriptHwnd, 1, 0x404, hIcon2, TipInfo2, 0)

#NoTrayIcon
FormatTime, TFormat,, ShortDate
Hotkey, Esc, ExitScript
OnExit, ExitScript
Menu, Tray, NoStandard
Menu, Tray, Add, Show, Toggle
Menu, Tray, Default, Show
Menu, Tray, Click, 1
Menu, Tray, Add
Menu, Tray, Add, Exit (Esc), ExitScript
Gui, +AlwaysOnTop -Caption +Border +ToolWindow HWNDhGUI
Gui, Font, s7 Bold cBlack
Gui, Add, Text, w75 h26 Center, % "use tray icon"
Gui, Show
Sleep, 1000
Goto, ByPass
Toggle:
   SetTimer, Timer, % (IsState:=!IsState) ? 1000:"Off"
   Menu, Tray, Rename, % IsState ? "Show":"Hide", % IsState ? "Hide":"Show"
   TrayIcon(A_ScriptHwnd, 1, 0x404, IsState ? hIcon1:hIcon2, IsState ? TipInfo1:TipInfo2, 1)
   Hotkey, Esc, ExitScript, % IsState ? "Off":"On"
ByPass:
   Gui, % IsState ? "Show":"Hide"
Timer:
   ControlSetText, Static1, % A_Hour ":"A_Min "."A_Sec "`n"TFormat, % "ahk_id"hGUI
   Return

ExitScript:
   Loop, 2
      DllCall("DestroyIcon", "Ptr", hIcon%A_Index%)
   ExitApp

TrayIcon(hWnd, uID, uCbMsg=0, hIcon=0, szTip="", dwMsg=2)
{
   global NOTIFYICONDATA
   NumPut(hWnd,   NOTIFYICONDATA,  A_PtrSize=4 ?  4: 8)
   NumPut(uID,    NOTIFYICONDATA,  A_PtrSize=4 ?  8:16)
   NumPut(1|2|4,  NOTIFYICONDATA,  A_PtrSize=4 ? 12:20)
   NumPut(uCbMsg, NOTIFYICONDATA,  A_PtrSize=4 ? 16:24)
   NumPut(hIcon,  NOTIFYICONDATA,  A_PtrSize=4 ? 20:32)
   StrPut(szTip,  &NOTIFYICONDATA+(A_PtrSize=4 ? 24:40), 64, A_IsUnicode ? "UTF-16":"")
   DllCall("shell32\Shell_NotifyIcon"(A_IsUnicode ? "W":"A"), "Int", dwMsg
                                                            , "Ptr", &NOTIFYICONDATA)
}

9

Re: AHK: Скрипт Таймера и сохранение иконок втеле скомпил.-го скрипта

Пока что, окончательный вариант. Иконки создаются, окна перетаскиваются, таймер считается и отображается.

; Скрипт запускающий один таймер единовременно.
; Главное окно и окно таймера перетаскиваются левой клавишей мышки.
; При нажатии на текст "pre-show" окошко сворачивается в широкую полоску
;
;Т.к. таймеры жестко привязаны к своим значениям (100сек, 200сек итд) 
; создано поле ввода в котором можно выставлять значение, на величину которого
; уменьшается длинна таймера. Подобное "иезуитское" построенние алгоритма 
; программы обусловлено необходимостью быстро запускать таймеры различных 
; фиксированных величин - 100, 200, 300 сек. 
;
; В скрипте использованы алгоритмы от teadrinker, Robert Eding. Помощь creature.ws, Grey и др
;

#SingleInstance Force
#Persistent
#NoEnv
SetTitleMatchMode 2
DetectHiddenWindows On

global hGui1,hGui2,moved

OCR_NORMAL := 32512    ; обычный курсор в виде стрелки
OCR_CROSS := 32646    ; курсор в виде креста
NORMAL_CursorHandle := DllCall( "LoadCursor", Uint,0, Int, OCR_NORMAL) ; загрузить системный OCR_NORMAL-курсор
CROSS_CursorHandle  := DllCall( "LoadCursor", Uint,0, Int, OCR_CROSS)   ; загрузить системный OCR_CROSS-курсор

qq:=5 ; Количество кнопок которые вы хотите иметь

;Создает в папке где находится скрипт два файла иконок
Extract_ico_start(Func("Get_ico_start").("Directory")"\"Func("Get_ico_start").("Name"),DumpData = 0)
Extract_ico_stopped(Func("Get_ico_stopped").("Directory")"\"Func("Get_ico_stopped").("Name"),DumpData = 0)


mcTray1 := "_timer_stopped.ico"
mcTray2 := "_timer_start.ico"
Menu, Tray, Icon, %McTray1%,, 1
Menu, Tray, add
Menu, Tray, add, Reload						; добавляет меню перезапуска. Удобно для экзешника.
Menu, Tray, add, Show Timer, ShowTimer
Menu, Tray, Default, Show Timer
Menu, Tray, Click, 1


Gui, 1:+AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 hwndhGUI1 ; окно поверх всего, без рамок,границ,заголовия
Gui, 1:Margin, 1, 1												; маленькие рамки вокруг элементов и по краям окна
Gui, 1:Font, s7, Times New Roman
Gui, 1:Add, Text, x2 y-3 w25 h25 vText1 gRollWindow , pre-`nshow
Gui, 2:+AlwaysOnTop +LastFound -Caption +Toolwindow -E0x08000000 hwndhGui2 ; окно поверх всего, без рамок,границ,заголовия
Gui, 2:Add, Text, vTextSec, −−−− seconds passed


GuiControlGet, But1, Pos, Text1									; запоминаю позицию элемента от которого потом буду строить кнопки
But1Y += But1H

Gui, 1:Font, s7
Gui, 1:Add, Edit, x+0 y1 w30 h17 vDelay Limit Right Number, 10	; значение: на сколько секунд заранее выдастся предупреждение об окончании таймера
Gui, 1:Font, s12
Gui, 1:Add, Text, x%But1X% y%But1Y% w0 h1						; невидимый элемент от которого рисуются кнопки

loop, %qq% 														; задание кнопок
	Gui, 1:Add, Button, x2 y+0 w40 h20 gTime , % A_Index*100 ;+HWNDhB%A_Index% 

Gui, 1:Add, Button, x45 yp+10 w10 h10 gTClose, ×				; кнопка закрытия скрипта
GuiControlGet, Sec1, Pos, 100									; определение координат расположения текста s e c o n d
GuiControlGet, Sec2, Pos, ×

Gui, 1:Font, s10
Gui, 1:Add, Text, % "x" Sec2X " y" Sec1Y , s`ne`nc`no`nn`nd		; для красоты... текст s e c o n d

SysGet, WorkArea, MonitorWorkArea
Gui, 1:Show, % "yCenter x" WorkAreaRight-Sec2X-20				; показываем основное окно выбора таймера

WinGetPos,,,, W1Height, ahk_id%hGUI1%,

Return



; подпрограммы запуска таймера с звуковым оповещением, отображением оставшегося времени в тултипе трея, на втором окне..и доп действием по необходимости (у меня - активация нужного окна)
Time:
    WinMove(WinID)
    if moved
        return
	Gui, Submit
	dd:=A_GuiControl-Delay										; определяет на сколько реально запускать таймер, согласно значению "предпоказа"
	
	Menu, TRAY, Tip, %dd% seconds timer							; изменение иконки в трее и тултипа
	Menu, Tray, Icon, %McTray2%,, 1

	StartTime := A_TickCount
	SetTimer TimeCount, 100										;отображение кол-ва оставшихся секунд
	SetTimer Time2, % dd*1000									;Запуск основного таймера
Return
	
Time2:	
	SetTimer Time2, off											
	SetTimer TimeCount, off										;отключаем показ таймера
	
	GuiControl, 2:Text, TextSec, %dd% seconds passed
	SoundBeep, 750, 100											;звуки проигрываемые при окончании таймера
	SoundBeep, 750, 100
	SoundBeep, 750, 100
	
	IfWinExist, Ipc2000											; действие выполняемое по окончанию таймера
		WinActivate
		
	if (!W2Show)												; показываем окно с сообщением об окончившемся таймере
		Gosub, ShowTimer
	SetTimer ShowTimer, 3000									; закрываем через 3 сек. окно с сообщением об окончившемся таймере

	Gui, 1:Show													; показываем основное окно
	Menu, Tray, Icon, %McTray1%,, 1								; меняем обратно иконку в трее
	Menu, TRAY, Tip,											; ставим стандартный тултип	

	return

;подпрограмма подсчета оставшихся секунд в таймере
TimeCount:
	SetFormat, float, 6.1
	tt:=dd-(A_TickCount-StartTime)/1000
	GuiControl, 2:Text, TextSec, %tt% seconds left

	Return

;подпрограмма отображения/убирания окна с "бегущим" таймером
ShowTimer:
	if (W2Show:=!W2Show) {
		Gui, 2:Show
		Menu, Tray, Rename, Show Timer, Hide Timer
}	else {
		Gui, 2:Hide
		Menu, Tray, Rename, Hide Timer, Show Timer
		SetTimer ShowTimer, off
}
	Return	

;подпрограмма сворачивания/разворачивания главного окна 
RollWindow:
    WinMove(WinID)
    if moved
        return
	if (W1Show:=!W1Show) 
		Gui, 1:Show, % "h" But1H-6
	else 
		Gui, 1:Show, % "h" W1Height

	Return


;функция отвечающая за перетягивание окна	
WinMove(WinID)
{
	global CROSS_CursorHandle, OCR_NORMAL
    CoordMode, Mouse
    SetWinDelay, -1
    SetBatchLines, -1
    MouseGetPos, Start_X, Start_Y
    WinGetPos, X_Win, Y_Win,,, ahk_id %WinID%
   While GetKeyState("LButton", "P")
    {
		if !hand 									;изменение вида курсора при перетягивании окна
			DllCall("SetSystemCursor", UInt, CROSS_CursorHandle, Int, OCR_NORMAL) , hand:=1
		MouseGetPos, Current_X, Current_Y
        moved := (Current_X != Start_X || Current_Y != Start_Y) ? 1 : ""
        WinMove, ahk_id %WinID%,, X_Win + Current_X - Start_X, Y_Win + Current_Y - Start_Y
 		Sleep, 10
    }
	if hand									;изменение вида курсора при окончании перетягивания окна
		DllCall("SystemParametersInfo", UInt, SPI_SETCURSORS:=0x57, UInt, 0, UInt, 0, UInt, 0), hand:=""
}

;передвижение окна левой клавишей мышки 
~LButton::
    MouseGetPos,,, WinID
    if (WinID = hGui1||WinID = hGui2)
		WinMove(WinID)
return

;-------------Функции создания иконок----------------------------------------------------------------
;-------------Created by Robert Eding: Rseding91@yahoo.com-------------------------------------------

Get_ico_start(What)
{
	Static Size = 32038, Name = "_timer_start.ico", Extension = "ico", Directory = A_WorkingDir
	;This function returns the size(in bytes), name, filename, extension or directory of the file stored depending on what you ask for.
	If What = Size
		Return Size
	Else If What = Name
		Return Name
	Else If What = Extension
		Return Extension
	Else If What = Directory
		Return Directory
}

Extract_ico_start(Filename,DumpData = 0)
{
	;This function "extracts" the file to the location+name you pass to it.
	Static HasData = 1, Base64Decode, Out_Data, Hex_Mcodex86 = "558bec518365fc00568b75088a1684d20f86ac000000578b7d0c5333db33c084d2764d32c984c975318aca80e92b4680f94f770c0fb6ca8b55108a4c11d5eb02b1240fb6d180ea3d80f9240f94c1fec923ca8a1684d277cd84c9760943fec9884c0508eb05c6440508004083f8047caf83fb027c4b8a45098a4d08c0e102c0e8040ac18a4d0a88074783fb027e108a55098ac1c0e802c0e2040ac288074783fb037e09c0e1060a4d0b880f478b45fc8a1684d28d4418ff8945fc0f875bffffff5b5f8b45fc5ec9c3"
	Static Hex_Mcodex64 = "48895C241048897C2418440FB60933DB488BFA4C8BD14584C90F84BC000000904533DB33C94584C9744F32C00F1F400084C0752C418D41D549FFC23C4F7712410FB6C1420FB64400D53C24740404C3EB0232C0450FB60A4584C975D484C0740B41FFC3FEC888440C08EB05C6440C080048FFC14883F9047CAC4183FB027C5C0FB65424090FB644240848FFC7C0E0020FB6CAC0E9040AC8884FFF0FB64C240A4183FB027E11C0E2040FB6C1C0E8020AC248FFC78847FF4183FB037E0DC0E1060A4C240B48FFC7884FFF450FB60A428D5C1BFF4584C90F8545FFFFFF488B7C24188BC3488B5C2410C3"
	Static CD = "|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\]^_``abcdefghijklmnopq"
	Static 1="AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAAIAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8BbGppKZOQj5eem5nfop+d/6GenP+cmZjfko+Ol2xqaSn///8B////Af///wH///8B////Af///wH///8BioiHd6uop/m1srD/tbKw/7Sxr/+xr63/sK2r/6+sqv+loqH5h4SDd////wH///8B////Af///wH///8BkY+Ogbm2tf+8urj/tLKw/7y6uf/OzMz/0M/P/8jHxv/DwsH/sa6s/6ypp/+IhoWB////Af///wH///8BgX9+Pbu5uP3DwL//ube2/+bl5f//////////////////////6enp/9DPzv+ysK7/p6Sj/Xh1dT3///8B////Aa2rqrnIxsX/vLq5/+vr6//////////////////////////////////t7e3/ycfH/6+sqv+XlJO5////AVpYWA/Avr37zMrJ/8zLy////////////////////////////////////////////9TT0v+zsK7/o6Ce+1pYWA9xb2850M/O/87My//c3Nz/////////////////zczM/8TExP/////////////////Z2dj/uLa0/66rqf9pZ2c5fHp6P9XT0v/OzMz/39/f/////////////////7e2tv+np6f/////////////////3d3d/7GurP+uq6n/cnBwP2BeXiPX1dX/zcvK/9bV1f////////////////+0tLT/rq6u///////7+/v//f39/9DPzv+wrav/qqel/15cXCP///8By8rJ4cvJyP+9u7r//f39///////o6Oj/y8vL/8rKyv/o6Oj/9PT0/7e2tv+pp6b/r6yq/5yZl+H///8B////AaqpqHfY19b/xMLB/8TDw//+/v7/5ubm/9vb2//j4+P/tLOz//Ly8v+/vr3/sK2r/66rqf+Kh4Z3////Af///wFaWFgJxMPD1cbEw/+9u7r/u7m4/9va2v/CwcH/y8vL/9fX1/+bmZj/r6yq/6+sqv+YlZTVWlhYCf///wH///8B////AXBubR3Fw8PZx8XD/7m2tP+3tLL/qael/6ekov+xrqz/sK2r/66rqf+bmJfZa2lpHf///wH///8B////Af///wH///8BX11dD7Gwr5XEw8L3xsTC/7Sxr/+vrKr/rqup/6Kfnv+Qjoz/a2loR////wH///8B////Af///wH///8B////Af///wH///8BWlhYEXp3d2+npKP/j42L/3Vzcm+gn56PsrCu+4eFhG////8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgxxcPC/6Gfnf9aWFgxYmBgE3Vzcx////8B////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYDWFeXlt9e3qnjIqJ15COjf+YlpT/mJWU/5CNjP+MiojXfXp6p2BeXltaWFgN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYEW9sa4+QjYzzqqel/6+sqv+wrav/r62r/6+tq/+vrKr/rqup/66rqf+tqqj/qaak/46Mi/NubGuPWlhYEf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWZkY1OOi4rrsK2r/7Owrv+zsK7/s7Cv/7Sxr/+zsK7/s7Cu/7GurP+wrav/r6yq/6+sqv+uq6n/rqup/6ypp/+MiYjrZWNjU////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFxbm6LpKKg/7azsf+3tLP/uLWz/7i1s/+3tbP/t7Sy/7azsf+1srH/s7Cu/7Kvrf+xrqz/sK6s/7Ctq/+vrKr/rqup/66rqf+fnJr/b21si////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BdHFxj6+sq/+6t7b/u7i3/7u5t/+6t7b/ure2/7m3tf+tqqn/mZaV/6SioP+mpKP/oqCf/8G/vf/Pzs3/uLa0/7CurP+wrav/rqup/66rqf+loqD/cG5uj////wH///8B////Af///wH///8B////Af///wH///8B////AW5sa3Oxr63/vbu5/767uv++u7r/vru6/7u5t/+hn57/sbCw/9jX1//8/Pz////////////8/Pz/2NfX/7m4uP/IyMf/3d3c/7Wzsf+wrav/rqup/66rqf+koZ//a2hoc////wH///8B////Af///wH///8B////Af///wFaWFgvoqCf+8G+vf/Bv77/wb+9/8G+vf+zsbD/qKen//Lx8f////////////////////////////////////////////Lx8f+2tbX/4eHh/727uf+wrav/rqup/66rqf+VkpD7WlhYL////wH///8B////Af///wH///8B////AYqIh7/EwsH/xcPC/8TCwf/EwsH/s7Cw/728vP/////////////////////////////////////////////////////////////////DwsL/3d3d/727uf+wrav/rqup/62qqP9/fXy/////Af///wH///8B////Af///wFaWFg/ube2/8jGxf/HxcT/xsTD/8G/vf+zsrL///////////////////////////////////////////////////////////////////////////+7urr/6Ojn/7Kvrf+vrKr/rqup/6Genf9aWFg/////Af///wH///8B////AYyKiaPLycj/ysjH/8nHxv/IxsX/oqGg//z8/P////////////////////////////////////////////////////////////////////////////z8/P+3t7f/0tHQ/7Ctq/+uq6n/raqo/3x5eaP///8B////Af///wFaWFgFpKKh883Lyv/Mysn/y8nI/7+9vf/NzMz//////////////////////////////////////////////////////////////////////////////////////8zMzP/Y19b/sK2r/6+sqv+uq6n/joyL81pYWAX///8B////AVpYWDO/vbz/z83M/87My//Mysn/qKem//z8/P///////////////////////////////////////////////////////////////////////////////////////Pz8/66trf+9u7n/r6yq/66rqf+hnp3/WlhYM////wH///8BaWdnX9HPzv/Pzc3/zszL/83Lyv+3tbX////////////////////////////////////////////o5+f/5OTk////////////////////////////////////////////r62s/8TCwP+wrav/rqup/62qqP9kYmJf////Af///wF4dnZ/0tDP/9DOzf/Pzcz/zcvK/769vf///////////////////////////////////////////05NTf8uLi7///////////////////////////////////////////+6ubj/vbu5/7Ctq/+uq6n/raqo/25sbH////8B////AX99fX/T0dD/0c/O/8/Nzf/OzMv/wsHB////////////////////////////////////////////ZGJi/0hHR////////////////////////////////////////////7++vf+xr63/sK2r/66rqf+tqqj/dnNzf////wH///8BeHZ2e97d3P/Qzs3/z83M/87My/++vb3///////////////////////////////////////////97enr/WVhY////////////////////////////////////////////urm4/7Gvrf+wrav/rqup/62qqP9ubGx7////Af///wFkYmJb5uXk/9DOzf/Pzcz/zcvK/7Oysv///////////////////////////////////////////39+fv9wcHD///////////////////////////////////////////+rqaj/sa6s/7Ctq/+uq6n/raqo/2BeXlv///8B////AVpYWC/Rz8//1dTT/87My//Mysn/q6qp//n5+f/////////////////////////////////V1dX/fn19/3FwcP/Y19f/////////////////7+/v//f39///////+fn5/5yZmP+xrqz/r6yq/66rqf+enJr/WlhYL////wH///8BWlhYBa+ure/m5eT/zMrJ/8vJyP/DwcD/xMPD////////////////////////////1dTU/+Xk5P+amZn/mJiY/+Xk5P/V1NT////////////V1dX/fXx8/8PCwv/DwsL/rKmn/7Ctq/+vrKr/rqup/46Liu9aWFgF////Af///wH///8BhIKCm/X09P/Lycj/ycfG/8jGxf+joqH/9/f3///////////////////////Qz8///////7Cvr/+urq7//////9DPz//////////////////5+fn/pKOj/4eEg/+xrqz/sK2r/66rqf+tqqj/d3V0m////wH///8B////Af///wFaWFgvz83N/9zb2v/HxcT/xsTD/8PBv/+rqqr//////////////////////9PS0v//////tra2/8TDw///////zc3N/5+env////////////////+opqb/rqyq/7CurP+vrKr/rqup/52amf9aWFgv////Af///wH///8B////Af///wGKiYiv9fX1/8fFxP/EwsH/xMHA/7m3tv+vrq7//Pz8////////////yMfH//////+6urr/zczM///////Ix8f/nJub/9DPz//8/Pz/rayr/6mnpf+xrqz/sK2r/66rqf+tqqj/e3l4r////wH///8B////Af///wH///8B////AVpYWCG3tbXz5eXk/8G/vv/Bv73/wb69/7q4tv+koqL/5eTk///////39/f/w8LC/6Sjo/+3trb/w8LC//f39//09PT/fXx8/6Cenf+sqaf/sa6s/7Ctq/+vrKr/rqup/5CNjPNaWFgh////Af///wH///8B////Af///wH///8B////AWVjY1/U09P/2NfW/767uv++u7r/vru6/727uf+mpKL/rKur/8nIyP/q6en/t7a2/8rJyf/q6en/ycjI/6qpqP+fnJv/sq+t/7GurP+wrav/r6yq/66rqf+fnJr/ZGJiX////wH///8B////Af///wH///8B////Af///wH///8B////AXBubW/X1tb/2NfW/7q4tv+7uLf/u7i3/7q3tv+5t7X/tLKw/6Ohn/+YlpT/l5ST/6CenP+vrKr/sq+t/7GurP+wrqz/sK2r/66rqf+uq6n/oJ2b/2tpaW////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AXBubmvDwsL75+bm/7+8u/+4tbP/t7Wz/7e0sv+3tLL/tbOx/7WysP+zsK7/sq+t/7GurP+wrqz/sK2r/6+sqv+uq6n/raqo/5eVk/tsaWlr////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AV9dXTucmprb5+bm/97d3P+8ubj/tLGv/7Sxr/+zsK7/sq+t/7GurP+wrqz/sK2r/6+sqv+uq6n/rqup/6ilo/+FgoL/XFpaa////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWAlmY2NvnZyc49bV1P/i4eD/z83M/7q4tv+wrav/rqup/66rqf+uq6n/raqo/6Shn/+Jh4b/g4B//5KPjf90cnGv////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYQ3RycYeMiYnTpaOi/5qXlv+Qjoz/jIqJ/4KAf9N0cnGHWlhYb7i2tf+in53/oJ2b/5ORj/9aWFgr////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWF/Avrz/nZqY/5WSkP+Nioj/WlhYX////wH///8Bqqmpy9zc2/+pqKfvhYODf1pYWBX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYX9nY1/+joJ7/npuZ/5mWlP9aWFhf////Af///wFiYGBHd3V1b1pYWAn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFhf1dXV/8LAwP+urKv/oJ6d/1pYWF////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYA1pXVxljYWEzcW9vb3RycaV6eHjJgH19/4qHhv+Ni4r/jYuK/4mHhv9/fXz/enh3yXRxcaVxb29vY2FhM1pXVxlZV1cD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFglZ2Vlc399fK+KiIblmJaU/6akof+tqqj/rqup/66rqf+uq6n/raqo/62qqP+tqqj/rKmn/6Wiof+YlZT/ioeG5X98fK9oZWVzWlhYJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWVdXDV5bW2t4dnXLnJmY9aajof+uq6n/r62r/7Ctq/+wrav/sK2r/6+tq/+wrav/r6yq/66rqf+uq6n/rqup/66rqf+tqqj/rKmn/6WioP+amJb1eHZ1y11bW2taWFgN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWAtnZWQ7eHZ105uYl/+vrav/sq+t/7Kvrf+yr63/sq+u/7Owrv+zsK7/s7Cu/7Kvrf+yr63/sa6s/7Ctq/+wrav/r6yq/6+sqv+uq6n/rqup/66rqf+uq6n/rKmn/5mWlf93dXTTZmRkO1pYWAv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWVdXE2tpaXeIhYTjrKmn/7Owrv+1srD/tbOx/7azsf+1srH/tbOx/7azsf+1srH/tLKw/7SysP+0sa//sq+t/7Gvrf+xrqz/sK6s/7Ctq/+wrav/r6yq/6+sqv+uq6n/rqqp/62qqP+npKL/hYKC42poaHdZWFgT////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bamhok5aTk/Gwraz/trOx/7e0sv+4tbT/uLW0/7i1s/+4tbP/uLWz/7e1s/+3tLL/trOx/7Wysf+1srD/s7Cu/7Owrv+yr63/sa6s/7GurP+wrqz/sK2r/7Ctq/+vrKr/rqup/66rqf+uq6n/qaak/5GOjfFpZ2aT////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWBVtamqTo6Cf/7i1tP+5t7X/ure2/7u4t/+7uLf/ure2/7q3tv+5t7X/ube1/7e1s/+wrqz/qaal/6qopv+sqaj/rauq/7Sysf+5t7b/xsTD/8XDwf+/vbz/trSy/7GurP+wrav/sK2r/6+sqv+uq6n/rqup/62qqP+bmJf/amhok1pYWBX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWldXEXNxcYeenJrzuri2/7y5t/+8urj/vLq4/7y6uP+8urj/vLm4/7u5t/+4trX/op+f/52bmv+sq6r/urm5/8LBwf/GxcX/xsXF/8LBwf+5uLj/s7Gx/7Oysv/CwcH/3Nva/83Lyv+3tbP/sK2r/7Csqv+vrKr/rqup/62qqf+tqqj/lJKR829tbYdaWFgR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Ba2lpZZeVlO+6t7b/vru6/767uv++u7r/vru6/767uv++u7r/vLq4/6ilpP+UkpL/vr29/+Dg4P/u7u7//Pz8//7+/v/////////////////8/Pz/7u7u/+Dg4P/Ix8f/rKur/9bV1f/n5uX/u7m3/7Ctq/+wrav/rqup/66rqf+uq6n/q6im/42Kiu9oZmZl////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgpiYaG9726uf/Avbz/wb+9/8C+vf/Avrz/wL68/8C+vf+2tLL/npyb/7i3t//19fX///////////////////////////////////////7+/v////////////7+/v//////9fX1/7u6uv+6ubn/6ejo/9HQzv+0sa//sK2r/6+sqv+uq6n/rqup/6uopv+AfXz3WlhYKf///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWBFwbm2puLW0/8LAv//DwL//w8G//8PBwP/DwL//wsC//7Kvrv+hn5//0tLS//z8/P/+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7///////z8/P/S0tL/t7a2/93d3f/T0tD/sK6s/7Csqv+vrKr/rqup/62qqP+loqD/a2hoqVpYWBH///8B////Af///wH///8B////Af///wH///8B////AWJgX0+hn57nxMLB/8XDwv/Fw8L/xcPC/8TCwf/EwsH/t7W0/6Gfn//d3d3///////7+/v////////////7+/v////////////7+/v//////////////////////////////////////////////////////397e/7Oysv/m5eX/y8vJ/7CurP+wrav/rqup/66rqf+tqqj/kY6N519dXU////8B////Af///wH///8B////Af///wH///8BWVdXGYuJiK+9u7r/yMbF/8fFxP/HxcP/xsTD/8bEw//Bv77/np2c/9/f3/////////////////////////////////////////////////////////////7+/v////////////7+/v////////////7+/v///////////9/f3/+xsLD/7u7t/8PBwP+xrqz/r6yq/66rqf+uq6n/paKg/358e69aWFgZ////Af///wH///8B////Af///wH///8BbWtrQ5+dnO/IxsX/ycfG/8jGxf/IxsX/x8XE/8fFw/+enZv/0M/P///////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////Qz8//wL+//+Pj4v+3tbP/r6yq/6+sqv+uq6n/raqo/42Kie9oZmZD////Af///wH///8B////Af///wH///8Bfnx7g7i2tf/Lycj/ysjH/8rIx//Jx8b/yMbF/7OxsP+pqKf//Pz8//7+/v////////////7+/v////////////7+/v////////////7+/v/////////////////////////////////////////////////////////////////8/Pz/srGx/9rZ2f/HxsX/sK2r/6+sqv+uq6n/raqo/5yZmP9yb2+F////Af///wH///8B////Af///wFZWFgDiIaF5c3Lyv/Mysn/zMrJ/8vJyP/Lycj/x8XE/6Ohof/h4OD///////////////////////////////////////////////////////////////////////7+/v////////////7+/v////////////7+/v////////////7+/v//////4eDg/7KxsP/e3t3/sK2r/6+sqv+uq6n/rqup/62qqP96eHflWlhYA////wH///8B////Af///wFaWFgjo6Gg/8/NzP/OzMv/zcvK/8zKyf/Lycj/vbu6/7e1tf/19fX////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7////////////+/v7/9fX1/7a0tP/Y19b/trOx/7Ctq/+vrKr/rqqp/62qqP+Nior/WldXI////wH///8B////Af///wFaWFhXu7m4/8/Nzf/Pzcz/zszL/83Lyv/Mysn/t7W0/8PDw//+/v7///////7+/v////////////7+/v////////////7+/v////////////7+/v///////////////////////////////////////////////////////////////////////v7+/8LCwv+8u7r/xsXD/7Ctq/+vrKr/rqup/62qqP+em5r/WlhYV////wH///8B////Af///wFhX1+P0c/O/9DOzf/Pzc3/zszL/83Lyv/Ny8r/rKqp/+Pj4/////////////////////////////////////////////////////////////r6+v/y8vL/8fDw//n5+f////////////7+/v////////////7+/v////////////7+/v///////////+Pj4/+fnZz/z87N/7Ctq/+vrKr/rqup/66rqf+tqqj/X11dj////wH///8B////Af///wF4dXWn0dDP/9HPzf/Pzc3/zszM/87My//Ny8r/pKOi//f39//+/v7////////////+/v7////////////+/v7////////////+/v7//////9DPz/+CgYH/dXR0/8TExP/+/v7////////////+/v7////////////+/v7////////////+/v7///////f39/+cmZn/xsXD/7CurP+wrav/rqup/62qqf+tqqj/bWxsp////wH///8B////Af///wF4dna/0tDP/9HPzv/Qzs3/z83M/87My//Ny8r/m5mZ//7+/v////////////7+/v////////////7+/v////////////7+/v///////////728vP88Ozv/IyIi/6Kiov////////////////////////////////////////////////////////////////+VlJP/w8G//7GurP+wrav/rqup/66rqf+tqqj/bmxsv////wH///8B////Af///wGDgYG/09HQ/9LQz//Rz87/z83N/8/NzP/OzMv/pqSk/////////////////////////////////////////////////////////////////83Nzf9HRkb/Li0t/7e2tv////////////7+/v////////////7+/v////////////7+/v////////////7+/v+gn5//sa+t/7GurP+wrav/rqup/66rqf+tqqj/dHJyv////wH///8B////Af///wF4dXW/29ra/9HQz//Rz87/z83N/8/NzP/OzMv/nJqa///////+/v7////////////+/v7////////////+/v7////////////+/v7//////9bW1v9OTEz/NTQ0/8PCwv/+/v7////////////+/v7////////////+/v7////////////+/v7///////////+XlpX/sa+t/7CurP+wrav/rqup/62qqf+tqqj/c3Fxv////wH///8B////Af///wF5d3e34eDg/9XT0//Qzs3/z83M/87My//OzMv/oJ+e//7+/v////////////7+/v////////////7+/v////////////7+/v///////////+Tk5P9XVlb/PDw8/87Ozv////////////////////////////////////////////////////////////////+ZmJf/sa+t/7GurP+wrav/rqup/66rqf+tqqj/b2xst////wH///8B////Af///wFpZ2eN4N/e/97c2//Pzc3/z83M/87My//Ny8r/p6Wl/+bm5v///////////////////////////////////////////////////////////+bm5v9YV1f/RkZG/+Hh4f///////////////////////////////////////////////////////////+bm5v+bmZj/sa6s/7Ctq/+wrav/rqup/66qqf+tqqj/Y2Fhjf///wH///8B////Af///wFZV1dx1NPS/+bl5f/Pzs3/zszL/87My//Ny8r/t7a1/9HR0f////////////7+/v////////////7+/v////////////7+/v///////////+fn5/9ZWFj/SEdH/+Hh4f///////v7+/////////////v7+/////////////v7+/////////////v7+/9HR0f+mo6L/sa6s/7Ctq/+vrKr/rqup/66rqf+loqD/WlhYcf///wH///8B////Af///wFZWFg7t7W1/+zr6v/T0dD/zszL/83Lyv/Mysn/uri3/7u6uv/7+/v/////////////////////////////////////////////////0M/P/7Oysv9YVlb/SklJ/7W0tP/R0dH///////7+/v/+/v7///////7+/v/c29v/7e3t//7+/v/+/v7/+/v7/7i2tv+loqH/sa6s/7Ctq/+vrKr/rqup/62qqP+UkZD/WVhYO////wH///8B////Af///wFaWFgJlpSU8/Dv7//a2Nf/zMrJ/8vJyP/Lycj/xcPC/6mnp//k5OT///////////////////////////////////////39/f/NzMz/xMPD//////9nZWX/YF9f///////Ew8P/zczM//39/f////////////////+lpKT/dHNz/6urq//l5eX/5OTk/5+dnP+tqqj/sK2r/7Ctq/+vq6r/rqup/62qqP9/fXzzWldXCf///wH///8B////Af///wH///8BhIKCq9/f3v/o5+f/y8nI/8rIx//KyMf/ycfG/6qoqP+/vr3///////7+/v////////////7+/v///////////+rp6f/FxcX///////7+/v91dHT/e3p6////////////xcXF/+rp6f///////v7+///////6+vr/yMfH/4qJif+CgYH/oaCg/5qXlv+xr63/sK2r/6+sqv+uq6n/raup/6Wiof91c3Kr////Af///wH///8B////Af///wH///8BdnR0Wbi3t//39/f/zMrJ/8nHxv/Jx8b/yMbF/8PBwP+RkI//7ezs/////////////////////////////////9PS0v/l5OT///////////+Lior/hoWF//7+/v/+/v7/5eTk/9LS0v/+/v7///////7+/v/+/v7//f39/+zs7P+vrq7/fHl5/66rqf+wrqz/sK2r/6+sqv+uq6n/raqo/5GPjf9ta2tb////Af///wH///8B////Af///wH///8BWlhYIZiWlr/q6en/4eDf/8jGxf/HxcT/xsTD/8bEw/++vLv/nZyc/+3t7f///////////////////////////9TT0//p6en///////////+Qj4//oaCg////////////5+bm/5ybm//CwcH//////////////////////+3t7f+amJj/q6im/7GurP+wrqv/r6yq/66rqf+uq6n/qKWj/4OBgL9aWFgh////Af///wH///8B////Af///wH///8BWlhYBXFvbm/FxMPz9PTz/9DOzf/GxML/xsTC/8XDwv/Fw8L/rauq/7KxsP/y8fH///////7+/v///////////9XV1f/i4uL///////7+/v+ZmJj/sbCw////////////4ODg/5eWlv90c3P/7+/v////////////8fHx/6+urv+gnZz/sa6s/7GurP+wrav/r6yq/66rqf+uq6n/m5iW82tpaW9aWFgF////Af///wH///8B////Af///wH///8B////AVpYWB+Fg4PP9fT0/+Pi4f/GxML/xMLB/8TBwP/EwcD/wL69/6mnpv+lpKT/+Pj4//////////////////Hx8f+0s7P///////////+Wlpb/tbS0//7+/v/+/v7/tLOz/+fn5/+Jh4f/paSk//7+/v/4+Pj/o6Ki/56bmv+vrav/sa6s/7Ctq/+vrKr/rqup/62qqf+tqqj/eHZ2z1lYWB////8B////Af///wH///8B////Af///wH///8B////Af///wFaWFhHq6qp9/Ly8v/V09L/wr++/8K/vv/Bv73/wb+9/8G+vf+ysK7/m5mZ/9fW1v/39/f////////////t7e3/vLu7/+Pj4/+Rj4//sbCw/+Pj4/+8u7v/7e3t///////n5+f/c3Fx/7Oysv+Ylpb/pqOh/7Gvrf+wrqz/sK2r/6+s"
	Static 2="qv+vq6r/rqup/6ypp/+KiIf3WlhYR////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BeHZ2ncfGxvvw8PD/yMbF/7+9vP/Avbz/v728/7+8u/+/vbv/s7Gw/5+dnP+zsrH/2dnZ//n5+f//////5uXl/8rKyv+HhYX/n56e/8vKyv/m5eX//v7+//n5+f/Z2dn/f3x8/4qHh/+opqT/sa6s/7GurP+wrav/r6yq/6+sqv+uq6n/raqo/5mWlftubGyd////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BYF5eK4aFhMHd3d3/6uno/8PBv/+9u7n/vru6/727uf+9u7n/vbu5/7m3tf+urKr/o6Gh/56cnP+zsrL/29vb//Dw8P+dm5v/urq6//Dw8P/b29v/s7Ky/52bmv+fnZz/pqSi/6+sq/+xr63/sa6s/7Ctq/+vrKr/r6yq/66rqf+uqqj/o6Ce/3h2dcFfXV0r////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWCV5d3az3dzc/+no6P/IxsX/u7i3/7u5t/+7uLf/u7i3/7u4t/+6t7b/ure2/7m2tf+vrKv/m5mY/5KQjv+Fg4L/hYKB/5COjf+YlpX/qqel/7Owrv+yr63/sa6s/7GurP+wraz/sK2r/6+sqv+uq6n/rqup/62qqP+joJ7/cnBws1pXVyX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgli4mJw9PS0f/s6+r/y8nI/7q3tv+5trX/uba1/7m2tf+5trX/uLa0/7i1s/+4tbP/t7Sy/7azsv+1s7H/tLGv/7Sxr/+zsK7/sq+t/7Kvrf+xr63/sK6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/raqo/5+cmv97eXjDWlhYJf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BZmRkMX99fbfAvr779fX1/9zb2v+8ubj/t7Sy/7e0sv+3tLL/t7Sy/7azsv+2s7L/tbOx/7WysP+0srD/s7Cu/7Kvrf+yr63/sa6s/7GurP+wrqz/sK2r/6+sqv+vrKr/rqup/66rqf+tqqj/l5WT+3RycrdkYWEx////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWA1fXV17oJ+e5d3c2/3y8vL/1tTU/8C9vP+3tLL/tLGv/7Sxr/+0sa//s7Gv/7Owrv+yr63/sa6s/7CurP+wraz/sK2r/6+tq/+vrKr/rqup/66rqf+uq6n/rKmn/6Ognv+IhoX/Xlxcn1pXVw3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BYmBgUYOAgKuqqKjz3d3c/+rp6f/c29r/x8XD/7i1s/+yr63/sq+t/7Gvrf+wrqz/sK2r/6+tqv+vrKr/r6yq/66rqf+uq6n/rqup/62qqP+loqH/i4iH/4F+ff9/fHv/ZWNiq1lXVwn///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWVhYA1pYWBlnZGRLfnx8xZ6dnPnLycj/5uXl/+rp6f/Z2Nf/wsC+/7Sxr/+vrKr/rqup/66rqf+uq6n/rqup/62qqP+tqqj/pKGf/4mHhv99enn/i4mH/5KPjf+VkpD/f31831lYWD////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWCVaWFh1cG5tuY6LitOgnZ3xube2/7u5uP+npKP/npua/5+cm/+bmZf/kY+N74iGhdNwbm25WldXjZiXl9Wzsa//oZ6c/5+cmv+em5n/lZKR/3RycZ1aWFgP////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWVhYB1pYWCdaWFipn52c/42Lif+Gg4L/gn9+/4KAfv94dnX/WlhYqVpYWCdZWFgHWlhYCYSDgoPMy8r5trSz/7Wzsf+5t7X/npyb93d1dadaWFgd////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFiP09HQ/6GenP+dmpj/l5SS/5KPjv+Nion/WlhYj////wH///8B////AWlnZz2ysbHd7e3s/8LBwf+Jh4fbgoCAX2NhYSNaWFgF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaV1eP5+bm/6mmpP+hnpz/npuZ/5qXlf+XlJL/WldXj////wH///8B////Af///wFkYmKJgoGBs1pYWEdaWFgH////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFiP+Pf3/9TS0f+7ubf/q6in/6GenP+fnJr/WlhYj////wH///8B////Af///wFaWFgZWlhYDf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFiPwMDA/728vP+1tLT/rq2s/6impf+cmpn/WlhYj////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWC9aWFhvWlhYn2dlZb9ubGz/eXZ2/4OBgP+DgYD/g4GA/4OBgP95dnb/bmxs/2dlZb9aWFifWlhYb1pYWC////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgvWlhYj2ZjY99+fHv/k5GP/6mmpP+tqqj/rqup/66rqf+uq6n/rqup/62qqP+tqqj/raqo/62qqP+tqqj/qKWj/5OQj/9+e3v/ZWNj31pYWI9aWFgv////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWF9gXl7Pfnx7/56bmf+uq6n/rqup/6+sqv+wrav/r6yq/6+sqv+vrKr/r6yq/6+sqv+vrKr/rqup/66rqf+uq6n/rqup/66rqf+uq6n/raqo/62qqP+dmpn/fnt7/2BeXs9aWFhf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYP2BdXd+EgYD/qqel/6+sqv+vrKr/sK2r/7CurP+xrqz/sa6s/7GurP+xrqz/sK6s/7CurP+xrqz/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/rqup/66rqf+uq6n/rqup/62qqP+opaP/g4GA/19dXd9aWFg/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgPWlhYr358e/+qp6X/sK6s/7Kvrf+yr63/sq+t/7Kvrf+yr63/s7Cu/7Owrv+zsK7/s7Cu/7Kvrf+yr63/sq+t/7GurP+xrqz/sK2r/7Ctq/+vrKr/r6yq/6+sqv+uq6n/rqup/66rqf+uq6n/rqup/62qqP+opaP/fnt7/1pYWK9aWFgP////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFhPa2lo76CdnP+xrqz/s7Cu/7Sxr/+0srD/tbKw/7WysP+1srD/tLKw/7Wysf+1srH/tbKw/7SysP+0sa//tLGv/7Sxr/+yr63/sa+t/7Gvrf+xrqz/sK6s/7Ctq/+wrav/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/rqup/62qqP+dmpn/amho71pYWE////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFiPe3l4/62qqP+0sa//tbKw/7Wzsf+3tLL/t7Sy/7e0sv+3tLL/t7Sy/7e0sv+3tLL/t7Sy/7azsv+2s7L/tbOx/7Wzsf+1srD/s7Cu/7Owrv+yr63/sq+t/7Gvrf+xrqz/sa6s/7CurP+wrav/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/rqup/6ilo/95dnb/WlhYj////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFifjYqJ/7Wysf+2s7L/t7Sy/7i1s/+5trT/uba1/7m2tf+5trX/uba0/7m2tP+5trT/uLa0/7i1s/+3tLL/t7Sy/7azsv+2s7L/trOx/7Sxr/+0sa//s7Cu/7Owrv+yr63/sq+t/7Gvrf+xrqz/sa6s/7GurP+wrav/sK2r/6+sqv+uq6n/rqup/66rqf+uq6n/raqo/4iGhf9aWFif////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFifk5CP/7e0s/+5trT/ube1/7q3tv+7uLf/u7i3/7u4t/+6t7b/ure2/7q3tv+5t7X/ube1/7m3tf+5trT/uLa0/7i1s/+4tbP/t7Sy/7e0sv+1s7H/wsC//8fFw//Qzs3/1NPR/8bDwv+yr63/sa+t/7Gvrf+xrqz/sa6s/7Ctq/+wrav/r6yq/6+sqv+uq6n/rqup/66rqf+tqqj/jYuK/1pYWJ////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFiflZKR/7m3tf+7uLf/u7m3/7y5uP+8ubj/vLq4/7y6uP+8urj/vLm4/7u4t/+7uLf/u7i3/7u4t/+6t7b/rquq/5WTkv+DgYD/cW9v/5qZmP+Jh4f/iYeH/5qYmP9wbm7/gX9+/5yZmP/Ozcz/9fX1/+fm5f/Ozcv/sa+t/7Gvrf+xrqz/sa6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/rqup/62qqP+Ni4r/WlhYn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFh/kI6N/7u5t/+8urj/vbu5/727uf+9u7n/vbu5/727uf++u7r/vbu5/727uf+8urj/vLq4/7Wzsv+Rjo7/dnR0/5eWlv/Lysr/9PT0//////////////////////////////////T09P/Lysr/l5aW/3Vzcv+op6b/8O/v//r6+f/Y19b/trSy/7GurP+xrqz/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/raqo/4iGhf9aWFh/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFhPf318/727uf++u7r/v7y7/7+8u/+/vLv/v7y7/7+8u/+/vLv/v7y7/7+8u/++vLr/uLW0/4uJiP+Jh4f/wcDA////////////////////////////////////////////////////////////////////////////y8rK/42MjP+sq6v/9PT0//X19P/Ew8H/sa6s/7GurP+wrav/r6yq/6+sqv+uq6n/rqup/66rqf+tqqj/eXZ2/1pYWE////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgPZ2Vl77m2tf/Avbz/wL28/8G/vf/Avr3/wL69/8C+vP/Avrz/wL69/8C+vf/Avrz/pqSj/3t5ef/Lysr/////////////////////////////////////////////////////////////////////////////////////////////////y8rK/4OBgf/V1dX//////93c2/+xr63/sa6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/rqup/6ilo/9lYmLvWlhYD////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYr6ako//Bv77/wr++/8LAvv/DwL//w8C//8PAv//CwL7/wr++/8K/vv/CwL7/jYuK/42MjP/09PT////////////////////////////////////////////////////////////////////////////////////////////////////////////09PT/jYyM/6yrq///////4uHg/7Gvrf+xrqz/sK2r/6+sqv+vrKr/rqup/66rqf+tqqj/mJWU/1pYWK////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYP4F/fv/DwL//xMLB/8TCwf/EwsH/xMLB/8TCwf/EwsH/xMHA/8TBwP/EwcD/gX9+/7a1tf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+2tbX/l5aW///////i4eD/sa+t/7GurP+wrav/r6yq/6+sqv+uq6n/rqup/62qqP95dnb/WlhYP////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWNhYL++vLv/xcPC/8bEw//GxMP/xsTD/8bEw//Fw8L/xcPC/8XDwv/EwsH/gX9//8HAwP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8HAwP+Xlpb//////+Hh4P+xr63/sa6s/7Ctq/+vrKr/rqup/66rqf+uq6n/qKWj/2BeXr////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWD+Rj47/x8XE/8jGxf/HxcT/x8XE/8fFw//HxcP/xsTD/8bEw//Fw8L/lpST/6yrq///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////rKur/7a1tf//////ycjG/7GurP+xrqz/sK2r/6+sqv+uq6n/rqup/62qqP+DgYD/WlhYP////wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFi/w8HA/8nHxv/Jx8b/yMbF/8jGxf/IxsX/x8XE/8fFw//HxcP/srCu/42MjP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+NjIz/4N/f//r6+f+1s7L/sa6s/7Ctq/+vrKr/rqup/66rqf+uq6n/qKWj/1pYWL////8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgfhIKC/8vJyP/KyMf/ysjH/8rIx//Jx8b/ycfG/8jGxf/HxcT/x8XE/3Fwb//09PT/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9PT0/3h3d///////4eHg/7GurP+wrav/sK2r/6+sqv+uq6n/rqup/62qqP95dnb/WlhYH////wH///8B////Af///wH///8B////Af///wH///8BWlhYb7Curf/Mysn/y8nI/8vJyP/Lycj/ysjH/8rIx//Jx8b/ycfG/5GPjv/BwMD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////BwMD/p6am//////+6uLf/sa6s/7Ctq/+vrKr/rqup/66rqf+tqqj/k5CP/1pYWG////8B////Af///wH///8B////Af///wH///8B////AWNhYM/OzMv/zcvK/8zKyf/Mysn/y8nI/8vJyP/Lycj/ysjH/8rIx/91c3P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////3Rycv/w8O//2NfW/7GurP+wrav/r6yq/66rqf+uq6n/rqup/62qqP9gXl7P////Af///wH///8B////Af///wH///8B////AVpYWA+GhIP/z83M/87MzP/OzMv/zcvK/8zKyf/Mysn/y8nI/8vJyP+gnp7/wcDA///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////BwMD/pKKh//X19P+xrqz/sa6s/7Ctq/+vrKr/rqup/66rqf+tqqj/eXZ2/1pYWA////8B////Af///wH///8B////Af///wFaWFhPpKKh/9DOzf/Pzc3/z83M/87MzP/OzMv/zcvK/8zKyf/Lycj/h4WF//T09P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9PT0/399ff/r6+r/v768/7GurP+wrav/r6yq/66rqf+uq6n/raqo/42Liv9aWFhP////Af///wH///8B////Af///wH///8BWlhYf7u5uP/Qzs3/0M7N/8/Nzf/Pzcz/zszL/83Lyv/Mysn/xMLB/42MjP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+NjIz/xMLB/9PS0P+xrqz/sK2r/6+sqv+vrKr/rqup/66rqf+dmpn/WlhYf////wH///8B////Af///wH///8B////AVpYWL/S0M//0c/O/9DOzf/Pzc3/z83M/87My//Ny8r/zcvK/6impf/BwMD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wcDA/5aTkv/c3Nv/sa6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/raqo/1pYWL////8B////Af///wH///8B////Af///wF4dna/0tDP/9HPzv/Qzs3/z83N/8/NzP/OzMv/zszL/83Lyv+TkZD/4N/f///////////////////////////////////////////////////////////////////////////////////////Z2Nj/ycjI/8XExP/Q0ND//////////////////////////////////////////////////////////////////////////////////////+Df3/+Gg4L/09LQ/7GurP+xrqz/sK2r/6+sqv+uq6n/rqup/62qqP9ubGy/////Af///wH///8B////Af///wH///8BeHZ2/9LR0P/S0M//0c/O/9DOzf/Pzc3/z83M/87My//Ny8r/hYOC////////////////////////////////////////////////////////////////////////////////////////////aWho/ygnJ/8XFhb/RUVF////////////////////////////////////////////////////////////////////////////////////////////e3h3/8nIxv+xr63/sa6s/7Ctq/+vrKr/rqup/66rqf+tqqj/bmxs/////wH///8B////Af///wH///8B////AXh2dv/S0dD/0tDP/9HPzv/Qzs3/z83N/8/NzP/OzMv/zcvK/3Z0dP///////////////////////////////////////////////////////////////////////////////////////////4KBgf8oJyf/GBcX/0dGRv///////////////////////////////////////////////////////////////////////////////////////////3Bubf/KyMb/sa+t/7GurP+wrav/r6yq/66rqf+uq6n/raqo/25sbP////8B////Af///wH///8B////Af///wGHhYX/09HQ/9LR0P/S0M//0c/O/9DOzf/Pzc3/z83M/87My/+LiYn///////////////////////////////////////////////////////////////////////////////////////////+cm5v/Kyoq/xkYGP9nZ2f///////////////////////////////////////////////////////////////////////////////////////////+EgoL/sq+t/7Gvrf+xrqz/sK2r/6+sqv+uq6n/rqup/62qqP9zcXH/////Af///wH///8B////Af///wH///8BeHZ2/9XU0//S0dD/0tDP/9HPzv/Qzs3/z83N/8/NzP/OzMv/gX9/////////////////////////////////////////////////////////////////////////////////////////////nJub/y0rK/8ZGBj/h4aG////////////////////////////////////////////////////////////////////////////////////////////enh3/7Kvrf+xr63/sa6s/7Ctq/+vrKr/rqup/66rqf+tqqj/eXZ2/////wH///8B////Af///wH///8B////AXh2dv/p6Oj/0tDP/9HPzv/Rz87/0M7N/8/Nzf/Pzcz/zszL/3Z0dP///////////////////////////////////////////////////////////////////////////////////////////8HAwP8wLi7/Gxoa/4eHh////////////////////////////////////////////////////////////////////////////////////////////3Bubf+yr63/sa+t/7GurP+wrav/r6yq/66rqf+uq6n/raqo/25sbP////8B////Af///wH///8B////Af///wF6eHjv4+Lh/93b2//Rz87/0M7N/8/Nzf/Pzcz/zszL/87My/+Fg4L////////////////////////////////////////////////////////////////////////////////////////////Nzc3/MTAw/x0cHP+lpaX///////////////////////////////////////////////////////////////////////////////////////////97eXj/sq+t/7Gvrf+xrqz/sK2r/6+sqv+uq6n/rqup/62qqP9wbW3v////Af///wH///8B////Af///wH///8Bbmxsv93c2//o5+b/0c/O/9DOzf/Pzc3/z83M/87My//Ny8r/k5GR/9XV1f//////////////////////////////////////////////////////////////////////////////////////zs3N/zEwMP8dHR3/xMTE///////////////////////////////////////////////////////////////////////////////////////V1dX/hoOC/7Gvrf+xrqz/sa6s/7Ctq/+vrKr/rqup/66rqf+tqqj/Z2Vlv////wH///8B////Af///wH///8B////AVpYWK/d3Nv/9vb1/9DOzf/Pzc3/z83M/8/NzP/OzMv/zcvK/7Curf+2tbX//////////////////////////////////////////////////////////////////////////////////////83Nzf8yMTH/Hh4e/8TExP//////////////////////////////////////////////////////////////////////////////////////trW1/5yZl/+xr63/sa6s/7Ctq/+wrav/r6yq/66rqf+uq6n/raqo/1pYWK////8B////Af///wH///8B////Af///wFaWFh/s7Gx///////V1NP/z83N/8/NzP/OzMv/zcvK/83Lyv/Mysn/lJOT///////////////////////////////////////////////////////////////////////////////////////T09P/MzEx/yAf"
	Static 3="H//DwsL//////////////////////////////////////////////////////////////////////////////////////5ORkf+yr63/sa+t/7GurP+wrav/r6yq/66rqf+uq6n/rqup/5iVlP9aWFh/////Af///wH///8B////Af///wH///8BWlhYP5yamv/29fX/5OPi/8/NzP/OzMv/zszL/83Lyv/Mysn/y8nI/4SCgv/q6ur//////////////////////////////////////////////////////////////////////9XV1f+DgYH/wcDA/zQyMv8jIiL/wcDA/42MjP/V1dX//////////////////////////////////////8HAwP/g39///////////////////////+rq6v97eHf/sa+t/7Gvrf+xrqz/sK2r/6+sqv+uq6n/rqup/62qqP+IhoX/WlhYP////wH///8B////Af///wH///8B////AVpYWA9+fHz/7ezs//b19f/OzMv/zcvK/8zKyf/Mysn/y8nI/8vJyP+urKz/rKur/////////////////////////////////////////////////////////////////8vKyv+Xlpb///////////81MzP/JCMj////////////l5aW/8vKyv////////////////////////////////9kYmL/WlhY/5eWlv/09PT///////////+sq6v/nJmX/7Gvrf+xrqz/sa6s/7Ctq/+vrKr/rqup/66rqf+tqqj/c3Fx/1pYWA////8B////Af///wH///8B////Af///wH///8BY2Fhv93c2///////1tXU/8zKyf/Lycj/y8nI/8vJyP/KyMf/ysjH/3JwcP/09PT///////////////////////////////////////////////////////T09P+Xlpb/////////////////NTMz/0FBQf////////////////+Xlpb/9PT0////////////////////////////9PT0/6yrq/9aWFj/ZGJi/7a1tf/09PT/b21t/7Kvrf+xr63/sa6s/7Ctq/+vrKr/rqup/66rqf+uq6n/raqo/2BeXr////8B////Af///wH///8B////Af///wH///8B////AVpYWF+koqL//////+vr6v/Lycj/y8nI/8rIx//KyMf/ysjH/8nHxv+mpKP/rKur//////////////////////////////////////////////////////+2tbX/6urq/////////////////1pZWf9dXFz/////////////////6urq/7a1tf//////////////////////////////////////6urq/4OBgf9aWFj/ZGJi/5aTkv+xr63/sa+t/7GurP+wrav/r6yq/66rqf+uq6n/rqup/42Liv9aWFhf////Af///wH///8B////Af///wH///8B////Af///wFaWFgPdnR0/+vq6v//////zszL/8rIx//Jx8b/ycfG/8jGxf/IxsX/yMbF/3Vzc//g39//////////////////////////////////////////////////oqGh//////////////////////9oZ2f/X15e//////////////////////+ioaH/////////////////////////////////////////////////trW1/3Btbf+yr63/sa+t/7GurP+wrav/sK2r/6+sqv+uq6n/rqup/62qqP9ubGz/WlhYD////wH///8B////Af///wH///8B////Af///wH///8B////AVpYWJ/Jx8f//////+Tj4v/Jx8b/yMbF/8jGxf/HxcT/x8XE/8fFw/+5t7b/f35+//T09P///////////////////////////////////////////6yrq///////////////////////aGdn/3t6ev//////////////////////oqGh/6yrq//q6ur/////////////////////////////////9PT0/358fP+npKL/sa+t/7Gvrf+xrqz/sK2r/6+sqv+uq6n/rqup/66rqf+ioJ7/WlhYn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgfg4GA//Hw8P/7+/v/y8nI/8fFxP/HxcP/x8XD/8bEw//GxMP/xsTD/6Siof+Xlpb///////////////////////////////////////////+ioaH//////////////////////3V0dP+Xlpb//////////////////////5eWlv9kYmL/g4GB/////////////////////////////////5eWlv+XlJL/sa+t/7Gvrf+xrqz/sK2r/7Ctq/+vrKr/rqup/66rqf+tqqj/eXZ2/1pYWB////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWJ/GxcT//////+np6P/GxML/xsTC/8bEwv/Fw8L/xcPC/8TCwf/EwsH/nJqZ/5eWlv//////////////////////////////////////trW1/+rq6v////////////////97enr/mJeX/////////////////+rq6v+2tbX/rKur/1pYWP/V1dX//////////////////////5eWlv+Rj43/sq+t/7Gvrf+xrqz/sa6s/7Ctq/+vrKr/rqup/66rqf+uq6n/oqCe/1pYWJ////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgfdHJy//Dv7///////z83M/8TBwP/EwsH/xMLB/8TBwP/EwcD/w8HA/8PAv/+bmZj/jYyM//T09P////////////////////////////T09P+NjIz/////////////////cnFx/56dnf////////////////+NjIz/9PT0//////9ubGz/bmxs////////////9PT0/42MjP+Rj43/sq+t/7Gvrf+xr63/sa6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/raqo/25sbP9aWFgf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWH+ioJ//+/r6//Pz8//CwL7/w8C//8PAv//DwL//wsC+/8LAvv/Cv77/wr++/6elpP9/fX3/4N/f////////////////////////////4N/f/6Khof/09PT//////3Vzc/+joqL///////T09P+ioaH/4N/f////////////1dXV/1pYWP+2tbX/4N/f/358fP+dmpj/sq+t/7Gvrf+xr63/sa6s/7Ctq/+wrav/r6yq/66rqf+uq6n/raqo/4iGhf9aWFh/////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BYV9fz87MzP//////4+Li/8C+vf/Avr3/wb+9/8G/vf/Avr3/wL69/8C+vf/Avrz/ube2/3l3d/+ioaH/9PT0///////////////////////g39//l5aW/6yrq/9wb2//j46O/6yrq/+Xlpb/4N/f//////////////////////+DgYH/ZGJi/3Zzc/+tq6n/sq+t/7Gvrf+xr63/sa6s/7Ctq/+wrav/r6yq/66rqf+uq6n/rqup/6Kgnv9gXl7P////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWC9ta2vv39/e///////X1dT/v7y7/7+8u/+/vbz/v728/7+8u/+/vLv/v7y7/7+8u/++vLr/pKKh/317ev+ioaH/6urq///////////////////////q6ur/cW9v/5SSkv/q6ur//////////////////////+rq6v+ioaH/enh4/52amf+zsK7/sq+t/7Gvrf+xrqz/sa6s/7Ctq/+wrav/r6yq/66rqf+uq6n/rqup/6ilo/9qaGjvWlhYL////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYX4KAf//x8fH//////83Myv+9u7n/vbu5/767uv++u7r/vbu5/727uf+9u7n/vbu5/7y6uP+8urj/qaem/358e/+Fg4P/oqGh/8vKyv/g39///////4OBgf+sq6v//////+Df3//Lysr/oqGh/4SCgv98eXj/o6Ce/7Owrv+zsK7/sq+t/7Gvrf+xrqz/sa6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/rqup/62qqP95dnb/WlhYX////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFhfgX9+//Hw8P/6+vr/0M7O/7u5t/+8ubj/vLq4/7y6uP+8ubj/vLm4/7y5uP+7ubf/u7i3/7u4t/+6t7b/ure2/6elpP+Vk5L/iYeG/4OBgP9xb27/cW5u/4J/f/+HhYT/kpCP/6Ohn/+0sa//s7Cu/7Owrv+yr63/sa+t/7Gvrf+xrqz/sa6s/7Ctq/+vrKr/r6yq/66rqf+uq6n/rqup/62qqP95dnb/WlhYX////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWF+Afn7/8fDw///////Y1tX/ube1/7q3tv+7uLf/u7i3/7q3tv+6t7b/ure2/7q3tv+5t7X/ube1/7m2tP+5trT/uLWz/7i1s/+3tLL/trSy/7Wysf+1srD/tLKw/7Sxr/+zsK7/s7Cu/7Kvrf+yr63/sa+t/7GurP+xrqz/sK2r/7Ctq/+vrKr/r6yq/66rqf+uq6n/rqup/62qqP95dnb/WlhYX////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYX4B+ff/d3Nv//////+jo5/+8urj/uLWz/7m2tf+5trX/uba0/7m2tP+4trT/uLa0/7i1s/+4tbP/t7Sy/7e0sv+2s7L/trOy/7Wzsf+0sa//tLGv/7Owrv+zsK7/sq+t/7Kvrf+xr63/sa+t/7GurP+wrqz/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/rqup/6ilo/95dnb/WlhYX////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFhPa2lp78PBwf//////+vr6/9bU0/+2s7L/t7Sy/7e0sv+3tLL/t7Sy/7e0sv+2s7L/t7Sy/7azsv+1s7H/tbOx/7WysP+0srD/s7Cu/7Kvrf+yr63/sq+t/7Gvrf+xrqz/sa6s/7CurP+wrav/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/raqo/52bmf9qaGjvWlhYT////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWB9gXl7PmZeW/+vq6v//////9fX1/9DPzv+1srD/tbKx/7WysP+1srD/tbKw/7WysP+1srD/tLKw/7Sxr/+0sa//s7Cu/7Kvrf+xr63/sa+t/7GurP+xrqz/sK6s/7Ctq/+vrKr/r6yq/6+sqv+uq6n/rqup/66rqf+uq6n/raqo/4iGhf9gXl7PWlhYH////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWH9xbm7vs7Gw//X09P//////9fX1/9DOzf+4tbP/s7Cu/7Owrv+zsK7/s7Cu/7Owrv+zsK7/sq+t/7Gvrf+xrqz/sa6s/7CurP+wrav/sK2r/6+sqv+vrKr/rqup/66rqf+uq6n/rqup/66rqf+tqqj/mJWU/3Fvb/9vbGz/WlhYv////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYH1pYWJ9vbGz/srGw/+Xl5P//////+vr5/+Lh4P/Jx8b/sa6s/7GurP+xrqz/sa+t/7GurP+wrqz/sK2r/6+sqv+vrKr/r6yq/6+sqv+uq6n/rqup/66rqf+uq6n/rqup/62qqP+YlZT/bmxs/3Bubf+LiIb/kI2L/25sa/9aWFgf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYH1pYWJ9qaGjvmJaV/8fFxP/l5OT/+vn5//r5+f/h4N//zczK/7q3tf+wrav/r6yq/66rqf+uq6n/rqup/66rqf+uq6n/rqup/62qqP+tqqj/qKWj/42Liv9ubGv/dHJx/5SRj/+al5X/mJWT/5eUkv+OjIr/WlhYn////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWF9aWFivamho74SBgP+joJ//t7W0/8zKyf/W1dT/zMrJ/7Owrv+uq6n/rqup/62qqP+tqqj/o6Ce/5iVlP+DgYD/amho71pYWK9aWFjPzs3M/6Shn/+hnpz/n5ya/56bmf+dmpj/nZqY/29tbP9aWFgf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFgvWlhYb1pYWN94dnb/e3l4/3t5eP9vbGz/bmxs/3h2df91c3L/ZGJi/1pYWN9aWFhvWlhYL////wH///8BWlhYP6Khof/Ny8r/paKg/6Ognv+joJ7/o6Ce/6Shn/+enJv/WlhYj////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFi/0tHQ/6Kfnf+em5n/mpeV/5WSkP+Rjoz/jYqI/4iFg/9aWFi/////Af///wH///8B////Af///wFta2rP9PT0/83My/+9u7n/0tHQ/87NzP+npaX/Z2Vlv1pYWE////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYv+no5/+koZ//oJ2b/52amP+ZlpT/lZKR/5KPjv+Oi4r/WlhYv////wH///8B////Af///wH///8BZ2VlX6yrq///////6urq/5eWlv9aWFi/WlhYP////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWL/5+fn/pqOh/6Ognv+gnZv/npuZ/5uYlv+YlZP/lZKQ/1pYWL////8B////Af///wH///8B////Af///wFlY2PfjYyM/1pYWJ9aWFgf////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wFaWFi//////8jGxf+mo6H/pKGf/6Kfnf+gnZv/npuZ/5uYlv9aWFi/////Af///wH///8B////Af///wH///8BWlhYP1pYWB////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BWlhYv///////////4+Li/83Lyv+7ubj/paKg/6Ognv+in53/WlhYv////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AVpYWL+sq6v/rKur/6yrq/+sq6v/rKur/6yrq/+npaX/lpSU/1pYWL////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
	
	If (!HasData)
		Return -1
	
	If (CD){
		VarSetCapacity(TD,43893 * (A_IsUnicode ? 2 : 1))
		
		Loop,% 3
			TD .= %A_Index%, %A_Index% := ""
		
		Hex_Mcode := A_PtrSize = 8 ? Hex_Mcodex64 : Hex_Mcodex86
		VarSetCapacity(Base64Decode,StrLen(Hex_Mcode)//2)
		Loop % StrLen(Hex_Mcode)//2
			NumPut("0x" . SubStr(Hex_Mcode,2*A_Index-1,2),Base64Decode,A_Index-1,"Char")
		DllCall("VirtualProtect",A_IsUnicode ? "Ptr" : "UInt",&Base64Decode,A_IsUnicode ? "Ptr" : "UInt",VarSetCapacity(Base64Decode),"uint",0x40,"uint*",0)
		
		VarSetCapacity(Out_Data,32038,0)
		, DllCall(&Base64Decode,A_IsUnicode ? "AStr" : "Str",TD,A_IsUnicode ? "Ptr" : "UInt",&Out_Data,A_IsUnicode ? "AStr" : "Str",CD,"CDECL UINT")
		, Base64Decode := ""
		, TD := ""
		, CD := ""
		, Hex_Mcodex86 := ""
		, Hex_Mcodex64 := ""
		, Hex_Mcode := ""
	}
	
	IfExist,%Filename%
		FileDelete,%Filename%
	
	h := DllCall("CreateFile","str",Filename,"Uint",0x40000000,"Uint",0,"UInt",0,"UInt",4,"Uint",0,"UInt",0)
	DllCall("WriteFile","UInt",h,A_IsUnicode ? "Ptr" : "UInt",&Out_Data,"UInt",32038,"UInt",0,"UInt",0)
	DllCall("CloseHandle", "Uint", h)
	
	If (DumpData)
		VarSetCapacity(Out_Data,32038,0)
		, VarSetCapacity(Out_Data,0)
		, HasData := 0
}
Get_ico_stopped(What)
{
	Static Size = 1150, Name = "_timer_stopped.ico", Extension = "ico", Directory = A_WorkingDir
	;This function returns the size(in bytes), name, filename, extension or directory of the file stored depending on what you ask for.
	If What = Size
		Return Size
	Else If What = Name
		Return Name
	Else If What = Extension
		Return Extension
	Else If What = Directory
		Return Directory
}

Extract_ico_stopped(Filename,DumpData = 0)
{
	;This function "extracts" the file to the location+name you pass to it.
	Static HasData = 1, Base64Decode, Out_Data, Hex_Mcodex86 = "558bec518365fc00568b75088a1684d20f86ac000000578b7d0c5333db33c084d2764d32c984c975318aca80e92b4680f94f770c0fb6ca8b55108a4c11d5eb02b1240fb6d180ea3d80f9240f94c1fec923ca8a1684d277cd84c9760943fec9884c0508eb05c6440508004083f8047caf83fb027c4b8a45098a4d08c0e102c0e8040ac18a4d0a88074783fb027e108a55098ac1c0e802c0e2040ac288074783fb037e09c0e1060a4d0b880f478b45fc8a1684d28d4418ff8945fc0f875bffffff5b5f8b45fc5ec9c3"
	Static Hex_Mcodex64 = "48895C241048897C2418440FB60933DB488BFA4C8BD14584C90F84BC000000904533DB33C94584C9744F32C00F1F400084C0752C418D41D549FFC23C4F7712410FB6C1420FB64400D53C24740404C3EB0232C0450FB60A4584C975D484C0740B41FFC3FEC888440C08EB05C6440C080048FFC14883F9047CAC4183FB027C5C0FB65424090FB644240848FFC7C0E0020FB6CAC0E9040AC8884FFF0FB64C240A4183FB027E11C0E2040FB6C1C0E8020AC248FFC78847FF4183FB037E0DC0E1060A4C240B48FFC7884FFF450FB60A428D5C1BFF4584C90F8545FFFFFF488B7C24188BC3488B5C2410C3"
	Static CD = "|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\]^_``abcdefghijklmnopq"
	Static 1="AAABAAEAEBAAAAAAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8B////Af///wH///8B////AQAAAAcAAAAVAAAAHQAAACMAAACBBRU9/wUWPf8EFTz/BRQ7/wUUOP8BBxfH////Af///wH///8BAAAAAwAAABcAAABXAAAAnwAAALsAAAC/AAAA50Fryv+VrOD/G0y+/2mH0P9wi8z/BhQ4/////wH///8BAAAACQAAAEU9PT3Vg4OD/9jY2P/u7u7/8/Pz/1FRUf9Acdf/1eD3/+Ho9//t8fr/b43T/wUVO/////8B////AQAAAFVXV1fdw8PD/+Pj4//t7e3/0NDQ/9DQ0P9OTk7/GFjb/5u38P//////4+r4/xxOwf8EFT3/////AQAAACVjY2Pt0dHR//Dw8P/w8PD/8PDw/+/v7//v7+//T09P/1iK7f/q8P3/oLvz/9bh+P+Yr+P/Bhg//wAAAAcAAACXxsbG/+7u7v/z8/P/8/Pz//Pz8//y8vL/8fHx/1BQUP8vcO3/XZDz/xpd4v9Cdd3/RnHR/wYXP/8AAAAvc3Nz2ezs7P/29vb/9vb2//f39//29vb/9vb2//Hx8f+urq7/ICAg/0JCQv9PT0//UVFR/y8vL/kAAAClAAAASZKSkvP39/f/+Pj4//j4+P/5+fn/+fn5//Ly8v+5ubn/bW1t/0JCQv+9vb3/7u7u//T09P+ioqL1AAAAfQAAAFWXl5f97+/v//Dw8P/7+/v/+/v7//v7+/+qqqr/W1tb/4SEhP/Y2Nj/7u7u/93d3f/b29v/paWl/wAAAIUAAABPlJSU+ff39//4+Pj//Pz8//z8/P/9/f3/nJyc/4+Pj//t7e3/9/f3//T09P/s7Oz/6enp/6enp/sAAAB5AAAANYODg9/y8vL//Pz8//39/f/9/f3//v7+/66urv+oqKj/+fn5//j4+P/29vb/8/Pz/+/v7/+JiYnpAAAAVQAAABEpKSm54+Pj//v7+//9/f3//f39//39/f+8vLz/tra2//r6+v/4+Pj/9/f3//T09P/s7Oz/KCgoxwAAACf///8BAAAAO4eHh/Pn5+f//Pz8//39/f/9/f3/zc3N/8fHx//7+/v/+fn5//f39//p6en/jIyM9wAAAFMAAAAF////Af///wEkJCSPn5+f+evr6//6+vr//f39/9ra2v/V1dX/+/v7//n5+f/w8PD/np6e+yIiIp0AAAAJ////Af///wH///8BAAAACQAAAGV+fn7jsbGx/+fn5//v7+//7u7u/+Xl5f+4uLj/fn5+5QAAAG0AAAAN////Af///wH///8B////Af///wH///8BAAAAPzc3N4tNTU3ZSUlJ90hISPdMTEzbNDQ0jwAAAEMAAAAD////Af///wH///8BAAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//w=="
	
	If (!HasData)
		Return -1
	
	If (CD){
		VarSetCapacity(TD,1576 * (A_IsUnicode ? 2 : 1))
		
		Loop,% 1
			TD .= %A_Index%, %A_Index% := ""
		
		Hex_Mcode := A_PtrSize = 8 ? Hex_Mcodex64 : Hex_Mcodex86
		VarSetCapacity(Base64Decode,StrLen(Hex_Mcode)//2)
		Loop % StrLen(Hex_Mcode)//2
			NumPut("0x" . SubStr(Hex_Mcode,2*A_Index-1,2),Base64Decode,A_Index-1,"Char")
		DllCall("VirtualProtect",A_IsUnicode ? "Ptr" : "UInt",&Base64Decode,A_IsUnicode ? "Ptr" : "UInt",VarSetCapacity(Base64Decode),"uint",0x40,"uint*",0)
		
		VarSetCapacity(Out_Data,1150,0)
		, DllCall(&Base64Decode,A_IsUnicode ? "AStr" : "Str",TD,A_IsUnicode ? "Ptr" : "UInt",&Out_Data,A_IsUnicode ? "AStr" : "Str",CD,"CDECL UINT")
		, Base64Decode := ""
		, TD := ""
		, CD := ""
		, Hex_Mcodex86 := ""
		, Hex_Mcodex64 := ""
		, Hex_Mcode := ""
	}
	
	IfExist,%Filename%
		FileDelete,%Filename%
	
	h := DllCall("CreateFile","str",Filename,"Uint",0x40000000,"Uint",0,"UInt",0,"UInt",4,"Uint",0,"UInt",0)
	DllCall("WriteFile","UInt",h,A_IsUnicode ? "Ptr" : "UInt",&Out_Data,"UInt",1150,"UInt",0,"UInt",0)
	DllCall("CloseHandle", "Uint", h)
	
	If (DumpData)
		VarSetCapacity(Out_Data,1150,0)
		, VarSetCapacity(Out_Data,0)
		, HasData := 0
}

	
;для экзешника - полезно чтобы обнулить запущенный таймер
Reload:
	Reload
	Return

;завершение работы скрипта
TClose:
	ExitApp
Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди