Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback писал(а):

Код: Выделить всё

RegisterCommand 60000 MyCommand

Func MyCommand(lParam)
EndFunc
Т.е. если зарегистрировать команду с именем au_MyCommand, то можно будет потом использовать ее в кнопке или меню обычным образом:

Код: Выделить всё

TOTALCMD#BAR#DATA
au_MyCommand


Вызов команды Autorun

0
0

Код: Выделить всё

MENUITEM "Вызов команды Autorun", au_MyCommand
Куда уж лучше :lol:
Но один очень важный момент. А можно ли будет передавать параметры таким командам, и что значит Func MyCommand(lParam)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Т.е. если зарегистрировать команду с именем au_MyCommand, то можно будет потом использовать ее в кнопке или меню обычным образом:
Нет, к сожалению именно со своим префиксом не получится, тотал такие строки не пропускает. Но можно создать в TOTALCMD.INC соответствие, например, cm_MyCommand=60000; (можно даже группу под них создать), тогда именно так и будет работать. Но я бы в любом случае советовал пользоваться числами, особенно в меню, это немного быстрее.

На самом деле я не уверен, что стоит афишировать эту возможность с правкой TOTALCMD.INC. Всегда возникают опасения, как автор отнесётся к таким нововведениям. Хотя сопоставления значков правят все кому не лень, TOTALCMD.INC вроде бы не предполагается для правки. Хотя могу и ошибаться.
Orion9 писал(а): А можно ли будет передавать параметры таким командам, и что значит Func MyCommand(lParam)
Можно из панели инструментов. Но только число, и только одно, и только если использовать запись команды строкой, а в TOTALCMD.INC есть сопоставление. Почему-то при задании команды в кнопке числом параметры не принимаются (так, кстати, и со стандартными внутренними командами, принимающими параметры).

Из меню, понятно, этого сделать нельзя, пока функционал не будет добавлен Гислером.

Также можно отправлять сообщение с PostMessage (именно Post) WM_USER+51 с wParam=номер команды, lParam - дополнительный параметр.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback писал(а):На самом деле я не уверен, что стоит афишировать эту возможность с правкой TOTALCMD.INC.
Я думаю, раз уж этот файл вынесен в том виде, как он сейчас есть, отдельно в каталоге, такая правка подразумевается :)
Loopback писал(а):Из меню, понятно, этого сделать нельзя, пока функционал не будет добавлен Гислером.
Да, я понял. Очень жаль. Ведь по сути бывает нужен не только вызов функции Autorun, но вызов с параметрами:

Код: Выделить всё

txt = txt & 'MENUITEM "Запуск 1,2 ", fStart(1,2)' & auCRLF

Func fStart(param1, param2)
EndFunc
Или

Код: Выделить всё

txt = txt & 'MENUITEM "Запуск 1,2 ", fStart, 1, 2' & auCRLF
Но если будет возможность вызывать без параметров, то это тоже будет большой буст.)
Loopback писал(а):Также можно отправлять сообщение с PostMessage (именно Post) WM_USER+51 с wParam=номер команды, lParam - дополнительный параметр.
Посмотрим, как оно будет на практике. Но то, что можно будет одну циферЬку передать, это тоже большой плюсик :)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Я думаю, раз уж этот файл вынесен в том виде, как он сейчас есть, отдельно в каталоге, такая правка подразумевается
На самом деле может быть, поскольку там же есть далеко не все команды. Например, cm_RightViewMode9=8259;etc. until 8499. Строки есть только до 9, а вдруг кому cm_RightViewMode199 понадобится?
Orion9 писал(а):Очень жаль. Ведь по сути бывает нужен не только вызов функции Autorun, но вызов с параметрами
А, я про это кажется просто не упоминал. RegisterCommand позволяет добавлять внутренние параметры к функции. Можно просто нарегистрировать номеров на одну функцию, но с разными параметрами:

Код: Выделить всё

RegisterCommand 60001 MyCommand 1
RegisterCommand 60002 MyCommand 2
RegisterCommand 60003 MyCommand 3

Func MyCommand(lParam, Param1)

EndFunc
Регистрация номера - по-сути просто сопоставление его с функцией, так что регистрация даже большого числа номеров это довольно "дёшево" в плане производительности.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback писал(а):Можно просто нарегистрировать номеров на одну функцию, но с разными параметрами
Великолепно :)
Loopback писал(а):Регистрация номера - по-сути просто сопоставление его с функцией, так что регистрация даже большого числа номеров это довольно "дёшево" в плане производительности.
Теперь все ясно. Я просто никогда не использовал номер команды в кнопке, поэтому сразу как-то не до конца понял.

Безусловно, нет смысла заморачиваться с TOTALCMD.INC. Большое число команд в виде номеров может, конечно, сделать код менее читаемым, но это лучше, чем заботится о нескольких источниках и заниматься дополнительным сопоставлением.

В обшем, не терпится попробовать )
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Начал делать финальный тест скрипта на чистом ТС. Прошел все стадии от начальной установки Autorun и его плагинов до намеренного измения путей конфигурации в .aucfg файле, чтобы посмотреть, как все будет работать. В принципе, больших проблем пока не нашел, кроме одной. Значки в меню, вызываемом ShowPopupMenu перестали отображаться. Сначала не понял, в чем может быть дело, но потом пришел к выводу, что это как-то связано с тем фактом, что мне пришлось перенести usercmd.ini в AppData\Roaming\GHISLER\ из-за того, что конфигурация ТС чистая и wincmd.ini по умолчанию сохраняется там. Можете подтвердить проблему?

Кстати, команды из меню работают. Т.е. сами em_ команды вызываются из usercmd.ini, не отображаются только значки.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Orion9 писал(а):Значки в меню, вызываемом ShowPopupMenu перестали отображаться.
В стандартном WCMICONS.DLL всего 87 значков, а в файле меню указывались значки с номером 150.
Может, в этом причина?
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

sa писал(а):В стандартном WCMICONS.DLL всего 87 значков, а в файле меню указывались значки с номером 150.
Да. И это было неправильно. :) В новой версии я это учел и перешел на em_ команды. Включение и выключение заголовка сейчас происходит либо из самого скрипта:

Код: Выделить всё

[em_title_on]
button=%COMMANDER_EXE%,37
cmd=%TITLE_AHKV2%
param=Title.ahk -tc-title-on
path=%TITLE_PATH%

[em_title_off]
button=%COMMANDER_EXE%,36
cmd=%TITLE_AHKV2%
param=Title.ahk -tc-title-off
path=%TITLE_PATH%
Либо утилитой TCFS2:

Код: Выделить всё

[em_title_on_tcfs2]
button=%COMMANDER_EXE%,37
cmd=%TITLE_TCFS2%
param=/ef "set_ini(`%%TITLE_PATH%%\Config.ini`,Title, Show, 1) msg(regmsg(TitleMessage), 0, 0)"
path=%TITLE_PATH%

[em_title_off_tcfs2]
button=%COMMANDER_EXE%,36
cmd=%TITLE_TCFS2%
param=/ef "set_ini(`%%TITLE_PATH%%\Config.ini`,Title, Show, 0) msg(regmsg(TitleMessage), 0, 0)"
path=%TITLE_PATH%
Т.е. значки в этих командах берутся из самого .exe файла.

А пункт меню с часами вызывает сейчас команду:

Код: Выделить всё

[em_timedate_cpl]
button=timedate.cpl
cmd=rundll32.exe shell32.dll,Control_RunDLL timedate.cpl
Но значок тоже не отображается.

В то же время, есть второе меню в виде bar-файла как и раньше, но оно теперь тоже с em_ командами:
[Buttonbar]
Buttoncount=17
button1=%COMMANDER_EXE%,37
cmd1=em_title_on_tcfs2
iconic1=0
menu1=Включить
button2=%COMMANDER_EXE%,36
cmd2=em_title_off_tcfs2
iconic2=0
menu2=Выключить
Но значки в заголовке при его вызове тоже не отображаются. Однако если разместить bar-файл на панели, значки появляются.

P.s.
Сейчас буду пробовать портабельный вариант с wincmd.ini и usercmd.ini в корне ТС. Вчера просто не успел.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Можете подтвердить проблему?
Быстро подготовить такую конфигурацию сейчас не смогу, но если смотреть по коду, то да, скорее всего usercmd.ini не будет найден, т.к. сейчас путь берется из переменной COMMANDER_PATH, а в такой конфигурации это неверно. Надо брать из переменной COMMANDER_INI_PATH, но учитывая, что она появилась только в последней версии, придется получать из COMMANDER_INI. Как-то я забываю, что тотал не только в портабельном варианте ставят.
Orion9 писал(а):Кстати, команды из меню работают. Т.е. сами em_ команды вызываются из usercmd.ini, не отображаются только значки.
Команды вызываются, потому что Autorun просто через API тотала имя команды передает (которое в свою очередь берёт в меню), а значки, естественно, сам читает :)
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Как-то я забываю, что тотал не только в портабельном варианте ставят.
Да вот и я об этом тоже как-то забываю :lol: Тем и полезны подобные тесты.)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия Autorun 2.2.11 beta

[cut="История изменений"]
* обновлена руссская справка, языковый файл, мелкие обновления API в плагинах
+ добавлена команда RegisterCommand
* оптимизирован вывод информации об ошибках при вызове функций из CSMA, SHA и т.д.
+ добавлены функции IsInt и IsFloat
- исправлена ошибка с возможным разворачиванем переменных, там где это не предусмотрено (например, в строчных функциях)
* изменена работа LoadLibrary, RunThread, ShellExecute, LoadFont, добавлена совместимость с GetState
+ LoadFont возвращает число фактически загруженных шрифтов в extended
- LoadFont не разворачивала переменные в имени шрифта
- исправлена проблема с ограничением параметра длины в функции StrLeft 127 символами
+ добавлен функционал WDX-плагина
+ добавлен макрос extended, функция SetExtended
- исправлена некорректная обработка чисел с плавающей точкой со значением от 0 до 1
+ добавлена функция FileGetVersion
* изменена загрузка библиотек, плагины не будут загружаться многократно
- Tweaks: позиционирование на функциональных кнопках в ControlSetMouseAction, ControlSetHint, ShowPopupMenu
+ Runtime: добавлена функция RequestCopyDataInfo
+ добавлена функция StrFormat
- исправлена невозможность использования "_" в начале имен переменных и функций
+ в API добавлена возможность вызова функции Autorun_PluginFinish
+ Tweaks: добавлены функции для работы с подсказками ShowHint, ControlSetHint, SetHintParam
- Tweaks: исправлена проблема с пробелами в путях в ShowPopupMenu
- Tweaks: исправлена серьезная проблема с порчей памяти
+ добавлена функция GetState
* полноценная работа пользовательских функций в многопоточном режиме
+ добавлен объект Plugin
+ директива AutorunFinalizeSection теперь разрешена только в главном файле скрипта
- исправлена ошибка с относительными путями подключаемых файлов
- Process: исправлен размер буфера в ProcessExecGetOutput
- в команде FileExist не работало разворачивание переменных
+ добавлена новая сущность - объект, добавлен объект List
+ Tweaks: переключатель \W в функции SetHotkeyAction, разрешающий работу горячих клавиш в дочерних окнах TC
- Tweaks: убран лимит на количество элементов меню
- Tweaks: исправлена некорректная работа ShowPopupMenu c файлами в UTF-16
- Tweaks: исправлена некорректная работа парсера *.bar файлов с длинными строками
- Tweaks: исправлена работа с переменными в ShowPopupMenu
+ добавлена команда SetError
- локальная переменная в функциях не перекрывала глобальную при дальнейших операциях после инициализации
- ошибка парсера, не позволявшая создавать имена функций, начинающихся с ключевого слова, например "IfEnabled"
- исправлена утечка памяти при использовании функций
+ добавлено ключевое слово Static
- ненужное сообщение об ошибке в функциях с открытым списком параметров
- исправлено падение на пустых строках в StrPart (возможно, также StrPos)
+ Sysinfo: добавлены функции GetNetInterface, GetNetInterfaceInfo
+ добавлены функции FileGetAttr и FileSetAttr
+ добавлены функции Date и Time
+ Sysinfo: добавлены функции GetMemStats, GetDriveSpace, GetCPUUsage, GetCoreTempInfo
* запуск и остановка скрипта из DllMain перенесены в функции ContentSetDefaultParams и ContentPluginUnloading
- исправлена работа оператора <> для строк
- исправлены неработающие сравнения, когда результат не равен 0 или 1
- исправлено падение ТК при выгрузке плагина командой cm_UnloadPlugins при использовании RunThread
[/cut]

К сожалению, работа над этой бетой пошла не так, как хотелось бы, поэтому и сроки затянулись, и объем накопился значительный. Так что в дополнение к длинному списку изменений будет много разъясняющей писанины. Так или иначе, на данный момент можно считать что все глобальные планы были реализованы (хоть и с оговорками).

Объекты

