From 6833361e2d74bfed6d0741a64e80127db28b390f Mon Sep 17 00:00:00 2001
From: SanaeFox <36219542+Hoshinonyaruko@users.noreply.github.com>
Date: Fri, 2 Feb 2024 12:29:40 +0800
Subject: [PATCH 1/3] Beta31 (#65)
* beta9
* beta11
* beta11
* beta13
* beta12
* beta13
* beta15
* beta16
* beta17
* beta18
* beta19
* beta20
* beta21
* add_playermanager_api
* beta22
* beta23
* beta24
* beta25
* beta26
* beta27
* beta28
* beta28
* beta29
* beta30
* beta31
---
backup.go | 47 ++++-
bot/bot.go | 79 ++++----
config/config.go | 8 +-
.../src/components/PlayerManage.vue | 41 ++++
.../src/components/RunningProcessStatus.vue | 2 +
front/palworld-front/src/pages/IndexView.vue | 28 +++
front/palworld-front/src/pages/LoginView.vue | 6 +-
memorycheck.go | 12 +-
mod/embeds/pal-plugin-loader.dll | Bin 708608 -> 700928 bytes
tool/executor.go | 28 +++
tool/rcon.go | 4 +-
webui/api.go | 190 ++++++++++++++++++
12 files changed, 398 insertions(+), 47 deletions(-)
diff --git a/backup.go b/backup.go
index c56e7a5..ee427f4 100644
--- a/backup.go
+++ b/backup.go
@@ -16,13 +16,23 @@ type BackupTask struct {
}
func NewBackupTask(config config.Config) *BackupTask {
+ var ticker *time.Ticker
+ if config.BackupInterval > 0 {
+ ticker = time.NewTicker(time.Duration(config.BackupInterval) * time.Second)
+ }
+
return &BackupTask{
Config: config,
- Ticker: time.NewTicker(time.Duration(config.BackupInterval) * time.Second),
+ Ticker: ticker,
}
}
func (task *BackupTask) Schedule() {
+ if task.Ticker == nil {
+ // 如果 Ticker 为 nil,不需要进行定时备份
+ return
+ }
+
for range task.Ticker.C {
task.RunBackup()
}
@@ -60,6 +70,41 @@ func (task *BackupTask) RunBackup() {
} else {
log.Printf("Backup completed successfully: %s", destinationPath)
}
+
+ // 删除旧备份(如果设置了天数)
+ if task.Config.SaveDeleteDays > 0 {
+ task.deleteOldBackups()
+ }
+
+}
+
+func (task *BackupTask) deleteOldBackups() {
+ // 读取备份目录
+ files, err := os.ReadDir(task.Config.BackupPath)
+ if err != nil {
+ log.Printf("Failed to list backup directory: %v", err)
+ return
+ }
+
+ // 删除超过SaveDeleteDays天数的备份
+ for _, f := range files {
+ if f.IsDir() {
+ backupTime, err := time.Parse("2006-01-02-15-04-05", f.Name())
+ if err != nil {
+ log.Printf("Failed to parse backup directory name: %s, error: %v", f.Name(), err)
+ continue
+ }
+
+ if time.Since(backupTime).Hours() > float64(task.Config.SaveDeleteDays*24) {
+ err := os.RemoveAll(filepath.Join(task.Config.BackupPath, f.Name()))
+ if err != nil {
+ log.Printf("Failed to delete old backup: %s, error: %v", f.Name(), err)
+ } else {
+ log.Printf("Old backup deleted successfully: %s", f.Name())
+ }
+ }
+ }
+ }
}
// copyDir 递归复制目录及其内容
diff --git a/bot/bot.go b/bot/bot.go
index 0cb5d6a..0e1f62f 100644
--- a/bot/bot.go
+++ b/bot/bot.go
@@ -207,7 +207,7 @@ func GensokyoHandlerClosure(c *gin.Context, config config.Config) {
func getBotHandler(msg string, message OnebotGroupMessage, config config.Config) {
// 检查消息是否至少以一个 "getbot" 开头
if !strings.HasPrefix(msg, "getbot") {
- sendGroupMessage(message.GroupID, "错误,指令需要以getbot开头", config)
+ sendGroupMessage(message.GroupID, message.UserID, "错误,指令需要以getbot开头", config)
return
}
@@ -225,14 +225,14 @@ func getBotHandler(msg string, message OnebotGroupMessage, config config.Config)
// 确保在第一个非 "getbot" 部分之后还有足够的参数
if len(parts) < startIndex+3 {
- sendGroupMessage(message.GroupID, "指令错误,请在palworld-go项目的机器人管理面板生成指令", config)
+ sendGroupMessage(message.GroupID, message.UserID, "指令错误,请在palworld-go项目的机器人管理面板生成指令", config)
return
}
// 解析number
number, err := strconv.ParseInt(parts[startIndex], 10, 64)
if err != nil {
- sendGroupMessage(message.GroupID, "错误,请在palworld-go项目的机器人管理面板生成指令,number参数错误", config)
+ sendGroupMessage(message.GroupID, message.UserID, "错误,请在palworld-go项目的机器人管理面板生成指令,number参数错误", config)
return
}
@@ -251,10 +251,10 @@ func getBotHandler(msg string, message OnebotGroupMessage, config config.Config)
if err != nil {
fmt.Printf("储存pal-go面板端user配置出错 userid: %v 地址:%v\n", message.UserID, ipWithPort)
} else {
- sendGroupMessage(message.GroupID, "绑定成功,现在你可以在帕鲁帕鲁机器人管理你的palworld-go面板", config)
+ sendGroupMessage(message.GroupID, message.UserID, "绑定成功,现在你可以在帕鲁帕鲁机器人管理你的palworld-go面板", config)
}
} else {
- sendGroupMessage(message.GroupID, "指令无效,请重新生成,为了面板安全,palworld-go指令不可重复使用,如需多人使用,可多次生成.", config)
+ sendGroupMessage(message.GroupID, message.UserID, "指令无效,请重新生成,为了面板安全,palworld-go指令不可重复使用,如需多人使用,可多次生成.", config)
}
}
@@ -263,7 +263,7 @@ func getplayerHandler(msg string, message OnebotGroupMessage, config config.Conf
userIPData, err := RetrieveIPByUserID(message.UserID)
if err != nil {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有初始化,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给机器人", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有初始化,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给机器人", config)
return
}
@@ -302,7 +302,7 @@ func getplayerHandler(msg string, message OnebotGroupMessage, config config.Conf
return
}
defer resp.Body.Close()
- sendGroupMessage(message.GroupID, "正在刷新玩家,可能需要3-5秒返回,请勿重复操作", config)
+ sendGroupMessage(message.GroupID, message.UserID, "正在刷新玩家,可能需要3-5秒返回,请勿重复操作", config)
// 读取响应
body, err := io.ReadAll(resp.Body)
if err != nil {
@@ -332,7 +332,7 @@ func getplayerHandler(msg string, message OnebotGroupMessage, config config.Conf
uniqueID, _ := StorePlayerInfo(player.PlayerUID, player.SteamID, player.Name)
responseMessage += fmt.Sprintf("[%d] %s 上次在线:%s 在线:%t\n", uniqueID, player.Name, formattedLastOnline, player.Online)
}
- sendGroupMessage(message.GroupID, responseMessage, config)
+ sendGroupMessage(message.GroupID, message.UserID, responseMessage, config)
}
}
func formatTimeDifference(t time.Time) string {
@@ -352,7 +352,7 @@ func formatTimeDifference(t time.Time) string {
return fmt.Sprintf("%d分钟前", minutes)
}
-func sendGroupMessage(groupID int64, message string, config config.Config) error {
+func sendGroupMessage(groupID int64, userID int64, message string, config config.Config) error {
// 获取基础URL
baseURL := config.Onebotv11HttpApiPath
@@ -363,6 +363,7 @@ func sendGroupMessage(groupID int64, message string, config config.Config) error
requestBody, err := json.Marshal(map[string]interface{}{
"group_id": groupID,
"message": message,
+ "user_id": userID,
})
if err != nil {
return fmt.Errorf("failed to marshal request body: %w", err)
@@ -389,7 +390,7 @@ func kickorbanHandler(msg string, message OnebotGroupMessage, config config.Conf
// 检查是否至少有两部分(例如:"踢人 123")
if len(parts) < 2 {
- sendGroupMessage(message.GroupID, "指令格式错误 应为 踢人 1 封禁 1 kick 1 ban 1", config)
+ sendGroupMessage(message.GroupID, message.UserID, "指令格式错误 应为 踢人 1 封禁 1 kick 1 ban 1", config)
return
}
@@ -397,27 +398,27 @@ func kickorbanHandler(msg string, message OnebotGroupMessage, config config.Conf
var uniqueID int64
_, err := fmt.Sscanf(parts[1], "%d", &uniqueID)
if err != nil {
- sendGroupMessage(message.GroupID, "指令格式错误 后方应为数字 空格为分割", config)
+ sendGroupMessage(message.GroupID, message.UserID, "指令格式错误 后方应为数字 空格为分割", config)
return
}
//测试提审核代码 不要删除
if uniqueID == 666 {
- sendGroupMessage(message.GroupID, operation+"测试玩家 成功", config)
+ sendGroupMessage(message.GroupID, message.UserID, operation+"测试玩家 成功", config)
return
}
// 通过uniqueID获取玩家信息
playerInfo, err := RetrievePlayerInfoByID(uniqueID)
if err != nil {
- sendGroupMessage(message.GroupID, "获取玩家信息失败: "+err.Error(), config)
+ sendGroupMessage(message.GroupID, message.UserID, "获取玩家信息失败: "+err.Error(), config)
return
}
// 检查SteamID是否有效
_, err = strconv.ParseInt(playerInfo.SteamID, 10, 64)
if err != nil {
- sendGroupMessage(message.GroupID, playerInfo.Name+"无效的SteamID,帕鲁服务端通病,玩家增加后再次使用 玩家列表 获取可解决", config)
+ sendGroupMessage(message.GroupID, message.UserID, playerInfo.Name+"无效的SteamID,帕鲁服务端通病,玩家增加后再次使用 玩家列表 获取可解决", config)
return
}
@@ -428,7 +429,7 @@ func kickorbanHandler(msg string, message OnebotGroupMessage, config config.Conf
Type: operation,
})
if err != nil {
- sendGroupMessage(message.GroupID, "构建请求失败: "+err.Error(), config)
+ sendGroupMessage(message.GroupID, message.UserID, "构建请求失败: "+err.Error(), config)
return
}
@@ -436,7 +437,7 @@ func kickorbanHandler(msg string, message OnebotGroupMessage, config config.Conf
userIPData, err := RetrieveIPByUserID(message.UserID)
if err != nil {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有正确设置,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有正确设置,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
return
}
@@ -453,7 +454,7 @@ func kickorbanHandler(msg string, message OnebotGroupMessage, config config.Conf
apiURL := baseURL + "/api/kickorban"
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(reqBody))
if err != nil {
- sendGroupMessage(message.GroupID, "创建请求失败: "+err.Error(), config)
+ sendGroupMessage(message.GroupID, message.UserID, "创建请求失败: "+err.Error(), config)
return
}
req.Header.Set("Content-Type", "application/json")
@@ -461,22 +462,22 @@ func kickorbanHandler(msg string, message OnebotGroupMessage, config config.Conf
resp, err := client.Do(req)
if err != nil {
- sendGroupMessage(message.GroupID, "发送请求失败: "+err.Error(), config)
+ sendGroupMessage(message.GroupID, message.UserID, "发送请求失败: "+err.Error(), config)
return
}
defer resp.Body.Close()
// 检查响应状态
if resp.StatusCode != http.StatusOK {
- sendGroupMessage(message.GroupID, fmt.Sprintf("%s %s 失败", operation, playerInfo.Name), config)
+ sendGroupMessage(message.GroupID, message.UserID, fmt.Sprintf("%s %s 失败", operation, playerInfo.Name), config)
return
}
// 发送成功消息
- sendGroupMessage(message.GroupID, fmt.Sprintf("%s %s 成功", operation, playerInfo.Name), config)
+ sendGroupMessage(message.GroupID, message.UserID, fmt.Sprintf("%s %s 成功", operation, playerInfo.Name), config)
} else {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有获取到面板信息,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有获取到面板信息,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
return
}
}
@@ -485,7 +486,7 @@ func broadcastMessageHandler(msg string, message OnebotGroupMessage, config conf
// 从msg中提取广播内容
parts := strings.SplitN(msg, " ", 2)
if len(parts) != 2 {
- sendGroupMessage(message.GroupID, "广播指令格式错误", config)
+ sendGroupMessage(message.GroupID, message.UserID, "广播指令格式错误", config)
return
}
@@ -495,7 +496,7 @@ func broadcastMessageHandler(msg string, message OnebotGroupMessage, config conf
}
reqBody, err := json.Marshal(broadcastReq)
if err != nil {
- sendGroupMessage(message.GroupID, "创建广播请求失败", config)
+ sendGroupMessage(message.GroupID, message.UserID, "创建广播请求失败", config)
return
}
@@ -503,7 +504,7 @@ func broadcastMessageHandler(msg string, message OnebotGroupMessage, config conf
userIPData, err := RetrieveIPByUserID(message.UserID)
if err != nil {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有正确设置,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有正确设置,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
return
}
@@ -519,7 +520,7 @@ func broadcastMessageHandler(msg string, message OnebotGroupMessage, config conf
apiURL := baseURL + "/api/broadcast"
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(reqBody))
if err != nil {
- sendGroupMessage(message.GroupID, "创建请求失败", config)
+ sendGroupMessage(message.GroupID, message.UserID, "创建请求失败", config)
return
}
req.Header.Set("Content-Type", "application/json")
@@ -529,21 +530,21 @@ func broadcastMessageHandler(msg string, message OnebotGroupMessage, config conf
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
- sendGroupMessage(message.GroupID, "发送广播请求失败", config)
+ sendGroupMessage(message.GroupID, message.UserID, "发送广播请求失败", config)
return
}
defer resp.Body.Close()
// 检查响应状态
if resp.StatusCode != http.StatusOK {
- sendGroupMessage(message.GroupID, fmt.Sprintf("广播失败,响应状态码: %d", resp.StatusCode), config)
+ sendGroupMessage(message.GroupID, message.UserID, fmt.Sprintf("广播失败,响应状态码: %d", resp.StatusCode), config)
return
}
- sendGroupMessage(message.GroupID, "广播消息已成功发送", config)
+ sendGroupMessage(message.GroupID, message.UserID, "广播消息已成功发送", config)
} else {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有获取到面板信息,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有获取到面板信息,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
return
}
}
@@ -553,14 +554,14 @@ func restartHandler(msg string, message OnebotGroupMessage, config config.Config
// 从msg中提取参数
parts := strings.Fields(msg)
if len(parts) < 3 {
- sendGroupMessage(message.GroupID, "重启指令格式错误,应为 重启服务器 多少秒数后重启(整数) 重启公告内容", config)
+ sendGroupMessage(message.GroupID, message.UserID, "重启指令格式错误,应为 重启服务器 多少秒数后重启(整数) 重启公告内容", config)
return
}
// 检查时间参数是否为数字
seconds, err := strconv.Atoi(parts[1])
if err != nil {
- sendGroupMessage(message.GroupID, "重启时间应为数字", config)
+ sendGroupMessage(message.GroupID, message.UserID, "重启时间应为数字", config)
return
}
@@ -570,7 +571,7 @@ func restartHandler(msg string, message OnebotGroupMessage, config config.Config
userIPData, err := RetrieveIPByUserID(message.UserID)
if err != nil {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有正确设置,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有正确设置,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
return
}
@@ -593,13 +594,13 @@ func restartHandler(msg string, message OnebotGroupMessage, config config.Config
reqBody, err := json.Marshal(restartReq)
if err != nil {
- sendGroupMessage(message.GroupID, "创建重启请求失败", config)
+ sendGroupMessage(message.GroupID, message.UserID, "创建重启请求失败", config)
return
}
req, err := http.NewRequest("POST", apiURL, bytes.NewBuffer(reqBody))
if err != nil {
- sendGroupMessage(message.GroupID, "创建请求失败", config)
+ sendGroupMessage(message.GroupID, message.UserID, "创建请求失败", config)
return
}
@@ -610,22 +611,22 @@ func restartHandler(msg string, message OnebotGroupMessage, config config.Config
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
- sendGroupMessage(message.GroupID, "发送服务器延时重启请求失败", config)
+ sendGroupMessage(message.GroupID, message.UserID, "发送服务器延时重启请求失败", config)
return
}
defer resp.Body.Close()
// 检查响应状态
if resp.StatusCode != http.StatusOK {
- sendGroupMessage(message.GroupID, fmt.Sprintf("服务器重启失败,响应状态码: %d", resp.StatusCode), config)
+ sendGroupMessage(message.GroupID, message.UserID, fmt.Sprintf("服务器重启失败,响应状态码: %d", resp.StatusCode), config)
return
}
// 发送成功消息
- sendGroupMessage(message.GroupID, "服务器将在"+strconv.Itoa(seconds)+"秒后重启,维护公告: "+announcement, config)
+ sendGroupMessage(message.GroupID, message.UserID, "服务器将在"+strconv.Itoa(seconds)+"秒后重启,维护公告: "+announcement, config)
} else {
// 发送错误消息
- sendGroupMessage(message.GroupID, "没有获取到面板信息,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
+ sendGroupMessage(message.GroupID, message.UserID, "没有获取到面板信息,请使用palworld-go面板,在机器人管理或服务器主人处获取指令,然后发给我", config)
return
}
@@ -653,5 +654,5 @@ func listCommandsHandler(message OnebotGroupMessage, config config.Config) {
commandsStr := strings.Join(commands, "\n")
// 发送指令列表
- sendGroupMessage(message.GroupID, "可用指令列表:\n"+commandsStr, config)
+ sendGroupMessage(message.GroupID, message.UserID, "可用指令列表:\n"+commandsStr, config)
}
diff --git a/config/config.go b/config/config.go
index f59a26b..1b232e3 100644
--- a/config/config.go
+++ b/config/config.go
@@ -52,8 +52,10 @@ type Config struct {
MaintenanceWarningMessage string `json:"maintenanceWarningMessage"` // 维护警告消息
WorldSettings *GameWorldSettings `json:"worldSettings"` // 帕鲁设定
Engine *Engine `json:"engine"` // 服务端引擎设置
- Players []*PlayerW `json:"players"` //白名单玩家数组
- WhiteCheckTime int `json:"whiteCheckTime"` //白名单检测时间
+ Players []*PlayerW `json:"players"` // 白名单玩家数组
+ WhiteCheckTime int `json:"whiteCheckTime"` // 白名单检测时间
+ SaveDeleteDays int `json:"saveDeleteDays"` // 存档删除时间
+ SteamCmdPath string `json:"steamCmdPath"` // 自定义steamcmd路径
}
// 默认配置
@@ -70,6 +72,7 @@ var defaultConfig = Config{
UseDll: false,
Cert: "",
Key: "",
+ SteamCmdPath: "C:\\Program Files\\PalServer\\steam",
ServerOptions: []string{"-useperfthreads", "-NoAsyncLoadingThread", "-UseMultithreadForDS"},
CheckInterval: 30, // 30 秒
WebuiPort: "52000", // Webui 端口号
@@ -81,6 +84,7 @@ var defaultConfig = Config{
MemoryCleanupInterval: 1800, // 内存清理时间间隔,设为半小时(1800秒)0代表不清理
RestartInterval: 0, // 自动重启间隔
WhiteCheckTime: 0, // 白名单检查周期
+ SaveDeleteDays: 0, // 存档删除时间
RegularMessages: []string{"", ""}, // 默认的定期推送消息数组,初始可为空
MessageBroadcastInterval: 3600, // 默认消息广播周期,假设为1小时(3600秒)
MaintenanceWarningMessage: "server is going to rebot,please relogin at 1minute later.", // 默认的维护警告消息
diff --git a/front/palworld-front/src/components/PlayerManage.vue b/front/palworld-front/src/components/PlayerManage.vue
index 8b3d6c4..4912508 100644
--- a/front/palworld-front/src/components/PlayerManage.vue
+++ b/front/palworld-front/src/components/PlayerManage.vue
@@ -3,6 +3,9 @@
IeKN=JmnS2-Lz-ZyZ8K+)_5Pyq@s8=r<*^s)E|Cn zb++t5#Ff~&(awR2wb>c8VGGm CdVMXvI*Ok3DBH+m?Kix%cgIGHWW8S!I;@ z$THU83}SCwX(sl5WUmaU)B^egaaq?YjwD8<<~u}_L8_?mKZ>ci0 ~roHH0u@|I`5ydtS+bGeumhvy5nS|C0JcTGB?2u)*Eokp0suiCPQ8PRf7>j%_>wb zMKqH1So&ioS>_VN?>bA4x@h?RXUJohIM+!xKhK_alV*=mEy1|sQ`YCXq`)<`{ejbv zp0Y}|wNji<)W< Pw}-Uwtj|BNBcnWfxh(wyY;`~g z+IAR3*}OhZZhAIzbdWeYNJ`WMOMitCKd+jR#aeLIcSR$@YjRybo|a8x2|GGGNrNhn zhd~FpSU7@6r8C|`;HEomD;B@As_szdcQ~rvhK#ZmOW#@f#Qo{U r&QYz%@RoRg&&Of=)`*y%cnupo>h@ zr>7_Cske94r05*?r#mQy2s-P49?Vy3oZhR(O->6>MV5`^yv$l`^&Rh*T?!K`chA?X z0Z!T-NbOx3qukxyuJ8$;^AN8;CB{LCto_)udki(T@d%NsBx>XB04jiItTsMe$U7B` zI3A%`ax_8>fxep&(5J-c+C^&Pdmso&oBQQll$EHRT_9hU;gXP~t0HJ;uaQ$W$d_#t zp^JwevuO%$Rk)?8NhlSd67&n`h&)MmA>xYE<~((!`1CkkchWeiZj)H3uTIn_BbvER z1KzI(!lI{QHEGb0-B5cVN1`T0y62CsoW8O%#1Dy_S2nG2yHxatG_1*eCi|aF@?{ub zo){=a)&yNig6>8_USYb- -OBm DA0LEjJk@i{5yJn{9Z!&~1c?S0hl zw15O=`<<*X0fpTs**;;}_rfvP1GbNk8p;%O^JS7*XEObiezCM_d)mQO%2Ht36*5kD zPMCE&>yMm+nz`Vt$P5wk4r;cs+v W&I}eHu03v cdwu_>b`8F6V3c6VoC+K?gz%8v4L6_o5xs#F_HN3(>FD<@LyO6lKf_7FK z6+>@RdWiVejLg2)5l`qM!VRU%Ll5*Jc%NJ t|@op#V=K> zO(n-TMnHXDlSa`}^fvKKKr3owwSX9RLQ7)jtI1A*7K%)~on{GCA6l7uswwIccXVn{ zYT1m|V&0)1c#ug`n6)TrB6_-l0-xC1cT@8W^Eu1D0A@#>#f3dDD>AnP%4MS(U;) zBJ{F*Y@>CadxBQI(LJa~MN2bbe+WizhXt8#M}A7}6huDwHVS|LJ2fq0Gkq5n1#)WS z$f8({ppdp+=kZ3TowoeG$&fDmP6qh7^Fw3EB)__1WcMmgRe3tDrLB6FnjG@$%HQrl zT-EV`@1TZ|cPtI{mnJni#lh;cS(>f~%1TY6ZE{Q;$yTcaM#a-^A7uFvJng2^6ZFaH zWvZB*!)w4qk*QA5FW4Y*LwGmqn4;Nh$Q^Yc@7<4B*9!D}xX)HGv>;K}&W`pYbP`0L zBuVo}k~X!HTrObrQoz#m_rXV+UP!*F)ykP#UD|t_svWlhVtbO(T6OCckD={8?~t9T z?&u_~T+K9xT+IT_8`qd5_;2Q~2a>n`YELyKLycURE7! K(Z!!b$zw?v9>!45km4 zKKPSPwKcUo>8LdK**4@-hGgtjhD_RkHXCx R1};ORjT8Kv20|NJD<^o_TkB=rNH^J7Hf7g&!k zJV25IC-A4gB$t9i_zU~Vi@;Dm<4fQItDi(Ei0*ps$DGv$dXE}f5=(jorC7O?S&=P4 z5&Y(*pmfJHP*=zS^yV1C2WM8jHi+5|&!gIs+~B(Wy#TT`*q1-Dgq1RKFG}$t?jdyp zbc50H(D#WxsZ{ERIX|V!3LOsB4;@Yi742JEw6?Ij-t;WuR>*{P1F%Z^WrL9=)N*2^@ z={6RQK;6ZNI450lA@}Nfc*FxC=(+=OifRIfMK9IgPVDrhwU52z7l`4zq$i^D9^Q4w zFJap`zV#PmPIwDGcN#evUYjqiO`e4B=F_K=wGHa>&8O}tZlLD)u2aa%hG9 R?UN@{2;`Zm(u2$0a zd{VRVdWUuxae-2qe}Z&u?# )Q9$p z$FG^AcU>c2G^wMC^QHE1y+HM 8FUsiPY0Bst{d@kr_@aFkZ{iUZ!{^^6 zy`t1U5AV_lKC`7zb{s ~}Ay*26HCY+CHO|)$y9XA~^^e$>C+J; 26Cc963?t{`efj<0k!SH<{IF |mXIv7n8MPSgjCz#3knc1Ure-tk&z z-0I`-#!J0{@#ntPShD%=99f(k;I!+i6-s6CiOqmz clfSIIk$GXnzu4C2@uWmI+q@t?4LfqtHr6&73W;vgx zT?=%X)nD$@ib-@zL$6|4lW *;V++jj#rQKm3W zBxte?n!H>AO&XseJv)W8e6p2gx{r5U4i!|}_dc2ngrYI3bZ0q-7<(5L5Z$p_8VOIQ z5;Np#dvc`Hc;{e)s5AS@qK1>Uom=oWD@ktWwtfW-KN}deFb<3&>A>jm0P?7F?P@gs zp|Mu9G{2O%bZN%N>?TQFlG;C9%%K~`d<8~D5m)ejzmJlny0B~_hMhu!zFQiEDwe!k zS}79p4zu-AOaZVgsJCL|@C0kA*Antum%LD$V!6&T5WZbrN^OI|Ee+DAY0?FqEgMx# zMFqLn*hdz3jpUD2Bj>v|;{RJf_|y>o@&ZyXwVA_=P+NuWMw$DJP?C|_q(Qd@R*I+9 z5I!X6lI$d5F$Uh4Kux26deEv)k^X+l!ssMBTAPo1lIyAIe9c4>(@n#lN+iR&rSp9g z$>naX_@oZRxqCAIp* zn9tcpe(YJtd-GC*i^VmKcmreGVlaj=FpVr;_N>DzT!?S4TKuohB&Js)|Cc9O*lS=b z9gHqmWnp$P$yN$O zDik*H!Mu{G{I9doiLL^owdC?;V%rjjB>&6dbL>+}pd+ zq<-&U-fax&**l02A46vL_Rse0N}Ko!&1veNxhLq@D5f8VI4Izr)H?yAKrlwQkouUu z(S{#EXUtI1 inKg rb8ke*=yssXnK>6Jl~?LbxrMZj4GGNn%~ z-oAj=S&NCwsb_bgbv8{;Cty+~A*#D)7FH@~=vpjYtHvwx3zf6BQn%Fsn|CaoAr4g| z5Bj_E>P+&ce|uiYM5WdyL(*yoXJB8+XBD~3lwekog_*1(-z2k&Y>c^v&nnW|%UF@# z A24=`Pxc}ckst@$zJL-2d9Y{F-r6)N*D4Ac|fz%l6o&87jC#&E+d0KkC z+i0+J PD-ZhIS1M_bt|3M@U#vSB zqe81ohQ0wQa|Bb0(WhwYU}I`gI~6$4C7x3H#`-CNR2%A<{pBQu!o~v7^cX;W3qaG? z{U5LkxXR!haAr{7`~fkU ?y?kxt6sq3Qvin$srtgqo=#txK3b`^ggr78pd>HB- zdG#yWTYkbWVOh?UJupw)W=s@x4p^>Gm-u}}Iu7&7ZjAILFwIr~y}yU+Q-A{Z?tof= zjd-pMegUpBs4S0JdTOPNjYLKtVh+T1CeUzimTVpMw9l>MNv#t*jkHLQ;M1m&vFRGV z`!XV?r}ERLk>}|(_+`^bwJ*H*b|MM-A|%@d**`+T+EWz@dfykKgW~RaebRg$x>bpp@)N?d-Xu+)+3Pl}2G@u(`Bw!|B8Q@322|y{J MlG(-RPwOp?M&ma#f~f+8I*l!GMiYYvpAUMDMjO=^U8Eum(KLi z;S-H>!=+gltrXGuWtly7vm_817pmBUVI3+K;V_MfrHzBJR;psmlp$CX07u3N95FE# z7jcHpSf -@Lv_Gz1J4BA zR5f-RV4fZSN=9tPd*ahS_+{?16q-|Kvp3hEZN5ezH%4iKOD7t}+rd&QG|Io7iK#L= z_^|~O$S|L+14zw?etdAO3KRu`ZoWn^$k9Irv2gAQ%G|UZj!i^LRSW_Vti?dlgkY*N z?x1S8 |?@T#weZJ+OfY E2W 1B95!A-`VAP0di&aTz-A_(QMvYWE@1a{c*(9_I=2PzemwYp_dNv&avW3zN zY5D}y5{H>57J%5~iMl+t-k_bu90P)cOK%|v^~=8hAAZ?;KzYBcZ|<0hI_7YnoRg|L zN%|6jgzTLMpHT1Y-reAxR1fN%*IUWniNRKR?<~0;`pFD%QPwu;dK;yMe-55u@=q0+ zKQ<^kB+JYQ^6p&P9t~E&G8ZjVPvm8n`I;Melzv}GClT^aQxtae(&=#wvRjX$gKRk! zdIU?O4VE%EydNaPZ2CdXJLFSjvNf>M8kC2;2u4}68TI)ZPuxlwB_w&A(EX3|v@4#k zVciLopU_es9@51VG!3ek!3j#vnYnDZ{P-=*Ci+ZXY2P^#X%#^-(g@Egkd*-O^a8D%!*a+!|Ed0K60~(M} pZ5?g1UDluVy)f>} dmGloH_by~dK))a zdAZ$nG&UCCh4g(tm V`5hX0tMGI C=zOWhDRk>kbPR%JPO6qpewx~#dWpL=T^LqTFHFOt z8m**&M&zHV3H;jeBz9T^w{*v(Y3+D-M^{RS8AP4FkgoWEu6+aY%Zvp6R0i?OZpa-V zowFl&k4I!qc5D8RspNEa1AfO;@;=+kf7w*@lXCfeCFzG8dA25ljo0bQh}4NR$q92$ zccw+qB@Mm8Aj-G($>f|SeB&`>drn7wqyyn|%lHvP$cp(jh~La#$e_8YM92$O{WAzo zr(>Jcv03Z=WRjORg74Rol;*YKyM>bQ{Plc#G`W_4pw6an+6Ln0JXO(^4;ZJ1ByhAF zN70xP!t863k}5Z-4(V9nYuEZRX0N4Ym&t=!Vf@uEi1X}Z_j<$1%Hox~^Sw(~U ImGw24xyvb^; z@}px!(Fwr_9@rv!DEgT;x9C&|=D6v`7zAT%*U!bWVmg1fjOvkhB7<&E5OiO_WwA4o z?JjPERXMtnplgGe1A!TKFKVYCZHh{%YU4@6j~*{0m8$l^ES$hB3eAPin3_iCxCh@- zRNQ )grY%B52bT74XqG^Kms8gijKNT6$OKQ#+HUHDI(X0kLaaeVo14IcC~ (l-Qs zaTpi+ E(C$j-Rm!AH_KZjGJFl2mQp}VjkgU~sqv50c<%%(15&^0 z))Di~`dxNFu_g3{DoRv1oG#=ihYQ+;(RfBb?<>&lH`uwPw^>JbF4C1)Y<;2G@@A+N znT}Y{M;)lJTbR8SlhUOTCm^jpDLjBVTc!hZGM$Q{m$0l@u#G9Z&Mdr*ToipAUyU#s z@WxN%jTp@j9Y7+NjR+m^r Ke(55N&c=gws`sJv9uQLE7uA!%1mpH}5!oOf+4P zNR!ewQGJWyB4}VXGe?mBmc_Vh5r5Ea()14-Z>XjJz9F5zYE|{`k%k5}K8Jk$Rch6p zBMi^3IpqCUclq9_ -nFvh;B{qma{iuMhgo9+PI1GzK3DbpkGk;aZ^je@Iq1sUu50fy)A|cOq!@v zg%3?o&M1|tJ|wljIqmSG1GT{XchV~I`kQtRYw)N%GJn$AZ%F*wB#(dI(LJeI)AQc( znbmcvWpumu>yK7Depu_q@lH2L;kpC-z7Ayi`dIsQt?3$+ Lc4oa6i?kY&~27oaSPdo(2Myt%Sh=Mwm^N_ zW+_NB2U3r9A5@3dIgON#b|<5Lc+S_FOZsk#_ixsQE`a3oJ1@ch^Jm)O!gd+U^%5kV zNhT*ZHRq?#A>8H~)mv}p5Q!vmCCgRDs>znx6Tf}lL1U)T_)woTOnUtzbNHle$p>wz zq?b8q8=~Il6;$6uyURp-8!LV#-e$D(;u-B {Xv|CNIjZL(@ zDeZDI+Ift&n$dEDQz#%?(;+yNWnZpHErB5x+>%rqf}Kve~Y?wJQzaeZE4N# zm_^QQ3H1J+vrN?`gjD^pHQ#U+N&GR;JFpU}C&6SssIbf70;s-4uw<#k++gCkwKX4} zPm;F=dTT17@(d;mK(#fGTmsd)GTI?jlzwXvQEqF^hvku!ZGqnYl~Bb8kpfU{nMp2# z>YI<2dHotloVT~;>&_&dw+DKuE1}9H&L^Y!O}XUf?SbB_KUii}HITUe)Vf0*OfjMJ zOv2WYGZ?k#IJSehOhsL5j#TXjga5U|M>BFIxmUvPs{pd{r`G(M9CG)kK<_30SuQm^ zfcWlc&HLq${yPG_T`QqFr6H?9wJMw32i4;DmU;El5cSU1p*6GRVR0G0y^$Sjj%1HP z5^FcHcAuPfXCvmcUYSM*Uu~ezmQH>TN3=GhZPbj>-W+eF?Qf!;MQKmq+cCMxW=lI8 zGTN_9w0 HU=9?8*5J6oYIDRnP^v=XiuU9rk}!$zBG!_ zUma(ZxwnZv*GPY`$|qSyGPz?Gndm)C^ev6_lRz)mdprh3mfZV_KN-2ZHGg>;*|IyB z|2~GvaDJ>&hR*Aa`t1dGCi4!PPcl4`?L5~+?_{EH1p1QkX0+qw&P*`TUR-D7{Wo%z zM3~VMnbyukyTC-dlhVGzAjw#NgIcjVIh|pYIoU*;NojYO)3Q1VnrotUGSN1owAg55 z;=7L3N04Bmy|~sSFLIScn9)9J!DO&A(JnC2?xeJ@@R~Nt`-t(adwPsXUK4F5rQHGA zqPSrJ7$XitE6$c$MT5C_po!kzMBkCpk2d4&+km8*lb-p;D6*20(rCdb#@z;FjX9~- zM0yGQOP*r_#z+dT_d$w+ ? z-yg&WJ|c7X595E$CNK84;#X#q1_v56_nsv8YRZzQpv9=Y8iJ0)Ik=adx%%Ihow=be zS#h8t|Kmhbe4q=zaRv!ESdXtWk#s%S(Y68VK+yIRFPHGuv)%AOryXh7A%Au@J{r@G zhL5uP9+&1U#{h3=!Hct4ETM2lp=fYUp}2hrtJS!#TBuMs9!2PNOrdZ-j!*tiDHLkJ z$`cBO?@5K?>|upsHLgw0BOmC45%s8xF!zpY!7)V_#aJZHJEBm`2crdG YGd!rtAxo!<0sk zSeP>RVYx6RA&P}5AI8%##pB3IL(?`7Q|g2>m;MXekmXv>`r7DAU#~z_n#U=1Xsvq% zZ8gz0HqrK`wB~Wj@CZgb#zgxXyOU@Mh<_-pd7Sd338SrVqTOYpy^Rt+i&KU-rL-;o z8fKE$MEf Eccy8HyHoLGmC1M x_Hy|Y zs4Ok9T&mWI1uE)MEKqT)gi7ti0+rPxS)f8B%e?kDvOvXmBnwnrDxpetWP!@c5yn7e z5RpB0j-*{;klQ>^SyGF6?N|61LT)*J2KsC%4)mV|DsF*{wx@~q9=6NLt-*%Ung=RN z{1~m5iFUP#_9RO9EKphE%V=-*H_Fi8L_3Spng=RNf+%h1S0-9N6Kx!5D+DUV!HhoD zM1OmcQD)9aZyu;5GPz@%P4uFP{t!xH{67UMMZa6Ft7BDJpwj6J7O03}OoqgMM*Xf7 z7-fhw@-z=rj>~qoGtn $J@Rv$s9` eNyE%Y`>7$acc6*X-bC7wl9~r9;F@MmdPZ*)SV>9E1C@ThRMr3!SFMTk z68M`1DhD6Pfy#H6SfJ8(Bnwn(j%0z#^1=Uipz`H?%g)@~mIW$dgIS;wGJ*vvKMZ1l z%JzFSk0DT5f`|VzP_doE0+q3M5f@PS6~PLwy)Pq u#ibdBDU)(|* z0jPNcM-TzpUr{LhZX({ehkSPwiVe4c$MZ8>Ro4)xyg;G@m{bE3Comz`5y^l-8sG&A zXo8FmVB&)GvnX@|p4G@a7_c4qdBDAaKxc6s1zvCN5tqy9{L9B=+U4}B5^9f5CSw(x z+#~LM`eRb%N)l&Fy8etXt|poLb1S|{2s!<83*Pf9QstNWzK@r2*pHWqIioo2O--GH zzyS*v%a$RKlb)_5U4E&{AHt^PU%K%D!Q|#IJ~cOdNvFP2{V*+^AvBA7o0Whqe3Ou^ zOmbXCoUeNG&MQg1t94b65Pi^X#E}fQt1kKCs!xMuSOHAXcl4AN;s)PwdrGtEjqaeP z6eZFr;7B?-YWS3X|7|O>>uLi&*@sA18#<1w&!$kpu;w055_D}0A6`P1U5nyxt|nKn z#i_@I(Gsa1&_NsLCvC@=2}+4bcq?VDCe5$c;1f$okLyu kAqQobeyot~Jx!pc=MUz0=AKsVQb>j9k34wI#6^czz|05WB^VO;{0 zv;` 7zi60Quv5(R{z zU-wdfr0Sr@!BWqe?^zvPU4uHRk$j)wR%qZ-pjp8hmOOiyuX%?wY*A4q)9=ORYv>Y1 zqIR=J#jfkwhJqX%KBLHV#@>GcYc_=>=Qpp2LS&QPC&-oG`;dhyfD^DPh&r8FU(hYl z+#szU280z98yw_5twlJ9$7SXqw6Z^QkoWXJ3-a(*Fuz uwr oZ{6UWGrgAe2Q zSNm9j4IT~TduFi$yZ y{6{ zyecbj{2o@|_TLBcH^;F8uRoIuY_WzFD15~V9Nk7P@Zv63pw*dj1 6t(=MvswjteL+ar_WLlc)ZU4kTDkpw8Mh+pdL{2>XyG(hE zw0v$#Y$YdtI7$v7Q8G~eM(&q(^O$+Gq8c-w$Y%4mfLr{Bj5}6XG2g$BW!yjuIEUY4 z9B%>VZ^*ayNJX9vAIbUJSisGbWZc8U74t1OlsD4?u8kp|zXe=pL%w5&D)KbSInV;m zC?{_LH*k|I=h}l6dGbd6EZ`O!a1Reu%(wQQ%yXs%+_>LmoWBL!@&_{R*#3$<9~yKY zXaVP7$j4j48S<^&SCMDK`*L}0Ea1G2`t7ZluZ~ea3%Dl+oWBL!zqbwg?WxGKjhwIg zKnu9ex5>!&9jkxXZI&%e?wP*5PcFajRb6ihb%(_K*Qb5sN6ZV&WlHtWgu|581E z+GWPj(AAw?$7HPD*#d4RqM8q#_@_I`r4L@!>aMGT^>`X(%>0J@{b8m@(LCDO(le>B zqCENKN4mLw-fxaX|1pqrB0E1eXy(W%mH;kTfV)VeaKHlGb==`w=E1x9y|go~TlWxj z%>;eDU4MxQ94Az9M*L=VL9F$PcNKr&I4{mwJi&1t_)*!SGtX7$m-1o=&(+}DZ5Qv^ za5b~%epgn84_>g-lm->pd~#Y^iVvai@e0<1rQsE^O{d}%s-Xp&@#_D|0?_nn5aJ!K zMmT4}v1=V2*B{6l-&wi(CKF^6I?)Q?$2&I<98w47Y+huCh8?rpxN2D#Q{is557) ztj_8671X)vZBpllir9(RE)8`?x^Rk~7J#O=fDn6eHGg;&QyShFvuTA4; z;u&jb<8G!+9UExlF2>rRa{inuF0$bQLS%f|gV?#_JQKCp#-qDf)JDzYq?l?y)4>il z{L)}(>lRtr(zO+o{orX*_DV(UYHXH 28o=60Sz*V7PyS>*3F#s#$_K zy9(Du_2eVAEI4CWr^2TZIo8$1k}6ycFK{fi2%@ho*FjbCS*9h`#mTl@jezQ$BIkdC zxZjpbR7sS9%24XeMjm2yJI>F`gHzPB2x77wmuBVkA17|N bm%=N z^7h<(s~`WBu})`-K4JU*D?YI2Cb_ponsRps6~543_6Kd-OXe=|5=T35K|WrbBC8S* zRSsN&`?`~+yzhRO^EUDpovLy{0p6U#{eObkt18!#e|19KRF$jAyIm5`R^|GreluD? z4ZF|m>LWI(1`GIbik22Z99@m;6!7cuPpZ9mi+dcsP}EM1!)JZvuRVgL{l~@Ms&OIw z!sDXSk*meee=9b0 TH}rA@5IIPjgE=Kow)G2JY}K7 z38#65Dj}*k3kM;1U_VQThaa)6qYXAj@(Fo`?E9l +b4UVbpMMG!};IB(vq zP@JdY8u53Jh=nRHkiYgylvG?B^|&LSY&iQBN585;1<)4XPF+P>QY5x_=E8W*5jpqs z!*cGSFIjG l+rJ}Yf8);(^ z?M-k(7~WAhMRjPwF3?p5Vu}kKcM#4!FfiZytIRypUrcs|_53+S>i-0Bxhof%di|h@ zOI-sOMQw{BjyhFN#0MzCGKk)8Txvi)ur{{im{Q!!?u>IU4elH*IUE$1xWS$89T1PW zaUT31e~CBTxQPKt2R>ze@Z4h7ItRo|cVsQwFRpe+OPKatJmwB}Ub0_ws1A1?xF6Xn zy7Q)6<~|oqKNy=IAP%h#s|9e1QU4RfpQ^)UPV5tJRfh{L*e9wy@Lc6jG13EtAATn0 zcyJR`H;v67XO_*MsR ?!_exs0~_!Lrl6ZJH*al3sq?+O)e}~l}kbQzd^j^g=!tO`;$oA6I0#T zo2oTkYQJ0T>W#Yb+bvh?cO~L7Z>~K*?uPgq(p6V!9pqQp+?c~ovDxX3#hN}`9fzfp z%g~aYqzlu `L@chs^;6B5Y|f?hdzs6tE@JPRkZ9N+;`cSV1`WF6 z;9csgQt!vqZQ@FCiViktbyUU9os4VhJ83QEr_d2#>wMBX$tG5`_vPw&UqL FJ1@A3E~)E&ZFHQ{maTqw%F1#I(SMO1Wxf(V7E#1wk2-W zlFJ{sZOBsR(9|GydywANU<6}-7ccm7ZTO@F(b 10TQEksjDVVB#+8#;Kk_`xH zlAb0tMN+!d(2z8RCTWl~NxJt)rt+Xk&d@qiz?6iwkSAf^;Z$s8j>{2q)Lan%dp~ib znhW4tJrax6Tw{lu8o8SMUWm$CTm!yEg4m`OSKr?UlOsj#aL_vToTkO# AyiwpBPFb $dR^1+(aS|{` zr4n>{ pH0$c`6150~=8-U*X0U84006hRB z01Lq03E&H$_w4|k0RsW!0Mh|GP;?q#1c2U80A%Ol&wPLgSPPg3!pfi}aFs!2dHzRw zRkOmxz+kR{U%+NspWRib;=ZSDov6b=Mc;T&zbaTDYg{l`oDj^d;Fq@$&)4Car5_ni zC$i$iqPW%Q%u+9*b%|2L+gMD~W}PaEo5 (kIoIj)Jg2 z&}MCAN14X$!4Nxe1Y>xwDDE+3h$I|a^5B*@DwOkZ+2+9Vm;A``dq^3##k(O~Bfo#Q z)34Us8AVRe;T%bQ Tu1|ZNIP}@f0lQSd=)yo|QOri$P-h zTNNZ8Ei?RF;*gt6V%K+eEPn$zzlXH $DQ< zhH;VUDZ?zteEfPPGB37eWuDt)kh$}X3Nr7J8GbJFxa&-2w-`D96gj_##38@ |MuTVcye7U5 mSHX=-;RD%6{9O`AGPyn_)0M( zoa@2&t|{h)bIJCgqfuOOw0J9=(|H_8rDY ZaLlU`zRLmB|>5^F?oiBXvc5P(_TONhFw%s+q@n-f(#3+K#TlzKZrKwXs_!9E9v zsxkc63?H5qLh(@!;<^Z~FMr2g soPSY~ zk%X1lHu%&R>TF`(7I(x<@*}`2C5I2p)NQ|Ercg>}K@U^cTi%fxZ`AiP`>kNH4SgQ^ z c1N_Y*|2{JRrAGcW7=PIQlV_em*9CKZ?(r=s zUu_nu$RzM%n5j&vDl^QEl{uD4=Rk>Gs;`+Pf;XCrYLN6PU5vA2g8lz66TDh!Fu@cs zG`Zw?<>8}wg-7$=HJjK4c5>SNu}oNo{>y Vq}XlEvsXT1?II zO3?Md89VK8q&H5W!~xKbVpt0_5oHUpV++p1`@7Y=LK}Blxm%g@&-5%MIN)P2^fS-5 zia9ONbY5;2SG3?lv-`HEHtJg}*TW6!`Q4e-3X9@S(^i3`q(bRCx?rfcQKm3laZ#L_ z`i~m;V&Eld^jl`U@4sfolcX>#T4GCI&5sG?*^m5;eYSyrJDLABG$QywMgB^ezhLBl z3G|fz>I(d?cC#S9MAt3#Hk~T4_cF-8?G2N^WVu29j8o#>mfTYQW=k=v6<0SrPbjZP zPq_hqZl?2e4ODN_I9a^hit`Ybyk=Z4d}ZL;6=G1SH5It^vczqa% <~G{M z?e$5qXKSu2fA6xmwKWDDt1pXx(QE(9V*O}b{Vt1RqPgb$qhfJWG}p!cBMxDNa6#XS zwlQ39`{nZE@%7?}7_Pg0bNO-5dhuKgi0@uv#J20jpf B^60$jqT@wZ}08?J->>5GiVi?w3Qwp>fT;c5}%C|}2c$LV>xcq<1> z?Ht7K+j2?Pk-0cRvj1Bve}3F5u|_NxV%?OtQjo(1-r}HG3{zTN6boXxZv2%|q7=&| z^D{?@k#Sr*zS$@-Hx8=)Gg3Sn$HnsBmx{LWoL}|DBWWY2Kas}P)9EifInG-xwut8@ z@#)EXcE@vbIF}8O&Z;oCM1vtGc99$__)hF7aM8SCgSbfG3T!vM;uTz5J8{vkR<2@H z0 w!=@w8UEpU@*(l}_IM{g{9bhHfOlZkMSI$Hz=)755{D&nK{b9n2sQC* zQQ8qI9L0++BM#$l6m(iTaZ>ytk!$3>n~H=VD$yCX;9%J!YN+@sk<&OhJ7R}|RCeHF znOG}{tKs(7M&{7l3aCTVPk&eKu@brN)-_#!V2Bi*5i#0;aM{EV%jO#qt@eo9k~nqr zv&{_gr-@ZnEJ7Of!d3pf{IXn(@<&EotT%GGyPI)wt+tgR8ZR;;HtiPMCS!f)x25>S z#l0z*WkPrT7!Q ^YelB&F3^BAD7p8iJlg8LlB7*KhnS0|<@m6 DC`RWAz?)EE2pph0nn zEI`c@vH-=wvH-h-sQ~eA@i=en^Rl}Ji|u=ILU8lra@lChFq=vH_d&+8;r9w@O%HK@ zPpkvK`CC?aQ;=NV`eSl=-Gk)vS_a7qYkQ$rTH8xJ*bB3UlY5E3_u}4he&XHUoNxAN z7#3sww{rAB-%i~k>FXrU7?acJ^s(f;0qW{)ri3%xTeFz?E%2wLo7jkpX6`bLwq87c z1$tBCrQWSh6?D(gqrl5;^1lQX{SZB_RGiv}^L4OV^06#dH-B!Q(R gG0{j?_*rY#t=0!vt(jT3v z>ms?Fk(nat&rP;p6H0p}$3>x{dm1M?hX=AVw_S?j)^p14jR)w(Lup)luPynM%4TLJ zKJ0b^`8V?O=uA;PfE&=j#~%~WFR@pTZW#<0bPXeJ>)s=vTOHT1Oc`7xMFo7uwa `9y^}0b{A_7;;M_nKn}krsrih_SRG~3+3Vy?mVfy; zL;ij8^Xze^{9Smg!HgS(IhG%=1e>7sEx8C6!V+?V&O1pLZI@_uj7>@ZE*>4k74hFD zi`v1Q#?8YYjJ4CR%WiQG>R-(ej}GQs?bB8>PdF1K{yLcR=p1~BRs4YQtm5BF63}#% z{~qRd8pA1S0U80WjhCSv?vDaq1D;?|coluv&2gXwJ`_+eUW^~Yg*t@lK9 (qa-Z{ng)Tx zD{#A?V}aX_m5f^r1GlL%x1D1R+@cKJs#f5ZYl&M|ncJZNS+*K7w^SpyJ3v#}Hv5&= zw6i5{uU9bH`Wd(#!k2$&hHo+qvQ0N|ORB)_Rkj69zm&O^X=K^@$=pOEH(vv{=f34- zTVjb@Q<>Wu1Gh4KI0)Gyjogj^O*LIufm>rs+-`i$G>tKETO)J3ImV!Ant@w*1#Z`7 zSkQE`% =4pxB zf#pn7je%R9% $}iJW3F-~}LM5~tV-aKd(?9-tEwhj0N7p|cGwc7`~02wLn;xyAaF zw_x{a7Nm6fis?MHmRujVPRlKJltJg^K(iKGfm`uZ3*2@rW87*OxJ{M0?Hp;~7G>a8 zwF0-Xmbi75xgAo=vel5er5d^20h+Z~@A8^9x5VwW$Ykqh;CASg++s% T7la)lPqZ3N9K02 zCeyUDM&{Pn$n7_vS&K#Mvz~$$3kU+VG(Z;iEdBzBn1&V$cmYV6jus1Wnt>KOMQlF? zyE?Ra;;1p)Oa4L|aX )io zA@Hk#zbE~3jInPhv%e?p1HE}DDYhNU-OS$L#^P49xyF9=SYh`JYh|{K*^5O?^j@qr z#bMUfv<8Q80<+-zj `@NRt;s7p&|hRA66Lm$5fYjy7X+nWv=1GXM9?hb!>E zC-su~6Pf=#$$PQ*%Q)^4|NAs?-*~RM`#yml^q$#OC_9-D^;gyf> >J92Eg)hVOMJp@zO80He&lM zZnnqYDr%$5&(>=;gvjeP_DvTs%dDv`R+)gU4u2nFhNw4?8iJ0?cPtR2CU6?Q k;DYH@GZAx2RYSx<6S*dQ@2TR~6S*n8N0jI>i3{=TGYN}F zdFL=YdNW3O2*0pAMI{U>#zIq~ZvHhe>pzL>O_>~=#6{8TKa;SG&?!i)Ihhmqg_Ff$ zli{Q5cZ>5Tb2aKW!7K=VVh)47YSDXWY(9hr lJC6`YPT@N9e|U<8Q!r^4d{LY+gKH*soXWLvvua8Y zIL5Ji`T|&z?mN{s6& 9i*yR5T z2Nj!5#_-;6g4i^N^A~o|p)H21SYVrBA5-|3bxh7+fIT!wqVX`(;+^IIT#4Wj8ICqw6G}Z0vi1NzRY9uQ&5N<7v@}tTGa;c)% zG%kkU;Upf(v#^TeO|YdK?+Y?4Q66ytAmt@G9jL(T=KAk 72%zsh+_?=2>;rTRS4Hb+@H-Q@F%Z{ zL-M#~O-}Kg4=t75S$@u|>ybD(iLRAE1jypVSp61H;`TC5If=9LC#;5&38ir{viv zMOR~Un4Kf0=VLpX(@3!(pKGF|tEREKm%1kjQ3tPM-SlccmrLEa$1IGoam}3t)1LJa zPvBZd9R3jlew@MmPRPSzB7VhKdFT{c1KeYNLwWu6a&lDuMewOVo0~}UZ |@4e-Ho-y05 z-~>ja&lSVHrHa85zfmxYVGN3slc1Bc6gS#6OWCYO=NmId&Q{thWv&lk1%oLw`>dut zsY(=&F|KozkHqcr858Cxtrc @W*SWVOtR9 z=t{-VeYrH7S11NH4_E2NyU_B&@6A=zY=QE68K1s--e&oHMKcyCU0h`|KOEg^)vsvg ze=Jajh_+=ix{y*`5j)Cfj9RGFP{h`I8H*PozgQ46(D}v6l!ou#(DRuk^LZHg^ybE& z5|Mr|B9kXoaEeaXzQM)^{5) wnWb2G zwJgoZU#gT-%r-aGkdA&Y+Ji?{cXz7t1=L7y?VuK4U`amSN)2}^?!+<`>Xx4_!~? zmtlVM)0Z@1nKDM;Nr}7sdu1Jcn5M*uZ10SVX-Zv1v|CH%R$#TTLucx 9)+g;HI${Oe49E1_7PznZ$PRNfPxt)`tTm1MD{9kpMD0$8z%Hmp*niH|*~ z>1xbr{#i)_Rx88Brz 2k?w_HxPTK;X5g zwkzAvo9hsLavB|9rz{i7efsE2xQ|>$zwz&u*3$p8F9_0JCK}$8{*yna<6psle@kk$ zK^abc*D7V{+YQQRqG=9AeyxlUpDm%CUn9iN!IHw}#kBMrWu4IOQ-_VpXz|%1rZ9|^ zC_zAMUPv1@C`-im7i9DmL>o3C`tMDo|Gov%zlOtq^L+LnrZke?Kh2|=o0X+x{TkDz zeRFB)7Wg%kepfz|QQy5HN&hs5CS*V~RU6Rd42W3Fp{Pu7Jp6Cklc{_ls;5%j@8JJY zJqkMn(aokO-$B**+6g*xNExWiqM6?-gOs{7=R0`Lq78=>ALRs9*$zKD{dN$3uhHf0 z@S92HzE?gKjb@V1F3b>v8`I!jN+UHEg}!7L^4!iw<#sFng@x`$T~d`&^kW0XC8Nh~ z1rH`(NulF=l{b{2=OSL2{>q43vpC}9Y4qV9Xhn^y|6I(;Q(qa=Z9m7Xo=kNQphEVm zPLsZXaN13ws2#}Qan9h|VqX$X*v{3;PgbkRQZ_YypxWOf|C6QfE?>H}1_GGGzCOwi z^zlJ>PLiG (l#)9srJ5k6T2)FlL6ZIUq!jC?Qmo!mtP>^Gll0yWP@PCV$HC`V zFPe5-8Aa<4DdoxK2PnIAnIwyI@_0J_118T)cT@ErF;ns1O-p`M?ufzul=qWTOUb6p z6A;zB{WS7tOfj>mMK mj|YP6F^*YwlPiKAXDe08x~1^!Q~#sk zC!j{L&5uG)Dna76u{81|Hk_~SrF|#SsSFuQ*H5CndrgoupI&;N=9C-<%|X~qD?ziA zg;GyoJ~ie?$!3!*s+f&__g@OmR)&c+pGcCOFFsH5)I~{BY)z&yrmXk61?6pId+`M&$Y~@y{CEL}{aTTBL8;+nVuuPBl}%3PUW4u6MWvHd zS+==ff;7IZL}8bd2+_=TF?Gx-ELTR+lX-=;#<8p#C~Z&@pc#;w#Xk%h)R(>qCbwE6v>6`tX(2tkWPj zuls2IUZV !QF_$v@2#_$4Q4XI<^wH6 zXOrIpvPb7=v%x3ULGtjRR?clI^Sk2T{K;*^;0L()$m&pdc-|>;h*${Rq!3Hy_3zfB zC&>JV;*&4}kzZvN!0%ONE&N_(GT`?r!<&52Zx|f_JrrDyLBlUA70`QBxQfoYaTR*= zs?wxVzNZvmsQzq9^g`{eKw5ECspYyK9*}-IK1mLjrC+aNo>9R@`Bx!6`+V}dhII!w zPx|DVQq|i%h1ZpPpfRx4lk =gQmcZ%{~yy1;r>6S8^Zm6%sU7N 0`I`AxfUKFR@F}dBS6yVyTsK|T%&qfe&HUS)!{9l(!kW2DpFI}V%(nB2YG%v> zSu;O;z#=SGGp9du&}-(ZLR_q7_B|?PeEB| ONu2mD@TYQgVShHEBtDMoYk z#Jf^7JXdKN66}p`!PX(xYVS1^*UQK9lkk{8&w0Sp?GCY8U@6=gGu6PuRAKjvzIXy& z^GKO$pv$>R*O2vIItfJU6$cXhs(c(ssFK7`tqeZ3ZBxg+l*Bk1{wK *%PP`Hw{YzO@aad(NaV&@FiJ!P*q{P3`yr&(YwSQxn|J8#I|E;VS zi&xR;f0WPE-FJ;tI!}2&A$ EWLnI zI Ys%XaR)mDE4GMnDILbav6{{r4o4=l@S;+_ gX@-(DQafXpxe;&`{Dql-Bvm_ zb-%>YP@s|*h-U${4ug3?uzip ;gE=2BcDpF2v69t~z04Jo4_ zZrA)=CQ=p=%{JHR^Ie|3R1uaLpmXPT*gi~Pxq3@C7pxUKnOhhi!e*Mi2fk6zHT&)i zEZXJW^yM9NrSs>}4|f!g`YxTY?t!_$L8&N|(ms&K!&oirLp+U!7qcqsCzh tL@b1CdD^hN4{zP9vxVMq$`gSEhv9LUxD7d|I8=_)Fe-F5LNM!e*+U$;N) zir}sYo~s}jPsa3df*+AGKxM*eGmd`hER{i~1mvNq;Gr=n>1D!Zzzbf+U%MlXEPma~ z&CYM@`1S~hDRAFA+h~|(+ylQU=S@>Ej2arBN9d|wcc=Wjif?3aK4{vT*2WK1`&z>v zP3EC82KO}?-Qb8vyYN~>OwbL1uTr~fZn_caX5n-;9u ll0#$0{jU|KLO;izt3F(G8uSUr_({M Di4R za&GwWG~T&hPx<$hV2`mHJE?H7>o(nUu|`q%75| bM=?R3l!(x?V`y{Tb=%8XdT=G--PEOZH@zZ=*%L zgyl{k4PPfcMV%{Xhw3aRTq~qIU$^O=E3QeFLqN9#%i%itXDqKO`#)HAE+Sp^8R^%q zNtU;+D`a_}{iQ5>gEUzFO%JDYHDaA)nXVSH{Izb=J-1(#EW09n36|Y-^3PZvUFLtV z>{~>-=`+&pu1c1ttSw~uvzaet`9^7-<*m=89JZEOZc({N5)scN(d`=j_DHE!^XwW2 z$GxFwbjF%uLe;on;{ pDpoh$6u84v0 dAGGI+v12*T++?Oi1qzF$Pv_4guAuivFa-&pmc zMEj+1uxAq8RZ2>9oKA=(I!m|d5?yjdN_6YWLI(FuXWI)5dY94}bkpmD&ftiZlED)> z9DyZzO}FWuw{s+er9oG(q{WKdRZrm=gC7|sgE4w^W^k}>(-|C &dR>T+svn)_=LhAoL$F+NK;x~2s-_J- zK&ynPuJ+G!rXxaBRTj{7A^N(#gL1-NRz${j42|IEm==je2vyXD3jAbMv@GMYQ5XiB zh8u(bq=TyHDlSZ>Do( _@VDAx)hIN>6VU#<7lKwe8&x|FcOf#W1rzosa>lO(JV4QA>QEs3*|a zS0)h5<$`wdTmlW*xg>$|$&x@%Nx-r(U*|Ax$x8{mv4oPHMKdw+E868O>XjaNRu87N zq&v I(hj*I9l zo_J7DY2oqaHO$b8I39w>!2drc1L6ML(2CMxh1VIV?C>QTxRnKmAyBRLXO=Bm) _{wlA5L05o72Owh9_Maf{a-vE?93HuUmH8fiuQKjl0(Ta@ z+`J9 8#d=K;UsW;d>wKugV{gXlYf zu9`*5gkfJHK%E@;{I&>TFm(?!aeo2@1Pga_cH=3BI}YebckVY2u_MBS!oJ^OkAeM! z!yXI!&klPW?5A~mL?WzuIw=vUuwGu2z+@uQVE;pgNQd=?v}VDYC#~7A{wu9Hus)L3 zJXk#z>l6&I)|FN>tYOk>fwh;k2EqD)w1&buPFiDdtkGzf_E=a~NNXIdOLS{;B4^re zoG+37eQGz(l_;%*A9tAuIeRe;uPA;Kdlyl3CE<~frSqDcBYpQtgsQ+{4@ji1c-W0U zN@UhQHH_I3StL3tQIJH(B?^_u5ih1hyjY3OCCH$05?+-kQKG*kN|i{8Iyp_E+tM#x zqPr4hNpw%5>=N;EB$CCLoF`GvqJdmI$@+Jv-FQw$H1ju|qhh5bTO@MiB1odb9G38l zk;oyLSc%Rp$~fRAUQ@*Gg_P$Gfp1! C0Z#_mPD&1$}SNvM 32R$!Qs6^K!lBczd*CmRTezzowljyNTi4x^Y zlq!+4lxdnor5yrKm$0m(+$3^!l$%5z66HwbCsCe6jU~c!YRq<1iOdo;UzCAS>NO>y z67z8=IS|gc3W$q2NQNjQ84Q)kO`;fy%1fkQrD8X_NQ4`KIUONUqC`(fmZL=XBubO$ z0Z;-GOqcMs^vsgzu0+`qJ(Va&B7;mKuY{k$s3-48&@7Q7o<$-@yda5mMiWw!LrX-A zk*F|-5?LHMl;|}_4kZegC{?0f5~WGhN1}9z`bv}~(I6dVl=l)fl>{s2?@;m?cwt?F zOCd*wYAZ9IC(#=c8L-3(Nq-;_bQKwWBoWS1Fd8cnP8~6tBvGhDHi=>+`W%Q$Ay&e* z(i6&c9C4FGi4yIQC{?2GB}$X%ghc5Qos}p{q8k!rOO!8BjzrEZ29!dcgcYQWxGo}j zZ;8wjRh7shk*`ES68T9KDv`fLF%s2~D7J)OoJ5jl#wH&wh5QA2DNKhKxZzSrm7#93 zM@n* Vs|SrT25D7%DTjzkxwU!FvH5*b|doZbfFQZP&CNYEnDA2Mi=M4CjQ z5;+o#k?5-Qi T3QClT? zD*f^#GDs>0oD@d#4w`0(oTQ&cqEb4_=;6zy@W*_;6oTOeI?QCK40V=0Qj%jNIxkVI zL>DBAljyoci4t9wD78eqv=Z^sCAx%=TnbqdIugt-5izGk#Jpz_5zkOY&uXqr&@9m% zi7XQRD^XAhztCdwPzo^;-jG3KOGJ#5=)Uwzl<1*EsS-VwD6K@i^b+y1BvKq@DUqt9 zjQf5l1#y2K`TAoZzBf-7x}mI|GZ#tPEKx;?EE4%h6eLkIi9#i^N)#heUx{KR8YEGi zM8hOXlqfMl!c++tOOz(jR*BLj+AUF*MA;H$OZ1aOITD?cC{LnaB{G!LGngZhS)xDZ z%bAZw!kf}FsL)fFOlXOSF%n&oA!8-FD^Z+8_asV`=)wGq1pzz|pJG8DN?r(ON9U6! zL;NmFAYGzs5@kvBk3`uLJ(MU%qQ?^DNo16%8eH{kdProJ$Q_8Qy+y*Z(lbaRN5oKx z3MA1Oi4++!Rw7lRxDxRaC32R2sU_m2Nu)E1YM)*rVwOY>PO~MdBFW@P O(r zF;T<|lE@J+v_!m^V)0N4u@ZKZ5#uBpBvGP7gC$CpXsASK61^``x pXewfr#6>D|G9c8Jb)MaSI&UJtY@_+dtj85Xn;f(iQbkdsDxjrME#^+ObNf( z67k|BdIur76cQzTS4K>gXoy5<61^u;x z`sGP9P$EMmJ%^5XW{Cz%KZ`^|B?^*APY@HG;_)(SHsFCcbPjb6!a&?$jxO{#8Kj{^ zi4rxIC{?0*5~WGxh?g!=ZRwXKk-tRQ64j6>M 6s>xgSB*tCP}|6iIODB zmdGwqjzqXkpQ~}6M9b%7eBY3lAnd7htC7HC0jXqaEUJoesZ_tQ@TfK%pLhr!>aI&* zghVkC4Ns+a8jEHgcUY&=J}U;g8;ySo%j^({o#xqph>Y~cVwoc5cheWUOaF61U(f5) zhlVv3exj$td82e5*OR_!Dr(j+cSCx1+ 1g!Y*a@UI7m*@n4RvlVyhM*q^nP<;6)pdut<4eT!t0dVT-2*`ud@E!Cf**< z9;4gFKFDEhp9gC$gm%a66 ^`vvU$=t?vd3A2L%AgS6m%(D7 zs6B*STZq8Q%_~5m&DJ{xS4sBa+ZgO!Vm1E?)TxE&S8?ZHki%MP(q7yhzt2V6nnv4O zV83B}0{z}X^cFuorq(S*chPSd&1oqbh_{x}zLvsjd63WVv!Bo^F4OmN4)Q*S _wL*y<$)xC3VshzvKj-6`{Sek)JM8pZm0cww~Z&x)K zwxhE*gxlL;EfyE)y*ZBBwieAro3S*mHFkB9#?rCY!prBKYP?C)5C5N++O^lE)Y=}_ zrIr^>)j~w|)~jBZ*?eKi_%Ulfp^tr6mnt+1v22WI@v`Q@S*m3nq6tRfFCrX-m&phV zqh)aznD8qqUk@2HI+{wi5wD5M-%`^yqLHXEklt$}W{Aiwlo~23mx;9Z!miqnTIrSK z-d3~_gGW 390bhkc3FxDMOWq-bu zYJgr2`?Yv)7SeEUI^P!c(RVA|#|!sjOe}eZiZSAg&76A8n)^m_^uuxq++J_^0OSX! zARF>qXMv^)p}c|jD3*Q;72QPrdlVFgJ&~3pX+juU{FaflBurEhc&}kwm}uC#-e!lU zO#~hv!=_>M{fNeYh1q)w?FMl*v3HKq(FKWSrGe$`xW&_;9V7B@hYHhV1a)X9+KE;1 zG^3rUCbHvbeLJK$C64a36RpMMIBL>fM2LdnG`_v4A<`pgMSC$yyfd6U!bOcrar#;{ z_GCJlw}Y-hJF$_vgo8!%aC#pB#Qa4xCtTDmd%pvh8>-lXy>vKSB#S)-)Fnd95vM+) zD-j}G)Eq{E9YjElCpcM>s@=nX-rSIX&$ZO}Fj?nL?AGg2PPnWZL1C}18dGG@`Qdc7 zgLqGTl1Jek#arU|B3jW=M2mmhN{U@rFUW2*^q2kA=C+_%te?8wk5ee#PZ?x{P5r2! zRdfn!%@O2I33|4|y~_nV^};ar>dn4-g+~?k)E3O4GgfSqRr-q5ND(0Z?M1cu_j)ht z5{b4yERqr (#l8_(uw!zdZZX2hP_AD*F~Fz`tLdV0-Jo9k89^ +Tv-BiS{uI^ck+f%Jx!EK%I^aQ5#k=)u2F{h>q9X+ut-zktfMqx-=yOxGW ziE5QLVujzDG*0T!qf}ixw4$^q;ah%wCiBuGzzVr6Z$m#siKeAD57r5P)tkyji|QV} zoDr~__>5hb^0-^?z%SLsH*08UG+NTO0W>{Y)E8?qDKlC`xu-(JyrWK#C=b-p8@2eq zs7hziq;&&3Yk@_auqI8sZnm1*!)AA#+=4TKk+nN(0&rDI;iL6yu?-i!OgptrXXsjM zO6e?Gm-%Oq+>Q55qZ6G`Q&tY5N?ou^Kg8iq%cyr3(WbO7FtX*@lfLL8{A$@5mU!h; z8v}i&R4q>b|GxfzP+9t;iwF}Dy{UGL7!+=5#Ef+aM6YE^=KFRF+;28C8f<66p=1|s z%?z?kI+y%+k7%pSedY@EPinT+9`Xs>k{&5z+^sg(k5 LFT*_5F2c=WXm< zwG@5cQ-p}u`_pedMHR36*q4S9sLS?XmI!7LZ|3^+7Y6MsBbj=k*FV;e_8bNO9gQ@q z7q)Rf=tnzxiMn1*d1V;!m>tvh(4xpS`r)ENQN4<*5lSC6T)FQgErF8uJtu07>jgY> zF69>#>%vPj8Kbt_iAMK^>cfl>+R$6H4ru)rN}L}Z!^NUSO&>iL3InpirG>`DRvGfQ zHw!}!enrUbt?9!)BGfXjD5NL~`HbFYGE@uCqEIWKWg|Pu++*lLi~7srlf_AU&p-g0 zH)KNjgG6J}-Vl|QAF1FC;YUGz#cI)U7@h7b>WZ_S$oQt1Q*LlF#AojUHP>=D9q}gG zXLc?6<4y6MF!rJ4Z;9&Sa&P+nEfFJT_a={iqI%#5y#*&;C^Trfp4EIWa^aONR(5ES zZ}$_GMA}3e(+|a^^`hPVgjf3mYoI#OJ4=6k)q)NrNNTpCrOY^oS5J!hgckY4!H3^` z3&OLtmZu`ayFXr%@=NRqNgwLSb3{Y&X%VUpy6AgP1Vs$MY~W@O+CBjDm3979K2~&a zv-lUax?{2`wCO=ZV?`aYs4UHo#jNN|IocL0S|ucN4*(68ltiS!^`Z)z0<;X20$g#Q zvP^fi9kV8%kH4On5Nv?Ay-TPy>0> Z$6yvP;uSs$lzZhiPw}lb zy|R_jyMWvd-NmzOKJ~JtxVJ@lQL{TGzKy0;syn5 #WLu((`m!yLD_(6FuIwHlU4OuhpVY dThCun z1 2s}T{4=EiC!%e5S94ZhFMW%9b06SC7{b~@YgG6Fq zzZk(PbeOjABQGf(%`9Yx7MZs2z6@Q+M<(l|v6lC-Yt9DN@piTr)NrnDEEIcTg+6PY zw09vbi^dykcLs?_#f9x2)Z<-&D-zn!tan8~5(JQk}AsS#w_w3E7SJLg+C3L{ z&0+R|bWxaZu?>$f3qmMxu&9}E`(r>`r#`Z`>2VL)D1c&qAGleiTPWOgy?t9JyvV|R zQhn(Xj4&AA*u_V>pa<&YDP77)7gRmjAsV#@|LSy5{f<4Wfokrffs{R14EFxQAIB~D zkb~9M`f#QN6+N+aup!>4J?utZhhTC*Y>b5si&sdP7i@H$>E_e6~8`*nA3udvfp= z-KgPE(NnC!*}9=
$xt~B!W_cZR-?>VV2W7pFuf-$P>Dv3EgX_naWW6g@;J(e9f kvw4cCH6Kn}KEUMl)?0Mp1JP7$wvyY2!ao5j7_urqtEhZW#ZPkL zy37Z)4a$hD2&fO9vlbVI&mB9g(5e&QK}O5?S@x-c`}ILg8+)oG?)^&<&aLw+-Ztzi z6X*Xr0q4`t0^ET8nYZ*`d#1==4?pc}N! ~Ny z??q*Y3rnMaF@HRc7QV^N_>4F7xrN<8SP=RE)0FMrMg1<_dc9ON8b4gPiYD`E#&F2~ z!eQDwTzHE8hw1!q5i69M6cUHe_5Aj9Bu=!cexp#ZsBoT9w!JOedB%rf_2TPET 9Bu{1U0+D3Mz_C6VW+#@7?cX*6brZ38J`v AgB@jhtv{tq)XnHG-|)@tV(K9`Z)wMEj|-EhIjBFMD#<6?Y1m`ZIw z7QLctJs 7LGgTNi6f %J3s5&x$YX-&p3trS3-ku8 za^x~pYx1J60%f)1O;d!S)=Lb#Z-(jo5;G5Og*`QY=b8C?l5!^q-zo> zC!(jtV`OHi`f4-CZ=!hnt(G{o|6HCst}Now=SAOK{zy4G0|WJcm<==N;zY4qSnARj zp9&v$QTK(EOe^Tbr=n%){iAf{b|_a}IGhObOqZ5IY3j6X~WOmCPGFgBQ7b~>0ST6Wq{A`L9OYb~(^BQJgr(mE&e zVtok?Y_*GV(4SM1oQ GGhMYYO9Dvv>fdLj(^^$_ Cul^=*Li{sYxi({TEe+2{in%IPfN z^0Y${hj9d4caLGuSW{qx{N9f _^6_BG40;2&7Cr^PN6zeq9fi$H79W<5Xc0jr!4h zQ^n{6*44-IpEVM%)bVzPQ(i$RHd*+KF(OrWOo>=%O}@t-IHP3K!$+jy(V%s_S_jvT zE>X7V?5Gr68IdwE(-9&(z!J?w>^-rW!DIF4rTRV??%TlESx}hmAU-z3T$1RoX`%uB zK220m*3r&s!qab^V-3L;jbx9EZdeo)^&`M)>$i~VPZyrbLh3kO3`vNznY4m>+!aOZ zS8m*?%ko$n5W`h&(gCh{McX_-|6J6)v*@vfHG%KKM 1CDmitjGugnDVbhJL$P*) z4^KxO{hNzG*3p)xDLIT#M-z%F>GbC+>2&Qow-+iY0-=(|H06rHpOyF*#Q!i-y1w2? z*3uY0Y|*E%k_K@lMO{GM2-Rz89BS$GqFPFol7*Ysh@P@urpbEQ8r4PC%jtT(jOW@| zr4H(4DfY4P493b|((lb7-ik0-8Y-3bqd~p2yrMYqiCMB7T%T3`5?;=~#B+%LNv4 z!rCX8i>7LW@Lc7KIjE^`9r8s9oP#P55m)3O>;KL|OkwrrCr}*?ExAXr42^79EHln? zxgj=ujl66qeN?Y3e9fD+)423SUu@^}SfGx54E8Ro)h^&Z7BzRBGTMs^(UiO#+$BN! z2CV;1!E*Q*Luq18@gv78&hsG1bC4)jj_n|jiE+lj<+-_f% zF>_1)&f_ X8PqZXWvdapIYe>yi)G!%2* zBv(5&+)sBRjJltQvQG3f<4Jv~>MZ !`7Yj$!u&ij@e0>v&95;ol-!}Q$-W;-n;Zss_0PeV`v*hOgVz8-SG|FDJWW1 zZlvoUd>CNi9w)}C=ECn@A2QDo6U83PJ3bdpoP&5TEIfdY&cXg!?mP6?9FZr6Pi9Yd zy89WHknUC|uetbLFpxs$ioXR8{sqm$0^MRi8a)rY#`WK(b@MQPJkgy_%o78B9=B%+ zVSO=|uVUc38H-=YG^B+>(ep(;vAI1>m@fi+ZtlS5JL*Ynl&ZIeU#)5nZWYJ0k=tnJ ze9=aH;!98Fi=LJpzOtLi;s!P806y`abu&v2LeP_#gEj*sCzra?o&{oH)yM5##Ytp= z6Lp@CmFLavBr8w8dlf5_w@OxKRMlCjcC6~FS^4S!4Oj@3igx{I-a>4lUFpIisYBNn zV$r!^Gc{Nw+IsHZoL`Vzj{8f9CXPjePf{h{iKZ@slqYYd4T}UGm)cDKF2ah$@C@=@ zEWFCz*~I<1-Prz#6NN9v{>8suG-)vwxte*?nZ=@-N5y@Gy=`cBOa+o|LXgHIeaUqR z3bf0|#Y+1WZaG bF$f5>LmnXA6yQI{Ue}txj@!NE5?JOSk8Rde 4SG7ug@+hzqcST*wUGZNv#)6hGEp|$LQpJ5%3z~US75o^zlFYl zGhjM)Pfuu7fvomXL-`H5NZpQuvS!@0b;HSOAE`T6XJ-Um6O8*k#+wcC)wZW|(V#No z92slF@QOKZA}d_cJ$noCMw|a05eq+J Fjjg?8P_q;;Agoeg)0PA7?O)Sjb l?(4vWX&ZL>we&Se8dD>E28VkNv;i_TPR3MW+H^ewW<3?8 zHe1iN-T0c$FxJc`@a|@GpjLVptzIQM_vPGaTX%BjnzV~kF^qP@H8yFmVJ`!@V}jVy zfNyA#Z*Y;X#o=qS>w-onci1d@{ZxuxExgJNa%ejRX^+>_sMW%+UMfCdP*QPv!5ACG z6qZyh6SaTmqSMCqT67<6Vh7s0T2ynbD#fi21%2q|YT?}s(@)fTt$qg(!#yd5!kl{T ze+ct}n=Z_zo=8Fpb2YxW^ fzhCkq17 zE^K#*3&0^RSRCSljm3rcvpFLWh{+@c!WqUe=ox7n^=v5QTm)%v4J?vU*q0gg)`~Y& zF?B3WUoQfyPFT*Y^v9!aW0fe|_tA9@Zl8!WSYaq^Ed8)vc#H7m^yhlv??D%xFr1?S zIpz$($jMhXob=aoOP}LSMRaUesr^@?dL^=PM%}X;K>Xmrs`Yw{#(gC&)HuzH8ob_{ zYso!UWOvDhl7z!OIJYr bZIWDwd1Ja$_4CA)0mU3^Og8gA$6W7+bQ1%8<#iLd8 zlAfXLImY4n`*Sh5FVH$TJk{r7>Qny84$nKh>t8I*7>@aevm?#tJOfb_+BRp(`x+`j zn+po=?N>&-ZXc)Dv=iE=&J_5Ks2z;$JWQkZhRW?c%olli*MJT6RDQ%=KlPuvrl277 z-XV^ihy=OYs_INB-(W=X&7qCoh{{cGe1rLM*^jZN9f^f{Oig+3M*9V>kpB8hTtcdY zM395ThEnwC8z_h+mU77R0YVkaTOjAH18&u4d8!XfdRo}Caw$sPD5{37t;JG#XiZVD z#A%B(Yq!5<2D(_ZTxki^a@c}x7QL=GOG!vZPH34%`g^1BuasUWqCO50O*T?Mx~Nxa zQ=!K~o%Iu1J0lG$;lYK(9lS8os&vt?+CM*oU1%`f=Zrg&OLTi|bz7g|SbRMNCc_PS>5QB2uv?)Btvab=+7*=!Y!da=?YEui zAC9^c^|&bNM&35I8&hu=j~eTUI#8wX&Dcx`Ql<3ooJXi)(sw~P?Vh0Y%_!w;LBDPm zwQ8LHl><2h%}Y23dkBLRCYKgVV2YsXTd;pnUC@**qK4;Vg^ObUvmLqp+JrALsL}Eb z!qek-9MXIt)olueZpBxv+ut;Bt7z4|H%K_@4tK^}{lZ_Q`u)0ML#1Qm$ZovDax0cC zPtH~;h4PSq+lGw7g5|!Ex&O&P0pE(CT2FXNXg3}?h1k5Ko#L$R!ftZOtd2L(_-{qs z^2X)dsn`;k^p_jy+ix-5DP`ad=16r%fkLgfi2(O`1^iuGLJsb0DSn%X?$U_84i# _#62OT{@4aBDQ9t?@tb)lbP7F?GQtr-wC_Z{ciaM^yPQr6ZPa{g=%gW ze!dY;n0S$bXzYOg{q}2hS7NrMd2#5$+r=pL(j$d_Luhr!BW1x3(Nf(Ghmaj2r1DR! zq=W6nu>Sp^cyKBP>%ZEg<&?TZbWpE6ROsvuVNv(MV&4gEwaYkogSSQXP;W1%+B-!X zwJSW|--%H59ihskcVQ~Ors0#K)GjghwL=fUqONPx6>j=G4?VFtckD7O&&fZDm($u^ zVuZ3Pqsng4LUAq=h&y9)%g`Hp#4y~kdw7qyD7Foxby*@_v>iykd&P#jb7~+=oJ+Ab z0fNu=Q|(xiv%8OubT(+y`qTZrB2Ha?2mJ06bzQ%~0LbgI(HUA77h1VbbnvxRgWUF@ zkr={L#v`V2B$pMY3ifDU?Wixg?8grHRs_OVu!&3Gs8wEq2|&t36I=?Ui<5N0)Fb*I z>2e!8w+QnOTrNqM9O-fiE+?eRkJ9A?T=qzpozi8G&fy_vaHg-R(O3J0#rb0}uVt2^ zpY}tg^UFq*zh5*|&)rg};Q=(&>qlhP_=VnSrRakLqH98?Phs9LO|&@j=U)j!3L0I~ zMeYcq)3ht-5u#GYn_(<4fmn{j7gKb$c7#3b5xT@&TZ6u~Y#h&Bu%&R?-o>b;;F3Px z)#JxEaZ|0qW~_D8$pD@E3}baz2EUdP=44IjWZ}?G+FQj!--WnsMj=CQGv*(mcfS|4 z5_*7N2qRGnW7|Sqgo&&e9VeYu>P`~?;T9|1W;@(s<>i-p35|ES#Ym-U-ED}&EtK8x z#xR#;cZVBh{g7K_?JXmVTwhSNMeCpVyYm$CJ1D%}TsZ$7o#3w}qx~J%5}qg&b5KkY z<44iY2l1i0GL^g!i78^@4qARl3`_Xokdxtt+d3=_S3L(Ss@4tuF@>MeHJLd{i)K}D z4XZ6nzulH+jxL?_XaEleXQ9O zpD(vN>X i8BCKVt?{Gk^kr7ES!)wqS6@Gc`&$8hbdtnXmghLtW>4 zUPv5+Pe9`de@gfn7b0On<@C>DlZe_(Gfs*6rGLwCLNl*=I)nC}5+5juRPPsI!B6L3 zM8kymOlQOP0DYt?ci84sriHO_2DV4au_R&9`*;*fHQ2SD*ey&7sR(O9{3Qff4Z_w# z#(UeG4fs@o@Lli2inoq)@S`2lFht-Q6?Wp0!Z9o)T~SiHnn$B^jdZal)6-udrd8<~ z)qfQ(irCzn>Ym0qg_Yf?(`hWZ)R;(%PK$#HmoePp8wup*{>T-X7a4i|gbQdWuXOg& zcJqh~7^KbPsRe8n?J3+)n!`(h1^M~St~>RRyd{i4p_)FF>%rf2L>#Jh)osRV5IF~` z-bYVOGd1KYre8GOsgD-nNHJ9Nf2u4vD?DmUbhucw1l 6F{`QLwqLXJuwFKkV=S%M^ zoaoR??=x5mOK$<}+O?}(dNW{^rT0D0FAo`q!2xS9AnZDvqof%7aOmC$4Hlx f_E{kL?Nog#tP?zn^HC4T>K9GvPoG~B)s?xFbqOj@Cr;D-OTy1BT#qLoMGn=c ziS-kxZVpzVy-rhHj%ei7t)kIzhg(PxMxij&Ml2C=4VrwOcIIG7w%@ySD+ioJ{)!9k zg +%+}8eH_W5(!pz@KDD^V>_i3@T_A(ai zfBA)OU557eyA!GO6)-!I>Ru831FNs)hl&wHGtJ+p&D+JZ;u8h#?RDo!+X>qlcAv0| zHeV678jNyt#(>#$G=3u0AH!4LJ*D5%>x~Ys58SpluElF9Kj5lfgzD@@F29TB%4Zb% zJ3hN^R-%Ewi+0UED=5GVdJQqR2?Bwj?Vk>IO4QTzUE^d(tocN@d&8cbRg`{@opkPZ zF;@&&LBp?#DpihGM6Fh{u{^(>ZG7~AJK3)*(( b+;wEquiUcb?U z+^^&7@%}~{dmTf;R~u>nb+NNizYF;V5sh(}u4yHVUb!pK)U+c<3f&5J!fh5ezvO%I zuiHBZYiEC?O`1p$GvA;_xmfVN)0M{OiZ0^O4|F_Ncza&>0aYdGz);>!4C@#6)`0$R z;_Kkecq+&h(`p|q2VTD`JVBB4AT++SRdvmTYk0~>S9M8pE|!&}jem;ejlbpz**o#E z)>h5On6}r1X!(O>YUBI@-q!AUILdaA*R5*sZe|MZ@eVmwmXdA=KT~>HmI>}pW@<~y z(v};ddxbTh>jiB)#^qUME7aTl9; m1vQ3w!QOfcHNFB;Jfkmny+4_2eo?LtbFQ{Nd6uh8Jyeewbo7=8@lS@1VKnMp zBHHE|?Y@33yUbmygPc34F3`q2?02=jEh@x*h+QepUpi9D +w zXlaZ`+W$bRPyfR#Ksd4}ihGp-MwD^kT#S_^Fzlo4 AKin8!%jBSC#+WiLLk2}I(?f8qn zi)JBXM{w !U_d;S5@cX=Z0=IL|o6AxW2Owb&2R4J%88&%%=r+ zk-;Ygf__0T5n!OlcX6I+`KJ`}uc+k}g;82oPDc&AzE74>ESHgI!Wk_fQx;Gb3g|HB zvT=PqmnhrP&wHJji7cXkW)=uT+5a#c<|0g^|7BXib3e@I|4-wX4eCF7$%{P-4Y?=w z i%7w-qlvOg#>3(RCfA7pPT#(f6MjwDG>E>D$FnRFkZju<-Pe zCm>eaBdfjMxqP~NA15R=oXU70YA8w6>4EUY`%)h~5Y^nAaMs7F{va!pm7DwCJ@okl z>|$)f`JT64V%UA(D-HeqKzOLW1*OR4p{P@J(UT_y(J7;HqEp77u`a}mrBj?jaZ(PA zb&6+Mig_qHD&uM4LlK7ep3Xf4TPgJDAr?HBmZiFnME#DNaUwm^-rEz+Hb-->Sb)u9 zlzDV|qz$KI;iqqvVDLk`?wPKg8iFqsK5CbP4FL>y2d5?DTVByx)AC0mz@y`nQU=^0 zpNRfMTN305N=8b{7hZJlk+`Hd)31;5?UGlA%0CeyN*F~w5q-qEQncoYXzl%eDeg!| zH$`U@g!F>Jh>O+MCr+C*p7NiFdQHdkjG{+CaFlwR{j`zE?9ekPw=Puk;9}N7^^1Ja zPd1m9=~{gnkS|^ Q@K<%_;uJJser^9ZD)^URGnR$EZ10D~-qP~;Y*ReT3M zCGWto4o0limaXLtc4V(LZ)MqM%RE!Nr=n$u VG)qp)C`TG)5>Rc$L zdZoF?$6(CAtOMgiw+ckZpn0eOda}Ig0R`+SZ$HoAK&S$u2E=1XKc>acAF4J@*pq=- z1QZ5P6L{LlQjF2ceEmXGJ3UG7 jYXzlY++ciRUV~{06AIG_rWefHFvU9_ybg*(POd#~ zOHxl $cWe#m@}Q-9{eHYFFWuOz%6Z z-9*rQ+U=}<-to(gs1dC$#qTV>-w`N}5f)~;*eYz&UW-<(Z$W`$Q_gX2ZO}$q;iA^| zY;m2xZp&b0p6{v9x?#H%ACu>o)9)^7pxCsWTuZC<#ik(?Qd;#&`1a-#)b*2m1NFE{ zJj!Ji m;ss_|sC^ztf(Ce9M$7Pyok6RaRs%>3} z*|*aT^sqb`Nq&G{h))#INLRIH!a8e8&vckfe7Z#1$D;c e=?N26)c@_$AqC5ACeLJ7>pj-&QZcLQ}w`D3g{H7 zh5c4g5S}veIDft*I8K18uA_7LedrqR;-_fp-v?lOg#I0P-0@^f(OWGMXQ0~3eo-m! zW}D0rhoQa-WjJ&687NoaEjN45P@OC7_aWRFo2I0Jh4A1VtTkauo(m9_(kiMRwhA0e z=AKwqN57hsiU7QHQ7I}VI4WfvyvJcheH^^U(XsMsJ!JwtEU)?}c!pqF1_e}@^jvgs zSVvsVVhV>w31|9Vc)(C)bbu9Fe?yh{a^Wo|1oY9B|3;g^CLB%X(E)vOCvkGN@lc4w zCX~%&Z86qmbUzdZBsA~Y2Ohrd5;gq+?GgB40VRy_La`143bXfCa7L6rl ^JyV7FRQ?W5nV3fP z%xcpH9YYUx3|GQU6}nhKD4F-@K&oS(@RT93=ur1#R~K<|Oo2x^g*=*LR^7_waZ%<$ zJ;@f4N1M#(JaVM!WIT2vMnO{TWBCCnY$s%mb_Z>jVx&XO;VH40G|kOq+1l-yNKtF~ zkk>VmuvUo CO>w3UMWL8J{T$|(_;ZFMl?*CjgTQ#NMg2ZdZA+JcsV$$!K;jN|LHz+lK2`-~w_ z**OCS4Do)bxMoxBh*&0S;TUnKxR6Tp1MO&hLBS3F;(MTH!3}wEu|Wqe6*|dSP(437 z&~|Wcg$3@>qsk>cRpN2T8LD2#a2lF5f^_n_zEC#jRM!_`F|Yy*vofnW>xJ6v57-ye z-u`RkS8fnptf P6a?UC>A>^=vfY {NoOT_v@C zSdLzqv0Y)ez@~k4pJmQZ{v@-uGnQD6VYeFXEeL1LF|o7v;ZPlAsG$fooi >6JYT6803Lb dI&+4aOz zW~b>q7~5b%&P$ruzJMU1Eq0+ZDU~r9)wB95>YZcH58n?; WoHoD^JZ(ae4rMs2Y>aGj^WnFQE4AsWBCVvn0P4&k+PiT^dI!4UjOAkHNIu`3n zy)X)_ts+eEWpP`J2h uaTOPc=+jUqRD6)fHmPCfZvC>t}7NsAl)GSSPHl z^L;KfgRgKot(93pgQ}=+imH0JTFP0 iDvcI f0jW3;M@LttoncK^|3+5w|a>Z&kH{STdVzRn<8nE1jxU zQ Srn;804F-B8;F{%HV7W=A$)Xq1akYZ82$}Jzl3ySej+2}olYFX4)s@DUB z-nFQM#pS{DgGJqMDmPdU@)4FP3*1eEX_=ooP;7aZ)avR~@y@$stF8{Mymt_`ttZBC z&BJtLVq)VX1@03EQE7kGKV~TW!fkm4?j2#l%C~J|B06K!6jtzuBJzij7pju` L3wG~nIeL5MSj!oz>kohzv zp9Z-C_nJVqGx|Q>_QJ(ltLlE}Cmze2X5vRDKOW@2VmBtAjV$tIF&`X?*eRKEB@S4O zz)?gVuSa&gY&Q(R_A4UNp&IJSD*OJ{>nJ~i%k^{%Ag`x%sz*sR)duFpuW>7r8^IPW zsy^+jsruLIU8lHf6`XS{n!%d3;cmLFX4~Q1KXy~OT528f-EL}8OKm8+Wl3Bkix$;V zd#e3^e?qrvslE+9%;O1# zJxD@)mE`_Ra;#vnoP}@@tWF7DLdpi=3f}KjSG%bb{(~@cyNrK z)=`th<3^NJSN&5ox6$x=Xgez#Wl%lUNr+pn^mzmIvGd*a&`VI4(y}1cPlO+)eL-r| zz8CsAWA-e!ZQZcS%g;RC@^Z#AkDc`1#C0Bk_RrUfUgsLXO{=~hf-f+hhX*eg)iEA{ z%^H%hV4)!ajJXcv7~g+QT^p(aVzw8JZKziBsT3#l!!yBrEQjZZv3$ xvW(Me!6HGrIPG$G40WR!5=|B$X4A_sjyO1#~-?}d1$m8t1uW5%B zFHbJTr_Odx559HSw-=MPyS5F36r0%;1J|>6*yGAfN^7JJ5Fsg~G*+vNDk)T>vASM- zG@VX1R`F{6bZXs1o$vd>G>mY(cGyotzj+3~d3+3sEf2KL(=zg!po i4({&|zAb4xWs zgw3P*Emgm22QM%`JD8u`mikIk&- B|Ub~KOt%t z@$?f4ZKJjjjmOgXHfn7V6-jH_K%C!a(vdc5H4$&7+&0L|=uGlzi~eWtV2bA7izcej zPW5i;6KOledH&9nU!dM$6_RMXQ(G*Uvg0Z^rY7GTS1Ib9gVE{%N6=X&%5JOnR=
O^O z!qgDaU=Upj1J!6(Cg)!!(6x{h#e}O>h2OWh%TIMvZ up#9Fa5C?#m^KeSbzh?Z7c)N |$SX@q$kr((U637dUe1Hqir40BqsUQe74nNx zODWxrj}B4j0+wxhwwFrCY~$&C6wunllRTo;#>(jdI_O_L7<91W@r)>1t*1^#AtMK? z< HwW`Gsv3Gl (ge=lZa z|FummCpK&XN t|dV1J5V`Te3a&rN2M7yWk{!DpP%F^)|W9IpnI;3N62Bh0D zY8jFGB_M5#1SYQc(IMfS5<@C?5&Ls`2a`n++U<=xfUUv+@cebPq8Pjp0A?+Oh&_Ii z>g9#?EFYtR(q=+#Ee`rT61HjWZ_vUH+;FN6dx}~Fw!1cW12 B7?dwnh*L|}YNix|7l{+B?bpM;tuYW{)o-A9z`LMj zl)@!H@ RMhI*5a|=xZ0Wtxk# X?o>O=y6}C^})#A#^&n10P=RAK(cUnVc z8T+|TV9s>Y3CwTL7^vTCE&_A>nG1L!0<#^Su96lIn2(-4r8D7b4|PbGpgr-RV(@r9 z0>j4}9)3(>#&@Mwok3!r%1p@786*aqNB^Q=-QfA}3|c>>pswm@CFm1+x2sw{$W+4Q z+B%MLX0@4#ZII-@VMK*T+6PabI%&~rb5O$|o3pK#ZBRSh(z+x&XIXL6(4nqWGv98( zv#H&j{8wzcXu;`XjC6ihob+t#o-NEWy`y6(ZMQ3^+zUbOY&n<7R(?PW&ePFRXqVQ= zfU>R>dO&Gyz3xxHcLVQq{T~YKuC`Uy$J5~Mz|yhDj2>^w8K{ HR_S5R8PE_Z}I-tOI^e84m?3o??7ZOGxokT(nSqUU&BphKRaII&yY{3XKY97py z UT7zjfb*xmkW95>K>B*l+v26l5{~aKjd!RnKt!O=gL#VY}Z*>r$C zf7b!l!|qHGfN_860E_>w1N^+d`i^xby%ONob~?cC?&$zOz4rpZ!w+ |uUQu~DHDpjb?n*rPN_5^`Frl&2F=_dLC)tpx)h z4!wt-`aDJr#lEpVW#6HL9n@g&J1!{sOh~o&^qzVzm&OgjHbzP=T^WLmo#A8|ieVmr z`{swLRU16gkn{-_&tMe_72uS19RV40oXp1^jZ=?;yW{=R;~MoHp*EoT?bYgZcc@y* zqgOaHsn+h{WFDpli7+J7*@Dfj^)h~UTUOO)-ECJP!P72mEmJLMP2Ua!w>;{$Ufb@s z_1eBMTrE>(MIhGo;2X~IRNg1|D~;YBt_D{c%-)(KC*@nS>uj@S|Jm3 ^~PT(a1Z?jkSDPheJ_R@lQ*%%a7z z$HyO;%LjnEr&~o!)CL9!V~%DqHI#Ha-R({o4Iio2EOFxIQ)88{Pu$^Qbb2J3px;e0 z$Ej5Vnju{81Cg+ YSQz?9cS~&{u{x^-{V+ )SgO>W^{Xu`kE5{BL$9CYboV^qz+@%pbEd=K*rH? zZcZr|H|R*53bi*7o>SW88 b-F)Jolx?hYfqhqjx?1CajQg*L=e0&P4wD*a*g&T zqINT`(TzmZZrC+?m U{AZ+A$v0nfo7E9gKxI9t(PPPHVU` z`nU0FQpta=zBIE&MrK!y%&r=lU8RQ;IJ1UEW><{Nt{9nJd3k16=(mZGCvLq$aYIBfh$yhzx>%nFlut^u_=wx7X)CGDlS* $(hiV5Y)VP z&~d2t!I+e6Nor%#CNil#Q-@kj#W1_~gQNkqzWt#P4X`=lf;0{F{Wld@^8@Xhs*V*6 z5udIN!RXsun-bmvr0>4hY391`U64RCdx2=jOQL;BTZn*v1DyJOA)4888UV#NqOsG| ziQ oBHEG1#h<5laQ%+ycj_IOyjJ|yM=qzQu4d(V*1G@3H zIz QK&fp_Q}M0I}wz9@md9 z&BltbY~iHgisdAAN>OJhR|4pC3YO8^D$;`#^>gL$xAZ|Os8@6n9Zbcl|C;yCIchVr zND6U+^Teq%&q&Aj*wnahg2*f&gciM{zM&kfLBGDEmiL^3vqLPM#W+}5gUZZhs@H*P z&qWVb7tyr2>LBH#47xFw$47N~I9ILYnfW$sba9dlZ9#RaGEZ%-#8#()^VB6}cUFVc zlC9D3J_$fhipg|OQ%9SXDQz<+%~!q6zHK%><-^k=$r|bK4u*v($Z0~f1#L6eIMn)P zrO$hGZh`tt`LI{!*>v@)qEuQ-TQZ<`P`nl0&QQNq!dhl-Tco~eR(uzb&tmn4GN}ta zTC6U#?wEv%T!a=^1oo3MWa+vzrw^B?!<0+7KXED4Q#w|qUQ3~#@=q1oxKwSU?5slf z@oYJv3RWPFblwQ!4az6{IqS%9?8y{Wh`x3lyEWQH`F~dapFB=um!ToY52U5b)W+)J zXDXdsrUq9vslpV~Jl=isut-=;9BMfqz2!lqWk!TMzwW{ubxxsjq`vNP0BYMjWhpe2 z)Hursd_r8VYs|h~nGTWKNU^+04+#Tf{{X7I9Fm3y6R6K}2&%jiX~uH3O{1HzuEE#d zd-oC0%eSWnXQ8FDQ-inQ0j9)l`$MQ6Vy`Zdk)7zYZhWZHgXL=1GVea%0I1}0z!c3s zo_elOy96%=JQkh$7Kljs+J?j0B&hHLwE-m_sPx?mwS4s~h(M(Vq&!4qOJ5SqJHHGq zRExrv7&8CzkxC`rSA*L S!P{o=gVia zg7}2U0Eq71>rYAVt3#A?<><=$V3=A|BJqJ*&*yAE0A-bv)L?lo7Y9kw-(N?z4=~_I zm7=T 6~ zf(O$&O8N*SqtzucuR_oB380Ww;NO4tr#`FDr&syYs#Vx%o9$2gR;lsk*U59W`f1my zzd^l4m+hB2CXZxoy<5y=_e8 BAshW$bIjlE(a1EOL(4!cYY9}fyTYJ#-kJaHyU{AXJu^QtS(pc{( zI4BA+FI!TKV8q62=fbJO8W8&&$P?D6UCJJ@a% @kMkm#zUZ1K1z5nR^)am#pvg8rV z{w&r_T5|BlN;>r^=F;$5bnjEOg7s65fxNH+-x;T7#W@xnw5_3l=?y(V0H`Os(e8 z_bXHpnr88t=RQ-XnM?HV^winOvEU5i^;(O0v0A6hw6$uAxq8|b)ifL~2CfF28{Fy5 z&|rj{12+J!)@Ew>h1%YG;+sz)E`TZrPiWxoFKWM!rSvbb9eK61nasW2{8cS}C*Ao% z9pSrT0LMkQ!M5AM8;TLX+*lg5UX2!idYVmi<_opFd*oooz_1;3ZoT@k-_6q4OLoka z+XkEinY_@!k WuJ{^VIpn7Znk3Rub50+AydSA)GkkSu5+V26m+Rc10E*?oA^ z2sRA$EtziUCx&UYYOhJ+2}O0-Fr3hUHXIir_UF+5)z09|eu}-DVo7}h=#KWtdx*x` zT!5Jajd>oe{AA5}woQo7`}lM{AHg76G(yadx&pG7Q<#v*pbp*v?k!lZUSwKN5E7H+JM#