Изначально объектный синтаксис вообще не планировался. Собирался сделать только какой-нибудь списочный тип данных, с которым можно было бы работать по индексам. Какое-то подобие можно было изобразить и имеющимися средствами:

Код: Выделить всё

For i = 1 to 10
  Set %'"var" & i' %'i*10'
Next  

MsgBox %'Eval("var" & 4)'
Но выглядит это довольно устрашающе.

Понятно, что для работы с массивом пришлось добавлять синтаксис сабскриптов для обращения к переменной в виде var[index]. Ну а дальше, учитывая что массив это комплексный тип данных, объектный синтаксис добавился как-то естественно и породил новую сущность - объект.

В данный момент объекта два - List и Plugin. Почему List а не Array: c существующим API, похоже, я уперся в потолок. Реализовать массив так, как хотелось - с автоматическим контролем времени жизни - не выходит. Получается кривой, нестабильно работающий набор костылей. В то же время есть желание оставить свободу манёвра и не занимать имя Array, на случай появления возможности сделать более правильный массив.

Таким образом, в данный момент главное ограничение объектов - это то, что их нужно освобождать вручную функцией Free. В этом смысле они близки к объектам Delphi (типа TStringList). Если объект не освободить явно, то он все равно освободится при выгрузке плагина, но до того момента потребление памяти будет постоянно расти. В скриптовых языках массивы обычно освобождаются автоматически, когда переменная выходит из зоны видимости.

Второе ограничение: обращение через точку и с сабскриптом возможно только к одному объекту, не "нанизывая" их:

Код: Выделить всё

# не будет работать
r = obj1.prop.item[2] 

# так правильно
prop = obj1.prop
r = prop.item[2]
Третье (условное) ограничение - нет традиционных обработчиков исключений. Но здесь нет и работы со сторонними объектами, а методы могут устанавливать переменную error, как и функции.

Не стоит строить завышенных ожиданий насчет объектов. Цели внедрить полноценную объектную модель не стояло. Это скорее просто расширение синтаксиса, а объекты созданы в первую очередь для инкапсуляции данных и удобной работы с ними. Создания своих не планируется, это избыточно, да и реализация их при существующей архитектуре будет набором костылей.

Собственно, объекты и стали камнем преткновения - оставлять их в таком виде или нет, отчего период выхода бет сильно затянулся. В итоге решено было оставить, поскольку, как мне кажется, удобство использования всё равно перевешивает неудобства имеющихся ограничений. Да и ограничением это можно считать только для массива.

Дополнительные поля

Добавлена возможность создания из скрипта дополнительных полей, т.е. Autorun может выступать в роли обычного WDX плагина, только с формированием данных в скрипте. Фича достаточно несложная и тут без особых сюрпризов, если не считать того, что скриптовая часть не отличается высокой скоростью работы. Перспективы для оптимизации есть, но все равно, я бы не рассматривал это как полноценную замену тому же WinScript Advanced. Зато представляется более полезным для продвинутого формирования данных для стандартных подсказок тотала на основе данных других плагинов, т. е. по типу super_wdx.

Прочее

Также есть еще несколько существенных изменений, которые требуют внимания и тестирования:
  1. Переделана работа пользовательских функций в многопоточном режиме. Раньше использование одной функции из разных потоков было чревато спонтанными ошибками. Сейчас в разных потоках выполняется свой экземпляр функции и больше таких проблем быть не должно.
  2. Запуск и остановка скрипта перенесены в функции ContentSetDefaultParams и ContentPluginUnloading соответственно. Тестирую в этом режиме уже давно и как мне кажется, работа стала существенно стабильнее, особенно при выгрузке плагина с cm_UnloadPlugins. Каких-то побочных эффектов не заметил.
  3. Затронуты функции, загружающие что-то резидентно (LoadLibrary, RunThread, ShellExecute с ключами /T и /TT, LoadFont),т.к. переделан метод хранения этих данных.
  4. Был заметный баг, когда переменные могли напрямую разворачиваться в строчных и некоторых других функциях, чего быть не должно (в т.ч. согласно документации). Не исключено, что у кого-то мог код быть завязан на этом баге.
В остальном добавлены полезные и не очень функции, исправлено множество багов и наверняка добавлена куча новых.

Справка пока только русская, английскую буду делать чуть позже, когда по новому функционалу в русской будут исправлены основные косяки, а то потом сложнее править параллельно в двух.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Версия Autorun 2.2.11 beta
Да, изменений накопилось немало :) Будем постепенно пробовать и применять. Пока проверил со своим скриптом - вроде все работает. Проблема со значками исчезла после того, как я положил uercmd.ini в корень ТС. Но правда только после принудительного изменения и сохранения настроек в диалоге "Значки" -> "Значки главного меню". Прикладываю скрипт. Изменений тоже много. Все подробности в файле readme.

[cut]MIME-Version: 1.0
Content-Type: application/octet-stream; name="Title.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="Title.7z"

N3q8ryccAAT0dXcNB2UAAAAAAAAkAAAAAAAAAB/7cG3htgBje10AEbRYrqfsXNHylQ3bLMhSmrkN
UwD7Y5I6d6Jni/eJdrQTR5fyT73OTTTu/Y/dlhTMTqTDFMZC4/NF4mL3ixWxsluEHFjMKdZbBRpI
Kx3Ep/r/fgfR5dVKM3VAG9uonH1CLM1XieX8tM05IOnQTji+CwutEqLdwLl0jgmWv8PN0iTMLvWX
aKiswoHpscOW7OsdmR3Ygtw2GIDfXVcPXrLYqryhZKgWlwcGHlVg+Q3uAqi1wj8R8Bc0jryjGDQF
Rz4JHJvRbKURfcJdy3+MUVzCZNIjZ9FcHcgp43SwOzrSAVTFnf+8ZHxuldLC8zKVmZjfgbZ99z3V
6KFPdyFOuF8/DL+TcJbYXEgW/DLa+HZBFlpYqZiI93yYoX5HMvrK7rM1YvSkENA4AZzCTginWtpU
msGQIs6hRsE7F20kTfjD5mKRSneOBaM+HO1Dj/owBAxVBo9n9G9CAp2qwk9PZwnN3oQEgcaDx2wC
NCGPi57qU2GbQT8NouOufh7ygsZUc981ZZt7zlRef5tJS3UrG62ewy4fdLFBXeRoUJkuDaXqxf5B
lfQbmiCS8s1YACQivlHyswexySm1L5MDM6413OeeUGGzm4sNi3Vqg53EzoFbX5ig1ObOIj0p/oJ+
kR+hv7GdYs/OLArn3NwzQkxA2ISvbAUduzZQT7pyNJvP8f83iiAZbLl6Cgo7aiLBh5hkDCWQZlPR
mr9B2Fvo9DlkPhdrKNEWpnl/Ix1tPRWtfZ4uMQrfTRA4v/sFZjfFYVbjgU6Kx9kR5Be8wGBFlNUQ
uP+ksWr5iJ6q1ROPZp8Cvr00pVVFZ4y8v2N4QaFK/toM7ZRRG1pRV0ZpMhH/XREU+N00tx3iTCyZ
kAlwhBrYeXAq5cHxBKv7SFuq7Z16RXMeevzkwaBEvDZqZsCA/bWVMtPn249JGIuC/HCs/PZWcohs
BrG/kXsrzjfNlx8+SqFWM9CSwTKAlfSxLRiqQZf02k692Opc2CY3glu15M8ZRAE4HhH4Qxxgxx+W
6s1WKrauCds1gAk1I2UQv4GyS1B/V/aFNfdWuNYLy5bq9bsGfOTrsqaI61m+cZ4n2RBl0jzOWcs0
O4duu/R20vyWtkQnZrDixQC/WXPN3+rsqXijLgykt8m9o9NWXa2imHprvgDrmEs9BdmIK1PP8Ssc
RXTaIeFZsuDgpRu32WVW9mi/T0n0JYb9edWmRpRfET0ETbQWe0IIZzV9uptmwxfHSxRJjaY7Id0F
GvMWIGB8p8wlJWwYqeGjhCXQGzymjwMJ+RM0boGnTRRKGLBUesAiRt8mJerbKpxdoLZ05DYg1r6D
wYJabgSIXoLj7XjA5W/1jbamQWtCvk2UkmdK671yprTHat/+K/VXmL/NtpfkgTaXBp62EMQFOOqG
OuAkmkdC6Xi8lcO1waj1EOhsDmt/NAPBzo3MIkZQn7+O+m1Wq2UkDkfcRZdFX3cgYR7uTIrIME4g
d/WG7kTrx+4DzyS80xDhHcS/f/E/SL4+RLuA4nG5G0ZuWY7Fx5pVkLzRQygN3NKDdUeAQpW5Hsc+
tj81/LhZYaSA63OHYHdpDW1gVLXSzMv5H/K4fLuBNRK7vN/slfE6Se6bIJ5ML/DF0/+0/Jhq0u5T
fLSys9rGNgm26oeRIfHDUaXck5USjllLIHEkKxJdlm6ie6OflOThfkQSapp0UTi6nC4t9WGMBiGS
kXg9X8ubVALZ6OYTDRa6QSAWQVXektjV7pL7dHNVdNsshDZc6RuKFPetjQJVKhKOrLKsj7OmW15e
Eeust9GgDLRZF94nztWMvSFZw6IjgFqTtGAdPXj6NfFJWhTn4/O6op+oRiyWfArU8gJV4rsL7nbU
lkcDhIifJtvKwkQNCrjvfvCqegcdf5LvXnfT6V3QR5c1patHsrhJDy5h7hi2i9UyaEUFECbua6uz
yYUH5vEBVPqc+9BiiY1o7Ho1Y0YEffV2Ke1nZqaDrHnGfU9xvzFN9Q8LJNK1T8n2D2tE+cNBOgkJ
mOFhNWd0FWO57hcCIj0ZJ/G2FzwS/J7dWMGymeyzG5SrxKMBvRMLQLIM6WqG/xdF0AsrffV2CRoy
psc5EANny7M3JNdjmI37oX4N8MO2DqiXdNlc65r/3nGmwFucfgptnrE2r+7oZKEs5ZtilCQR5KBN
Co4E8gmdCiOfEThmXzazutVyKLeyxRUP/fjqXfVMa/PSwf5UXpKQ2n1qhZxjO7W5M/i5ffk3MTKz
RMDH3NE8ao5YAWSX9hm1P+t05vwS+Jzlg8Rf0JAHfV4hP74wKodC0sb+T27IGtC1dYESwxTCav7s
hhFByq4O6hO9L05GirR/7hhCct5vJ20dpDyLVxcgknpm/rKz9Z2a0IjW/CI6kCZV5/p3cDT9yD5G
HNkZICGIFND2ptOsB3517OyWeE/dM2D3GxNrCvziv1E+uVABH/9ibF76nLFr2kqvjX0VFJU4fmZx
F03gM/Hm2+gqL/0/paSbaM8anBXgfhAL3z+gJKuiTMXUnOgBf/bY2mGXGKb9jOl+dOMmyDLSeQvy
gpKlBRYwzrtCWw7EDMH0LqeM1P/2S3MBAWrpu4SXnCvJ/Xar9VAxaAtByJzQb07tCYZFz6Ywp8ZY
Kgr2JWfZ0DrrBQ+Nludhws7OW309a/unXNR/Oa9w9qrdpjjZ9tL9/ZN8zsSIKxT0s0/T7KZQ1pX3
AL2JXVmLkEVEaoct4B64NCp4dQKYHFafJXvIXdm0CzuxYXgBoqL6LXQORWN7hnUbsAG7XYb9lif+
TlHDyLxyuXGsj3/Czsj2HzG3/AvuHKJJIaNy4alJL+uTxMvZaCFtd6kJmL+L3lB6GLZYI+JqeuNi
NUMv/az6LvFFXEpSxShlkkvzJMcQFRRsLdehjX4vK0QSmJmasVA1djyYzjZmJ18IU4P+Xv+szANc
SgqhCP8ChlUFKqcyb/MqjZrOgsL4NQMV09+S+qq2Nv/YY3lNNyFAoKq3WBbkRIRpPQqfkpNRAjV2
Z9sTp4Hl6eSNwR1lj0WN/tuCT60rIug9Fksm37VKO6NmZGM4U1CAPnxFu7+yzngVi8ZzyEH6STaI
OwdJurfibUg64SuIwdggTKjL3r+ryeY+Ea1EQw7pFAqq5NXYgrjMItXT22dJZDeqnkdI+9aRqlns
TjZ19W4nKN9myCwlc/Nk3h7YeHfwzj8VhJzq2QUnmySg0nGLd9Dx2zD5e0VDtoZOIwxAqCWU07jc
mej4JrPEMpAKbkJrnoLMd5gxzb4Gj62YDwZwKZ0mtM0ZhH9n2FudVSVXvscGXnoJ4SbK1OyU5FZt
WSeKcslJYHPB1nWi/QvhT9KboU4iPO7Ie1FZtgxAfj1FnUvAhOtHMRjs2Gheo085AF65+a95d3uO
NYy1EbQtH9HaPWuNiLwAR2kFW3IQdrifEXh+6sg4uWb123+/xxC/R16USSj415u9DCLfLvhjm0ay
QbW+qTwXKjl+BnMh90yvGhubfdo4k3ADApL9bx93BxzCr6js5ucmIiYkvKOIjOZS1bO7yymTnUm5
bj+AAZQJtL/j+TuE6VhC4XniK4DVEcC3G+eQm1gfgxxtLxDmom6LGeevnnIc4lVxVZ/NRYFhywfS
d2Qy943nEwAP856dWkvIse5RkMC2vupvSb1Lml9zAfkkGNB5wGBTGzxe+VGSIBoVnrPyF4w6rxxk
NhW7kfLmPLXvYqqfn+5nCofrbmjS9W5o/orksRwX5Q+YtImBnNSCszbfUjKt63C9++p+br+nqC0A
AgoRjJPqigXmQw7Zv0p4jc628wlib4O3pN6yq3ufDMgMVcu4OHYfT74SKRgWoLvylrnN+aLpoIqq
mD8kJzqWfw/cMEUYMqAnr0d6/qpHJDk2h/Xa5Sp1If1zcxTxuEMw/01CvO+kVPnB44yTeI7RwPLs
cWnCEX8+9OaliG6oz2tJE9q0ohDnWiIiT92JQ4wineSEJCxzrhdIL3DcWuUxLbWiuS0SfyVFIyEa
wdOhn2S9craABdkQ+DK4Zslb4fBGppT8Cn/MTOqOobj9UJM8UmZp4+5zNdORoCVsCUMXVOgjR9H6
jjYmAOjOaGabeBN20lGZeIwixnnJmcJkZ8aBPNKQFJ2ZjHpLtBddd1285wHmwT03UW3fTMQ7L9dY
PJzW5+76C/Fsu7cBxO9CeDe7dqhKJMdAo4Iq9Kw+LNCJlKkpd9nTi6hHNExALeW95gn9SWIugevi
3A36S9qS3qtzZ85IA3MADtYGzkonxOQdG8WD8+lOev3oHGdonXYUUyyN4cy4cmTtzmiAeJb2peNn
ELFsofJubfy13Sbx/RmK8nPXoKj9jIOv3aXxA7paMIt4uEyQJvChvv1wia4E0OgCN6cQFuqLxo+d
uEaQKKF6AZ+bl/zbgZEemEaSfF++RRVdzt8Cun+CmpJEIO2lDzWigRkdFIT5KMinKDuKb+cq/ryB
LipBQ5rltShFdjZrrkeIZjUzQkKCtBAyv/etDF+zSmlNI8145qi2L5x2z8ALKDF2/5ozdFOBz3sE
8YRox6gjVhMekWEiT1Av54VULzU0A8ohKQdlxQTKut9l6Cro/bVGcwcyROTc/l2cEp02KvRhkzhW
cmZaJn0z7Etl1xquEGFFx8oWk2sFGEJQ1hUsA1t1/+VmgqB/jCBcImoRfw6t+QkCNpnLRPmWae3D
1oeo64XGmRUGXKbB3Xv/+bJGBUHNKA9ybGu0D00VOw8IFOWD8QA2ov0Geyv/AA78vOj6n45tQYPv
taaJ1exXPge2kf/Khc8R+TH+10sT8j14TJA+SICJEDrjnLolU8GV/be8EbD1mldVDNR1ZLptvEQd
52Nj6x6mWHdiksDJ2MYisYCmnB92aC/vOIKAFhpmsF6EmLvCUO9cIUI/j9sryoTevHHdMY0x1bBx
JsnUwc23vp7RDgmU5S6VCj2niiafCx5/o+L801XxzjZud9W5km5y/E45aw7U+cip7kALNGodBn18
xn2WXYven8F6l9ujmn9RzVvtaIQkWfHbkp3ubiwyitEzHN0Tzhovq4ro38bfcE0Bc0GhPY704y0i
WQ6pmuBjyZz1L4pOhMIW06XOYJWV0o0oryB/TfArpzZ7wL4m7ZxjXQLAILcGFtLgh4DfMfCF5CFL
Ia9Zyla5DLEEPPzmTlnum4jTZfgy8RSQz3sfSJuJiwL1oJ6jHTNQJtM4VzNdzMD5H4vyaEy9Kg8z
fxtw+Dg5F1EJ+0+5LAra6l4VK636AoPhSopKLbVZ7uzQ76Sm9in96g1JOwB/Pe/NNEbvs1M/SNou
PheTRDLSfcBQ1IJ2sctjkv7JTDDz2Ic/PRwZv+luWVAFUN5QObLRKM284rA92CCv/gUGpFqf8QBB
yAuvDWudk7ZUcdyn+Oavm9e1d/v5H3qwfjj4TGlMDOXKIKFOymIsALmUqgaDSNvGHSX11IEiEwPR
J4kXvtPHNoQt6Q/EfvDo7yZbeL+rz7+OK/TPk/h78G3FvKFMJ0WCwfHYebJ0SK3G7c9sbI+M7O/C
h8M6O4wwKjg1++xSsQxuCf57j+3fFLL76EQxogbwTjJH+cDYffNBDL28zrsjrt5pitFAMSH1bDCs
sy8CX2s0ThCUwGTJ7+7H4e63iXyCm/7EYVCN/GfaeFea71HKCfQkmOECgWmsH5kEUfNkz3FSvOTC
KUIFj2LV9AL7QePn4QG6gfB/SLUXZG1I1M29+9allTGzx9VFwvfZoF7SLCkj+QC1Xdo4ukaj6W9v
tDNaBaWXfaW7ZGUU0JgWD2FOF0dq4Y2E2Kz5o2pcluhtvsOI1FXPgsyw9Xs6w0DtcojVe3D+ygDO
R0m9Hh/L+KuR9Ni4PvTaO2Zj8KOttn+MPsZTHIY78KNweVAulEA7zd8w14ejnxh8PwCpeiRbAuDz
ms0RdEPU2fzOveRBWkhfitpGkW9RpFj4e2iaNsQaMHMQpZ29A0HG7rPp4ZF695RfrrqoyVL/9TbU
GK7PQROCWR324JqJk8sVGI8gHOfusI59fdl/3anGIQGiJagbQtrHZg6dcpMZu0j4o+bFK+opVWQY
jHXq/39igf2jInPw9wISwQ6RaKVYzzLfxjtTq4EPhQy040Cv+RRlLN953VZVVyyIq5sY/D1M01JO
NpD2ZgqnT1KS6fc29aSxYGbQXJZLnEe/FWsH+bM+WAhgJ/acDQTGZFSpk3MnBaD1za5cYA/6lSzS
z/u+lS39xCbrTcHMrCX/vSusLDxAVd50Rnk8miDDwSKCDsGyOUieOSt9kLcHlUyAoubqijZu5bgo
Vm4ikm2R1KDKGxC0o7MbMbhVDY6BZtjk5LIpgMTxuch5L/CXOfCPFJJHu6oX5+yxelmsGSMmPRT8
H0sO7WLvxRTLMrOIpI0P+Gy4PWlnphXdrhi2HChWlZH3qVzxA6Uw8+MvAj6fR/DidGjZnJzsFwYU
Twg+TyuFgFe2Ve3yAy5MqE86nbECsZbs1ptcND7ep6EYB5LCINNXWZ4Dj4V02XBMHV+G2swBhdS8
/asjbu2KI1S231nCJZwdl5Zz9DSMrQRb1n/U/I2fT+bQHrCnFDaNqaaPL8FA+1b+hqvzhEsD6fq0
Hj8I+AI/tQUXWGxzu8Agp+VT6uOIcYE7pabZKgIrrS1AiccQu/lwfB11WE+yQ5hJVb1VnnO2fyZV
qtp34VU6kTNRDlj1GOi2ldE6LA+KBjUJg5fAGyr7JGh+US73HrJ55vNr67sFF5CcQq7ZxljRQTV2
pcfKkDB1EVtlnMYRsnw+tYpB94gqBGAt6V2RqZ4itDJ8YPvrE6k4ASDTSiEUoOc6BCdvCc0MMcRp
p5n2ewSM8zXMlUsg34Q9ryMMMBDcyKjTRPySDwPfAveTMFuBPCKk0qb37SYjGqNIx0RZq9sDY5dg
Qb2t7t4Ok9qumWfeLkojpzmKawj8WL5inaSIz1De+/fZsbDvaOHNgYtSkVmbbUqXwZqJ1pJCu9u9
fTtcf/8Xqna+4x0i04jTG232tHMks9orvlZXhSBg0WMS5i/KH0OL+YDhlm1l9Pvf84F4w9V7J1sv
/nHJgaLbfk/2urYSJnHihVr1M9llUf+ChbLzt6gzydUsRL3tUquuwpSV6V7OtrpNbW5OSWQPTeMP
6AM0qOtcy+VLfleuHfyskOodjb1jBR1elnKBRKpdZ4URXiAWcipOcue9ySlvt43MKWOj+FURNwvR
FjnlsGTBwVmrK9o/l/S0rtW9WboMwRRL07wZaILS5iPJdbVTbNGb7KrIrNN09AYr7dloLTF+9FhF
SwhQbr7/Q93qbxM79f0px+aAdRqjoBA0975mjDFITC9Rd4hBd9isK1G6ta97B5NaxYiPI77PA1St
29GNZZTtzlRO7h67TTYNHeHyLUQHp4Y6hNIHZkTNM0oVsE3DFkpVsDFztu88hp26Uv/Hn+FBXTQ8
PjKYy86KuaSnCGIEUeJHM6XfjJOwl0r9bpXLbggvp5/6A/R1S0E6a5uSxtHYOVbgjdhBqKmBEXC0
ZIi7wmVkCbk91jDqtuhWvUxgf5w03v2sJG7+0lImaNMJGNIDh3lQALTyalhd0IwRHIcHGIshK651
fq4/BoX5xuLyjvFkdEPBfvZ2J/nPTr6jh9ydef3du3pmUYQDb8pIZbi9UZ/MAW60+vyecRWSo1U/
LQD6B7Bg6DN/wKgqt7cwnHQFhGcfWStS46mmw2BdPAOaM3Wu43M1eyWP/xSDlO2QMzhywFLcexXz
HFVglQvR7B3V4qzloTt4gGEDLr5t+/RPwjcRTkwTvb0oTheET+G+Mv9bj4BncV+yjf2oVoNetm93
2j1BNajB+aNjdUxRjj4yJIOT6ND8Pa11qlRZ+f39a6qX17Zn31MF6fI1yFPqsgtr6ENxQi1cXjTD
i7GUC+b7w8nXVA8oO+gaO3I2GAdkj69HKzkH4UkYNqBe9iEz4h9R/TrayP9tJxH00G6uHg2v84bI
Ett3k4fdTqazYlfc8p7KSa1IKlu0cab7mGKs9bV8NvxLQQxOFS/6aG0Ex88BuagitgiflzmO8aLn
TgUHA8xizUDjWOhiZHUJVjnnDCB4hxDluAe9XQMJ5HyJj0kriFDyNnzkek6fZoOr+xlgVi8bDYM2
SNBSbnrCFsD8fpusY37vZGzk9Qmf5JM6heULBzLiDEo2/LeKTLlCO7DUP+p0iF8RwYm+i2yJNTUj
OKC92I6EnDlGbse/bFlzj6Dv6zxFNANSWtovo+durU3HlE32DZrHwynjHv6uMHHxaFKQzqtynzTt
h4RugfrZ853AxeCrMbzRF8Sa20dzaBI7nnv+3xZh+NFxEV5FGutXxZaXPSIMk71ZQxkvHlfLi8wQ
qVG4syvCpvA780XUySQcRsJ6snS0P9Q7pdJwjFk0xEIVPrVhil8aUnH5Nv4M4JDoDFaOWr2YXEih
QvokNZXPz/hlRoLSg/k0wcB2SNrbkxAHNG6djiHsXcyXLwlf1Pp5yH+NUvT6cKfkENXVDoQiokrq
Hf70/Y55UBkMVebRgW0d0geEZ1cJLJS8KGf1KMMpxA5BbxF7T1Ng5ZdJLyCYmfDnXTM9REUcH/J4
CIQbKGw8u3GR7o6ymCJexhKrlzzBgBqKEwJDn3dEdgircFjAVSaw0RkkyQE1dkVe3XWNNYOLIsf2
LYPZKzkh2oUGceI9XXvEHAPj54UPElX81lIEJM6cO0ZCAFs0lV39+8ygmb2xoaO5Ys0ZD2Y32pMB
8ld8sMtYsnk9FGOX4zTeryyJdVms5qOYCPvxUdEt3Vsg4F3x07LbdE5tN3LynwytSURghC9BjTVH
8OiP1Y26Km42rN5L5ftqeQ5vgbvE08HaN8xuM7Q0piLnHtPWvCTQ5KraT5s33opaiWAJmyNf/djc
PHGw2sW/YCYrDSJaJoJkeXW3l5I+VjIa7z9qPwv2OjQWhAhBYkFxdXglCL+2/o/nehHSnSGgcrZp
pfr1nrx1EuZR7YG6CkzDXhL4FMB+Uz6oopGre+9ikOmLz7FNM8hfDKYRrom3T0Ty9hpK08EtBHhs
FvW1DU4Q2WRf7rCHcV2b4cZ9LHnyNHZoUTW2Qkd8QML6+7PRUMZlbip4FOYL7S4J9iT3sC52NiFY
6c7Etb3DKE1V/J923n2sHe3ygaYTqZaOQ072Su2giOrBGGRymDArCDsWA+ogkCfpjYywDS6HVbWh
FtMDt7HqpuEbGEC2qNkj8sFjLBKGsiyUJMQ6UhBTr3QV9mTnilrxgN+nowtg6OM/6AUhIjPH00p5
6OiSsjpHqVvL5/UsFhO+AIKvFhePKYGbNKW2ZcyK0a0I+RZ+QKDZDv/vKmszPUMKpeK/Gk3HRNrt
iz756f6EmOoXY8d3VeXi4D/3Hut6SZdqIy813rbsOQLsME4bTtxE8MNQ5+KZVpAA1qSAbLbK7xII
XZrEE95YsqxTpPP5jHTNF7MLb3Gl+a9IYHsnAqNpte0lrHo/QFftlnkVJQvVxGfdTlL2L1xCUbO4
y3FXNCNjld6ZUwHlEm/jNeq5FxJPa3mcUEyXSVYgE3dqx8NwFtLFUJ4zOutGO8PeaYRBwsEgfZh9
0pZqxVihWi3FgLwbalYug4n5Egr6oxU9VgLrrk3KSyBz2NIvpLVdljOehEvnpgyilOSDSfHYzSOu
0WPP/PCy9bUlYXeSzXcNYfKBpccBOHj9jgG8/C96gtPl/zS8GQXIb+nZ8W3lXxWcP5kFuJRPkcPd
pwe7mTpVjCTZSOAXsIL5axL61d/KZIz12iMiPNfgJ1hA3QDd/Yg4LcjXqFwfmAbPIukip67bhMc9
FhjmFxs1wzzTUhh4PZkygCm1GC7cter5G89f/wZjh5JuJF7iCkxgvo47CzykcxQhdiR+z/SJqW+D
1ii/Cg/Xwc+iw4KdYmT5XTFKsVB6Xb/LMP8fronjwge6oK2tV19uJBKWvtuLO02VkCnBZ8mgbCPF
qAoF1y7cv8fFwMwcmTGp4KR9SicUlgL0MrixJDY+UVgDcgCedy3ZU0j6fj3YD3XFygDajc0PoLsw
DEYC/DOjV5NYAqzeBhFd6blRZk2PIsZ9OadGo30Lk1+EHgFg5IYwK5YLksCUlpNZxzMpohv4SHLY
WcWens8p/H7c9k7/PdRCdWULF0I3Z7vMiO2tGpKeK0KRoMj2+92w5rYeo0boiu7xyZm7ME0K8KCD
0xPKFRYt8Ki1V8sO6NHR5O9BH4CAyt/ZFhKZ4hMUZWpmVA1YKN4iu50vEj6GpUCLrIqD+65kXMBH
+cJJS3HHm0gN+y511mohwD/+Bvuluy54ghfL+dv8kZD5E5ReMtPLEHB0G/aD6Cv26BUaCiHKoK/K
chaXBE6HHrq5T7sIQBTwHB8nS3E7XuTxHIzcQJyvWaG3wN9qsCmX7/dMfrgylkBXETL/cfQcV7G1
ODOa7DV8trFBi+/aMzmNqW+wZJXHYRj24vmFT6vXNe66wRGiudqKh2DdwfZ69cTR0QXMu3nY41lT
95zyNdZl2WL1q/wUI0WRn36rkRKJA0XchVO5yqc+qAoB3v5NHvHXV+bHo7kgwCwpnHUsobJFgeCi
t46oHqHN2G40E0pBDmKiZY/DwPHobVlc3qN1xB66XZ3cXF1ZA8qrWkRquq4aRNF1CVxnq+r9/xIU
kwc9RwBP4zorreNZ73yF/YWFer5zgMrFEpALXqOe5CtdLVhiINAcSMb98xoVAJuYrhKuT4aoTESA
tD4Q3Wjif424Du2bc93TZ0ZBq+qR3hC86icf5ffJj6/2DYtggSqpOBX9EbMSaVKEDw/5G+xxu73N
KqXxNblLkC3p0aOh3UlMUC3l7IsPWZBI70ZHzi0wPN09YdiZ2v5AVhlNmqZFwMEM1D99PyoEUjtW
oQG+1Lc/JajJacRbm1NrxDMtCD/uLjcWLNWv/tRHTQCiYDcmi2xNr3kGGMnU1zVEaA3cRVU+Mg41
jhYBw5be7GP7rSH4K6RlLbEhMnBARfHbz9aLCum5g3wZS3SnVwy6GX5z5RqskU3HLUY0Vgi148mB
RgeK5bJXoznIbK0mYAXyeqbRHh0ncFnbKOUbH/eEDiQrcMVasicJkAJGCqA65DUCHQsKAq6DNp8u
xjh6YE/7bhqvU26NycV7w/cCUjzuMMbJNFSifqz7Bs9pcTKxJdBXJFKIT8H3xL+RTMZVBI7C1CXH
qnDGU4FFwAKgt9EhBlsXBvl29bcwEK8g+lAkcCG650hjFAUhtT07wfyzeyxVi+ZaZ6P9kNq0h+w9
fUhTg1jquTOtAsQP0/AtBV/lprPGDomeN0P1Nl24z2LE5mNRT6krRmCTydnRmKuZlED931NKq7Ua
Rl/ZIZLX+H+BuLDgfTFz6PE6TYyiRIbAAAuVJVtKZasfKws/MBgI0Z2W5T+eVPQhI2azFFzdgoeZ
FXigKt/eqoj4yk8v5pxnxdlWbKfj/s5TNA2sxG3Icc8kQGEqNikDexUPpOi3gDBaAF5s6/Ix2hv9
GRGquNR5jEEtmuVk99d+TNho/qf03ytRxmsaKcNX0TtDnzOeGPMuC02qutxStOyJ3BPDuZZxzr5p
hvKuzXSc0OKSLHIEwqV6suYpDH3fVthWIFX7qAGEICEhjnkKUWn7N1GieQpuz8gYBqE8Hci7fuPY
GZe+AW1WiOpXWY1IDyxVPOeApRg5qcEohXMfUeWtro9vQFZ81pAQ8T1ipIGib2Fsa6Ky67nNSzag
FwZVOr5PqII2GR7aAA6Bg5KRc0WqtfCwziUUun2U+MTT3XEfPnlYDgkmAsVh303rnIB1jY501AWr
+/DIlWP9ozlzMNA1VRJ2OIfEm0FpNtMViM3RYr/7xcA0OXce7AkWN8WmdfxyS1Ov3A4gNu+KzIhp
URhowPk5v5k7tH7zJ5CmcJhCiW2PHX+e3raCJNQZBAxXxmr2ELEcqENylEr99aQ0pJWi5pw7QyzA
gQtMrXLm0BIwmo7kWzFFBpxCVdgZK/rcGzQxq8x1J1HdiuBZ6Ghe6wpYRLbgLfeFV0k5AQNQ2S6m
qq6QX1y4QQxM5Fwz08Ritw1JdDJx+71WsDRDShWe3Ofv8ah4pHD6DWbDpXFx4/ubbIBKzKQ0d5x4
vDTKfnra9O7TCh4ZWKYAA9spmvMHltWJZjzg2NtP2kwQslmIOVXWY9FHAdtO2AFZgh8UxH8KSpft
CGOW7AJuKYze9+DiLmfDSsCK0OvN6nteCtelkqYMNsa4qUonvDUesrFcsnsfFeNCmN3J+2PzruxM
X8lH6L23SBR8HkDGK0gzMaNjh3DHYs/Fpfe910zCAJ/kU3bXzyAU39VizlKr6Upj0fVJBGSZV3MY
3TSKLHT9tvtzCyV7+BCBi9TkQca9HBmZhCCpJ0GmejGrP6DYlDXF2CxS/64HZylqoRn7wCO/dMgB
IrXpVltqOiSZTh2tsLpiQUgNx0cUf3KSPwMOV1jlmnMdh1DJgtanYP1zURkBN8LICJcmcvdUCq99
bYfda4NItkBL/FvcyI9YDK+eVmO+vPqe9jFgrC3ccDKI9ONlytH4sYoI2wwaParTPbGadUEoS8n/
qYwgC4+WK9XtxWtMUL3J3Q16aZSRu3aFze/B0Pq+7za0hA6AtGQ5BASbZV7diruMgOzn7Bcg6iJg
9nwVvXL4Rj8XMhN4DlqvLtl5T6PkPKYTCAEdsh4tSO0NvWenOLn2UgE8ZbO9zwx1wlkfOX0uElJd
v6Qz1A2PxFqlAwEL+VURNhdexy0Q9kSKcnHaM4b4qelCqjON8nSRcXpD/+ltkXPcbOAa+l7EobJH
2sWshVQQSaF6qau2Se/LIT4rJA7a2rN5ACdMuB4WgJeOnzgmhgw80s4NsBSzYbT0IBcF2MhNguiv
f3zk0yYIYGcx1O+ShfG7qlQyzEz0RGyWyxLW3m67G6gPPERjA/XfX6O+ntQ1YL1yC6AqCThs8rbD
L5BupoYOGkk5ABWOrZFMHmZQydrSN51LDYGB+L4xlhQNLq6NODL43ZSdRgTKEqF6MCD0AIYOedvj
CavkiaUD+w+Va5TKowyVfzgVmupjp9GFHSSowLHGdaafpbAypuu48eO1TTTOB1LATIQV0xRL59yf
CxDM2YC/hPmNN53y9Z9+h2kE9Z0hH1H/5BtQ6RTq8BzkLR9pI6YfxCatheatAs2BqPhekwJnQtou
Jy2ikiZoRqwT4W5IplGMO7Mb4RyHisC/mFAHjJ1zJkURIdAgxOe474tdnG/vJnZBo5YuOQyIUkpt
MjeZjPXD88jaRMg/nqgcUt1AGEnvWJ0qNcJwT5wX+jx8jNkDxOB633mtbrJq9bD14uhGXX4GCCEQ
3jwwglQ86Cc2J4LPzcXEZ68SXW4d8a6AObb02DZnbAo7JEXJ9HYs4WkXYuD9wXt+CixJ4ymcjVhw
jDt/zpt9gvOFfqvoySs0qERH1TWWJ6DB5Co9BWZl5KSWXBW7Ikvi3klvX622pMuKix7nJRpAUE5+
DiJy60GatPpWAeVwLCJjHtI5RS4HizIr2QcGwIelveNQ7j8dGautwgHqy9IWiAICMBDJ3qg7/LUW
zqpGC3+mdYfaYYgnv7MjNSKxO6FUVNRItYls3hMzEM05Bgs4TafexYHnetDhg1qEHRaY7KHp03y3
ClR4hLMNpXU15FMqbtgiLZRRTQLaGVOCKVhmy1TCA19LckvqnJ563WUpX8OWm4EBRTaDOthszXB7
uKUd/+BVRA+BhFEgGVQtLBMR2Bbr9AQVR3nHJN+bXnLa31FN9NEbgQlunpQpjNFhwV2Tnk2eRwlK
gE2r3A0y3UnOQsbQCFBA0lwHLxaZSfmDRa6f/yKgU5RRmRMl3KeuYdgLxb03bC1FiNcoQpSV+xOy
4xgtapQRSlUZxjtoyKkWdDlDg1z0sIaT4oik2yjTD8h8lw5FHp6lJMQbmr1CH5HJcEZYY1zXxfGc
n23OfODv16/bevZA1mFXVdcnlGvF1ZRIW0f4oNSXFDz0gU+fDy1PahsOrgosSDaj0SGpPkinBLX4
6ZMJPESG30ICGyj0VgzWvAZsNhsM+H2iRb2mdZpbdakxy1/mgNPkUuMvy4LVIKlFPqM4C5extC7l
tLu3tA9B2lTGnZXQ9unEXbkayokRacJFfhhtQpxtpE4ZBivbDYCwPdLimi6vSKf4ZikXvu2NtmPF
Asdgn39PnJUv2IrA8UouPC0o6i88QBeY3u/9FDXPwe409PqRfQPH2hgMe09+qdXDNNNBTKyHkqsL
mE78lggRjOPKsIJMwgjL9fA3S5Vhu60KnlgSgUi9Z+11ASfUj7mu6QJqv3SuR6znPlZqY0387j7F
MKdea7f3dV7+1mwtH6r2TbMuu5c/ggWZ0mm5zLuYyIxsYUPZXtdP8kRiNcgJGDjhNkb6GIRdPODf
Qd9Vn2qxfC9aUSBazCP/LIGV+u/8t15lKhNqkY3c9g6fOZL/R+ropzAWx8Tppo+6gNqWEcKpEREG
cU0hqOEKGdqrYWiajodAnFVi1D7+lqFY3NfxYyQllVay7KxoZOxDP/Aa6JH1IPKVDSaU/ZH6IQKa
nVNfHsRtbrbV/tLBqjEDSRWFdHWNnQofD2zg+uHRVo5Wjii6yTIaCrJGMVsc/66NHi+W0kEz0Q3W
OJ7lw6Mem6u7j+54Tz1Dt7patqnTicprDMjff+5dlDdKaO04BNb2u/Nl0nTubOCoZz9hWHM+/dZw
luUzAJMWiZW/cdmBStpoBbcnEsXbLMeLynaRziqWgAhaK3EXNVbAFx4qtLq3OJfIyLoSRdbxL8A3
CyjDU81iUrW9ngRM3lp9LsTZFxnEFm6bsNWmG5ao9w6jXYEZt/0wg9nBxCBCOi9IaYLdundVo70i
b+jg0VyrhZ1n0ApFJnXuC6gKu/AJslnojzmN7nwzAaj0SQsNPk0m/AFOFmdjbeiJGgacQ95bdyTT
bWqu2pnM62C/Nm/7+4CnEkMLeQh+aJgMd4deu5TWUUyJUyb0g0wTTndCoiRBG8TZNevCYYF1xyn/
9PIr4uwK0gjThrc0C4QS+g+8yptHfIi1zWUSEa5ldYF9drslqFmNHmWltPINDBrTxX9Qx8mbko3T
l5p2GQiet8jfciaT//TlDdeyYFDn5bgTvmzG2KBmzj5RIJF6hxD41xtkdSdc+uDFwalMJmC/kaqM
sPlFpIL8tZZAfITTaNU3ZTqAkiUd39HlgbfHCG2EP7A1cswRd/7cdcht6/h2F4+olwQwkhfXE1Jg
geG6F8WKC5aB2nUkL8OZvAe1s9mVpCRV6m34kqlM/Bx5i5ls/PhzxkRQfl7QJWaK1CHcF9q0+jH2
/FcbxQvnpQuf5PQU7/zrGBf3anhKm9HPNpixlwZBRVQ9Gmv1EdGM9zYJ6Jw19fc57jJBVCGzQuMI
Pcki8fsdo+IcLI9qjejibzBzapQD7QMBdrE5PLg5fRjb3HL2KZf5JayzqGrboLvVFxEHJ6G+FUf9
4OJSrpXYDIEVuRmDdk44+NGhsY/ObiNaxKar+W+GuyOCRSqo2UJIT3Khp12W7B1dR+v+eiONK9eS
8oGrQfNvZ+wr/rErQ1vSEx9s8R5tRoHkpvAlVmS5aRu5/byXgGDu2apwgw/9S3WxDpMuyz0B3Fb0
a8rtGgorY0SaFN07W/lrf3jtUClJpuLRTMgKVmXrQvRg9aZwlZ2Ap3SHhZxCuuDc0SyPdjrBSs5G
/C/4Wys1SPUlsu0DjhKtW3JaaFZXKd9d2Eaj1gXDk53FJqx1wnPLLZXi37F6xNDZ6jrDqzr9OGMD
UUMLYvnLCL8t51IRVGmM8Ws5x1qiywVnhR6tn7ngChBBuSAv+a4HfaD/sk+DfpUv4ojFktO8Qd2M
8Zzlduno+82OqOdNh/ljYzbfeVBUh7eLC7kgdCXTL/j9cajXHjNi5pGmaQR/tAxLSyDBIdnnFKDP
5Wpy5G7byELRA/2U/4siolYfmobmI1Q7CR/y1D4xsOhQWOxrUnn1hzgwNtr1wKiGtW9rA7znMGOb
LQOi+eBN/+MF6R2ZJiPCshyp+pNwLVNdIH7zkT01pZLQYLP13q3aG5wUivY1wrV64xMv4Aj6zuZd
09IyAX3PnQ7Z1ZhkEraZT4E511+tmwN/dz+l0AyNxzw0CZGXp3yoJxV7FWdK2Ct0VKjyIeONLGqD
JA4QEoYmPtaQfkINAL01Uu85U7LUB84WP6YiloFcHUTVAxdAJbNr6PZex4VLT8wtVQ2KDJaKRrqP
YsVBlXie9AucyExwbqMAWTRrMzKNUjQwQg2OS+eeiVjDLhRsulji5r6hwTjHgYrUsBJLUGftEU02
sGf0pljSHNB1gsVzyxiKpRt2rsUpVPhE4pX1A/BZ2JNr5zdTnJS93/jDRc7dYGmeNjHP3wOZteCq
+unbwFy89f2jhm+XRV8hGZ5CHKazP2jLaNd3cR7b3RiJz4vsHOvNCRHqBbgGnF0ubg7ObEJFluAE
iGZYlQbU3yOaG6qFF/ounW4QSQSVIrRpxvK37hM5Hcqa2oc3rkZIv5yZyG7vqDVwQCeVDS8blD3e
MyNFwc5g6xPHG659OkGJq99PYgdNSYvUMi0Z8C5Y2ihuY+2BzwcHhpCAsCdqVcB93ei6hi7enV7Z
jwolr60I4tKQq+h+91qICgMMf5njuuc4FQkdGDI79v//jZZLxAKsNH4OnPUQAe5U6NBWNb498+PD
YuHUIzetZaT40zhObQbHnMLLx/1pUv5DC5JPOrkThB44dwzECGMsc7Gdf/bWytcQ8pC8ZgW1VHCJ
fMifKR2iZ5gVfrXmFDbT7gHHbvzl9E2MCYhoZ/nG6Adw5tG9vjFpWrpuz7fXpp4y6/Ec5rordeHl
bSOMvLD5Q3NdWaJVQ6a4ULOkkWPl6gLgpuAVDKh7c2tLj6O8QW51ivgQuKhUwe7uTgi6kUwr/3Fs
qDu3eB16tDaeyd8UqUpr4fpQI3aMzFcDLHOagY0ltS7IoTBELs6Y9TN+SV70GN0Auto2OXNJdh9+
Op7xckfrwbTQfuh5CzA9yo4uXCnwrZq7hO8/GaUD34tEJroULMyou7uKZ1ZTRt28tvdfqi+SfPkr
TMGHKRw3fqgTg0aG3QvUVymiLXn7ktCwcWQALoHCpTiBZJ0EYqtyTf6/GXiosqkNTpPcTcoiS2tU
ccWSBaWVzXKmaYnI1zSY2Ja3/CuUYoQF9ZDDIiKZIEKUg82GJY002eISNO1hNmUl5L7SuhmzLF1T
Ds4D6KZk8p3LVKXFaVCuGkbcyxlxn7QAYVNS5vO223ZJr9zXJPa47iP8jr82uqVFBuSr5YEf8pRO
zKsqE5Zo3MCs3lvu6eJAa5rsRZYqBtWdipBU/kO7Hq7pPT9Fb1Y8R8S5b52h8kdUvwwZt6z6t+/2
R/rTiYrwMXBwShKEAk6iqzEseL5wWMXBvLX/28oE26abvg1S4oa6XXt1RgW0fhKzoD5w+I1G8TKk
+wF5p/oGerzqmUMli70WSTnBAj1Yc9GJeGb2YFtyTlilQHCyQu9mqiP1iSbMiYZTFpu9oxX/rW+C
DOEh19AFoR0gSgiHroJ9X3dqfrSKN94ixe3OPEJD4Dv40XsukFcohEukUioiT5TKbn8fl2jvT5CJ
mKh/XSATitUxV+f5kZK2xs1RIFl7Tq7C5z/SYNi1pNwLLx+t+GB1eRRSm3UZwhySQJOKPXzI2HuX
BG85EU+FdpnGwP5Qjs2pggkJw4GmhuTQz5arbYooDuSD6xf0FNpfCoKGhRQoLgX9aTKosrdzd0o0
IwjQ8KcsH7IyHFiqUfxELiIg63OFqgHxcW4pM205evnfLImEPPVMZTsDiQX0GEdpJUPvKlF4YqH7
5OgDc1GFRQ6+sy6g0OgecPZRBDsYaAGweRaN0zFQQ3i1rHFslbMwPcPQGQiSfdMmAAChdrSwMjXa
qtHbxLjHLHSGIyqQ5zNeOVsidGFXYOWSXKeXA7yUWEY2bxtxrnDK7h7Od7x5A4yLS351nobp1ELY
RsW81EcOU0PUbvqMSttkhSxcmYon5dAEsD+K3OsxKhfebpWRCWM93Tgo7JTyWls6H31g0Ahoy8Ar
znHLVThlzy9Yb6HY34VhmDPJI4KjG1Fo0zIY6ohVXqAcZllZBNxesez8uLOdHRQe0vVtlzgCg36X
k0kkbJ2DIX9VoaEcSUVX9ZNXvT0hKH3aedeKiJ+EjTWDSY0zHAOFsIP4HGW55fpo5a3kXFT24o3V
FNAvRqtnc/rnQ3YdzS6aYekO9AqRIk+J8nWP9Q1VG0aUIQTanpKEy9RQg0rnnT2O5jjQUMA3XWdR
SV3FaUUxBSgolugyXvoT1bq0E3IvZidF+4n3JyK2EGKfSloBxtFFfDvJFOeu+QkYHlvtHkl3hSYn
xvqVu10KafxL6JjzzWRHwxbW8eDbIoMEHf5ZQSC0KY2xTvqH8eCIABPSEONzZmoxanFXmPPLqbC4
0lhn0jHLy5TcqJm6HPHEXZ9nRrjziV2DJn0NxB14RVAKPZGSY4DX/BtXJkapKl/NnhVBPf8yXZtJ
6D/eedZ8L7eq+AITOkipwgGJmbsFGUQV5bzPTznFAlFs5pL4VBOKD1msoUgnxFpvg2wuU6WVftEC
wuZ9T4sa8PLQ4cbpOILS2Tz/+J6ySx+cAotpxwFJo7H6wWvEmHd391/y5244/5Diz5O3py+DBR9i
xBGc2JrZ8J5wixLHufW6BIcld6a1DrgTQ2wLgThDeTXvBKD4h68lWwLwVx71KdFskgs04r6PRpp1
c6kKJXnx7/0b8b9LLGOkzrPZEJoDnt/5yjY4QE7NMeSJXb2eHdq9e5DyPbyCKILtrVKE2TTh0eiJ
7KhXL7HE2qx5ggdTAMIp6Dq0eRQ7/BBokHlmZfs9tOGunI0nORQw5W0cyKa6IZDpebyH8/jvSseJ
AtMY5L4PCyrJjXcQS/fsISMvBFhorca0IarUvwGKTBNNhU8tk89hKHdVrm52w44KmcOQRmlf6g9A
/e5S5O5KK56VVFNX6CRGY4t3i0oOEa+pAWRYdu2uWHF+LYQmDTJtjCUtH9WkRkfBUV/kusZAa5on
OigTxjN76Vy97VW7RBUkZ+rrjinLcrt3Fuu0nbqJl8x+DygG1DEmk5eudMR+DxCSd8M54ymydm0P
H/cjWNfZOLkZoJXqa4g1/9UcQNgyu8AcKU2ruHjz7ULcSAOQ382jut0dB/w7YPIFNq3/M3SkZk99
WdleMPaYo9uPNUbKArouKji6VMAM4ZQ9I8WVcUTY4wdgIkrfTKZS3VEdq26/eOozueCvHgAr5Sxa
1699FjFNRbRiko0rEeNo3vGRP9cXqQW+0rw/uPg27Uq816q3TAJxJhuRvqbcy8gxTH7SswV2tStZ
YBxPArZvsaavv0BVxxPQ1vH9/BHmB+JKuihqe4umPr+YuLpScEWcoBGnG+2gasMH7at6cHue0pJt
PN7kXBbraj+StsgNp/BI5zqzoR/83wXu1n+HxML36bIDhJ7yyXKnXjRM0dLPDlMfDGF2KpB2zTOa
Ohv+J3jQ2Zx5ITu7CjJXzd3qBJc3f2tVyOIW/PCC6iDmzELXQxp2zJXqYM7xY8GYwkz2X5dYdJ5R
IeXIdibiqpj7X9J8Yu/dSy1bBhks6HC39cA/+4bsupZwVbYE9dhvYaiIhTFVmtYHgwy+AnGEwkE7
p9AC9bdowsgjqT6rIOW645/ADhfJiR1f2NwxQSQUVhvLeD3CwhewedmbHjXNxCJ0yPTyhGFM3BOE
7zx2MXmgrMQ4rKZb4yoaC7BIo5vomCwvOY3ppjcB58ofQZjwtkFt4hU4Kb3RvYAt3vBi4cw6RP2W
huEx+mu6MhcWO2pomHn4xOYLCBQzlhdDtPV24gkn7wF3O8g7gUk+6YrBLrRL2+dZG8RuntkCSiom
KPyTqHf2RLzQNZyl3a+E3oECLWKr7iyWqNtX3Hkri8Jl66EaZ7w28qF1xKePxePp3htEb8HWHk2E
zz8Juev0lGqA8aVPIsDOentrWrYGXIsouHL9Gp87hMjjlYtwfUFMC5SNWctpZR5A9aGhdz/4Jeat
SqLhSdh0p9j85HKojmwdOxQ77a1MNFrRAcJNlV3GsOYNdfrgXOrIyCl9FuLxwkyAxFrKa2T3MddM
44+CXtfS3gdnHPBiiIKNsBbhY46PaIkbiXiHw0MQ3ldJ/ttqh6H3s570CqqHW4hE7oCstdRhp4V7
vb2TKoaFPxSlIFJ5xlhb62zf4gnQCJ9Bs+vukIEtJV56oRlafQhj2jzJ1y7/Dsp6eZNa7b4JQS7P
MKjs+S802YdV9mWSvh0ziJ4U6UUizEQAxa+7UQTNwHDF57CyDa5GWwt1UlJRcObpZnU3BJRT2Rye
BPE/bGUgc1cJhIWlwASWHpOzpqAP8z+Xmfsf9MX6r9I8C2rRDuZIh3nwbv8P9sTybAPe6BfnNE3S
03YZyHlvQjZrUxGbt8q2TaFJAFOgElxLGROPluNaOxJkgHAJHbW+sfCmUZChryqBH8YlQ7/7kQ35
02FdfGLj3nwwWB2YKTKBPQbpFUtRRgMwIAi7E7zUtPyRg7qr9VWloo0/QkRqikzTR25rnPtj7loo
kjLuqS/gT0iEi15EMgr6mpSKWNFY3ECySgyM5gHqfbxRHptKovXdmYYumTW9YG7LUdAd1QcqF/v5
hIvTD/IgY8QtcOE2Q+qDZEsXXuyjnd0YkQFH5+P+6bpFjQlkALExGE0NW40hrmyoSU95Jcl2RuQW
pIDx8jgbQTuTHaWRhqF382yqg2l1YcVLiwXSIl92VeZaN/FCOeHvut+1zVaFs9lz6E5zI8A4pT6P
mzWNXEmFz29QD1x/bdZ14i5z1MQKCBM0qMzSUFZmYP2DNBRsya53Ap6aRC33oX5/KCrek+9csZlw
nM0cS+tWeaSqeXADuEhRtvJdqouh8Ni9dmgIJ8zQNZuunH+WsTcaE4Tare5REg6OTB5Gg+5PjEKl
MyxHvhLXY9hxRw59ybPX8mPYfjv/xXW3wX0+ErXtON9xlEB25YYLhWNUBTlgqIOeKpUhjo67nJOY
RlXl5MIlLzKAMCCho5l6yys+Pn/pixURtDiutVArjOjs4dIvMmKcHD7BIiiv5AlTcovm/QDomSBR
SJrRW15a9VQyJakE32ivEUHxEIDoPXSN2OkFYmuA50cuGbdwxp6huVeP3izF6fkh3lnlHacJtN4V
pnvimIS6aoQbBIVWU5lhTtHI0Z/Zm9gpqv6c25uXSmB5bTlP37NTiUNj85AAXx+rq2Tbr1ZlM3ny
dmolxqhzzCYX42+065S1/KnNGBvya3ZAFmto/H3iZlzbHydAG3pA4vrr/vWL64HIxWBufI2jiucG
4Jp6WiqnjDUTPpfxtf9UGdlAerUIG9sUSJOWLqpS1Et3ezBhjsKUUxZZ5xqhlWwkB7fb5P2heH1j
3vr00+pPxUbOgSY5BWwJ/j6jDt5cW51sko4BbY36axhmkXryXhCwu2HTJygebX6ePcx/xrt/torI
JpEI3DfUnk2DtcQ7GlSSq/7QqJWbZHDLmEzP1dgPyyL0f1yfFn3zdgXwH36bEbUQNB81o9/Z1JP0
zy/P+CyPFoDK/16iCJoEBdjG33UrRuh2k5CHGYPyB32FFWCA7XZEDWQY83PI8iJ9v/9SYcwGkFSV
NDCmWtPBuumyRJ1bnqqujVKxCF0tLIdW5zJy8+zXsmU+YWbY41BHPVm1gX1BhMKXWEKphkvKwzFz
sq7nED6y55NvoSihwuwdoyiUXGcOLpcxYg6mMDX9JT9a0luILPr0HlLDRQIrrIBOHMJy49G1Pkjh
rVpVwgBuR83TY1uXQHV0b637/Kt2D8DwXr1W5MGKZsvb65HFwhsfWe+2UkSqk1nkpgx7b7ZbEZfS
84OCgm+bEm+g/59pEH9MJYTDYp7QEVj3AJ/qhVBKA1DrYujIXWQjnaTKneL9xCdfz7kQXuSwSl1C
RUCzdOXfanezXQc3o7p6fZhbC7JTxmLNaS1g8FJay7fBywdKi8agOHzwzjjkvNjyTF0RnPoXbi9a
eAgxYoN0q+fOEWKyN3np8GCgGQ/2w4y3Lq9/liCIhxv4wqX+ty0BHo0oo8SF9HdumasqNAQJMgif
8LEM114rxqW+tnaw2oQiex07N+FoEXSIdrk/9Zc6e3i0JAAXtT0z5Od2DNJDt3zgVTysNlZqgX9M
9m7OMzXgvVMU3Ghz0hGvU2oK0hm8offUtYFp91O7Fh3Mo+8P1GkXcQ81OouTF65y0zEm159hkS3G
CwQWS1MsyoQL21B1m5UfnXl9Dz+kyIEQCmf/x7cafra4kzt8Aktu73yDqE3yCnTncdtZfb+yJ94X
0Vry54TEr+HT/yVNIluy/CHw/Z/KnHv0xu4ew7gdxncaB7hGMg+teEZDWjmwnWwz7PTtroSHRexj
jdUNRVwDLyIvmq3aBEQwmsRWJdd25V+H6Pb/PMGInSGaDbksXeOrbmASil5sa+QDbsKE2n6W/eoz
wQBNke4bO/l4fbdCqI3cnHHcI4pYVEQf0yFBEw4rrAUfQ4gfGB8/MvUSaLXIlSnccbgD/IouaM6e
LHgZN4JewCxv2wiRMVhMXg6F8YU9U7H3Xe8jmz+8KkDJG2MqSuOt6Pl2hvZNYPvzIHQohTB8AyEY
Q35Tn2pvCm1+YCzltmFtwYtR78Ep0JgSrb6qtB2JlDckmhySK9A1642rWTPYAuJCAysY5F7yaWRm
9871Zl5vXM+PcgFoJpLDpQBoWLvNq6AFDnZgtS3l7OcO1ioJJjYBuyyGMBdS/yJycRgRGGIA+ZUQ
D8Nc0dKhB4FZp1B0xkS+up0kpWe6NDDF5a15wakQX0Tauw/H01VHZZjJcICkZSqGNet9XTiwGPad
D2IjQ3miUwqVM8OT9gc2XIKF5NTHYLtwoPRiyrVMhtO1PzLiRsegdBQ5ZtgHfRPdbJhz0bDOqbdj
dYkl9BEwPPXwl4AAU1d4d+Na/Is2Sx8GigVzEbG5htza2ZdAqUOm+N21b7KsYwjzWeIMeTzoAJMI
Zv+IVA3ChVlwA5Otfy49EDoSw5UWszcLD5XMX+GHRQsytI7+GewsTF9EcLC3ob8neIWBHacMT+cg
+/rjGj+1QGjjSrWfUwLGsLg9aHjAiR4DJJcADMID5c/xwL22oy65XAkQvsaZJOKLD/2lFggWsIoY
z2TsnwmFTauF39kjxiaI4qmMunNTEJm4kChBocV0P0kQbrjrxPDqjr33XZfuetwax0xEbneUUOuK
QWUmEubMhAzK+5UdvLVdLvPWKQpj8iCTTDbNYoomgRrhncrR6v0npxeifRW6ztZ7b1+dl6D9VQvP
4liJ+HzcypenguPXqlMQ0MxKUvIU2EKH5uCFXf3ZTRFNvPcID+tcy0RnAMju1VE9lyp3cb8QzMJ5
sdI4Z+zrRMGEWTn7k4nb3Zbw94qbuGGrFposqIy19lDWuz3MLWoWb6GfzBVqyVZ/Xxxi32jhwvwi
1cqK2wu4iEiKhVkQxD6oRIJZbh0sLqRAVV+2E7lDBAx2oZL9OqMxEurdILL5YjIyJB+SmPqzauFD
jo3ry+qPY5OzAVJgo+qiAzL6J44ctEGBq6WvaYqKWABeHnkeN6+5XEM1BMZXm5+0ywrDiVTDoj8K
kGVB0gh3WdVQUZRRSDdusVnjitcFLZEa2kG/CJSBp7qIuujsceSrYf67mkWag+KEYti3qlB8yv8a
f9Fjnbm3WTBWn4r5yeWTa1ov4KDgqP0AnA5o3UoyjN+aE80qJiuSWOMm/f3ZVqGTtC0gOjpjT0Mg
jqwI4i6IrZnrLL0hgXXj1DYnOa6dtY09QyoRaRhPYlIc2IF4r9mGqrTeycnfsUUkZjyAq8CT74f4
wASi13r4m5gTWaboTAr1KXrmNM9Ww6kXgBfO+y9y3ca/rv5OnoIVglwIHsEITHtg6SqP84p4x9Qz
aB/29R4iTCRxkcUGuffY7ffyMtUByLbORobjTBxrzIzRO+Sktz9kNAw9EkGZZlEgVDHBKhuKMnqF
dgNtgz5XM0DUGS7WqoweckK2NXqvSMnB73sqrqZbL86yzP7w+Yyh/0A+J9WiSZDI+0C49MMSsLbX
lcJntDZinHcAIRWk7GIgmvK9+X885G6fWpYo+NZrZaRFyeBtMp9Xnd9SoKw7XExcAvdILSBdRt3s
w9H9DbtcUszpnCc4OV4Lwm8RCamrH9alH3wVYiy/6cjnLvCTIP1OzC2M6HlPU4udXkpO9OS4HTo0
g83pk9I7JHrt3F02ELd2SlDPOikjUondztpLVBlY2f/XN06lpB7qqub1wj/J/beEzMu8I31z1+Q2
Y+RNGIQ6ueky0f9/e6C/YFrBFXjlgp/3Bl+VhZdfB+3QjqNIxrXYZ/dr8ZijYN+A3sZ/bufMFU3y
z6QPOql3DXnVfNsrDFKhhUJEQjITnyaaB2dmzzbJV+zMsF+sxeWMCzy1ieLaM6fk6lcpHY2YR6/M
4iFDeOJW7vpyXW8vCGwG0xygBONFqgd0Pidrd26v/kUd3pJzviiZyrxeE80u1ZtRyXrA7vhIeH2s
h1A4P0Cp2dZMof3G0BIk1bMONxLBMZVJ1oTv738temU5l0hKujw+oM3F176uDu+GwiKUeCR2MJh4
X3BSvrOygI/HH8C2OgO1TtV7z5fz13T14mHHYVGwU+2Oa5OGmU7MjFaEXlfiAgxcfb0DcHkBWOAa
X1Ad4A32mlAXu0Kx3ID0inmy0pKH6aTr4vivwoJfbxXAEyNZ0TR9dbb0212MNqsJA5H2YxtvUNhi
TwW0dXKbwZrmot/nsDCMrSW1asaIhLyn70OGhDna+1VO8XF7bGTmvuTbxsmvZo8ErMxIzb1ZBNN+
/NL5ZKiCRQDDJHjiFtvEieIwMTk8OfjM7Iji00FW7xl63PXtzSAjayVz0NAK/9SiEvCt2n4KO5Lm
yJ3jE93l4oYvesyfvzTMRQqNmUSHfeTM+IJfgKrz1oqgXz5Rd/iTYstQfm2ZiHbOlRhfF0G077C8
BgxX+C3eoQzIdHLjhVLcJQL9gmTaIDZXRHE+0bEP8RqAQ3bObaek0bWAmMGgT1wmSwXNQt/UMl8A
Mivy/4nFVTy0T897cJNdK8bFmcoIr5jZcc7lApOrhWY9Bp0Sl6hfkwmwJ44evwNAI5KjovYBgU8H
vu85P/9ZwKCFdjhV32TB5l5MzFzVbiCJ5y2VBA6H14JVMwAvLwVDlN5/eWShSbgUvvZM0yV5LUb8
HUM9WCo2jlNukR/NrtrC+/lv0vdi+X/ucHI+mMMa1vw6iZjESPBIED7RbHse1sbQumZnhqp5OBnh
KV3wc1C/XuTwfbmzRbtxuiK488J6McECKVCdhWMus6XKGtgvYJGWoprIatAAc4sw5b1zcuwHkOCL
UEEghKliSQHndSXB8aR3F/6OOgFRdWZ72Tzc4Gmkv3hr7PJ4I3YchzW1fDbqgcF1OoSjahhvVbtV
xs+1Z2vl0cIwdfbKJOczctkqge4FiP1BtlzHeFuGWa0sJ/i8NBl/8EXZ+y4Ofu8895sfAovjoBwN
wA6VeBbSf/bUk7ggPiv6XwY2Jd338ITUHDEIxVfS75STMmZN1TFp6cSveDFIpqHUY4FvlL+lk8mY
m5TYobJnrd7DKewsHJtDgaY4IKMFg/GZn1quQnk1rcYu994/uXK6/L0Fn5nowsarBW1exhpsBxm4
Ui6aTTSn1Ncx/w0XUCfBJHh0VE3RenGQc8f70bouIrwQ486uS4uDKdUibtZ6ID1wunM2Sb54wT2C
WTipSTsGAEw3ZJA4AxO3fc7qxY+kWWZTT3FHBll4kzgdG5W4uKN5hCe9PWwhvrSkCRYO+8ldnWHv
kd6T5AWnJprETOhRIQrS6UZ3zeaUVmlxCTW0q5rNKz56WaHdQhoKK51rIAGy+Adhg/NIV1GiWgZT
j7svUbM4E+YAOTlDche6DTPZDJ0dBCJZnp4Fe56FTJbpOMecPmMpN9mRx0lMFDg/4Sb18UC42edG
HpggoaXs07FR9tcrKWdGxUm2In/GdkDHJ6ZTfDcfmjny23YFYdA/eCvS2Cp/gB6KBx5gURDmVfHO
UQnTg5NZZ1MLF8PcjAPAfeOrPkVgEMRe+BblTKqF+Oxqqpy7HL1w4qpuJH7lEpuJplggXLX/kqvY
k693r0vi6mZAsuEKfNrurUbE2ovW16TzokjDB+nroESpzNtNOk8QDENCBL39CCbX+5r2KKV9E1jf
nKnI2Ij2ZtbmUlIMK7ZzxNdfzdOAwwGnjojbbra36O7bTZ/ZZVS+Easdg0WEZgRQfyOtPOZ5fmIY
pfjdZt3gsIV1MsILGyGGbGpNSEr9PD7P0YKSH5v0A6D6nYptbzr9cRr/DR7QX8t5jK3vauulmbGt
mwTV6V8FeQ+zVOjXqiuTZ+YlSFibTKiS/3OG0eCLaoLStGy3kqt+KFc6J+9KSAOFHYvekynzSUcK
7nz6YO/XEbW5OD7PUuX15yLh4sr3ucINkBVhXACeMM6A8zKsHWTiLTuUY3HBEjxeC8GXTTstGWEI
ReUFZ+OlooKj/Bls0hmfezZhHmgdEcwAGIZUE7lkTRBXvMN/jCSYr8iiK7oxQRRRCHSAtPtTjixy
1vyRznpYYSKGKlgLoIQVYsucjdcyMZ0pafhpbka/tHyQ2lMd90tSVTsFimxoxPkLWZscd1nNEWMv
UF4oeAQln5ELazLWx7KXlB2GpYIOXio+lYkFw4Aha26l4tCWeEH6JWuNHkF314CDib5opdJjRRDT
ohnE/HF8uO3H8ca3Uq6DLs0fbt0EHeXsohwtLs9XXGPd/sS8XfNYInBA8BmSwfhaOcirCm43o6ww
NE9RBfyPvpGbQ/BDpLAhUKuD+Q+R5LWnPfKN6vdaWmvaoKjZoz3ze63U9/NmfUY3nYVf0cODujrl
N+l4tY6xGp407NY0kKprkGA5ti/5sEYoED+4xcRqVgxq2dpF3fb1r8O6GUX9sUW2bk24+09SVM9v
PMxmRlr1KgtHLtxc4rpluTdGzHOyFLujOSvPZXCHIYlIDVDL6ZTcza8Wop488ebs5TzP7sg1i8P1
l7RXF6yhNWeFahfMyo9rEc7vj/JRNb8/ugzlnCDSJdkEiUQLQ5chivj7e6EDWkAcNXpinUX0rqTp
jreEi5FlbFMWUsKYocnGn/NWyF90uEOJ3u5tSOWp3p+zU7/C2WKZi+o0tlO/fUbc4FQNS0ou442H
KlN4m6rHEkDiWRb77iAErXgX264cGi8PbeKGyKLneNXi8zcmen+myNME/RO08VKtX//9meLfQ5ST
jH4cYhbIytFWadfB6sv40szUKSb24pLFVF3Tv1jAz/LzPab9VAO9JCZs5wK4mALie6jWYk1pd8CI
tNxCuD2ALJSHsAgzunyV0tZIWvEg9YTDqjoN7Fvlc2ResE5ikV/0V8nB/fWE+gz6xaOtCeu+IKhp
skmmBikS48Whx5/xHF3JqrlrScbEXlaTaCta6xg7yy+a6Wzp0Ul6WNjq+KJWDRnHMXmLP0sCBkm+
JLjftpK+EfySfWEOMS1Bsn8U5ZTPUbatwL5Aw9x8QV5V0Vk1JM8emwS+/CMZ/sNLCn50yzgeOXf8
3n5GaeppfnCayPexYxlIbyzvks7zJx1I6oZkFBj3xVaaBGzreE8Q5xCuRppMQtqRZCnwEJhXA8MP
yq+oHi9jgPcLwR9B+kRjs/MN+cT8TSWC/M/2QPi4kvHtKB1JYQvA96OP/sF+6NrwUbZ15AZIJ8Sd
L6bk1XYr8i9ht3tNStWk3wTuDTDNpHJsAVSJxcpqTE3jtscvKWjQSfSdgRtT2h/L7v770ROW+31s
7l9q2dx3am8oDWGUWTMaC4GGIyjWH0G4ZFrgU2cd+/Xr7BLbb1mPIiGFRsq3HMgdwm3Eus+DJKvl
5PTNfhDuTJEFbqukosWQ7vpSzEDOG4//rxvZ4Hk4cQDauYv1/VgxdZ3DKmAkiYB2G65lzbCWtAy7
O2eegBmPCAXrDu8IJLwmPwouxx/wSmGimM+ZRPqnACF957bx4lJP4dZxFD0Rj7Grn7MkZcWI2HgB
SXC7sBjuWh6TIdDD8tbeR/STUCNStKptOnqXbxWPE9PsKguJnJqvJbD2V4nZ9Dz5L2HQdQO22D2j
GTdZ7b0C8E4b2U9loWcL1Vaexay8ZGAQ0onqykh1ZKdEYk+I2Xwy97exykWULyOV9Cbr+jwZ3Fnv
5DyauBex9J5E9RECAI4/5L6ZqNa4L2Ul4XARBt2ILkKcjdzyi6ErR7FiFHtoys1CBqjzWjGh7nQH
95hT15e3H1rAz8yGaBUIDV2k9q7Ua1uyFILc2lt5X7BPGlkPGST5hW/qMZxPxsjj6Eo/S367FM2Z
vxBU43LTiEy3Y0nvHpg9qKtM9ovgFDRQPmOva3xHWNQ85Xb9pKIbMzE/osB7MUKA+WVN3ntbx9qb
a26+Pqlcjn6QNZyXnsgrAimI7a+xuUa0LhdnveNsY6JaqNec40Rbrb2a9oXF08I1Iz7CyGA6BfN1
pm4wUKovL9y3xPl34n4aaIXbbzNldVxcAINYbQsXLu2R7ky1ovHI4qbMAum7D+XSYCCEuAOuIrkL
yyorAtcntSZjZ/Nf+d9eGpz27KtOAoicNaHy3NKZTgR7ZhAb7e3lfU0zBXm4I1jlLyScObLHA04/
5W1pyS4JDwU4gbwG+jw5gK8oYeZaBhVUnxb7v8J69/80Y22UysnKXPWnDCxlnI5uFjModfXBQMVz
aLbfu62e+Jew1v4dJLySNtJ9CIngQSEcL7FsW6UBGWWGRSm3JSc/j2CM0Ap3sr7Kj0uBSrn5S2WU
vVypZx91oSqHNe9DhGV1SwkzrGjUIGNUzhoEz4PcS8w6qJL3z//5nbevx3DPsZgGlgdP0eXGjKGo
2Xjcw4Xt66btZECUnFIXd2gB69/XPiKMagPF/9P6xvs8O4qCtKq78PEudo1lTE7xh9Xv26gFROga
gO2e6wY0Sm6jBzvoGRIT5w88SiOemBNcOTMnVf1PXZxZE6w1ptOr6+Duh4BAqlYPDibmDrvyJ+N2
22y4cejc46KkYykfyUW9CnX8LXL3u/WjPsDmJeepT8sotVN91WRGfko0VKBA1aZIGIorc0FYRut9
VNrI3N3Sp9Y4RuRppoNN5Ee4S5OkNHq5TkfNIxrFKN8Phjc3IPGgyvEoLILQJ0XIcz0Kg13rhuaB
B4uP+dWapueYDb6Tlt9tLKkhfdd44uPrE0HcXM9Pllfzx1M0vwhuiHZNr9Ku49KttBcj3Jy6SBRn
K2aAKtn9v2/HyROipv+QGOnPqkJCSm+0dljEmD7Bmwiqdr2cKmDQ+iHYgpAzrdFZbfg6I0tufwp1
Pco7aY7mmgr980Cp9J3EbPfbTYQhOzJBnW7mU0/GZHNtsRX7cihvaP7UQJGzCX/Tst3q1zMzFib5
ukr7qKTOUbDkgo8ZMr2u95lweNmF9ppFmD4av81Evv8/CUCjPStMDZGgSOLgihIwUIO/gBTGEIIn
AHvrPi4VOOALPWn1YVDeQj7RJIWniC8dMotmbdsSWiagAAnydicnvgGo3SbLHoTs2iACjWhj4nBI
tGYMdREBpGr+jc5Ko06S/NY+xRTDEeDh3OCfAHk2EUBu35nt2lwqNAZZiDb5lznMU5BDXfoo8jKb
ZVcIxjq0VRkLQicml8JkDT7VFHvoQlSMh6nxu2ZsZ6BS3SspePx0JEUsPh94Z5+pmp+QaXb01SA2
zdkbIDjaJnzN6Rv1qCx9CrP32h4MSydMyFT+q6PHyZTwfdYuceIvVt90eDC0UY1e7E9DKqcTcNst
oj0rdX9Of0boEMUCg7GXEDxjNqs7YxKuceKZFxIMYFG3Rf4t+CrrNiLMqoGPzzd5s/ZCtiDE3+Oz
KrUb2zDferrl4PNDja1XHBkmGvQDPE0Iewyd5Y1fAWsGvGR1Kne/P9eQ8YxoAM3Ea5B7Jr+ZPvBy
uWnOZg/vP5kavBIrDmTpvRh6kL9HjqmhWDDgrYfOuwP+La7JEYXjILLx32PnU/8jMLZl2zCzBerT
UZUqjD+wk3KvTbPjte5ryVQbrdDGK79z/SXneEQEZAuN74lAjLHzd8LgdK3zk4s662O+40aDijAJ
e7wjecrnXM5sXyRgzFpVOI/iX+8rn2B8iQjG6H11EUgcpr/kiKGXt7WIzD0F/32pufkggv5dsoCb
pWDSCe8yo5/O9/BR/urQWYAyKhdIDvCPdkgAdRY4Bjb6qj2hAWyPtl0WUN1/7Cb4SaZtGmf7o7Tw
vTbQ0wZqreyBJjFE9CRxjXyMT1LY7Cdu84W87w8KHANwCGsH+NsJkjP1zk9nZ5+y+WoLkM/ZCAV4
M4o2B5U866TFefTDsL1lQ4FXwhA39snFQyQrX3Pm0BdrExfhMJo1hSzqI393zlkar0xDlQzs6BHh
GYV9Yr6iiP8sWeNz9b32sLy6K3u0ILhuHoH/OhtBhilJBzAKrNedb6p+5vqxJsM7BDz8Uz5FblM1
jZxsT5gTRkr0D8HsxZ3SGsWhtO1rFGJlzgNQULZR2Qy7HsVBBxZ1R8ZGKeXMeUabDcjZdfc8o9Oh
BwYSORzl3lmuJu28oYK4IAvm9pOBJYrpmJN3Zx5Nk/oPLS78YhX8YCJYyxn5RvJOaBGuuqtiQUDd
PMa4nOL9v8RxghGm2gRYmo936ozwjzRJMvgTrCvCYbBMpENZ5SUma3O0HLEnY0/VjAwzR36LAa2I
t6sw2aEg3SID5gHgC3QDku/Wgi1ZtZ/thmVmA+K0/vXW5iSz4iM1gz3Wf3L0VsqgMJz+wMIFM1iE
P47aNe6U0Nl1nsV9JmCV7aBeYdXKtHP4SlVykRIizqMYAFa0hxgAdFtORH9cGUYJDfgG8uO9jpjF
3LfKGTtF86F7d/PKxnyTSEwqH+5EBBC4XZ/gEgbEYvhR7BdBh/JFmY0DnFAOaOFY9uF7DE3TSh9D
Tp2bsRtDKYcxuewddq2z7RQBnFq6JN7C685o9W+Ss8h+un+COHgT+W5Xbc6ri5sImI6i/5l8lzOv
Rc1SRHx72duot0xw7LOJWdLeg7wQRyaStApmlNRrCAyTlpHDKpW6pjjIMmaU/FX2ZORzePBrX5eL
VFEt5kJmI69+VVha+cSKhGk4+tFFDGPL2dmtZA4Yri0ZeLLDQy/zIGf7rngwzQSoUTjvfID0N1+h
EYyKytWJj4Xsfmazv99zONNSJomJbjXGlZnn3BdarclmSmNzIHF02tk7B+quds8HJwGvhYPGEZSV
Ls6drJRxh9FUYeVOEDbqBhjf1Av6fZmD62mY1W9GXmG0jLQqkXHYsdFqF02i95Ur/6qD0xckV9Bx
7ZNznIqesiwUeE2jqe1SD6VPzORgH5uCX5vtx9cmetaxKFcKO9SziW2M+NM7ImVyHl+QDq9dGDqT
uLcgQiLn8Bg+buYnqB4vPdBeBNA3AIfBmxboiJd7g067Ly6kAWTbDOEF5cmUJJ742zuIz4OChkU4
kSxmuy+jZti/RSTiJUJfC3hvIYI3BLuMq4KXf2WprG0vuMnuL15N3O7CBaWwiACqRODuhFebFK0b
K0B/XRATPQSuYvQn1se9gZDF0nMCW6ikWqr5L9lCeSGxeL2fUEIpPP0+wlTF30+YnWDhcyam/KP6
VCNZQfRodipYq2eHCyf1WGEkKmY33OjrL+gZZbdnSqRAVwbwC6SwkTcESxNFoe0fvSB3C0kJ4j5Q
3ldCHab/ylH9CX9qJSfyPh70P86RTHnU9tkwcZmro2V6tmsgEj0thgY8tMdG405cdjwRP9Zue55a
CfVXxwQKswTmvNsd7Qttceu502UlnuUf32ZTnzBjIKS6O6ePZwXBr9Vxgkiq4d37ate2vD0tRhVR
2B89RX9tCjPR+Q4nbliN314qofLdLCgCsDdLpAuadkAUlBmi2iCAOzzlBQfVb9W0TR0kMATrH7aI
AxHQ02nkQss98pC/jLmprLsRu9Bw/mkoWCcfPBo1CZ+97aaMcQ+VGQihYNhq3Eram3aoT0Eru6ZR
fORRdx8AUkvkvGAS6UR92nzC44cqrzTrPAW+Td7Amc098aUCK4D+Tu40ul0GUitIAZCZpkjmZiEG
YyjrJNMn51e6FDrhuK2WA2GbFXSOfEcODh6Yr/aX4x6pvwAj3smtjHXziyhP/7YI1RcXjOn8cXO/
4CnuM6ffEmX/zRGsu31MUJt79GXXuMaL2erOmI3F4znKv3mahUh7o6Y25+7TgZURicsmB8BJiaEx
kzZtdsoDqaIg5KCNJfzT1HbZfgF6QlzgK0CZhfzbD0+C/QB/mVznEmNVIPWv32lO0yPfHrh7xFzZ
KQ8+JHwQDJY7yMFNXUgbTxctJYe2nm2b8xa32UzuF60JwLdNTqFJdfxuK/6Izrob1D8OnqiueIGT
p+VI9bzMESPnXSZ5vrGUCQnL7puyYDDnSeRCYpSS5ZWWDW6sZrD58O94TQ7pILo3+V30ORflBgex
BlVu4MVNkAoVfIzBOwUyuS2I4fsWEEqhDY6Amk6O9NGn5nUXON2XrVhmuGCpf5oxrK4rBuqhCtir
WUeQnSNRw7+9IiINI+7q010SfdrhdlY/VUIRZXOhJN1BvzX5mTEGjB1wpBdaAYyScAO6WrRjT6yG
Q6SR39ADXmF45YZbkudEUza+NthMBiW80QXXyRyXwh/rbSmibKMV4L+c4WNba79DOXQPeQs4exBa
vbQ65draSkwr/VAlFN02d+D1WaoIIAI/FjNeXQCrnRQEr2Tq/znxzO7Zt3IbXWHkLeUBNhBKZaKi
oCYtbxMBHfJ869VhDXN+wyJRt0j+39l1HUcUHETZbh8WmfFt2qwHOIVYTXyEYKOujH9ZPEMYZLTU
+S6EB2rLIqCuIQIwd6wiReKwopenDzIXukUvimYEuiVkLPpaw0C0+XRjpNQPgRCrDP1yjlcUf2Ac
5G/7DT90lF/3juophGneiWwsHRYoFn9o3Fbp32uSU03f6cE/GGmH0PAiVPOc8fFGpixwsC5ylVKX
YcayBRiCvCUq54zXHTEZoniRkm/pKlm4bRu+vAeJ19oHqbz47MGsqx2PoyVVDQ2sbgqwap6O0gcU
wZv3VoJ8PUDqxtS+YzX3dNc5cwmL2GFvol9AHN5/EM7WdihYVnT5RXcTEZeXuwwRie7oIamXWmqB
EJkbAt9ti1pg4x7AVNXkV9eJAdAqMcY2gCDe1DVxWEio6QuKxruXTDrg8CCFkTfphUC1O+3qp7fG
TsOtdNWLyFi6IDKK56GN7eZJKnjdLGfobVTe4VtXsyAz0czmYgOxNjAfEtb+of9drqt8ng47a1Jq
4qnYrBFnfF8Qxd7SF6FN19aS7hvxrhaNKzMhNNU2m72jYMTpewHWXrZCxgTWq8ij//KU6t2FAzba
TRNGVYvVySCfj5GMaOw0Kr4py8TapnYcFeLbClrVOQLtSN/GMBJKdZv/oxXMfiUG1KPYHfedLgT8
GbH0THosjZyjVoLu2bF7Px/ubndN6gRCivf4BXtHtFRFkfm+KoLFzVf8XdRqb5PrcK0ErSF36NZU
1pEhohp4B5RMr3fwwPDa6y4lyXL7hdWU2StOdXt3I8YQWI9bciryXv4BF/ePkCBfhf/eD2FR9Pla
fEfGs+GR5ibdR3mY+jyblOupLKdqZYzE4UghnH2ectxLUQ3dmKFtJoWum3ApjgSFwjyoou5usxzK
Ja2zK2eCJ4CjIvFoGSsWrUT5+UROubhVZTWH8lbkW3qq4qK59/k++nJfJvsVMbvttIhddv/hlsUS
+yBu8QWKomPbnvI0zlc5tsquR2e2N5O+vgkEWVoCIpKsOH968GGMFrjzxqFaXWfia7LZL780YFSo
Z3DFkD1HF5SCnl6dQiOTbUh0PWmUUQIJTAC0yNv5CQrd+nMIq1AQq5JWr7U1vHfeNv6U4DCtvjZV
N51eztOfyUT9m8l72Nf4U71++X6Eq/TAbs1YSXqL/uYXeiLs5U/r1pPNyYYZl9broEbO79CjB3QU
uiiHywqFSHmDngrh13UAVJs5Om80xfDkDMu2ePDryuUlCWYYb653iQX3imUkbyw0A6XX5CurpLmo
w0e2Nb1SdG7ID++B3yPBnMFk3MPcKHS/t1rmAAAAgTMHrg/X79mf0nxI5WviLvdcE3Vgbwr+pHRU
Q3as5nI7zmYp8lgV0tHXa54xvLucy6NUmU9ytE1G9U3ELZFRs7wjc7qofGFSQnQTaoSemhtc1s+S
7/jtWvf9BkGzIQgyZu2HJ5ASSA7pskuHN+7zx/lxpFxNMDnTgazYbnhDylGwIU2HO5PqreR5/WzM
C5gjDf4kOCJpx4GHitN82Jo5M+tvyBtMjB0WXPO97D+Q3OvL1BWsc39CChbzTvCzv5xFO3+mLyqr
VfkwbIK6YoUnNlUUQjuMbiWJETEr7a3lQx0tAcieTmVQqLWerwNwpZU0QI4s0mPovMAmukEsvx05
mWJtl9UvUVmMPV+riDZhPuptS/nFP9ALkVKH++1Mk+vh62MjRdMxq7bkTwSa5+9BwT0HoLea7W36
B8JkW+zYHTMweOiiF+3dkIuiJd8Cuc4LkLE66N67uIXv0ICNOkuOVY/d5qPwEpjvjvFzB0/7/1Ig
o2Y6tPKeBU9Bkvzg72mBZqMXBsCDYwEJgYQABwsBAAEjAwEBBV0AEAAADIL6CgFGGPjZAAA=

[/cut]
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Orion9 писал(а):Пока проверил со своим скриптом - вроде все работает.
Уже хорошо. Хотя предыдущую версию скрипта я тоже смотрел на рабочей версии Autorun.

А так, конечно, впечатляет. Набор фич лично для меня несколько специфический (несколько погодных сервисов, курсы в заголовке), но в любом случае выглядит интересно и хороший старт для модификаций. Плюс неплохой тест возможностей и стабильности движка.
Orion9 писал(а):Проблема со значками
По значкам - скорее всего завтра будет хотфикс, я там с Plugin накосячил, под x64 не работает и на флаг не реагирует. Заодно поправлю пути значков.
Аватара пользователя
Orion9
Сообщения: 1283
Зарегистрирован: Пн янв 01, 2024 17:18

Сообщение Orion9 »

Loopback
Что ж вы делаете? Только я хотел уйти на заслуженный покой, а тут: GetNetInterface, GetNetInterfaceInfo, GetMemStats, GetDriveSpace, GetCPUUsage, GetCoreTempInfo :lol:

У меня только один вопрос:

[cut]Где Smart часы? :mrgreen:[/cut]

На счёт специфики, согласен. Формат readme не позволил делать лирических отступлений, но наверное, пара пояснений не была бы лишней.

На счет погоды.
Долгое время я пользовался заставкой YoWindow и очень к ней привык:
https://yowindow.ru
Но в итоге пришлось от нее отказаться из-за Adobe Flash. Равноценной замены так и не нашел, да и не сильно забивал этим голову, если честно, но вот из каких источников они брали сведения о погоде, я посмотрел:
https://yowindow.ru/help.php#q2
Поэтому Metar именно отсюда, но я не планировал использовать его для заголовка: просто сделал парсинг html ради интереса - посмотреть, что это даст и как оно будет смотреться.)

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

Все остальное - это просто развитие темы. Кстати:

[cut]Не знаю, как на счет евро, но доллар можно оставить в заголовке, чтобы смотреть, как он будет неуклонно падать :mrgreen:[/cut]

Пингу тоже можно найти приминение, а вот что касается Uptime, то в домашних условиях он может быть полезен, если система не выключается, а уходит в сон или гибернируется. Раньше я пользовался гибернацией и заметил, что чем дольше Windows работает без перезагрузки, тем больше всяких косяков и "сюрпризов" всплывает наружу. Поэтому даже повесил себе виджет на рабочий стол, чтобы сразу было видно количество дней непрерывной работы:
http://win-gadgets.net/system-gadget/165-uptime.html
Кстати, Uptime.vbs именно отсюда. Когда я решил его добавить в набор, то совсем забыл, что у Autorun есть собственная функция для получения секунд :lol: Но когда спохватился, решил уже ничего не менять в aucfg, и оставил его до кучи.) Скрипт сам по себе рабочий, может кому и пригодится для каких целей.

P.s.
Сложно придумать, что еще можно вывести в заголовок. Посмотрев "клондайк" различных API, ничего полезного не нашел. Ну не заголовки же новостей сюда тащить в самом деле :mrgreen:
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Версия Autorun 2.2.11.1 beta
Хотфикс к последней бете, с исправлением Plugin (и заодно путей в Tweaks).
Orion9 писал(а): а тут: GetNetInterface, GetNetInterfaceInfo, GetMemStats, GetDriveSpace, GetCPUUsage, GetCoreTempInfo
А ведь это еще в прошлом году был запрос...
Orion9 писал(а):Пингу тоже можно найти приминение
Про пинг как раз и вопросов нет, полезная штука :)

По остальному тоже всё ясно. Серьезно, на самом деле интересно смотрится, особенно в эти моменты c Pinging..., Retrieving data :)
Ответить