From d393d28e5ed40e12f7d6acd5022c19548a379ad5 Mon Sep 17 00:00:00 2001 From: dushixiang Date: Tue, 29 Mar 2022 22:31:08 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E6=9B=BF=E6=8D=A2=20sqlite=20=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=E4=B8=BA=20github.com/glebarez/sqlite=20-=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=95=B0=E6=8D=AE=E5=BA=93=E9=94=81=E5=AE=9A=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20-=20=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B8=8D=E5=AE=8C=E5=96=84=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20-=20=E4=BF=AE=E5=A4=8D=E7=AD=96=E7=95=A5=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8D=E5=AE=8C=E6=95=B4=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20-=20=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=BE=91=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=8D=A2=E8=A1=8C=E7=AC=A6=E7=9A=84=E9=97=AE=E9=A2=98=20-=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96guacd=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/account.go | 9 +- server/api/asset.go | 2 +- server/api/backup.go | 2 +- server/api/credential.go | 2 +- server/api/guacamole.go | 6 +- server/api/guacamole_handler.go | 81 +++----- server/api/job.go | 2 +- server/api/resource-sharer.go | 3 +- server/api/session.go | 12 +- server/api/storage.go | 6 +- server/api/term.go | 2 +- server/api/user-group.go | 2 +- server/api/user.go | 8 +- server/app/app.go | 17 +- server/constant/const.go | 10 +- server/env/db.go | 6 +- server/repository/base.go | 11 +- server/repository/resource_sharer.go | 58 +----- server/service/access_token.go | 5 - server/service/asset.go | 51 ++--- server/service/backup.go | 27 +-- server/service/base.go | 5 + server/service/credential.go | 8 +- server/service/job.go | 4 +- server/service/mail.go | 3 +- server/service/property.go | 178 ++++-------------- server/service/storage.go | 49 +++-- server/service/user.go | 178 ++++++++++++------ server/service/user_group.go | 52 ++--- server/sshd/sshd.go | 2 +- server/sshd/ui.go | 11 +- web/package.json | 1 - web/src/components/Login.js | 88 +-------- web/src/components/access/Access.js | 4 +- web/src/components/access/Term.js | 7 +- web/src/components/asset/AssetModal.js | 4 +- web/src/components/asset/MyAsset.js | 12 -- web/src/components/devops/StorageModal.js | 10 +- web/src/components/setting/Setting.js | 57 +++--- web/src/components/user/User.js | 2 +- .../components/user/UserShareSelectedAsset.js | 5 +- web/src/images/bg.jpg | Bin 0 -> 155353 bytes 42 files changed, 435 insertions(+), 567 deletions(-) create mode 100644 web/src/images/bg.jpg diff --git a/server/api/account.go b/server/api/account.go index 0854d6d..6c2b470 100644 --- a/server/api/account.go +++ b/server/api/account.go @@ -168,10 +168,7 @@ func (api AccountApi) LoginWithTotpEndpoint(c echo.Context) error { func (api AccountApi) LogoutEndpoint(c echo.Context) error { token := GetToken(c) - err := service.UserService.LogoutByToken(token) - if err != nil { - return err - } + service.UserService.Logout(token) return Success(c, nil) } @@ -317,6 +314,10 @@ func (api AccountApi) AccountAssetEndpoint(c echo.Context) error { if err != nil { return err } + for i := range items { + items[i].IP = "" + items[i].Port = 0 + } return Success(c, Map{ "total": total, diff --git a/server/api/asset.go b/server/api/asset.go index 726bf23..cbbbd82 100644 --- a/server/api/asset.go +++ b/server/api/asset.go @@ -28,7 +28,7 @@ func (assetApi AssetApi) AssetCreateEndpoint(c echo.Context) error { account, _ := GetCurrentAccount(c) m["owner"] = account.ID - if _, err := service.AssetService.Create(m); err != nil { + if _, err := service.AssetService.Create(context.TODO(), m); err != nil { return err } diff --git a/server/api/backup.go b/server/api/backup.go index 429f143..2896550 100644 --- a/server/api/backup.go +++ b/server/api/backup.go @@ -25,7 +25,7 @@ func (api BackupApi) BackupExportEndpoint(c echo.Context) error { if err != nil { return err } - c.Response().Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=next-terminal_backup_%s.json", time.Now().Format("20060102150405"))) + c.Response().Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=backup_%s.json", time.Now().Format("20060102150405"))) return c.Stream(http.StatusOK, echo.MIMEOctetStream, bytes.NewReader(jsonBytes)) } diff --git a/server/api/credential.go b/server/api/credential.go index b3709c2..6c6ed4b 100644 --- a/server/api/credential.go +++ b/server/api/credential.go @@ -64,7 +64,7 @@ func (api CredentialApi) CredentialCreateEndpoint(c echo.Context) error { item.Encrypted = true - if err := service.CredentialService.Create(&item); err != nil { + if err := service.CredentialService.Create(context.TODO(), &item); err != nil { return err } diff --git a/server/api/guacamole.go b/server/api/guacamole.go index 8455087..fce46b8 100644 --- a/server/api/guacamole.go +++ b/server/api/guacamole.go @@ -159,6 +159,7 @@ func (api GuacamoleApi) Guacamole(c echo.Context) error { guacamoleHandler := NewGuacamoleHandler(ws, guacdTunnel) guacamoleHandler.Start() + defer guacamoleHandler.Stop() for { _, message, err := ws.ReadMessage() @@ -168,7 +169,6 @@ func (api GuacamoleApi) Guacamole(c echo.Context) error { _ = guacdTunnel.Close() service.SessionService.CloseSessionById(sessionId, Normal, "用户正常退出") - guacamoleHandler.Stop() return nil } _, err = guacdTunnel.WriteAndFlush(message) @@ -193,7 +193,7 @@ func (api GuacamoleApi) setAssetConfig(attributes map[string]string, s model.Ses } realPath := path.Join(service.StorageService.GetBaseDrivePath(), storageId) configuration.SetParameter(guacd.EnableDrive, "true") - configuration.SetParameter(guacd.DriveName, "Next Terminal Filesystem") + configuration.SetParameter(guacd.DriveName, "Filesystem") configuration.SetParameter(guacd.DrivePath, realPath) log.Debugf("[%v] 会话 %v:%v 映射目录地址为 %v", s.ID, s.IP, s.Port, realPath) } else { @@ -258,6 +258,7 @@ func (api GuacamoleApi) GuacamoleMonitor(c echo.Context) error { guacamoleHandler := NewGuacamoleHandler(ws, guacdTunnel) guacamoleHandler.Start() + defer guacamoleHandler.Stop() for { _, message, err := ws.ReadMessage() @@ -269,7 +270,6 @@ func (api GuacamoleApi) GuacamoleMonitor(c echo.Context) error { observerId := nextSession.ID forObsSession.Observer.Del <- observerId log.Debugf("[%v:%v] 观察者[%v]退出会话", sessionId, connectionId, observerId) - guacamoleHandler.Stop() return nil } _, err = guacdTunnel.WriteAndFlush(message) diff --git a/server/api/guacamole_handler.go b/server/api/guacamole_handler.go index f81223a..563515b 100644 --- a/server/api/guacamole_handler.go +++ b/server/api/guacamole_handler.go @@ -2,7 +2,6 @@ package api import ( "context" - "time" "next-terminal/server/guacd" "next-terminal/server/log" @@ -12,73 +11,47 @@ import ( ) type GuacamoleHandler struct { - ws *websocket.Conn - tunnel *guacd.Tunnel - ctx context.Context - cancel context.CancelFunc - dataChan chan []byte - tick *time.Ticker + ws *websocket.Conn + tunnel *guacd.Tunnel + ctx context.Context + cancel context.CancelFunc } func NewGuacamoleHandler(ws *websocket.Conn, tunnel *guacd.Tunnel) *GuacamoleHandler { ctx, cancel := context.WithCancel(context.Background()) - tick := time.NewTicker(time.Millisecond * time.Duration(60)) return &GuacamoleHandler{ - ws: ws, - tunnel: tunnel, - ctx: ctx, - cancel: cancel, - dataChan: make(chan []byte), - tick: tick, + ws: ws, + tunnel: tunnel, + ctx: ctx, + cancel: cancel, } } func (r GuacamoleHandler) Start() { - go r.readFormTunnel() - go r.writeToWebsocket() -} - -func (r GuacamoleHandler) Stop() { - r.tick.Stop() - r.cancel() -} - -func (r GuacamoleHandler) readFormTunnel() { - for { - select { - case <-r.ctx.Done(): - return - default: - instruction, err := r.tunnel.Read() - if err != nil { - utils.Disconnect(r.ws, TunnelClosed, "远程连接已关闭") + go func() { + for { + select { + case <-r.ctx.Done(): return - } - if len(instruction) == 0 { - continue - } - r.dataChan <- instruction - } - } -} - -func (r GuacamoleHandler) writeToWebsocket() { - var buf []byte - for { - select { - case <-r.ctx.Done(): - return - case <-r.tick.C: - if len(buf) > 0 { - err := r.ws.WriteMessage(websocket.TextMessage, buf) + default: + instruction, err := r.tunnel.Read() + if err != nil { + utils.Disconnect(r.ws, TunnelClosed, "远程连接已关闭") + return + } + if len(instruction) == 0 { + continue + } + err = r.ws.WriteMessage(websocket.TextMessage, instruction) if err != nil { log.Debugf("WebSocket写入失败,即将关闭Guacd连接...") return } - buf = []byte{} } - case data := <-r.dataChan: - buf = append(buf, data...) } - } + }() +} + +func (r GuacamoleHandler) Stop() { + r.cancel() } diff --git a/server/api/job.go b/server/api/job.go index fd2791d..b4bad7d 100644 --- a/server/api/job.go +++ b/server/api/job.go @@ -25,7 +25,7 @@ func (api JobApi) JobCreateEndpoint(c echo.Context) error { item.ID = utils.UUID() item.Created = utils.NowJsonTime() - if err := service.JobService.Create(&item); err != nil { + if err := service.JobService.Create(context.TODO(), &item); err != nil { return err } return Success(c, "") diff --git a/server/api/resource-sharer.go b/server/api/resource-sharer.go index fa01985..1e896a2 100644 --- a/server/api/resource-sharer.go +++ b/server/api/resource-sharer.go @@ -2,6 +2,7 @@ package api import ( "context" + "next-terminal/server/service" "next-terminal/server/dto" "next-terminal/server/repository" @@ -42,7 +43,7 @@ func (api ResourceSharerApi) ResourceAddByUserIdAssignEndPoint(c echo.Context) e return err } - if err := repository.ResourceSharerRepository.AddSharerResources(ru.UserGroupId, ru.UserId, ru.StrategyId, ru.ResourceType, ru.ResourceIds); err != nil { + if err := service.UserService.AddSharerResources(context.TODO(), ru.UserGroupId, ru.UserId, ru.StrategyId, ru.ResourceType, ru.ResourceIds); err != nil { return err } diff --git a/server/api/session.go b/server/api/session.go index a6859ee..9508067 100644 --- a/server/api/session.go +++ b/server/api/session.go @@ -312,16 +312,16 @@ func (api SessionApi) SessionDownloadEndpoint(c echo.Context) error { if s.Download != "1" { return errors.New("禁止操作") } - remoteFile := c.QueryParam("file") + file := c.QueryParam("file") // 获取带后缀的文件名称 - filenameWithSuffix := path.Base(remoteFile) + filenameWithSuffix := path.Base(file) if "ssh" == s.Protocol { nextSession := session.GlobalSessionManager.GetById(sessionId) if nextSession == nil { return errors.New("获取会话失败") } - dstFile, err := nextSession.NextTerminal.SftpClient.Open(remoteFile) + dstFile, err := nextSession.NextTerminal.SftpClient.Open(file) if err != nil { return err } @@ -337,7 +337,7 @@ func (api SessionApi) SessionDownloadEndpoint(c echo.Context) error { return c.Stream(http.StatusOK, echo.MIMEOctetStream, bytes.NewReader(buff.Bytes())) } else if "rdp" == s.Protocol { storageId := s.StorageId - return service.StorageService.StorageDownload(c, remoteFile, storageId) + return service.StorageService.StorageDownload(c, file, storageId) } return err @@ -541,7 +541,9 @@ func (api SessionApi) SessionRecordingEndpoint(c echo.Context) error { _ = repository.SessionRepository.UpdateReadByIds(context.TODO(), true, []string{sessionId}) log.Debugf("读取录屏文件:%v,是否存在: %v, 是否为文件: %v", recording, utils.FileExists(recording), utils.IsFile(recording)) - return c.File(recording) + + http.ServeFile(c.Response(), c.Request(), recording) + return nil } func (api SessionApi) SessionGetEndpoint(c echo.Context) error { diff --git a/server/api/storage.go b/server/api/storage.go index 6bb5d52..620b83b 100644 --- a/server/api/storage.go +++ b/server/api/storage.go @@ -134,7 +134,7 @@ func (api StorageApi) StorageDeleteEndpoint(c echo.Context) error { split := strings.Split(ids, ",") for i := range split { id := split[i] - if err := service.StorageService.DeleteStorageById(id, false); err != nil { + if err := service.StorageService.DeleteStorageById(context.TODO(), id, false); err != nil { return err } } @@ -173,8 +173,8 @@ func (api StorageApi) StorageDownloadEndpoint(c echo.Context) error { if err := api.PermissionCheck(c, storageId); err != nil { return err } - remoteFile := c.QueryParam("file") - return service.StorageService.StorageDownload(c, remoteFile, storageId) + file := c.QueryParam("file") + return service.StorageService.StorageDownload(c, file, storageId) } func (api StorageApi) StorageUploadEndpoint(c echo.Context) error { diff --git a/server/api/term.go b/server/api/term.go index 1b463f7..adff3c2 100644 --- a/server/api/term.go +++ b/server/api/term.go @@ -157,6 +157,7 @@ func (api WebTerminalApi) SshEndpoint(c echo.Context) error { termHandler := NewTermHandler(sessionId, isRecording, ws, nextTerminal) termHandler.Start() + defer termHandler.Stop() for { _, message, err := ws.ReadMessage() @@ -164,7 +165,6 @@ func (api WebTerminalApi) SshEndpoint(c echo.Context) error { // web socket会话关闭后主动关闭ssh会话 log.Debugf("WebSocket已关闭") service.SessionService.CloseSessionById(sessionId, Normal, "用户正常退出") - termHandler.Stop() break } diff --git a/server/api/user-group.go b/server/api/user-group.go index dabe649..2a262fd 100644 --- a/server/api/user-group.go +++ b/server/api/user-group.go @@ -20,7 +20,7 @@ func (userGroupApi UserGroupApi) UserGroupCreateEndpoint(c echo.Context) error { return err } - if _, err := service.UserGroupService.Create(item.Name, item.Members); err != nil { + if _, err := service.UserGroupService.Create(context.TODO(), item.Name, item.Members); err != nil { return err } diff --git a/server/api/user.go b/server/api/user.go index caa4599..40a59b1 100644 --- a/server/api/user.go +++ b/server/api/user.go @@ -2,7 +2,7 @@ package api import ( "context" - + "fmt" "strconv" "strings" @@ -141,7 +141,11 @@ func (userApi UserApi) UserChangePasswordEndpoint(c echo.Context) error { } if user.Mail != "" { - go service.MailService.SendMail(user.Mail, "[Next Terminal] 密码修改通知", "你好,"+user.Nickname+"。管理员已将你的密码修改为:"+password) + subject := "密码修改通知" + text := fmt.Sprintf(`您好,%s。 + 管理员已将你的密码修改为:%s。 +`, user.Username, password) + go service.MailService.SendMail(user.Mail, subject, text) } return Success(c, "") diff --git a/server/app/app.go b/server/app/app.go index 5e12766..9466236 100644 --- a/server/app/app.go +++ b/server/app/app.go @@ -26,13 +26,6 @@ func newApp() *App { func init() { setupCache() app = newApp() - if err := app.InitDBData(); err != nil { - panic(err) - } - if err := app.ReloadData(); err != nil { - panic(err) - } - app.Server = setupRoutes() } func (app App) InitDBData() (err error) { @@ -96,7 +89,15 @@ func (app App) ReloadData() error { func Run() error { - fmt.Printf(constant.Banner, constant.Version) + fmt.Printf(constant.AppBanner, constant.AppVersion) + + if err := app.InitDBData(); err != nil { + panic(err) + } + if err := app.ReloadData(); err != nil { + panic(err) + } + app.Server = setupRoutes() if config.GlobalCfg.Debug { jsonBytes, err := json.MarshalIndent(config.GlobalCfg, "", " ") diff --git a/server/constant/const.go b/server/constant/const.go index 95fe276..44704c7 100644 --- a/server/constant/const.go +++ b/server/constant/const.go @@ -5,8 +5,9 @@ import ( ) const ( - Version = "v1.2.5" - Banner = ` + AppVersion = "v1.2.5" + AppName = "Next Terminal" + AppBanner = ` _______ __ ___________ .__ .__ \ \ ____ ___ ____/ |_ \__ ___/__________ _____ |__| ____ _____ | | / | \_/ __ \\ \/ /\ __\ | |_/ __ \_ __ \/ \| |/ \\__ \ | | @@ -72,8 +73,9 @@ const ( SocksProxyUsername = "socks-proxy-username" SocksProxyPassword = "socks-proxy-password" - LoginToken = "login-token" - AccessToken = "access-token" + LoginToken = "login-token" + AccessToken = "access-token" + ShareSession = "share-session" Anonymous = "anonymous" ) diff --git a/server/env/db.go b/server/env/db.go index e5c9287..96946df 100644 --- a/server/env/db.go +++ b/server/env/db.go @@ -36,8 +36,10 @@ func setupDB() *gorm.DB { Logger: logMode, }) } else { - db, err = gorm.Open(sqlite.Open(config.GlobalCfg.Sqlite.File), &gorm.Config{ - Logger: logMode, + dsn := fmt.Sprintf("file:%s?cache=shared&mode=rwc", config.GlobalCfg.Sqlite.File) + db, err = gorm.Open(sqlite.Open(dsn), &gorm.Config{ + Logger: logMode, + SkipDefaultTransaction: true, }) } diff --git a/server/repository/base.go b/server/repository/base.go index 3251b3c..e43f74e 100644 --- a/server/repository/base.go +++ b/server/repository/base.go @@ -13,14 +13,9 @@ type baseRepository struct { } func (b *baseRepository) GetDB(c context.Context) *gorm.DB { - db := c.Value(constant.DB) - if db == nil { - return env.GetDB() - } - switch val := db.(type) { - case gorm.DB: - return &val - default: + db, ok := c.Value(constant.DB).(*gorm.DB) + if !ok { return env.GetDB() } + return db } diff --git a/server/repository/resource_sharer.go b/server/repository/resource_sharer.go index e368b0d..72a33f1 100644 --- a/server/repository/resource_sharer.go +++ b/server/repository/resource_sharer.go @@ -7,7 +7,6 @@ import ( "next-terminal/server/utils" "github.com/labstack/echo/v4" - "github.com/pkg/errors" "gorm.io/gorm" ) @@ -101,57 +100,8 @@ func (r *resourceSharerRepository) DeleteByUserGroupId(c context.Context, userGr return r.GetDB(c).Where("user_group_id = ?", userGroupId).Delete(&model.ResourceSharer{}).Error } -func (r *resourceSharerRepository) AddSharerResources(userGroupId, userId, strategyId, resourceType string, resourceIds []string) error { - return r.GetDB(context.TODO()).Transaction(func(tx *gorm.DB) (err error) { - - for i := range resourceIds { - resourceId := resourceIds[i] - - var owner string - // 检查资产是否存在 - switch resourceType { - case "asset": - resource := model.Asset{} - if err = tx.Where("id = ?", resourceId).First(&resource).Error; err != nil { - return errors.Wrap(err, "find asset fail") - } - owner = resource.Owner - case "command": - resource := model.Command{} - if err = tx.Where("id = ?", resourceId).First(&resource).Error; err != nil { - return errors.Wrap(err, "find command fail") - } - owner = resource.Owner - case "credential": - resource := model.Credential{} - if err = tx.Where("id = ?", resourceId).First(&resource).Error; err != nil { - return errors.Wrap(err, "find credential fail") - - } - owner = resource.Owner - } - - if owner == userId { - return echo.NewHTTPError(400, "参数错误") - } - - // 保证同一个资产只能分配给一个用户或者组 - id := utils.Sign([]string{resourceId, resourceType, userId, userGroupId}) - resource := &model.ResourceSharer{ - ID: id, - ResourceId: resourceId, - ResourceType: resourceType, - StrategyId: strategyId, - UserId: userId, - UserGroupId: userGroupId, - } - err = tx.Create(resource).Error - if err != nil { - return err - } - } - return nil - }) +func (r *resourceSharerRepository) AddSharerResource(c context.Context, m *model.ResourceSharer) error { + return r.GetDB(c).Create(m).Error } func (r *resourceSharerRepository) FindAssetIdsByUserId(c context.Context, userId string) (assetIds []string, err error) { @@ -228,3 +178,7 @@ func (r *resourceSharerRepository) FindAll(c context.Context) (o []model.Resourc err = r.GetDB(c).Find(&o).Error return } + +func (r *resourceSharerRepository) DeleteById(ctx context.Context, id string) error { + return r.GetDB(ctx).Where("id = ?", id).Delete(&model.ResourceSharer{}).Error +} diff --git a/server/service/access_token.go b/server/service/access_token.go index c10c3df..d87e8a2 100644 --- a/server/service/access_token.go +++ b/server/service/access_token.go @@ -19,14 +19,9 @@ type accessTokenService struct { baseService } -func (service accessTokenService) FindByUserId(userId string) (model.AccessToken, error) { - return repository.AccessTokenRepository.FindByUserId(context.TODO(), userId) -} - func (service accessTokenService) GenAccessToken(userId string) error { return env.GetDB().Transaction(func(tx *gorm.DB) error { ctx := service.Context(tx) - user, err := repository.UserRepository.FindById(ctx, userId) if err != nil { return err diff --git a/server/service/asset.go b/server/service/asset.go index b558f5d..ef643ea 100644 --- a/server/service/asset.go +++ b/server/service/asset.go @@ -119,7 +119,7 @@ func (s assetService) FindByIdAndDecrypt(c context.Context, id string) (model.As func (s assetService) CheckStatus(accessGatewayId string, ip string, port int) (active bool, err error) { if accessGatewayId != "" && accessGatewayId != "-" { g, e1 := GatewayService.GetGatewayAndReconnectById(accessGatewayId) - if err != nil { + if e1 != nil { return false, e1 } @@ -141,7 +141,7 @@ func (s assetService) CheckStatus(accessGatewayId string, ip string, port int) ( return active, err } -func (s assetService) Create(m echo.Map) (model.Asset, error) { +func (s assetService) Create(ctx context.Context, m echo.Map) (model.Asset, error) { data, err := json.Marshal(m) if err != nil { @@ -156,29 +156,36 @@ func (s assetService) Create(m echo.Map) (model.Asset, error) { item.Created = utils.NowJsonTime() item.Active = true - return item, env.GetDB().Transaction(func(tx *gorm.DB) error { - c := s.Context(tx) + if s.InTransaction(ctx) { + return item, s.create(ctx, item, m) + } else { + return item, env.GetDB().Transaction(func(tx *gorm.DB) error { + c := s.Context(tx) + return s.create(c, item, m) + }) + } +} - if err := s.Encrypt(&item, config.GlobalCfg.EncryptionPassword); err != nil { - return err - } - if err := repository.AssetRepository.Create(c, &item); err != nil { - return err - } +func (s assetService) create(c context.Context, item model.Asset, m echo.Map) error { + if err := s.Encrypt(&item, config.GlobalCfg.EncryptionPassword); err != nil { + return err + } + if err := repository.AssetRepository.Create(c, &item); err != nil { + return err + } - if err := repository.AssetRepository.UpdateAttributes(c, item.ID, item.Protocol, m); err != nil { - return err - } + if err := repository.AssetRepository.UpdateAttributes(c, item.ID, item.Protocol, m); err != nil { + return err + } - go func() { - active, _ := s.CheckStatus(item.AccessGatewayId, item.IP, item.Port) - - if item.Active != active { - _ = repository.AssetRepository.UpdateActiveById(context.TODO(), active, item.ID) - } - }() - return nil - }) + //go func() { + // active, _ := s.CheckStatus(item.AccessGatewayId, item.IP, item.Port) + // + // if item.Active != active { + // _ = repository.AssetRepository.UpdateActiveById(context.TODO(), active, item.ID) + // } + //}() + return nil } func (s assetService) DeleteById(id string) error { diff --git a/server/service/backup.go b/server/service/backup.go index 0184d68..6be6b42 100644 --- a/server/service/backup.go +++ b/server/service/backup.go @@ -128,12 +128,12 @@ func (service backupService) Export() (error, *dto.Backup) { func (service backupService) Import(backup *dto.Backup) error { return env.GetDB().Transaction(func(tx *gorm.DB) error { - c := service.Context(tx) + ctx := service.Context(tx) var userIdMapping = make(map[string]string) if len(backup.Users) > 0 { for _, item := range backup.Users { oldId := item.ID - exist, err := repository.UserRepository.ExistByUsername(c, item.Username) + exist, err := repository.UserRepository.ExistByUsername(ctx, item.Username) if err != nil { return err } @@ -144,7 +144,7 @@ func (service backupService) Import(backup *dto.Backup) error { newId := utils.UUID() item.ID = newId item.Password = utils.GenPassword() - if err := repository.UserRepository.Create(c, &item); err != nil { + if err := repository.UserRepository.Create(ctx, &item); err != nil { return err } userIdMapping[oldId] = newId @@ -163,7 +163,7 @@ func (service backupService) Import(backup *dto.Backup) error { } } - userGroup, err := UserGroupService.Create(item.Name, members) + userGroup, err := UserGroupService.Create(ctx, item.Name, members) if err != nil { if errors.Is(constant.ErrNameAlreadyUsed, err) { // 删除名称重复的用户组 @@ -187,7 +187,7 @@ func (service backupService) Import(backup *dto.Backup) error { item.ID = utils.UUID() item.Owner = owner item.Created = utils.NowJsonTime() - if err := repository.StorageRepository.Create(c, &item); err != nil { + if err := repository.StorageRepository.Create(ctx, &item); err != nil { return err } } @@ -200,7 +200,7 @@ func (service backupService) Import(backup *dto.Backup) error { newId := utils.UUID() item.ID = newId item.Created = utils.NowJsonTime() - if err := repository.StrategyRepository.Create(c, &item); err != nil { + if err := repository.StrategyRepository.Create(ctx, &item); err != nil { return err } strategyIdMapping[oldId] = newId @@ -210,7 +210,7 @@ func (service backupService) Import(backup *dto.Backup) error { if len(backup.AccessSecurities) > 0 { for _, item := range backup.AccessSecurities { item.ID = utils.UUID() - if err := repository.SecurityRepository.Create(c, &item); err != nil { + if err := repository.SecurityRepository.Create(ctx, &item); err != nil { return err } // 更新内存中的安全规则 @@ -231,7 +231,7 @@ func (service backupService) Import(backup *dto.Backup) error { newId := utils.UUID() item.ID = newId item.Created = utils.NowJsonTime() - if err := repository.GatewayRepository.Create(c, &item); err != nil { + if err := repository.GatewayRepository.Create(ctx, &item); err != nil { return err } accessGatewayIdMapping[oldId] = newId @@ -242,7 +242,7 @@ func (service backupService) Import(backup *dto.Backup) error { for _, item := range backup.Commands { item.ID = utils.UUID() item.Created = utils.NowJsonTime() - if err := repository.CommandRepository.Create(c, &item); err != nil { + if err := repository.CommandRepository.Create(ctx, &item); err != nil { return err } } @@ -254,7 +254,7 @@ func (service backupService) Import(backup *dto.Backup) error { oldId := item.ID newId := utils.UUID() item.ID = newId - if err := CredentialService.Create(&item); err != nil { + if err := CredentialService.Create(ctx, &item); err != nil { return err } credentialIdMapping[oldId] = newId @@ -282,7 +282,7 @@ func (service backupService) Import(backup *dto.Backup) error { } oldId := m["id"].(string) - asset, err := AssetService.Create(m) + asset, err := AssetService.Create(ctx, m) if err != nil { return err } @@ -299,7 +299,7 @@ func (service backupService) Import(backup *dto.Backup) error { strategyId := strategyIdMapping[item.StrategyId] resourceId := assetIdMapping[item.ResourceId] - if err := repository.ResourceSharerRepository.AddSharerResources(userGroupId, userId, strategyId, item.ResourceType, []string{resourceId}); err != nil { + if err := UserService.AddSharerResources(ctx, userGroupId, userId, strategyId, item.ResourceType, []string{resourceId}); err != nil { return err } } @@ -311,6 +311,7 @@ func (service backupService) Import(backup *dto.Backup) error { continue } + item.ID = utils.UUID() resourceIds := strings.Split(item.ResourceIds, ",") if len(resourceIds) > 0 { var newResourceIds = make([]string, 0) @@ -319,7 +320,7 @@ func (service backupService) Import(backup *dto.Backup) error { } item.ResourceIds = strings.Join(newResourceIds, ",") } - if err := JobService.Create(&item); err != nil { + if err := JobService.Create(ctx, &item); err != nil { return err } } diff --git a/server/service/base.go b/server/service/base.go index 90a675a..f9be9c3 100644 --- a/server/service/base.go +++ b/server/service/base.go @@ -14,3 +14,8 @@ type baseService struct { func (service baseService) Context(db *gorm.DB) context.Context { return context.WithValue(context.TODO(), constant.DB, db) } + +func (service baseService) InTransaction(ctx context.Context) bool { + _, ok := ctx.Value(constant.DB).(*gorm.DB) + return ok +} diff --git a/server/service/credential.go b/server/service/credential.go index 049c507..efce296 100644 --- a/server/service/credential.go +++ b/server/service/credential.go @@ -99,8 +99,8 @@ func (s credentialService) Decrypt(item *model.Credential, password []byte) erro return nil } -func (s credentialService) FindByIdAndDecrypt(c context.Context, id string) (o model.Credential, err error) { - credential, err := repository.CredentialRepository.FindById(c, id) +func (s credentialService) FindByIdAndDecrypt(ctx context.Context, id string) (o model.Credential, err error) { + credential, err := repository.CredentialRepository.FindById(ctx, id) if err != nil { return o, err } @@ -110,10 +110,10 @@ func (s credentialService) FindByIdAndDecrypt(c context.Context, id string) (o m return credential, nil } -func (s credentialService) Create(item *model.Credential) error { +func (s credentialService) Create(ctx context.Context, item *model.Credential) error { // 加密密码之后进行存储 if err := s.Encrypt(item, config.GlobalCfg.EncryptionPassword); err != nil { return err } - return repository.CredentialRepository.Create(context.TODO(), item) + return repository.CredentialRepository.Create(ctx, item) } diff --git a/server/service/job.go b/server/service/job.go index b36b1d0..9ada289 100644 --- a/server/service/job.go +++ b/server/service/job.go @@ -103,7 +103,7 @@ func (r jobService) InitJob() error { return nil } -func (r jobService) Create(o *model.Job) (err error) { +func (r jobService) Create(ctx context.Context, o *model.Job) (err error) { if o.Status == constant.JobStatusRunning { j, err := getJob(o) @@ -117,7 +117,7 @@ func (r jobService) Create(o *model.Job) (err error) { o.CronJobId = int(jobId) } - return repository.JobRepository.Create(context.TODO(), o) + return repository.JobRepository.Create(ctx, o) } func (r jobService) DeleteJobById(id string) error { diff --git a/server/service/mail.go b/server/service/mail.go index f5a14c5..291b3a2 100644 --- a/server/service/mail.go +++ b/server/service/mail.go @@ -2,6 +2,7 @@ package service import ( "context" + "fmt" "net/smtp" "next-terminal/server/constant" @@ -27,7 +28,7 @@ func (r mailService) SendMail(to, subject, text string) { } e := email.NewEmail() - e.From = "Next Terminal <" + username + ">" + e.From = fmt.Sprintf("%s <%s>", constant.AppName, username) e.To = []string{to} e.Subject = subject e.Text = []byte(text) diff --git a/server/service/property.go b/server/service/property.go index a659180..1000112 100644 --- a/server/service/property.go +++ b/server/service/property.go @@ -17,161 +17,63 @@ type propertyService struct { baseService } +var deprecatedPropertyNames = []string{ + guacd.EnableDrive, + guacd.DrivePath, + guacd.DriveName, + guacd.DisableGlyphCaching, + guacd.CreateRecordingPath, +} + +var defaultProperties = map[string]string{ + guacd.EnableRecording: "true", + guacd.FontName: "menlo", + guacd.FontSize: "12", + guacd.ColorScheme: "gray-black", + guacd.EnableWallpaper: "true", + guacd.EnableTheming: "true", + guacd.EnableFontSmoothing: "true", + guacd.EnableFullWindowDrag: "true", + guacd.EnableDesktopComposition: "true", + guacd.EnableMenuAnimations: "true", + guacd.DisableBitmapCaching: "false", + guacd.DisableOffscreenCaching: "false", + "cron-log-saved-limit": "360", + "login-log-saved-limit": "360", + "session-saved-limit": "360", + "user-default-storage-size": "5120", +} + func (service propertyService) InitProperties() error { propertyMap := repository.PropertyRepository.FindAllMap(context.TODO()) - if len(propertyMap[guacd.EnableRecording]) == 0 { - property := model.Property{ - Name: guacd.EnableRecording, - Value: "true", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { + for name, value := range defaultProperties { + if err := service.CreateIfAbsent(propertyMap, name, value); err != nil { return err } } - if len(propertyMap[guacd.CreateRecordingPath]) == 0 { - property := model.Property{ - Name: guacd.CreateRecordingPath, - Value: "true", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } + return nil +} - if len(propertyMap[guacd.FontName]) == 0 { +func (service propertyService) CreateIfAbsent(propertyMap map[string]string, name, value string) error { + if len(propertyMap[name]) == 0 { property := model.Property{ - Name: guacd.FontName, - Value: "menlo", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.FontSize]) == 0 { - property := model.Property{ - Name: guacd.FontSize, - Value: "12", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.ColorScheme]) == 0 { - property := model.Property{ - Name: guacd.ColorScheme, - Value: "gray-black", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.EnableWallpaper]) == 0 { - property := model.Property{ - Name: guacd.EnableWallpaper, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.EnableTheming]) == 0 { - property := model.Property{ - Name: guacd.EnableTheming, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.EnableFontSmoothing]) == 0 { - property := model.Property{ - Name: guacd.EnableFontSmoothing, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.EnableFullWindowDrag]) == 0 { - property := model.Property{ - Name: guacd.EnableFullWindowDrag, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.EnableDesktopComposition]) == 0 { - property := model.Property{ - Name: guacd.EnableDesktopComposition, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.EnableMenuAnimations]) == 0 { - property := model.Property{ - Name: guacd.EnableMenuAnimations, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.DisableBitmapCaching]) == 0 { - property := model.Property{ - Name: guacd.DisableBitmapCaching, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.DisableOffscreenCaching]) == 0 { - property := model.Property{ - Name: guacd.DisableOffscreenCaching, - Value: "false", - } - if err := repository.PropertyRepository.Create(context.TODO(), &property); err != nil { - return err - } - } - - if len(propertyMap[guacd.DisableGlyphCaching]) > 0 { - if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DisableGlyphCaching); err != nil { - return err + Name: name, + Value: value, } + return repository.PropertyRepository.Create(context.TODO(), &property) } return nil } func (service propertyService) DeleteDeprecatedProperty() error { propertyMap := repository.PropertyRepository.FindAllMap(context.TODO()) - if propertyMap[guacd.EnableDrive] != "" { - if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DriveName); err != nil { - return err + for _, name := range deprecatedPropertyNames { + if propertyMap[name] == "" { + continue } - } - if propertyMap[guacd.DrivePath] != "" { - if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DrivePath); err != nil { - return err - } - } - if propertyMap[guacd.DriveName] != "" { - if err := repository.PropertyRepository.DeleteByName(context.TODO(), guacd.DriveName); err != nil { + if err := repository.PropertyRepository.DeleteByName(context.TODO(), name); err != nil { return err } } diff --git a/server/service/storage.go b/server/service/storage.go index 1641300..aa926fb 100644 --- a/server/service/storage.go +++ b/server/service/storage.go @@ -4,11 +4,14 @@ import ( "bufio" "context" "errors" + "fmt" "io" "io/ioutil" "mime/multipart" + "net/http" "os" "path" + "strconv" "strings" "next-terminal/server/config" @@ -33,7 +36,7 @@ func (service storageService) InitStorages() error { userId := users[i].ID _, err := repository.StorageRepository.FindByOwnerIdAndDefault(context.TODO(), userId, true) if errors.Is(err, gorm.ErrRecordNotFound) { - err = service.CreateStorageByUser(&users[i]) + err = service.CreateStorageByUser(context.TODO(), &users[i]) if err != nil { return err } @@ -58,7 +61,7 @@ func (service storageService) InitStorages() error { } if !userExist { - if err := service.DeleteStorageById(storage.ID, true); err != nil { + if err := service.DeleteStorageById(context.TODO(), storage.ID, true); err != nil { return err } } @@ -75,14 +78,29 @@ func (service storageService) InitStorages() error { return nil } -func (service storageService) CreateStorageByUser(user *model.User) error { +func (service storageService) CreateStorageByUser(c context.Context, user *model.User) error { drivePath := service.GetBaseDrivePath() + var limitSize int64 = -1 + property, err := repository.PropertyRepository.FindByName(c, "user-default-storage-size") + if err != nil { + return err + } + limitSize, err = strconv.ParseInt(property.Value, 10, 64) + if err != nil { + return err + } + + limitSize = limitSize * 1024 * 1024 + if limitSize < 0 { + limitSize = -1 + } + storage := model.Storage{ ID: user.ID, Name: user.Nickname + "的默认空间", IsShare: false, IsDefault: true, - LimitSize: -1, + LimitSize: limitSize, Owner: user.ID, Created: utils.NowJsonTime(), } @@ -91,8 +109,9 @@ func (service storageService) CreateStorageByUser(user *model.User) error { return err } log.Infof("创建storage:「%v」文件夹: %v", storage.Name, storageDir) - err := repository.StorageRepository.Create(context.TODO(), &storage) + err = repository.StorageRepository.Create(c, &storage) if err != nil { + _ = os.RemoveAll(storageDir) return err } return nil @@ -135,9 +154,9 @@ func (service storageService) GetBaseDrivePath() string { return config.GlobalCfg.Guacd.Drive } -func (service storageService) DeleteStorageById(id string, force bool) error { +func (service storageService) DeleteStorageById(c context.Context, id string, force bool) error { drivePath := service.GetBaseDrivePath() - storage, err := repository.StorageRepository.FindById(context.TODO(), id) + storage, err := repository.StorageRepository.FindById(c, id) if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil @@ -152,7 +171,7 @@ func (service storageService) DeleteStorageById(id string, force bool) error { if err := os.RemoveAll(path.Join(drivePath, id)); err != nil { return err } - if err := repository.StorageRepository.DeleteById(context.TODO(), id); err != nil { + if err := repository.StorageRepository.DeleteById(c, id); err != nil { return err } return nil @@ -229,14 +248,20 @@ func (service storageService) StorageEdit(file string, fileContent string, stora return nil } -func (service storageService) StorageDownload(c echo.Context, remoteFile, storageId string) error { +func (service storageService) StorageDownload(c echo.Context, file, storageId string) error { drivePath := service.GetBaseDrivePath() - if strings.Contains(remoteFile, "../") { + if strings.Contains(file, "../") { return errors.New("非法请求 :(") } // 获取带后缀的文件名称 - filenameWithSuffix := path.Base(remoteFile) - return c.Attachment(path.Join(path.Join(drivePath, storageId), remoteFile), filenameWithSuffix) + filenameWithSuffix := path.Base(file) + p := path.Join(path.Join(drivePath, storageId), file) + //log.Infof("download %v", p) + c.Response().Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filenameWithSuffix)) + c.Response().Header().Set("Content-Type", "application/octet-stream") + + http.ServeFile(c.Response(), c.Request(), p) + return nil } func (service storageService) StorageLs(remoteDir, storageId string) (error, []File) { diff --git a/server/service/user.go b/server/service/user.go index a920c41..65692b4 100644 --- a/server/service/user.go +++ b/server/service/user.go @@ -90,31 +90,31 @@ func (service userService) FixUserOnlineState() error { return nil } +func (service userService) Logout(token string) { + cache.TokenManager.Delete(token) +} + func (service userService) LogoutByToken(token string) (err error) { - return env.GetDB().Transaction(func(tx *gorm.DB) error { - c := service.Context(tx) - loginLog, err := repository.LoginLogRepository.FindById(c, token) - if err != nil { - return err - } - cache.TokenManager.Delete(token) - - loginLogForUpdate := &model.LoginLog{LogoutTime: utils.NowJsonTime(), ID: token} - err = repository.LoginLogRepository.Update(c, loginLogForUpdate) - if err != nil { - return err - } - - loginLogs, err := repository.LoginLogRepository.FindAliveLoginLogsByUsername(c, loginLog.Username) - if err != nil { - return err - } - - if len(loginLogs) == 0 { - err = repository.UserRepository.UpdateOnlineByUsername(c, loginLog.Username, false) - } + loginLog, err := repository.LoginLogRepository.FindById(context.TODO(), token) + if err != nil { return err - }) + } + + loginLogForUpdate := &model.LoginLog{LogoutTime: utils.NowJsonTime(), ID: token} + err = repository.LoginLogRepository.Update(context.TODO(), loginLogForUpdate) + if err != nil { + return err + } + + loginLogs, err := repository.LoginLogRepository.FindAliveLoginLogsByUsername(context.TODO(), loginLog.Username) + if err != nil { + return err + } + + if len(loginLogs) == 0 { + err = repository.UserRepository.UpdateOnlineByUsername(context.TODO(), loginLog.Username, false) + } + return err } func (service userService) LogoutById(c context.Context, id string) error { @@ -130,13 +130,26 @@ func (service userService) LogoutById(c context.Context, id string) error { for j := range loginLogs { token := loginLogs[j].ID - if err := service.LogoutByToken(token); err != nil { - return err - } + service.Logout(token) } return nil } +func (service userService) GetUserLoginToken(c context.Context, username string) ([]string, error) { + + loginLogs, err := repository.LoginLogRepository.FindAliveLoginLogsByUsername(c, username) + if err != nil { + return nil, err + } + + var tokens []string + for j := range loginLogs { + token := loginLogs[j].ID + tokens = append(tokens, token) + } + return tokens, nil +} + func (service userService) OnEvicted(token string, value interface{}) { if strings.HasPrefix(token, "forever") { @@ -144,30 +157,24 @@ func (service userService) OnEvicted(token string, value interface{}) { } else { log.Debugf("用户Token「%v」过期", token) err := service.LogoutByToken(token) - if err != nil { + if err != nil && !errors.Is(gorm.ErrRecordNotFound, err) { log.Errorf("退出登录失败 %v", err) } } } func (service userService) UpdateStatusById(id string, status string) error { - return env.GetDB().Transaction(func(tx *gorm.DB) error { - c := service.Context(tx) - if c.Value(constant.DB) == nil { - c = context.WithValue(c, constant.DB, env.GetDB()) + if constant.StatusDisabled == status { + // 将该用户下线 + if err := service.LogoutById(context.TODO(), id); err != nil { + return err } - if constant.StatusDisabled == status { - // 将该用户下线 - if err := service.LogoutById(c, id); err != nil { - return err - } - } - u := model.User{ - ID: id, - Status: status, - } - return repository.UserRepository.Update(c, &u) - }) + } + u := model.User{ + ID: id, + Status: status, + } + return repository.UserRepository.Update(context.TODO(), &u) } @@ -231,13 +238,19 @@ func (service userService) CreateUser(user model.User) (err error) { if err := repository.UserRepository.Create(c, &user); err != nil { return err } - err = StorageService.CreateStorageByUser(&user) + err = StorageService.CreateStorageByUser(c, &user) if err != nil { return err } if user.Mail != "" { - go MailService.SendMail(user.Mail, "[Next Terminal] 注册通知", "你好,"+user.Nickname+"。管理员为你注册了账号:"+user.Username+" 密码:"+password) + subject := fmt.Sprintf("%s 注册通知", constant.AppName) + text := fmt.Sprintf(`您好,%s。 + 管理员为你开通了账户。 + 账号:%s + 密码:%s +`, user.Username, user.Username, password) + go MailService.SendMail(user.Mail, subject, text) } return nil }) @@ -245,16 +258,19 @@ func (service userService) CreateUser(user model.User) (err error) { } func (service userService) DeleteUserById(userId string) error { - return env.GetDB().Transaction(func(tx *gorm.DB) error { + user, err := repository.UserRepository.FindById(context.TODO(), userId) + if err != nil { + return err + } + username := user.Username + // 下线该用户 + loginTokens, err := service.GetUserLoginToken(context.TODO(), username) + if err != nil { + return err + } + + err = env.GetDB().Transaction(func(tx *gorm.DB) error { c := service.Context(tx) - // 下线该用户 - if err := service.LogoutById(c, userId); err != nil { - return err - } - // 删除用户 - if err := repository.UserRepository.DeleteById(c, userId); err != nil { - return err - } // 删除用户与用户组的关系 if err := repository.UserGroupMemberRepository.DeleteByUserId(c, userId); err != nil { return err @@ -264,19 +280,37 @@ func (service userService) DeleteUserById(userId string) error { return err } // 删除用户的默认磁盘空间 - if err := StorageService.DeleteStorageById(userId, true); err != nil { + if err := StorageService.DeleteStorageById(c, userId, true); err != nil { + return err + } + + // 删除用户 + if err := repository.UserRepository.DeleteById(c, userId); err != nil { return err } return nil }) + + if err != nil { + return err + } + + for _, token := range loginTokens { + service.Logout(token) + } + return nil } func (service userService) DeleteLoginLogs(tokens []string) error { if len(tokens) > 0 { for _, token := range tokens { + // 手动触发用户退出登录 if err := service.LogoutByToken(token); err != nil { return err } + // 移除缓存中的token + service.Logout(token) + // 删除登录日志 if err := repository.LoginLogRepository.DeleteById(context.TODO(), token); err != nil { return err } @@ -337,3 +371,37 @@ func (service userService) UpdateUser(id string, user model.User) error { }) } + +func (service userService) AddSharerResources(ctx context.Context, userGroupId, userId, strategyId, resourceType string, resourceIds []string) error { + if service.InTransaction(ctx) { + return service.addSharerResources(ctx, resourceIds, userGroupId, userId, strategyId, resourceType) + } else { + return env.GetDB().Transaction(func(tx *gorm.DB) error { + ctx2 := service.Context(tx) + return service.addSharerResources(ctx2, resourceIds, userGroupId, userId, strategyId, resourceType) + }) + } +} + +func (service userService) addSharerResources(ctx context.Context, resourceIds []string, userGroupId string, userId string, strategyId string, resourceType string) error { + for i := range resourceIds { + resourceId := resourceIds[i] + // 保证同一个资产只能分配给一个用户或者组 + id := utils.Sign([]string{resourceId, resourceType, userId, userGroupId}) + if err := repository.ResourceSharerRepository.DeleteById(ctx, id); err != nil { + return err + } + rs := &model.ResourceSharer{ + ID: id, + ResourceId: resourceId, + ResourceType: resourceType, + StrategyId: strategyId, + UserId: userId, + UserGroupId: userGroupId, + } + if err := repository.ResourceSharerRepository.AddSharerResource(ctx, rs); err != nil { + return err + } + } + return nil +} diff --git a/server/service/user_group.go b/server/service/user_group.go index 47ed9e3..f5a6817 100644 --- a/server/service/user_group.go +++ b/server/service/user_group.go @@ -13,11 +13,12 @@ import ( ) type userGroupService struct { + baseService } func (service userGroupService) DeleteById(userGroupId string) error { return env.GetDB().Transaction(func(tx *gorm.DB) error { - c := context.WithValue(context.TODO(), constant.DB, tx) + c := service.Context(tx) // 删除用户组 if err := repository.UserGroupRepository.DeleteById(c, userGroupId); err != nil { return err @@ -34,8 +35,8 @@ func (service userGroupService) DeleteById(userGroupId string) error { }) } -func (service userGroupService) Create(name string, members []string) (model.UserGroup, error) { - exist, err := repository.UserGroupRepository.ExistByName(context.TODO(), name) +func (service userGroupService) Create(ctx context.Context, name string, members []string) (model.UserGroup, error) { + exist, err := repository.UserGroupRepository.ExistByName(ctx, name) if err != nil { return model.UserGroup{}, err } @@ -51,26 +52,33 @@ func (service userGroupService) Create(name string, members []string) (model.Use Name: name, } - return userGroup, env.GetDB().Transaction(func(tx *gorm.DB) error { - c := context.WithValue(context.TODO(), constant.DB, tx) - if err := repository.UserGroupRepository.Create(c, &userGroup); err != nil { - return err - } - if len(members) > 0 { - for _, member := range members { - userGroupMember := model.UserGroupMember{ - ID: utils.Sign([]string{userGroupId, member}), - UserId: member, - UserGroupId: userGroupId, - } - if err := repository.UserGroupMemberRepository.Create(c, &userGroupMember); err != nil { - return err - } + if service.InTransaction(ctx) { + return userGroup, service.create(ctx, userGroup, members, userGroupId) + } else { + return userGroup, env.GetDB().Transaction(func(tx *gorm.DB) error { + c := service.Context(tx) + return service.create(c, userGroup, members, userGroupId) + }) + } +} + +func (service userGroupService) create(c context.Context, userGroup model.UserGroup, members []string, userGroupId string) error { + if err := repository.UserGroupRepository.Create(c, &userGroup); err != nil { + return err + } + if len(members) > 0 { + for _, member := range members { + userGroupMember := model.UserGroupMember{ + ID: utils.Sign([]string{userGroupId, member}), + UserId: member, + UserGroupId: userGroupId, + } + if err := repository.UserGroupMemberRepository.Create(c, &userGroupMember); err != nil { + return err } } - return nil - }) - + } + return nil } func (service userGroupService) Update(userGroupId string, name string, members []string) (err error) { @@ -91,7 +99,7 @@ func (service userGroupService) Update(userGroupId string, name string, members } return env.GetDB().Transaction(func(tx *gorm.DB) error { - c := context.WithValue(context.TODO(), constant.DB, tx) + c := service.Context(tx) userGroup := model.UserGroup{ ID: userGroupId, Name: name, diff --git a/server/sshd/sshd.go b/server/sshd/sshd.go index 77f7a51..b9a0292 100644 --- a/server/sshd/sshd.go +++ b/server/sshd/sshd.go @@ -131,7 +131,7 @@ func (sshd sshd) sessionHandler(sess *ssh.Session) { func (sshd sshd) Serve() { ssh.Handle(func(s ssh.Session) { - _, _ = io.WriteString(s, fmt.Sprintf(constant.Banner, constant.Version)) + _, _ = io.WriteString(s, fmt.Sprintf(constant.AppBanner, constant.AppVersion)) sshd.sessionHandler(&s) }) diff --git a/server/sshd/ui.go b/server/sshd/ui.go index 547451b..6596798 100644 --- a/server/sshd/ui.go +++ b/server/sshd/ui.go @@ -59,19 +59,22 @@ func (gui Gui) AssetUI(sess *ssh.Session, user model.User) { return } + for i := range assets { + assets[i].IP = "" + assets[i].Port = 0 + } + quitItem := model.Asset{ID: "quit", Name: "返回上级菜单", Description: "这里是返回上级菜单的选项"} assets = append([]model.Asset{quitItem}, assets...) templates := &promptui.SelectTemplates{ Label: "{{ . }}?", - Active: "\U0001F336 {{ .Name | cyan }} ({{ .IP | red }}:{{ .Port | red }})", - Inactive: " {{ .Name | cyan }} ({{ .IP | red }}:{{ .Port | red }})", + Active: "\U0001F336 {{ .Name | cyan }}", + Inactive: " {{ .Name | cyan }}", Selected: "\U0001F336 {{ .Name | red | cyan }}", Details: ` --------- 详细信息 ---------- {{ "名称:" | faint }} {{ .Name }} -{{ "主机:" | faint }} {{ .IP }} -{{ "端口:" | faint }} {{ .Port }} {{ "标签:" | faint }} {{ .Tags }} {{ "备注:" | faint }} {{ .Description }} `, diff --git a/web/package.json b/web/package.json index 7d45bfb..30c8b3a 100644 --- a/web/package.json +++ b/web/package.json @@ -18,7 +18,6 @@ "react-router": "^5.2.0", "react-router-dom": "^5.2.0", "react-scripts": "^4.0.0", - "react-tsparticles": "^1.37.5", "xterm": "^4.9.0", "xterm-addon-fit": "^0.4.0", "xterm-addon-web-links": "^0.4.0" diff --git a/web/src/components/Login.js b/web/src/components/Login.js index ed72eea..9397924 100644 --- a/web/src/components/Login.js +++ b/web/src/components/Login.js @@ -5,8 +5,7 @@ import request from "../common/request"; import {message} from "antd/es"; import {withRouter} from "react-router-dom"; import {LockOutlined, OneToOneOutlined, UserOutlined} from '@ant-design/icons'; -import Particles from "react-tsparticles"; -import Background from '../images/bg.png' +import Background from '../images/bg.jpg' import {setToken} from "../utils/utils"; const {Title} = Typography; @@ -109,90 +108,7 @@ class LoginForm extends Component { render() { return (
- + style={{width: this.state.width, height: this.state.height, background: `url(${Background})`}}>
Next Terminal diff --git a/web/src/components/access/Access.js b/web/src/components/access/Access.js index f385cfa..ba90990 100644 --- a/web/src/components/access/Access.js +++ b/web/src/components/access/Access.js @@ -127,7 +127,7 @@ class Access extends Component { sendClipboard(data) { if (this.state.session['paste'] === '0') { - message.warn('禁止粘贴'); + // message.warn('禁止粘贴'); return } let writer; @@ -338,7 +338,7 @@ class Access extends Component { clientClipboardReceived = (stream, mimetype) => { if (this.state.session['copy'] === '0') { - message.warn('禁止复制'); + // message.warn('禁止复制'); return } let reader; diff --git a/web/src/components/access/Term.js b/web/src/components/access/Term.js index 3903acd..9cbfd83 100644 --- a/web/src/components/access/Term.js +++ b/web/src/components/access/Term.js @@ -82,7 +82,9 @@ class Term extends Component { document.body.oncopy = (event) => { event.preventDefault(); if (this.state.session['copy'] === '0') { - message.warn('禁止复制') + // message.warn('禁止复制') + return false; + }else { if (event.clipboardData) { return event.clipboardData.setData('text', ''); } else { @@ -90,13 +92,12 @@ class Term extends Component { return window.clipboardData.setData("text", ''); } } - return true; } document.body.onpaste = (event) => { event.preventDefault(); if (this.state.session['paste'] === '0') { - message.warn('禁止粘贴') + // message.warn('禁止粘贴') return false; } return true; diff --git a/web/src/components/asset/AssetModal.js b/web/src/components/asset/AssetModal.js index 0676879..427b6a0 100644 --- a/web/src/components/asset/AssetModal.js +++ b/web/src/components/asset/AssetModal.js @@ -412,7 +412,7 @@ Windows需要对远程应用程序的名称使用特殊的符号。 映射网络驱动器} key="storage"> 资产协议
}> {item['protocol']} - 主机地址
}> - {item['ip'] + ':' + item['port']} - 标签}> {this.renderTags(item['tags'])} diff --git a/web/src/components/devops/StorageModal.js b/web/src/components/devops/StorageModal.js index 5a02319..2e7ce79 100644 --- a/web/src/components/devops/StorageModal.js +++ b/web/src/components/devops/StorageModal.js @@ -9,7 +9,7 @@ const formItemLayout = { const StorageModal = ({title, visible, handleOk, handleCancel, confirmLoading, model}) => { const [form] = Form.useForm(); - if(!model){ + if (!model) { model = { isShare: false } @@ -46,11 +46,13 @@ const StorageModal = ({title, visible, handleOk, handleCancel, confirmLoading, m - - + + - + diff --git a/web/src/components/setting/Setting.js b/web/src/components/setting/Setting.js index 6003c8b..bf3ef73 100644 --- a/web/src/components/setting/Setting.js +++ b/web/src/components/setting/Setting.js @@ -25,7 +25,6 @@ class Setting extends Component { state = { refs: [], properties: {}, - ldapUserSyncLoading: false } rdpSettingFormRef = React.createRef(); @@ -33,8 +32,8 @@ class Setting extends Component { vncSettingFormRef = React.createRef(); guacdSettingFormRef = React.createRef(); mailSettingFormRef = React.createRef(); - ldapSettingFormRef = React.createRef(); logSettingFormRef = React.createRef(); + otherSettingFormRef = React.createRef(); componentDidMount() { // eslint-disable-next-line no-extend-native @@ -43,7 +42,15 @@ class Setting extends Component { }; this.setState({ - refs: [this.rdpSettingFormRef, this.sshSettingFormRef, this.vncSettingFormRef, this.guacdSettingFormRef, this.mailSettingFormRef, this.logSettingFormRef] + refs: [ + this.rdpSettingFormRef, + this.sshSettingFormRef, + this.vncSettingFormRef, + this.guacdSettingFormRef, + this.mailSettingFormRef, + this.logSettingFormRef, + this.otherSettingFormRef + ] }, this.getProperties) } @@ -121,26 +128,6 @@ class Setting extends Component { reader.readAsText(files[0]); } - ldapUserSync = async () => { - const id = 'ldap-user-sync' - try { - this.setState({ - ldapUserSyncLoading: true - }); - message.info({content: '同步中...', key: id, duration: 5}); - let result = await request.post(`/properties/ldap-user-sync`); - if (result.code !== 1) { - message.error({content: result.message, key: id, duration: 10}); - return; - } - message.success({content: '同步成功。', key: id, duration: 3}); - } finally { - this.setState({ - ldapUserSyncLoading: false - }); - } - } - render() { return ( <> @@ -551,7 +538,7 @@ class Setting extends Component { - 其他配置 + 日志配置
@@ -593,6 +580,28 @@ class Setting extends Component {
+ + 其他配置 +
+ + + + + + + + +
+
+ 备份与恢复 diff --git a/web/src/components/user/User.js b/web/src/components/user/User.js index b08bb26..1cb92ac 100644 --- a/web/src/components/user/User.js +++ b/web/src/components/user/User.js @@ -280,7 +280,7 @@ class User extends Component { let result = await request.delete('/users/' + id); if (result.code === 1) { message.success('操作成功', 3); - await this.loadTableData(this.state.queryParams); + this.loadTableData(this.state.queryParams); } else { message.error(result.message, 10); } diff --git a/web/src/components/user/UserShareSelectedAsset.js b/web/src/components/user/UserShareSelectedAsset.js index 42cafa8..658d672 100644 --- a/web/src/components/user/UserShareSelectedAsset.js +++ b/web/src/components/user/UserShareSelectedAsset.js @@ -425,8 +425,11 @@ class UserShareSelectedAsset extends Component {

上传:{renderStatus(item['strategy']['upload'])}

下载:{renderStatus(item['strategy']['download'])}

+

编辑:{renderStatus(item['strategy']['edit'])}

删除:{renderStatus(item['strategy']['delete'])}

-

改名:{renderStatus(item['strategy']['rename'])}

+

重命名:{renderStatus(item['strategy']['rename'])}

+

复制:{renderStatus(item['strategy']['copy'])}

+

粘贴:{renderStatus(item['strategy']['paste'])}

); } diff --git a/web/src/images/bg.jpg b/web/src/images/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66ab98119c909e40fe41b144f22c718a3e882ebc GIT binary patch literal 155353 zcmbTd_gfR+7d1LyP>M=NL8S?Zbg9yN2Px8f4IPx;L6k1NgMf5M=v8V!QKW#w}}21!2cJ-M7KaBx9^aW-7Es6|IhU@V&XU)ri_)1jEnmuv%;y7m6iM>%H{9niq(Q^b@ouPVRNypl=t^6aVeA7gjjtO z6@xNWJET&c`-mkL+QcuUGQl@7p*jd0@?nI}w&6yinJ*YJSA@Xg7?|ko&VKq z)8khi8K|?-SywY1YFV-$ATE>gO6PJ?q6D#gY{gd~>{R|?sIZ45&iimGJTGI*proUk zhl;_3o+w8%rzvaz?CW?>v5@Pft2t%=;?M!g>g6>wpR29@<1a7#vccHSCOQspm^z%T98y<2ypuQsRXy zP{@cY$iSk!#H9I!3caQlFY=PRQr36AYx=kdn$9dt;U%OIAuN(j4{qhC%9~}g)%&VB zw>~Mk=m_lT;h&ujpDB_p{ebD-DVCLYX)TKLwyCMBNbS@Q7eTS=>xKz9$L zh{CypXHqX*8fy_C6^?|~bgIb;_n%%?UFEhBX1R3WhV&2$PUm=!A3e*A?(dkp!EZu1 z-n1kJ7QkLP-67+%|GU@mtL0y;V8oNOhPQscm*q~Mw+(}8BhUVX`;0aFOFq8%lKuLm z?p^VxJ7l>*o%<1!{ioYIG7eG^@{->tUiSIYl3{U)&wiMqx%Q+99P1n%L z{3eZEN?3&Pn+kg7JH?zC;q6pslYx_ zH@GhQiEJ3!HPHau-d_JYdHC`MFlL>Kkn<{;_!uyZ6pL@k0z7NxITd z+_cAdNzX$4_P=2Wp!@#Ik)ZeTcuWGBu|~$92xF5$xPVOV&L152m&wIX0z8&ICVrSQ z?;@nlM@b8$-mi$fe7$=UQ#Bbr;F`6-FHi1XhGPf$)#rbQsRgEU7VLN6Wi7GT(>=7u zY*(K3jFx!n=>vZp z84pwAGsod1*?!O#2XL$HkG3n?Ht!z$H%V&Hd!07X%wzadZS)Kd()p)zr{_zvcJ1$M zj{c$pNDe}Kahb9l-)JLGIk7ys=du>`1@G4OjHa@YhRt&O>UqbfPG-fJrTX5sHno&~ z*$9C=t-hg>KW)=k)B2|t7>mW7`NX_Zj8C!WyhVi;?UOXiwQi%=6%6iq561f%@6OCB z0%ckgBnt)Q<{jQ8V1J@h&-Iz7yb6dQJzXhOaSkSnRp%bn^j(awSmyB#gWELDzH#Er z+QOV?&JB{_(YY&WK4shpt2mSEO5YAY6u9^M%l^vWKq1pDj0prvBzFTu*)J!ydOF)L z?slH|FGmhE9yHaU?drON+xH`${Loo#UG#MD4$$d?c_S=dG&@}o8I?tD=n1} z{C+;^ZMCgL#Rq{9fpos5bj=*UZ0DermJSc+Rv8vuXxd}$S__xa0B&iGgEXdPWL9GH ze$UQJc&+4nq)6UzAoiY(FoGWJ8GN0Le&D)Dq|+UK?Of%+9W#&5 zlhE_tcI&7b1&1B%dLqkr@eu-NP1|op+}B-pLhlQss@V)}cH5Q3k|~N3kM)XOut?6% zKj^|h-y9+%6e z8tp4O)2S2F{_}-X9(tvlH#t<69M`>M_AF)A}q&NPu0{dl+R*i z!RziMc|kCY5r>kV^(<=dGZL?-xU!vP=)wwi#!8&F4{H((oRa=+1%VTrnTbG)8 zZ7VUZwn1SqtS#kHs<(f2M}t!?_)2>Hi`Cv)=)Fm6ap@%=b!cQUWsRv`$2_*6F@k=X zUc~Se-EN`H-!Wv^cgYeH?D-^3n-wGFOvv=M%flb5aMkmpDlu;17_C7as+6#q4??x8 zY&?U_Q=HM7!qhM9es#*!ie=o=m^NFxduC3ugmv5+;s-Z)XKyrWBq^GCba?f9Eo7P@ zXM4NU}b&nTjys%gIU(?Z+4v%7MAY>(6ppmh*FU$|^r z9^!2)lB{aZt;PKzI^pfo&X>g{_WXmxJeSUcG+SF$QR}XTa)kYFvF)XJ0pEf!t2<0f z)#fH0(DBHSqsNyeTU8PDbMqC{rp37Vr-^C&{tIn+^v2JHxRq!W=5ipzABb30ve<_| z-jDhC^A`d%E|tZH1QzSa*ou@Wol~vLFNAecnp7Oe+MiOIRrb$qW21skS@O*vabclQ2g0M946KRqEm zKT|W`oSliWEDmhKq;}iQErFQ}{^UKNy|?2OfyXb~J{=pk7Ok*uY2`{;;_sPE>pnd8 zTitm3wNr18IH>0ij(B`K^CmN-{g% zFJ=m~Eg$Ke3$wW@`bf8RBwx~(_kbnrkFE1w%yD07+LqJiDqJIDdQ&w(>77t?h1tnW z>zqsCZPjEh4YPD+CN9Owgc#0pZLbe^@(Tj(T*0JWE(6~-{~BDe%*f0?*eO-Tb&bB6 z%g9Z#xB(h3^gcQu@}$I5yV`b6-cqWwydU41dL`uwsZ}+oTHL<@RKI75(LLBl&08Kz2{X0DN+SE-Mu^wXuHrIAKMROF!hl{x_MpuBxz z@Ym023eFVa%28p_B?j@04|P@h^A%#R=dfS+wwFe?oQs>1IrvxN$EGa!P|&DKT6Ew# zFIRu5lHMeUE2Q@H`i~Hp}ZAu-P^X}!v(mP@G$krvECI-nilQjO< zoR(R=Sb6!FrU3MRe5M9H2u94ot58EWthFw2+g00bEn3N29cgc2Ww3zJriI|1UQ5ZP z;NfwwYo%y_PZ(cdUf5avCL$$t1-flEK)KlqQ|Sx}Z=1w;^m^%Twy;x6d3&pB zlUE*oT&PoEr&r5W{K~mQT@8LnsyJI#V8!adLB^!^kRPU&=#WHwMWJL~+h!Bur)N21 zK4R5fp>8?xcH3Cn6CHZ*&+n6xu|A}=$x%2ee|-Z|(E7bPHu&u|Ci%7nZ*3!c-7GvJ zOiK1un&Y3~3+W=SkuBfgLy7Spzh`r{mBJ^?Juhi*9*)EA6oAqo)(GM+I?dU!<2O8QtJ1{ONmV-6ONb_^^xZqL& zoaF6kZSHoJZQduE?`@keTyk)?Wgi84qR-{5{TIw5Zvf4TlI26MUQXiw!XxCuNQ6h# z{1qPuMokC!cIW$THE_e9lz>Tlu6jcwZh&gs0jl!AV=Fj{2y-pYH)~i`h@by`U?Epk zzW#3^mc=;tBD5a!$=WTcGVc^+c+T>Ir}3#vKaNtC#043!&~vWD9H`R*t!2M@pnD&cDR>Tv_(tK}s@rEr(vi zZf&yA{r5@6oJTdNH}b;!$-=3FrDHU%E`IJi{>5IMufB1`?9!Sf@4dEH*EhhV5JyMu z5BFW(!~}hIV{32ziwCb)Pu|^gl>ItyF-I*l{F9efm`E7Z-k+;A&OYkZU?2j9Td*hD zTukqu%vSuuUE5kN9K8&#TiEGcPG#~sk@b4q_#o@=a$5ZOXpXyaRduHa1?;nIqkQ7g ziccQAa%%hXOq#Y2-Rt6qwu0$mqcnG3vOGTT`ta8Q@*%OKX&2o+u3M+{`%RrNuXsP* zpGEE(`fRR4^K}R!BIn;&q7^08tVwMK@R2ITq23JH6S6HnD;Tk8om-FFHBd+_$Vtr2 zB`M%?5_|2KGfFc^=@z6^i(U44l(VwkTQiMZII@EGwjkRoW=~lhPojj^1uGBzF1xZZ zG8-5ft87!%fUl#*u~|Xb`1zxOFwEhj?_*hL+^0wz?wAYzK)KjS>`LkM$vNy9t|nt0 zjIg-pv;->)v#bhQRYL#69FCYRcFMUe6+NzY**`m%u-o`orD19Poa-F}NvuHvD;eW# zHsH~@HxKoFd*uA1xfu|u%yLy2q}g?I9;@X`|7Grs?^=T|?S**Gp{Cqf>UKlrD2ue} zU3WrZL8ql&KT-yoqHYae@(yDj!H-`|74}RqXmAns4D^HA&2!36I03oPQ@qcEps4;7e;F9^L8KU4Y}_lm1Sp{Tm4QIiAcM>eg5p9R%CES5!2_*0hQlDGn6G^_Uw_i1|6=G&Db}lq+&U9ni+T{g^nPr@v7u0nC^r9L9!GSyPp@Wb z>lgNMyv%HuakocsOO5Kj{rnzI>PiB7bXkNSXj=)q?mv;nj!=$==t+;j+lnWTWTHgY zTej*GT{?FK(PwR7C_Qg48YS}0=9QP$scj%C=nR(r5BdXxF)$8budQmHw}iIUR1`v) zCvO0k$u}Y5x;_lBsUBv>_^%_{_(&3&-^*!YyhL8~Uo&g1HK6>ocR#Cq9pz>)uZXgo zxw-*PN)9D)6l-!(SuuqSkMAUM+2z|WvnA$EcT&~z4O<+)imL<{^hQE3{*n6_LGl!T zkL|$g*u#FGg)2$D^dnsGrO{ro*y4YJKW^G-CjWnuDA+;G*|QQv|+kPv&q8R(gpLEG_KG{gGf7Y{$W2a=SUu zN404@hFdn5A5MBqi##o9nhd@ez#XGXXYWP3Ihj%_YMjTp9r+XO>c0T&PEgS^jm zjZ=;b6>@R{rRp31%_Px?qR`M?!AT)mBa_MYWNPxyDK!6LqG_o#$am)DuJaswv8dn0 zO>mata8usf0cGHyw}}clxBypvH-7vaEQ>^G0g{`!Q@yK_dNx0haeM>h6|WzKlrKM_ zG{wswM3x%Q9$gy`k0Qo5WRlkYVx(5WisNGoA%hWTzw#mra6yHmw#vJuFIHW+w+x7! z7XvOz7v!H`o(+wb3Y)Y6pTFlW1zr#I=l&h%FgGc=0v} z8)cZXJRz@d)?V_!N;8`~@Mv>CFaMkn!}Z+|U?nEj$R{@PXj+KuzoIn2_rCw{Fy;8| zbZr^yPXS*G*3!hX9qgkwlzIc?!ojI1*on|U z(_F|WvgG2y{o}rn5ybD+)pc`dY%z;hutDILsTFQ zYAVeaw4gL`>~$N4W2(!x6F>6pl2SsL(+)73Vy$d%)&aqzF@8FSrz^c9R&VNH(=ZC= z$3|^S==obdXj}oT>m;ftJZSP+{Rmwsi{M7+qf1>Ghe>0}H`q2m|7xB(_3mC-o{Ff2 zaEZiGYt5n}{qLPiP}r`|CQiVZ%!nH_G3s4hd_OQu>H?iWVkJ{(NDp=@SlAA)V$Eur z_YL249|Q$-mN{rRXVS$Pnm;rO4C6x`_61n;qJQ_*U;gh#A zT=ei6JnDB@5DItsZl~mh+zZynM?8@7MSQt9e7!cH9OkX3H~F7QXw;J*>pOojp-kta z=#aih-`Zra;$>%)3Kqt^so%jRL)E|)Kl^)Ucl%A>oRq$q;_tYKtj0dot0y~yN;Sn* zZ0u?wU0>eNn=ts8)W}eQKnfs0<=c0s`>eEHh&J$8zgPI;IUTaFa3(*GH=cWrLR)K_be}LE)tJXVp>q^S*(@GZs;UpHr!?G+#*7-`~YX;l@}lzDK9;8 zGGIEs8YPl@*tq`R>r%uPkG=J+G@c+z-%$lv-1`dLF+UajDHa+DptjsB^H?9ZXG`jrPN#x zd$Qt^^fSl6LIY5krWO~~;03*p7TG}sghdu(o7mR6`}PW3eQPbg-T>yY0$BOicou>T z7Qf*Kok#5*iyC*$gHiD9kQ?CsCjl{wh*IT2haK=xW^Jrjs4N4j>Ft1d90aP>jZ0u_ z>YUs~E_BJ$78HX>Td=a~dh|4CFEl#DObZu09YY!z+4U!qf5?)%ft0MHR>_1+Uq80M zaHaHxLv_Y%Vi?OSg!T$1BDE{#pK&orlh_U@ps)6VjMH#|9UQ>AQk`6fHCK9HLsFaI zUusjPB}Es0omi+V~Pv-V|ZQJ&w#-U`<{ed^Y3(Q>`k0*GMgAL?w{0)$V zD+zC|F_riwi~4dNRSNlpv6jKxJ9&5_(Y)X1Tx?~NYDtsDOpSJDCz=$sEvJ{lpOeA2 zcsLZr`-_?9v+8JCNvA#)c^Ct9W^_5`?TI`APi&s7>|1tvoz{IjdWhk7Re47P0JOq) zk#_f>Jnx(rMQvvfTtYCH^}7`V*P+F7#Y;AiX?F;6joe0sc~i&AiS*C~Ggz&1bnZ6u&{Wocq-NL7M0zau z+N#e4g{)BKr14bQQPT_p)T~0%3q-ITdA=V+-X)W%4hxYVAG*D_P6)L{%HPH?P8S|5 zBSt8^i_XG)B2FnG;mC~@_3o3@nh)nArR$j18N6hVG_%kB(3!}1=~GU5n!k=(&v`3K zn%krr;l0cL;Uxly`;#b^WFy@l?hO(H^h#u5p+$Udv=Z!ki`L{9Jh;dnY7nd7YRdBPUOSb-mnQf3sfS<)hxR(M>nTHqZy_ zy=MC>dA<#SWPYOh(AVE}5ZO>D8NQNdig1Sf$>v@ReS8TwdMCcSz5Of3V7zAT+=-~^ z1P1;uGH862&>Sd8a1g~dZ`Fo=XW*ia<@~_dz}LC|L{Rn5tX|3HsYLi$W_B6*J-*gq z(8tfTPEy~rzoy-1nj`V3txRWHF8OAfvi0?z_kpjuujf2EV(ZsMWY7#=F#X({Wi8(MeqHser{@&7Ka zi;FfM^XxR*5#_TJI~4$d)#kqwZ$IX`9fwq96BzQ*-!ul~)siA^!=wXC=G*W&Pom8K zMQZ*FG4n$jDqH{B4+>|IG*CdhA!_4oJ^Y1Am340bq~%mf2qp%1BiQGtL4J26oSd#x&iopOcfYt}D*! zv?u?e9!-oC_MyM0bxQcvl|A#@`cYbO8TEici~c!0HOJJoLvvf4SE{6m&#&$5k#%92f7xbdYA5#K-oO+ zq@BMwj-=Wxh>?mAjRK%8I%ks(8ioS0aPdB4T4$aq@9#fb$UwsIo(MG^kHY=pw9nW5 zaE#u&;8brJoQHl8Om**a-P+i1`Vp2(@aZI6SIk(ACq1OKE^jH5#bqi2H7?>P&1}mg z0PV&aef_B{BbVAR%^#k`o3t9j+Ia&g4}UW=sb|m2HJ^bgBh?NIV;?Ip8kY$CrRj%yMtOoBkgIm|lhH1klYx^gvtoR1*Z zHRJjh!VZny2^{yYe1mXWh4nzvraTV zu#VnypP&!^mU-|qI3I&l%5b!<0XJ4fys9b2T<&#nieIgjsi&=NXknaxyhoMP#w>rS zYCz|SFL|RTS8e=SKc8@bMg`n<(9Y01vaI?EZg);(tVpZ0fa9~ULs_TO{`job&5_)4 z$j>|vfvK)J{FBp%$oFf)%adA9T_ni>fHWOoVz&bq0P1{Ucw23J*VsS+Tx7<2;b3-X z!>~oVS@S+JU?8#kB2Rrb;@NkZA5yiGwPIbnNLbThzsr;~DkI$Fu^6Ww-V!_@n6$nI zFDlId?_s0G`;=`VDFNb>@s88JeJEObs(u@-LD09h{p}YIyW7(kCW#8TrCC!Gk&%|8|C(Dl z1sDf5+yTGzaHfkj(fke93(h5Gxm#4-(n2mk%andSm}e+sr<)dZGn^vAL7qUAv6< zOwssLLFFFpEr8OBFrA?0wbXk7(o%+h4kCEXD!vfT1Bp3XT7&X)Aa2$qI?!eIvi1_J^VEF` z(u2wv`kq@GcagNet^4p2k-M>B!Qf!Oq~#1VVFfQCM^%eS*Gvr??1g~)dzRBZei&+Z zCxCOkYvw;cMk8J_X3HS0-`&6OOjT4Y9YnT6w=Tzg{e*%Mr5F)ENS#Ri2ltPItwgjU zAQg>iMOs#Xny+Hw`>6{VI~yGz+Wy`nNUy`js39c7BE43+P}Dl26`gHRm^96R=&o9> zD^HF3fWaCVMr-d?7jsF>t6ovGxS*G1J~cx=1Ar9+8ZBm3siF@sIlxQO#%480sbqen zrj8R@_wTxb!n{zXSH`~y1-I1EpGcO8z60iGavw%NML&xKkws^cMJJLOtR@x^6KSTu z>8~RQ*ko*fIGDaq)u{X%HR3nqbeib>ecG4a&aaiA9I-1Cvgkzl#rP#=z2sK>))$$+0^A9|$lYST_6!=TUwpTQh4?a0egag$a3Pe2j+i4cG4G-I z9hmj3^Qb1hB8{}hp;$~gpK!|Ap2y<6t~pLlZvtG!z{nNKxcJAuDbTa6a-n3bMW2|k z{$`7HurirHE&70BfTA}_b3>$3g@~5V7CGxYx$C3e5O89Px?n-y02ZTqsW_JLK9;<7 zKV0}9&EoW;PJ83qCK(zGYKg=^IzYk8?#!Ya5Z(NOMiY<$wdRTyG1nK+&~q_vWZSdZ zvE7b>t)=FvwU59zLzwwRD|JnZ`Feb(7lSr`c0Tf76WE&mTn_*=dykrGN=&IflRy~E zciTb=bE&P^*1LRk_dC7NCjz-!`-fq+pRZF-?q(x5<>Zgj=(qY%Pj7odX{^z;tMxj{ z@J?`}gC;4dDX{`+0J~kW(VVhECAK?ynn>J;=mp=Ld*`R@S!$5*#IOp8PoxX|%6ES^ z``?zq=+PIEN-Fp-1oV@~QoM}HLYoiY61Tt0nfjR30y+n`IJK zOxBuVAT>=}AH21{AI746BKXU4-9jh?m3}F)$sCmPo?lxe2q}ePY$Q!TTS5Hu9~Cp_ zUL${9H*1JMT*u?Yt6JQ%wNi%rEXb-c@st0h1L_^qbO_BxO?H%3XjpfKxk{ zpVmk)uN>AA8Wj82|EzgO5^!7Vush$@{V;P9TAf?Zc{yCeKkI4@-6f*I5V5ui-K*gS zai~mas1P}6<+Sk)_X^WiSZ?CeE44Khj`Vvzx!U6?%%PM&dFzdWb)r5TWFR7 ztq2qfZz@BKf>egH0IFLg#R3u9+!`97l*m%$4L1W$r(C{)YlL3SzyfCoz1Lx=p7sgL zuZ!(!I%HcZPGoh(W%BrVO9HH3&SBIX<3v&qaK|jIZ1)~ZYv-vT2%M* zmI46Em9P8fw;M~s$2^Ce$M!#}oKg)B3&hJSA4Vx$u{dDL8olVk=a1DV`$}0#)#^o= zxJmWX6WolW0nP$@Xs{aR-6DnGP8^AKh zd;Zm1&gZY>DD%gSew5TBM<<|nDZyJ+-rimYplAZfYA+W$C=hcIjVy1=q<}cyH{@AP z?Vp~tw=4OI21MvVFXpHEN#<0Rp7X;m=Wzt7F=W8<*l#F8X;_gBP|-;TXs9%r@3|s9 zwuq=T{S9~GK+eo`ng#hBIb4d50=*^6Cm=PS9uK0`l`? zG}3`|Qh><|9U;GQ`8fuB1C;;g*>fdZq=cdKzjB$m{)-L`8?Ohew&$G7Z`=U9f4@B5 zq3ZFSP$1A0A%IFnM}x*fUV90A^kq0s<6$EW#X|^(YbG6AuBJ1Q#ZT3A4{;j{s3dy@9WG3&F zO!NtbClJFI`jeo>%q%!s{a8o!zUt~iUN!B>GIv7#jcI5W$;;D3aJ*|J((fj|8QGSw z+huB+aVc@JbC9v-GtpO%wzD{AJ3ts7@{+IZRwngj} zccaJ#JT)oglJWtfjyFY&pdK_7wcGQ}V^idLe&p1@hl-MuPZ7gCg*Co@8z#C(Bdyzm zUtC_aFWk3IS=wqj(d!QiwQMMI2bgj0yhBGm6D*R)m!5PD1v8|HInMd5B;9n0IS-v1 za__Kh>}lj7A$|UA)Mh^c6>X3rE8hoDMu7e;DAlR?)FD=C8TB~=qn?H7uE%_7aUO{; zTEFa+@@N#Ta^oyoVqNU%@^!DyNq0*$AyIT-0CMAzjE3xFWW?TWK^AkJd=6l^tT)W$ zFbx0b_er31u91$;f@iX|T+ng+cNw43^>y`fQdSZ}wZNvOkdLe+9>Sno&~chJTK>qc z@!VQtb_#oT4dySIoC;)#?26f}LCh|I#*2@|UOmJvO2`*yAz%xW6)frisHd9;5jm}OB$_WG@94Y3tC zINT=x$qM8%R?!i2#`o$uZeREAvG^X??BzIOn4gZl?e43WNt0N`nLn@Q+GiXO{j!S` zZ8%$JhLagt9E;2wdyqG_5H|$**KXFU)bcyYEr)q`Y%(TrEnD_WR9yHhUV+CrtIZXe zeB2U?-uxHEAO7@v$fS+MmIw#InwY+kMMMLw5sn5x-z*K^apa0@Pub{fQw@nwfFKhJ zlr%bgAR3US^Ky~AW&~_cR#)N+r$2Zt7(u`FGTcTz=_q_+)-uy)O8N9ZSBpDHDEs2+ z!S;zXQ|tD?i_P(PE}54tNF83TBn;2jG)SQhMbDzA*Q0sj*87OIsIWcT^8N>os-8Nw z#b65lPL6zDT+O;|euy_Sxr^vm0&k+3PT`|9ctJoWFMUunC`BAq<)@$dUwS4nh-RAf z9ji*^gpOEl;Bl0;T;5dY*|gScG80cZy`l4_7n|39n<3p$CAjobZz;R%6-!sJPM6mL zOm~^3Z1(T5^Tt}0$agmr&yZGUc=pz;1qbI1P$@6><}cR&Y}py#Un4zcm{ZOMZbYEv zn@)qgX3Hr;WoC*Rq)dOGQbVrwHd!XG?;w1SO#US&fre+Jc{I?q;Sv=;dV(6X4J!LHS+NKKRPM4k@@~UR{ zs-dUL^AYr?WyfFi$sSA@-s>Xq?$YHL_H1Ox`{f6AAOVOY;c@~<0m9}$Ol-$#F@EaW zSoDmZR1rj~6BFG`oVj|6_4$64J}_RqVw6w_O%mDs{u6h&1xtG!SX|U2s~5F*sV9E> z{i{E9oV`2~RaQG}iH(rVY^5Up@5W@-{;#u`nN6PDt*xUKDlgZ87oG&jvdmmBEzdWB z=XZ~v?ASEvsX_PJyjo0Ij&6XVOCJhy=Sp*T%@~eoAe{q9)F)OlBQ;Bp4$i>t>__OS z|G?21ThWvODn!&YWdbs&#qU9<%oqF)xHH*f(8UBN$Cju2Q53kqm% z^jL!;7s~gU{8Rf%;VgxH5}!7~R?Ym`FNpj2l7)3Z?|@r_fCjlrdg>06!UH?7fWBrK zYmyZ+Hq_x5)8wIH{o1!Ah3}S@>WeDRiCR>SmC*d9t)P4GjcDGpJ%rr&Oqbn;UxoruHS44{4?y!x3?6Pwy8PiR{& zpmAd(d2c<+I~o*77#}9)b@Vhr1y6}LTb4IIaP=VNY;4DF0P*lG1jd(N*)p)V{Y0wY z8}+)PJk-IdQUh9CSk=YpFt0S9%pi?~J5=$gY8VlLSzXiflYY>bj3C=wZ094!(fyGl z{YOdS2O}nDy*2)#jkYyXuH}Uh+ zYp;R(b4zdd=}nRpK586-Q}^Tb@D=4-L4hHhZaTOS7W&JpzkN4=;62H&qpj29HoJIh zZ$u^D)^E^(=_!ji#6t@*{+{760SQ5k22>V5>tfhAh&eyUC~0~$&BJQ8Bd1O#yDGOV z8$;#NoR(+$^BK}8&d=7b)niSUA}L~c*|`|)qdCk;(>Y>T`3<@3l4(df%h@&a97F>o zCI7CPrE~oVt9Pw?u0$5pRfRt69gotHjl6mw3-^S~rzo1IAE={D1f zkDEnbJUk8Pa(iXN^8#~(@!hI3rXfutd1ta$9(rN^@QN2}Q(Po{J^39qm1$$Jvl*#; zZX5r1`#1!mL9f6V4Uq5UoAFTrq|t_&9BzPq#uoIwG<*GrpNfFagltNUPZ0VEVoE;$ zS`rT3i(rP8pUJD^A3)}F=!JsyCT(A09(&t7ZvR|sasM+$Ktx*PE{`xDH-t}0g_ep~ ztCgmWhCr?WQe|z~JXiFIbd&`iR=?vPL0N$g;AeVl-o&ygKWRfDk^k?t5dl<1G=(bx zaw-C;WSIL9tt~`6JRv#zO=*~jnsu;JC*^5J4<2TK*CTKN=CmgNP;2I)G zB&vz%Ha4Gfj7AGbx&~oFKq{cDo$f!oc#)`f__o~AiM-1pzBBEffK~prGEQWaFqBch zI*SAa3KIT-o*CjA0ElKKWwqP!bAQ9Y;hI|#vUZO>YI4TFy?3ME`NF_g=G@3}^Awk7X0J58lLnR?9^etAI5RvB&i>D_~nbTgc z9|^0^o?l)^2E5&LW}lplBw<&H(P7ZE_$kRiEyDUabFdkpnqpOCC9n<fNQR`cd=o4M2d?qHvbtjm^f4ulwOM1#jr97>LXOg73o# zpd%&&9K^gfS(~34b9!5ECJ>s>$!RyW_{RK_;_x{im=%_8^w1wxYK zc_W?wi}cGYtYo(JI9}zP@-o&iFLEa)2J&5V(i1pHT>(qdsb3rQD)dT8Ul&;K&-?2r zE-r1FRHn351mJwxsHu4!Uai2S3&@Emxhd{y6G_9=!&wk)RNH3LLLUKw#TWol0U#Z% zS|Yo-?OnVa%QNVEg1>AaZy)Bi>wjj8MAcMu&Js#(!LK2I7@sRH_lEz;DdZ^}vG_%_ zN*Ya?sr0`miR0kk_T$MhQw12mvsGUwWByrA8E?%|i{)B3fjwP$T5Id&)vMrJUt35z z6cl!*6`kw!6{*H3SasgfD6#^IAX*xNafw7_V#2x_<#>jmI4Ta2+-$hgbHodxp9nO< z`)LE0CFQ7bkG_RmM}|5uEnCB+wE(n=m`b{o%Am?9`5<8wL`)*>x&GZ)g=Dd4)p`K& ztGDQ`<@WhywnmeycyVFvh*`7Y{i>|r3!^`weC$7U>RUirii zgJgCf?w4nBs3`n{EqU@Ob$&~eYt)pyMksThqmNc}ZoLbB0Y>B#W z2VGB{3CzFlhTXAkQct`L!LYm-+nTN@inz`EL~EsVypBqN8mLf-rk{wW(Ew>A9Bbe5 zKi;ZsC~tnKJ@pAy^Qnziy8l7ms2McGQ*7?=ByvdRS;5cR&*Ftl-uol;>;Qv8d^9nM zAz1TWYP=A@)T+S#kd7lUhtQzaokp`s*pWD9iXdM8=ZrcIu)d_a#58o+}DMkZS3F)l) zttO9eClcQ2shH}LxK**~TFtdA%Z%u|;@!QHw=Ldp521udm0UJal$NxtnO2m_rtoI! z6Ooz#Ttp5E6b1_9iv+V|PD|Y4Zw8v~gusSREnVo%>57k6OEM=s?28j~x`q8Lze>0I zY>Zt~01MG?66#R+WbS?ji0R?zSe6%uE{fp_fEb&nxf@j+A-LKd~S##BIK!=i9W!_n4sD-qTv7lN{bK8Yuig>)qoP%sZCw`wz0kWp^xhLni3@MuCz$| zV3h~2u%es&Q<59t%~7dT4Ed`2LbV;TIv51#QR>b|{40n!8j-n-nNiAVvU zMZ)CsHxZb6f!2rTd=IRr##6{ww4X)!Bu^w5i<%rczWk-4K*6fre5~ngl3mYhDzqcY z*Gl;3-z|F~#I4DhGzhTP{|%68U%Q|Bk*i6s5!xJLWz6|Tx66AOg@>W=FsM0}fqRO;itVX@oS>nX}udu@D?*DRWnX2Ivse z^J`n-%G!j^<5ASFB5iZ^M=NILK+MMRiE)e;fsTFs`cZ?b8Kj`dai5o5 zXvcbH%Rnsp?mX7@n^onlv>+FCTBff<;k*n&AgyK)y#5z8dnQ$x**&WN0XRVP;spmS z)#`;@*YTu3cQjwF&iL~0kyOEb{9*06&9l^+v|>7T&t2JKN=y9f?HhpZa%*rXO)3{n zn1g3|hE!3BRf5_; znl!h@<<*>oZ**XVdoIa!b9kJ*>11WxUG+ zu{R&@q`O7;R=gt9 z=PWJv%U}hXd#*Pl`3>mfD$^OG_3d(7n$8Ab>o2wOe^%a_rE3xi0sn`qw+@T?`TjuP zODHYfBHi5$(v5U?w{)i<-QC?KAi1P;$I_{Eioybd;^)5o{_Y?5x%065?8EMBX5KUB z%$zwjkN{oKBC;ei#RxISb6!%>26*t?G!vB89N~p5eRlJIcKi7aOFn8eL3P1+Wv9ni z6b-zk`~l(#Wmz%=4ZvDj==ML4cGpbO}Nc3x2JOpK~&jzDVa zYcz*o%D**ROGzkYx_S!l?mb_{E_478Ik^zqv)~;JTz98&Lb=5y;uX*ZucC$!JB+u>;}Puu zfL5je5Go)@>gF9yqt4KibS0vg{xzwfE1Jx2a4OXI zz3t#DtbB1h^EPPCy4kMs@CS|*Edmt^NPlZ7=70gHG|+d*=XD*d)V=riKi9;Uq8no! zfE^#$DwT9~HRPJp({?vNYaVvwSmQ%T_gg=qJB0!MkpRNfApO${)MOqz43KW<>FeI? zj`dK>Dzafz*$OSa2r!jrnf==4i^~+z^3`J;P7Zx`{hg$fzuMcIERjh+F<%5gv?Blj zAK5P#q($Udl&sfRXP&E=6!n=W3kose6_&GNnTN;W#Gesfc@+SqL( z@e#~{mxSP|3}hqfO>x7Jw8lAPZY^rOI zv*$x?i(pGV-g+GhAIM>#VfIXKjDM}uD*3-j0J)eFXgj7C9yIoNw9TK{Ih4g=yTrUUxE&$k@~6?wed{IuLY2to)!9t6uN zPy*o4Zo+XpRCiQJ%n1)L`NWFz(3cc+#>$#5H_IhoU|riz{Q20NvHfqH3^k z_x7_s%Su`*ExVSU zNJuKp7CbJX>b3W#YZbBTA~Wtm)ii91CQc~-%;0EXJxGH{ip+T21}@J|Rt#dy3fS+6 z(G7P$FGl3po?f2h>Pq@M^$4h(tmnQQs_KnNMZy@AK^jy<8pJ~^K^ivE#;&IXfT4yd zu|6fCNjC0l&jC-^-5Zc(W_1=mzw?R#A46&KrkM)h( zP47T51gJ;AUU;EU%LnGWEe3Z^iO!OQNUvp z`>P}d4US$8cxI`&EwZ8)W`eE;Ii>0-)S{yRDviz{L4wZ#$j037y?(P`=KZJmw!q%D z&XOQH2jTbAxCpoG*5{kn0JO(b(Jk1TE=I)$%r&Gxq?b=O92)|9WFj)+O5zd8zCXpT z2m=5_)dyPFfs9nbZPm@^>d=$dAIm?C*L8ge_!e7(pa|`ph=$6Co)@LV0^RU#n`C)4 z`xJimyWt)*5)fzuk>&vK8hioBPOL5Wfo?V*ru`ELwByklc0Zi$5tlgmxVhS(i?rJv z>nvQmziZR8@z+mre`-$6=GT@*01!weLE=!L^?rv+83WM|^9yeX&U9IvtcfqaEM~4Z z`}EY|mh9O4CU2x&DzDvByM|hy4IV`2yR!4JCkgM*AN_^lb)p(Ao*)`R$O^Ap(Uv6C zEddvN97sLVq zV0UI_YBTi0+u9+FRyPGe7;i+dkpvJ>KnWRiPH2DXaXzq)C4Kg>zZ)<)TfA{~6&EO; z*HjYgV>hueZx||vho1a(S#!P)xK_QI6Uc7L+bbVy;Iq0hb)&Fp`W!{84-OHin=%KT zBnRZRipwjR`UM4VnITA@iSG2|U%RZdWhSzm?VSBq9{pzf4w7HGP*r525W~c+h{uT` z35fmUef`J^04Zu&1s=jkA{_@8RF)^twl~O+i9CxdQ$FEq~Vv>}!K8s8Bd^^rt z@14$X{NO8S$(*WLK8%Z#i4QtcrB>DDdw)~@%n!{Li@k57@e=vUJz1IQ6wGyv(Swn15F#oSQEz zWiybXx^MOS&mT>RRvPYG5vpCpj$yE2fAx1zH# z7cyJG%4CeKY~W_ax83M-dSKUx)iJN|*G^>5o?0_~<=#{x4vfr0=TCI*OD)HBVP+XjK`2B#`yBOANZ`nlwpI|eO z=C^A8Yin~bH5)juKf4b(aW{oWWkn1)1Aq-+VV;u{{{mW@%#-)v*|9O}nyvSeh8bJ5 z@7XXx@BHLjUCH+V3IVMsX@WMs`#oRill%$0$EbI!N-E_bYt(WWSc#1aWGW2iS=Ni7U#O_ z5lSwjptP|w{jBWITrP^FNQKEM6OI&y5SdCF5e6Du0i;w8&+F5#i$y+nf7|b{c3~7$ z;!HQ7Iu*e+m7X+QU#0{tXZU zEw!@S>1`ctNFhnXxkV}K8Qjy;qnrm`tYonnrnQ-4w)y~QVa*i+!0&!C^t1z!UDgZ3~(z4E|#ZgL4 z4F;^|TAG>my8sZ|9rAVdGkVD7;y@?t;_lD!0L}5unv(9@osyN#SYt_(HcUyS-dY~y z)>NQkN|77D!A1fPp8uw8iPEI(Z*<#vu+`$#MVZ?$k~&T1jYPiA+4~>2JKo-%Ez?6| z?RL{T*lE{3&nBG(qRd#GRjb#+0Tg<(o;)_S4iSVyk|>I(p!i8lZ7>#6WXws$YGkLL zZ`{{s>?LAW?^gGWd?mC!Kh>|tr?aNWu~kpX3lj;|Dt;79wJx+v>MGZ?(K6y80T6CrG_m7*FhVW6=$-x8<=Wj3 zE!V>5`QRtFi+-Zv5TP3qhepSEhGolIXox$uOKuxNm@WwkESsT#4%pih< zNegtEgzOal2P{Y!-@rGweD)jByC1pyLu34VmC@#ISD!K86#LyB&E}yUx{#ip-8UY4 z3jJh*E?;)F&HZSzn>BH#Y(WJ5Hd=A0u(^;vU$U!&TXv^uSJ-@IF(y7})f9W|&EaWZ44FHrZJYI1%8DG(#q41@_sO2KX`=dm z`DEm7cX-P@E9;IFA&sOU!?WVTjlIx{l=jW`en=q&#<{BcZ0d+-TeRmBU<412-wV+{ z^b{QvozyU%Yc^;L+by55s#+V;jHgYTqwQ9j3IjKZN7e;+3{cV^IgB{KDPImxJf5nOAH& zOGs_Ivm4L;M*ZZXXIGVgdXk?vO|nIs5g0^LDCY&K9})ZrlmjLOi{4uS#d1#rMrLO9 z(+%kSY6N&MUZn-4rzbM;IiD_`J@%mqk!LpYQ0Ajy&09%i%gVGgZLVG)9M79Lvb@Cs zkUoQFZN{I}JlHTdxqiR0Pni5-P~TfP{IV$7a1P6@0}LQT=(PQ6trSKK^KJO%E4mH; z#H6Dmxp2*cR-;`9Aawz4c&uNTSO~R2UIgA!Ik-Iagxp^AH5&0fbY~z;dpT4xjgCL= zjdqjVYMX2-^}WG!%@Z;>VNz9XX0x-ao!O^GGjO@;|E}wZ-+&?s%9sEuwmD#tX!Q7b z5HR4^H)va0%`n@jjtOWQ+sm`}AYr z=tDrady7-5@8DTP5e8t;h>c{``%s~`I&socm523NG1F{iGw-(=q}e1%-(^M>F-eG%D<%Nqc`6n z-BoHo3R`DeZPHfQnSOD%s!->og?s+Ng@$s;mP;qOX#v>Ozx}DYT0l;PR6Ag{CsqEM zO=I-n&CkxX7luc>ms z{p2WC`u^uC%-O@{#Gg#{8!8_OL-oRMPZat(zsK$$F{A)`SIQ<20-O%eK?`3^^4cPe z#dKvlLf&0H%^W3}vRkk#YBv`u0Mm$ZS8Ek4OF^I1Efi8cPi{zV-)aJw;K|;6T#6M< zEv}?)kFkEqJq1(PK}W^YDx-A3))lme7Icdikta2l(J@ZBxz)h6fFw2YqnlaEv?T=s z?TFU^Mipkq*oA>W>9Pgg>~5j1y14#H29vkx7|mKB{(HZIZn#G_?5dGXn*^poymJI|L3BQ#-d%;sq%}) z9%tme55eN8qT7Pz(F3Mg;1pM-iTSleO6OAABUE5Md_TN8IvVF6TEK9#!pROMQC@4K zs5w0@+W6UP3aSP61c<~nAf|9n_9U#J!YA=8W6@vxk#`qo=>6Q7JwFcGCvGy1H37V| zh|d=nkIkh)`qo?@$e2!V&{niNtE$yG-gcTL-}D6TcC2>y&QO_LpT8eB6A%y;fd^xm ziI8Ln2aC1q1?5|0e0~UVI!4X`(y@_A@1DeMcSOlI0DOq*nj0$_{*-C79^p1mr*G`- z{5kY~QC=c@Hf>GmzKaj`LEM24F4FbL6NyzEDvMXlPg1T*ks2vA3(z7;;ybOtRuUfz zS^;1St&jBXXM)LV0W^<2s02@Ee}d2&g|Vk&Kp?}yE!T9BXFa6;^|S-b^%EVxGD;`_Q@v|1_jX<8hG1O?GUJ`g&5oAb>GZ&e!ral z$T{e{vJv9LnGRijBiB>AAo{oT{rufEPndW4tqDH&E*{Z0C_ z>xv2hBN}Qfs=oudzn-j*FB&>`xw&q=KZr(I^zmC~6R)4!pW>eI-K$dkNx-6jcfP~! zTq<6yK6j{y8H*GF$-2L|UYp#HMOp{&o2wI=8o6uc>dllt(5RU16eSn$7-VS7IVTiM$m4&*f|r&ntw?Gm~%2A5-imq z{O+n)aqa0dnlJtk&CuL@@HIg6jpB(#h6QFH=5PPI{gEX~ivd}ATGYN15>?@IKRa5k zYTwfU_2`(x3UrStVW35WB*9KL6Z#^k_uSR{I*8To0vOjFO zhNx6udfYxf{!mi2xYk>K6r$fZA@d?%kJV@!(_{%r>^wY~l6rtcn!t5MZ>L?07`3CDE2lea_iw(uQTOh56Q()uIQ}|r%yo4T|E7AtO|s~zWjqI-NtGsT| z%`4bNrD-VA8;!Q3pPy#27MlILzbK-;c75EJF!hRCLC*FZOk92>v=vO14=QAl{I8^iXxV}Z?sC;%f{6k}v7J0Y$$|&~^z6vP z1D^WW_kaHh&CZW`O4_5zM+J~U&L!MVLBK||BtUNGP87Si=ql*l6>lnL$98@JKF>~`*eJWWBW_FXFcC)J=tFr0;1vh=f625rjL0*#R48s_mU)>Ek+Ta>VwPm zmG6zs4y!WW&w_L=N`fE7?gg9|W6b*%WDHjE>o0KXqI-=GfQH+mZ3bK+gZ$N58WImk#JS zYxT<6(PX4mzy9rk;BN`(Z$FPH6|}=B%~8WhjY&!*A-p_J2FK}*yr*|&0&0CmQNSWD z%G(5+XbE~t)f$fS&SjzQPs`tqhl>P$o3YG&L83&;83}`gvGF|w86%^p030P6*wIb> z(X~hJ(DU=N)6GrXnQSgJL7~G?FBV4qzz zQR{GCN=Z-?K}cqYp;al2ZKiJba>Zuo$aA;9)2(nQlAgP63mWq-Li3+Qi@fJny%?Q- z?EXdlEZ9w8a!L{p8;od~0bW+lonW7A3YW;H=7BNdy|s~{g4a8C`(g7dhw47 z>Df$oC_2>(Z~mOy1e)o6d+eG(?S4s#p!OmRy&VWs?F<$(_Pk2b%^n?3IG(1{dI4hA zDDjXuDOt~&cKiCRA~ch(d%%pMjOOA++LTfxi~t^cD=EO7xV!DNn!v;-_YO6V`Gb9! z3fNNsH!JatvDaGpK=!e_XZ`O`nz<=e59~;k7F&>BL7xj`-Im6i{4;k(Ooi|WVxODA ze;}j^z#(Lf+-Bv%>=nl=b~BS>|6j8%bD4@Xvee+$EXH^M+J?N0wGm9OAVs$`4hckI zgTACG0CVTl8yZh!uVAT?3baWTo1uv&041)l=IY+|S{7I5u&C=LgrYx4km z07sFN77WT|u5W{8`RVo-H=elr|K0KXbMsrsqXvIDj0yyjeFX^W=91Rf+cM3B)z zmxsV{1YVefYk-H>#Ri3|vg&iloI1niZSS^KbqJ#Zf+W}=(y+56q9 z2DT3%U=ta6l%O@jhnL{J^CBeGoo3M4;S*~oSTa89!~&?p)(*3oLR6kWbUL;PdnXc7 zTr6z)4~R5@)r2bPqE%hFapdVq2~+#K$5Mo~uL++WWm5VM)=N|yZ_ibKr{{eKM;Vi3VzI+ ztvZ2%TSDC6bb~~h%N)5WFr@^&Zf2ls7DT|6^v55_nPP#SXb3vkK-QJDty>J#B@Q05JZre^3P5-M**aJ%dSZ zq}|QpePDK14j8Zdv-*;QhWv2hLWugA?fthe0IlR{N(tLBA~brf)2vdopPf@eOU!>& z6Z0PyERbe-=$S3jqUoFD__fx@_tP|rSMw>tyh7BH*n=s=!wQlDiy~gWHajPFqhaEO z7kt>UEmIIqY?xvKgjXy$)XkVFZN={|g`Kpa$IOXxGe+fVJT6F#lqE01_)PNU9(`@b zjr~9TpX%a&cQO30+5da{|Eew!vBCfSvM$Fji?J@-7{kf1u(SQ$W?7ZxCEx(_$!(v4 zE%t15V@@Cwp{}4G(W1)WQ|hX|#ZHSUCsv8qV2R966#e^3&p(~l{n+f_ShIaN9pcJHLP?i}IZm!dja9ap&lrYdpN6Fz= z3g0*NOLS>l)vf-%kEHu(%soG~Y@QVtwMBwQ;7lSlH@iBxITyKA^Qx!3hAOnQB#Bh{ z3QC-F^*%E(yfO*cb!DeLdDLnRn{4k7-wTT|In?=Hc32#@YQ~K5Eyh9lf1COQ1siqh z7~fA_aR2(NOTErQ!{l=Pa5uMs6h71>-j_t|eTuSn@XQ{I0HMN8#BCEddH*TCsp{wH zdZv(2Z&I?&{tm1#on}9vi$_+Dz@m)MJ6M;+VaGd>jkKcmSHrq}M%>!H?X*6y_p<#<}jM5r$bC_1cN^b zXsEcr1Wig;@`t6_xe1xB?{?5RIu?le2snwU;us- zfPf=OTb{RmQfrq~|6ON;l;?eS;P*?H{)=jUIdLcL^Wo_sjB4dIFWy_K(L)WPJ=a81 z=xdA+bd#chu8mWXKmlX9vrnW6n;tP#5z_cFF)Gw)39=Jwz7o?e$pKmmy$`03YhwpP z=VyDXYeG@leph;`i_-_EYk|jh6c!t#-HBNl1_8VHlc)Lu- zr`sAsR5y2nL^1jjit@Xw z9DDJlI*eMs#C-8p&##v4n5||ZUeBXJ$8F~KzvxksQpLf+hA`S@3zTS>ae0?`{JHvc zar6D$CxB?q`Q4+@ckkL_bwx9gY3wUs{tezXi>j*2-9=T;46eK8&$LQ1skA`&Fvm+V z(|GR&1ZuoEZKVbGX1bZ?_{D?Mqx+LD``*FLTE{^~&#!z<9=P-lKf7j&wAbC~kxh9A ziZpjvz8j8X&g)s~ApW&u+DL!8N8j*5F)ZCGQNMSs{ATBS;XNu4DJzAW!kEd~EHr-k z70Qsc0}tALGq-$q|Lh7?SWBMwwHrUXT;onMONRI5pYRu0Ware6>zNT=@z7zgbX=ph zbU zlNFs~u&{=cnldxq*p&x;G2U#txD(!PAFx^Cd7P7ISYi2|*32HjdZzL|E~-wjj-mBY z5H@)UC3WaPp_P-QLlYA8y=QX*8^&5^5R9wMAhefN}VTt zNfFJtPyLNci$YSOd7p(`GYnpG;~&Pac_#_|3QlaY#Qq`)An6GHT7GyiqWu^KC^bN% z(uj0i>PWzNiGT;SbP1Nx4OEJO`Z8X#4u!|g#w};KN`g~0=Fg(;sdgt>zjI%M%7#B` z*>Wx;Oo_7-0LoaCFNIi=MD4;*R~SH>ry*lIFJCcg@e*OsosI)j-b9jR5XY9kB*+~?3Qyl6T+u$Rm!k#J&|u*oZ! zZ?vj85)PjRRO>e6>Ka>l+6Es4Ok8f_GubK3O6&R)Y@Bm0l9YC*jbbr2k3paH6}DCW zr6|!kR4CL2ma~AMNv(iGd_1)587-mPf!0f!Ei&eMFWi*jP%R$Z^IhDxe4yzWG4(}F zB$wXe8XqT(oT78fC+%?sglW?tlh;H_vIgDc0e1mx9jc!|A$*X)*i@pn-`jG}^DWw= z;n_{mxJw$#^yL2WU7?fR{`))O0IsW*$*qp}lv)SD45sD~Q+uL1wl)+_ACF%KW zwMrO7rzn6P&}=ft9!E)`kPu3W4-6@m&Em!*Q!D{H#<+rhSs*=oey%Vcl5Ju3DqY*+ z^yy&$FNy4#zE((zo!g-DWes>DNz?=gRW*qd9!oMfJ$@=jNtmtgxeSpYeMPjE1b~Dv zNA4yr2CMv3()w7IYMK$9YGG*rmIJMP|Di->;3c6&3a&8 z;wHUJ3a}knhM}SuW`G3f##eJj>K||Zs6q$tWoTgbs2e9O90VY;>EtmrU-uX+6L@St zs<^jB<)5Yx9b23W8zLsJ+aG&fA~@h!zE^CuwxyH3O40C9jg#d2b~M*!+jO@-UTH*K zx6>9+>e`C-#ghtAq&Gi-c_^Bfwe!Q!6JZ^5b?#XY;iv(9DgQbI8)a0e8&Q=i3=5mJ zpq$cF@>q=L%=?7=-ae1%L*|Smj*JT_3Jt{<87n=Og3>YymuKX$X;A_71v7Uhe$ep^ zLM&%pp-4%lA{kM2!e4s)ZKm$R<*@< zWmk|y)s>_5;J-;-i7w?3fevXKo6ges|WY5a=?RFdQ@ zlGab=rGMCgi(zN1B@|a}IfG|uUJR+(qi6bjnMq1D)e=aV62ak#XV))uubovm5mJGD zf!_|4T+-^r60t0j!>BQh9J%pacI}=sL3Wc~?A=bF4JS~5pC^f=8O}nyspV3kfHcCm zIQVTpXy)N!52OjIj5+)b2HG5ci1Y#=FRni-*Q7@;zU6#b)A7wO^Xx&*`6VutIFwZy47>teEdUU^K7QK)IM}fN1VA>6lvyK&qjyNMty>@amq>nzmgt1aTX}1Rb4#QlVpOG z_mi}J&n0Wmd+lt|)g*mZhHIzE^P@V^>{|bHm0?dGz4U?A8^xAv^Gyc@$A}UB8Eb1v}jZ@fk`zFiuy)ao6E!tE}hvMa`cYN8K0it z!oos-iPqrXb3P)f;1Tnq4o%8)B;IY>S$_mj<>I;?wwQ)=(j)t9$JNM#zPk#a7F7D= zZk{+F_}b~lDtSm!#o>Rw6*p23jH+L_6M$FB&xz@o8X7uO!Bogl0qm5RgGKr@k5fGCskwQY}n6qkt!dwBlbFDL*S=r}*LaoV}(^iD?G0$KZe#u$dHIY?$Y z7zJ;L)GO~^$2YkDXojw|SJ4kK&<@7iyQGJ!9B*op(x5%|3#{DtR)vTe*^2}x=CQuS zRzi~WaOIcrvIi>w>iDd0|2j%2o^A-uPk@O$4c0!HQ@ev^fr7NOG_*?V0z-R8oXO-8 zcMGqJX{@U0svnf8D4k+a7|HSj@Gcy zQ(C&#VQgh{`&LDfUB388$+h>tMiI;h-%W~EXI02ySgpV-JMo1oO^@0XV^IU(3x=#5L)S0D#UM(+i zq@4H!&Ge*`+$6qUfw>RuV7;^X<@`)7VIS!M4E#3ZLt0IH0t5bu1`UTQRO~3iQy`v9 z64+Fc6u|BAvg5JHw!GI#9`|=0cUpGIJDD!$5)zznzyPcu)b&ytEP7m8#l|sQQq~BR zvI!_)cOf5?NCYsj+iW(b_rYu749M4m2*e-i17|%EQ1Mecc^A!~-*KNoI!*0!PZ z9vNxA^m3I}|J{{Vk~vt}P=rhv*Z_b>b==cQ@H0rxh2plaBm=djrsl>k$H%sDJoD^n zhiw&f0*?)oL-Sv*&5GqCUzMAEmB~`I%<}b#h13!ccmW1igrSthGkyIPv=sUlZm1~L z2&gfWn>xQ=sdFrPsR8c?DwTL%?*YWlam z4B|BRMQz5*LVYaO*iB7hChRuuiSp{T3k8E9zNBt2^0iNc<5Nwi^%1MXI*v0bW4FTp zcotBS6}{Yjm5&`#zAkmekq_&Q5xl+Fz;fZ7uW#?4OaPll;M;`FTd1xakEWT3wWVgt z9cM(y$Z%n?Lc#!`N)F#6NS+?IN#1jhRCXj7dTpU58qoRm5PGJq%ErcU*fN=YJ^gHGI_Fo;fr=HaJCK&z;%z7(LTJU_m$-9Y! z{1F!fWfLLFN1onTl-;))t~cAHvwUVqjPqg;01M<(qJL0wN(H695nS#0M>&CEhmm9C zCzDS+ns;*`vj6~7tK?hTLLs3ZKZ=jvGaIzO`U-7N6*#9ru+!Yr9Kx{N6I8Y(kh98^ zxP5-lt5#YN7+$rE{dJuVw@b=Z4FeTukfM9Em%^3Bb}uVCM6OW&=Vv2>4In@ekp8bA zBO(Kc|NLxlkg##7kSV#|;!$&Ia7$XazrdFYr+KGY%43<@LO?6+v8d%a#4BUrSdTqmm%5gj@fT|6QFyD~;p)*7i>8YFwUNI!dR zyh~ADiHbi3bnEpI_bsfn0~PxI97}$7(eT$?Fc#Po77|T2y5Q(Dh9P)08cobs2U1d2 zUcOV=jVg!Lrl_}hylHY19%M%YlPz4X-831kv2P;#=1V2=49r+iHZT)!%!>X%V|%YB zJutG_9@m&(=%1BX;NGiyRcPrXhYN%we zIeXt2^UX0Cd>blP%aYu@qiTcgnq1{CP0l%L149d#? z12U7BY_2%U>DuhOYnJ6?(b8AmV5usfhK{&qlEPQ?o0|J37Qg6$9%LP{p(;{7x;b^=p3!tt9x# zT`NHUz`)P_HxAB`h8-h<64n}RoX4BR${Y}DLFf9R+{#)YPX5xeBA(L6b*c>m7+No%&~YM1LX(w;v+pFUBU~JZmvyY*=kKe9G>a(Q z1JX8+6s9n%;@0D|`ng5 zKBq#7Rd+{cyrb4nn@hVTjE=U#L-w^8T$p85P$awsf6NXb*Ya2a=rLfImeQElsp`Y_l-})AXCuW{%=GTp~eNFQmn95c*TEk;F%F;8Lyfh#{mQA%XX}qL=^9 ztmVtkx(pjp?etc`aoi{aKG_Wd=4W~SsrLyq2W!7VRYGeTV=@i8m7m2@>I`xc;S*qo zICQLIGGwT5Xwqd{D;kgKw5GJbtMTJaGNwjwF88kC8xUu8D0*zAjipL&|5!-X`|8iD zZpH|RxFE)-)Nh>uR^ zMrpymciH8hO%8#_NyG3(D@Erf^PcKB=j)_-6mWsdDPc^rwVf|_@QvW<@pzgr0o)D}u9 znl_<11?o}63kl6`vCoRDZe52{ya&X;?)tH&dvncjn3q=A3)3zW<;oAr?@5EQkNWjE z&dQMZX^M+{ZSILo^SYMy8_{rr&i>GB$ae`=Qw$smzZ3NICubo0YXugYHr#+Gp zQmOWjQ50wyHoTt+d4q}EelNJnPaNBctM1#`7^-L;X(R}LQ|g?G!;+`?isizev*=~cCm+Z^?yB?0+gR>NE27}C z%F%umwoeq?^DBR)nPESbpKL`IRVk!2@+;tq+7I=-)EWwV>@UU4EE~t4zHi*o`K$g{DN*W;Pxd{R z_8;Na*jKy`)4K`fe9L`n75jzc!)WD^89)1(gNR_K)qKRvl zuXTs6P^V=&#-aZQ99mvDrbS8o_;wWcA8^7dM%;d&yO{=FJtkwx#s0akte@agh%`Rc z4s%={lTDReJ*GixJ^f^$rd8^m>Qd%I3l2&$$n3H2l1Fq*aGXSNW#cIbX4uGPQR&j~ z*v(R@*qzd>E8K-Px%eIvrTzC7T2OGec$I}cw(Ea#TX%5zRWzf7)(U**dSZJ*&$VI8 zQl~d#Y!yj2qmCzZPNbjZ3}?RoC9kQ{U7z)*bM9F|y8u7K#>K?t>O#IG(m0(2!9ZWO zO`*fxM#w)^GcYaH{V+0~6s0DwtRG)Vu1%w+8><>MbkzMJo(n2CIL3jS!Tg}M#JL4a zUYrcA)#}$SZ8G}9;-gj_x2-q4h*7QNOf`|FA#p2VBBo# z`@{h!&*ykF7W)r4UoksvEtNO)b`;SxF&kJUPEe1#?1=bfDdbJYZrt7A$wzc3d!t_L zaWs7#=hPKRjS=gFeU?G^sNTlZ%%!m@Q^^GFFOT|-MxP-Yh)-n`;-#->1OE6%!45wZ zfq`v8=?wGm@sbfObL?{(TiWTEGUFeG#+6L^%q=dzS-k{dyv)ho;>Ms=Jv@pHnYis@ zZL!vVCky-y30doIO&SE=;Q4POnYvF{&I4@Ieg7(3EVv4raI5sa)b{v&a&c*pj zw6<^k2+A>uiypm%%f!yRmD>!a?R-!9& zcPEfQBKj4YSg6@wl(w5rrAEE7;sKw@eN9se3Sp|}4Nrt-Q|@eqMp-bBB^$~KZ=bvQ zMbjI1SLiSmdfFd_CQf%E;OKrnBgZguGw$dPju;WU3HW#9j$a>=iwfS>GVgBPNlArL zB_k^y`7RTRVPAJi%!!D; z{^zrmvWC&V)$AV{;^~~a)acwcqWDa?rC*8)-7EnnLWgCa&ob}#=(0@}Tqmfli@9yY zD^}Nt*MvDTl)Q|`qth;#RkX9uUn|Hu3pXZ7?~=B=1seSa6gmCLnIUj?l~14HI(D2Fuq(hBo)2)=SdCRtQ<42TQ z2P~b_4@3G!r;;u6_AHZLcR9A0@{^te?hQ&ED^0)PBH2~#vP!j zwJ;GK ztH`{L6RgYli^_M;WOX5Dm?@_*_U$Ky;UY}J%i_m_`yw4}MIM)++hg8lW?7}LMMOh+w6`8NjnW!^a_Ve*Z)q?Y+-DUZ{st&3?ioc3o71PIX}g%#1;=>6&qkjw(t}j zaWMO4wf)@tZTJ4~u*crLa@g_@yRMVpYPU z6Q@k#($+H~7s*`J)>z{-MgDOXA_g;XoyHdb#+IS%AwYUXSji_2eW@7It5y!Yo)w&Fs}lMbKg#` z`#T#D%BEW4^d+zn&k=@R<$Me_7Q@_Dz$2UiUdJ4i9L^? zwN+}*&p9Jxu(?|5UXfL%W zw8-rLy>rfwBjS?j8$!5+8}%Nn6w}=s(onl+R<;IL^{_>e4~M?(VW@znKXpBfu2OVe zk3Y;uBD&-`I%1$CwNY)1!gLEe-MGU@iKNub24s!?@1JpV|C^UCJRrpGBLCyzI#(Q7 zj?|SQB{IE;8SXQv@RJCg)}re-V~Mq#dB~C$CG29>abAK6PnAb%h9;b3OYp{Lth=te z5f**blRAuM>=Kyn2WrcUwGb+?8>K#Wtx8YOBB)+z+dpkOTB(Bt0>J(;{P->H*q8f|6N9FB+ z%7Ra+6l>;zWVqnUsWuixyPlPm$n>HDzEQ1x3|$eGi6TlMf5rk^Ykh29AZrXB@Y{2! z)_NrSidb}`gcG#xv0||kw;U-M6kBg3R!8;GAFCYCx`^T`TdcUG#{^lhai*6~*){vQ z&Rw$c^8-+Ut@2hYlXtI35Id|aIs&QE%D>SZ<#3_5_d`lXr{s=aY`rJ;^FBf&3jk-!z*=PQ3FCth-&){>4tv_r@Dx9u2pH$G6-K9eTK znyxgQmX5wA^r`r2pz(o@<3VuOQ zNKWP~9ysXw8_L3xH7z<3&;pFths!!~einmriT?V`iSYsiTPBFX5n;CrqKFuU}kQ8J(HUc`K2-8J;Oe zt827r{@jGU9vZj9v5oE64u!p>MnM&B$;VA z_dK?5DCt8%Ni?dgeDzv>rm;^h`Ui5$vY6apHSzrK9YZO=wWed&VZ*L@mrm}jj8O#Z zHz!I|9CK%&S)aw*&sFVd8&^5~@&nF$+7{*=Ww_wKviUKeV{*{#uhd~ihJ^4(8Ygk&kMinPX{h6A|=nX|)18)=M>n7n*&fKzO3-i2^ zq5{2Wr_E45F2ju$mlkezkQ7gqv3qap{;qi~1mBj8a*lv0Tu6*n&)?i7oMr-bW$ii# z9WySL7EI30HamhY#31-2(47f;=x7|uM2udyo&VNiRC)@`)}F}3XI+96{TXQN6<+Q~ ze@9@GmdtX4f1|yM{ZdSq$0-%>VpPNV|NV*eEjP=fCTD+SFFNq7}|%T{+o+h!@yjOiIR-dn)mzm$%5;Er|8Xg;zhDcHgnhP=Cw+Zq@0($y`^=4{nmQAM~sVmX8rTdJ(+3zjtnW zR!3d>pSxN=8{A4RzUfm~tl+k6xdN1dy^L5ubFZkSH}T`S+g$og*0*?7mCG`YU>?^) zbH-AnTZGWARSxrNi7vlvIu6FoiUOYBd z{zw~&1-=4t`Pk>g0H26HPu5`ro0|>+`v``ftTFSPq-dCmh(U2|-sefSj9=jDyShvW z_4h%i95Q1D9e(`p))S`5!Z>$M`7Ep3x+XUArB82<({67MC5-BK-*HA?(D1fFpOa-r ze?#O(r<%Q29~WbO|3$r3DHw+-hnC8}{i<3s7m`H^q@}wM&W7%2D#`5W>Fh|?0DXEk zsquZcxTqcT{P~LQqV?sk{B+0F(4b9&EjwR=Uc-YFxmTK6CuCYt0Xno1bp0})PP*|G23@$k3Lv1VJ&O^_(QETv^Ou zd2{f=ql!pAUCPrxeCUxd(M5(8Ojbh7Ut_%+Z~CRH6y?|B3*z2=2#31zEpG~Ty;@Xj z5WZxuj85%FY;FQO_}qo_D;J#BJUVCkQKrr1s2wOV$i=nvcea`{NEqWUx)dVH%&!O^ zS5_rr{dN*i&Iu(G{qGXgFC*8$-B_dmEbce8$i8e*tb&Mw(mk`wtZ>uq^r;Cqa93A+ z5$ukd$q7{8j^U||Ts>zTAuIb-&G``Uzda z7ZH^{6B5acGS&CSa1EYSiLbf&B)k*($MwhiYc-KhSBac*J6sA;GtvR3-!N-R+U0hP z8A*A!f35jm8XQ7z#Deqg^iWv)$D_())iQ63xRePuZs=&zUe?69SazRXhVVHI5}2;` zroev0tx%HkF|EE{+Fd4NQ>WUjDN~m-nPgPn39ic3?5i?N3U4@1O1tq-S}teONt8si@jbM};7-nrYsCUGf$sa#!4}+fdgWM}2ou9t4_B#b5Xi zr+d{n&NP8;_+5V|m{itcEINkHE)*RlrjJ+DkAQEZuXncIO~>J7MHJYToq4k1HF(u| z$s#L?QL})qo}VRq8QOxfJx64kco8esV~}AXEvEftm2F?aRO+R#9~0}JMl@U%SxV8V zEO;@`h(GrT6_%wsF+V7pfcUHQ2`+JyP7XA$qjx?Cfv(scER?!;Rubcb1)7q>LznIgei-%|*H$DdlOjrV17p zCaU@&I3otuvL853F|M^VbR=kN z#5m3@>Z~Mwc|8mmgk+og6k|m}>qwe~CLG>>-o5pCL!pI8Zick$KcDeb${8@P7e#Hx zd%mc*t~z94HNS(z6*8qXu6vL?d|&sr2zvM0*U&XyIy3coI<+7U&t7mRu2Pi|Hm;|t zsrSi=i4?>*mQQ)eqU-8AvF-08`{|&Is1XT4wQA4(3?ie_Fp78xOdgoq^n-uZ!W8*%aDLT{YpsDf`@|}g+#Tgi; z97eg{o1@=@_z9!9oALw7B&qB64Xc?#?gC99?_%7Ds2px2IlXKR(Z{g_H zl&8{t=+j*=-w3Q2$+!?otZADrYSA9PRGT0@k3fkhJxVtQ77OK6uDw4#Y>2YBR@!Nk z6S=!TRBJz~F4meoSIvA-{f4v{fch?m4E2CAbj8o>6(qm2BS!a&zWW1bWyf6DcuV&I ztr<2Uw6~1d4Lg+u`QBl_{T?I0zpb45J0UPR;0oW>8sY)H-K0xt^}Kr@bfiG$mAbI{ za+CPdt8l8Srs(#KS1UsdEJrD^z8@BImy7SC36~HqjF>a#YrM}lE+1N-u6Njmp0Dcw z9c5rOR`+}<(o^wul9_hZc@H=+>q#I!8}7L^vm%0&w>X$;E`nt0#oeo9VP-CCqfx_> zg~N+|s_jCc0pK27gTb|ev!x5hX(?N1*kflSJ)>Eoq}HL=aK{(xGcI^9KQIbiGkO6`~oG22zQD_jodnPKys4|q87$2g0@E1k0 zz1Ciy0*y*@Gr@nAC!6?-+LtyhcKgw$GUKd+8(RCIp;k8AGyfPxo)nm&Ye@Vxb9xYD;Oz(iXi}D*Vf^W`r`>PZJ!1V~p}( zuawyIPI)SUdGh$!$1fqNM?yw;BKE83N7RHmCzRgSRLG30{jVm8|X8yPj1#R#D&M+kF4+ z8a{11$Drq9*Jyz7Hq^ZdY%qN)IYI>Yk<|#VaTB$j*rL)wbgC2MeAf}yWij$3zN*XX zU@LuuOno-iWEKondm$t{L%r8ZC^ZY*GFb?;%wG_zL6uk__2`}{E^mD$hTpms#+gzt z91CrkXPp6Ymz?E5ng?{!iQhh^;7@{=_MHD$glex(TRg>r=2Ds2Y?{RU!2Zv?{QO9b2QtFEeSHhJ^V9 z{OFpCqh4QfPy2}Lchfz+yrFnvV%ic%!JEH`EpRVlN^6c?3sBYlG%R9-L*x+7=&1Um zBkuvtOD-99#?<*}-@ueq=DUqWyD-Nw_^@QXdF zB$oukM+Q@g#lIqCTBfzT|GM2^DA`ja{r#H+Gl<#cTamT5;58g&EnqQOhh#|+k~k1O zn(Iv3X%_|Pi#ElJmkSOxvZ;9Ifo}I(y+VGBSZIXsonqj4B<5m zNv%xz7C``j_G_e{RGrT<`uRCP+z!Uaw_d#GEKBEO-Tp1o!FO%`zG`TML#YwFXF05= z(yYLO;dvd2sWV<}eU;qJ*z4I*`i)U0-8u}Az=QjR?B}#X)ljztF+Y6Ba`B6WwC&sL zay<;l#h^V&(;H;$N%TT6&mEN>FB9Q{qL_~A5%$6k7u zhmBcgD@@!WFwyRSu&etkulE1CzkqckKwe@J{K5wxZfoM$KK9|~`ef!Uu5zp;Ki{#c zGg8(zxz~+B3OFpm=g1u!Qh?dl07r@i6~chx4B=J92u)l0>0+I{$3zBw#Blh_rUICz zG@eZ<;a=1!oN>^eELkPCOEQPBQc5)gwV#AoEAUhU>RhND0$MV(xlO4(%bw-`QxEfE zem3UDZuHC+T9w zKo5D(jvRx1oCm3Pm+Z*cA(t$4wl0V7#HMpS9lLYQCwY7~TSusoNV zJs!M)O%1H(wXpmw<Y~vf@j`A=M7rC4pT;$O7Pt%OaceXQy$6+k@pkiCf5)uf zt`^scW%R}6PZf3(AE#LvYa9k}=U;NQ;@ zRKKr5lHL|tykDPpc2ZxRP`;*gG&_o_bWPifb_VvNeyUaY16oxa6 zvS+k1Lv?brmBL8a!qVyBQ&3Zs&DzL4J-FNI4?~Oxj3l{}yZfr3%V+$pd^v+u;z97o zb@f6NiBaAoj1FG(@3J>xJTwd6J(GuQ!h^nBD`Fxp{ad5NnS4LLmX?lr5d~>tqZnh# zpdRl7y)V^V@Zt>1#X>0|?Kf{OhbvK6X>T_lO-k?+3iUsB^s^?Jk)0A)q4#`{aU>3> zl2z7QO;KLNrL{gYm?#Ou>$uWRWw>8pJWU!ct3_r6zRH##ILXEzM#+r}!0ITiP=k*t ztRTd%WxtpesYz`GOZ*iqePF%%r0ZpzXm?~^th?y1#}BSQO$EojK-9bJ*m-?O5so?B zsWuvD$uniI@gQp5V*zV5JE|wd$8P+RnxHC2xsbcd!fO~P|HP;A4Ajvz&x2bj$u~-g zLigj7R^O9vi_>oObZlMXMe5ciRKYNXI($RNJh@p>6<^jWownR9ErkPqn;BX}wht@c zFBRD?koaoCj$rH;=JWH`FS-*VoS*8)H5* zgTIW|=Z$TX(Z!+0EuiMjil*QXw8wC;wXM(B^$$0$pDG87-}gXIWjz=X=h7Bg`pumM zMrBhMfw7DK)v;xDsya_rn?({(ealA0cW$md@SN7-lrJ4AbZ zUzevN#QE|+ga2F1U;hSmD{Zw!vDu2zR2MaDFrT;O%G7BD4OeQ?YR*AC@GGHTcIOHU z*^f`5cEHMCnjRE59ei&5!JE*HC_rJ|sZ%fG`;m-J^+oXhqIp*3TkSFP%y$(%=&~D- zgvkO1Mx7Gq>pLoAf+Lec8%_G-zMSY^8?ux7h6rH~Pi5__i|#(EEGiM6>RWTYFjl`U z=d@p+D{iMvD*{XQl$9N&7(M6Fo5eqc%Jj7KoXUfft*ZYbTI%>WkTSj|+)Md$6(cODmbnh6I_DVkq ze4MBD8gFC#h{!c7pR9WJE-_Rz@J zp8UI2s*c39qSMX|_@_N3KLS^2-05SMco`&jWO)Mk9X(evDr_NT(cCa=BpmyrqT0l% z!e}^S#YsIYrXp|l!n&8T6QgHo(YaWF)vJ#r-6)N8cIvD>&VtM}SNQ*Dec0jmjzWYi@;n0-##3d|2sPYsp3pI< z_=*hx7au>5)4dhtu74pal#Y(?^g9G!rS+Rdh-t~Ic_NAhlS%&b=6iicW6`|#K&^t% z3Gv2ZZz)Gi%lkoBtoU7K$f>i??BbgF^nGME>g={>IcUe^J1rV0&Ky$P{N+a;Th5s! zWUMKdno`lhVRAayRwEzE%?$*9_Z~QrwL)^R$zk@XyavaQBq?N(DclyS*Uc^5#)nVV zqVH+_@sr77%Z!`5$R}u}dRvB$#HnkeRHOv>b5adw65`w{Wu9zPS1{EDPpOsf5tIsn zb6usJqBAB^ok|AP=T+*PE z$75Tse&{=OWu){2CWA1wXqJZoz>ZSL`;EUl;Z%kNxq70F(`2f?VEfM>+dFPw+7y(` zj8z^L!bdF#qONuDF4s>0o{E+~mWE-XBU2=Qy1!Wuc`>-byw}UJ7v6J-Iu~^?ZAJqE zC!5XBl@yXbH^)~@yg}>&)3K^u=h-0uKX$Id_ow3Cmq2ZX!M#H z#v||~uS3eg@rS(9k_|quwR6{SgO(rSoA*el7A5|BMhEY`+AUSGgbtw-&9>aR=q#=A z)`H>wD#kyn9#B3L{rSI0PGz@LKN?^wnD)uJ&$)b%_BE_-qtVW_SDB$XrBivz7JFB> z$EsH+s`;pO$NIZU%j*XJ{xtMuVH=V(b2DH`MFYU6V)AT*Tyi_Mn?RuS8xdek5WjGo zYX6@$kMr8_|Ni7>%4mp2<=%%5?fAL*^2H$5v!$2AF0~dm+Vzgjd8?^`9lnyV-Qt+p zv0!eW7#lUH@j)`EO8%a%V%=lO_rJ0vJ%9HjW62mHVSg?mRe!HdEkJ7M>TgN+PawJsX{{ zorz}e38=K|!MI|T7F^-gt!$Nt4i=u&yO8lo!TEUKFnk)>75jRLVTj51hmj!LQu`Ym ziIl!xgZZTJ^wN1c4utH88H(?kICM!*=<#rM$2&LQY3_Oz6sa*YRM<g3y9M9y9?RX-)TI_3Y`=N*MwB>iMy9D*Y<)AgqA@99v5V%f$cLTtw5=p9h=o5Gr*RuG&lEM;3b9Vim- zo)!KgS9Ks9h7g2*$TuxNeCP!aoke=VBj6;B;VuheP*T;f?K%HqUNsv^md3s?jB!}Y zD4z>cV0R~^ko^sPG>U)k%&Ej5yh`<@2GRCRn|Ty zo05}VoikrPHDLFTxmgZDKF_izg=khqmo0&G(0hh5Y1gFC#k9KSNYC|}KP*TVZ7neM zh{2J;#t}!PaWjQmPeul3C4u6GhB~l&^t7xWf4`1l)Iuqg64U>E_`^c>$|`4~XMn2C zN^y=mrIF?g4ST59uaZ z8kTX31%Nii#Y$TnIU}(bhziLtIdl) zQRe~;CjtvYk$TT}994Dpy+;LOtU_(bhwr22)~q^(D(jE>3!iceVTB=sfEQeWcYr*ivIbk{5bZ+nk!E@ZxU&gINyYF_+tMz#E* zYUAHJG~A#6oiu=0qVa5_laow*x&1Cf$z>*IC(2D>mx7^KP^4MFpbO4t_}`xrEi;6V zMjcEsww;T5e++umnPh@@&X3L|;t3X}PE#wEQ&n`z^1}YRtM#Ev6}sK|=-R0A^1e*s zdY!coFfZ9uMmN7V5GH>AZE2D?+at+-WHh^c6h9T&y3k2w;Fj?TcfPDf)(aWlm+oqZ zo4JmY9@i-NX+v(}5IurPToNWJfIcuX7FSDi-u~kU(cV~7uM%`y3XCqM7+M$EDv&IK zuTBMOTGB(SaM%VfOmVOmVw+fy%^5ybqttAD%6rF^LfWj@D22IK4`k^uOYpcFi)8nd_Nq0CtwcBJ43o zr91uwPz6`XR%GrRFhvYwNxuXGl3S9mIA#M8mK|_;# zS^?}#`aP8#&X8}Fa;{CF;}4}HAxg)P*<*k8@7vO8@ux2Lme;>d=y7cb;qg+F^=>f| zGAmse@uD`#$gde+BYGwyU%KJHHCk>sbkjR2kuP~+pEJ#A(J)YQd;l1Q)rRbv6^aGx z{l_awGx(pvo`#xImH2NR^w5_4(;)G^Wy_GFXbpHeP9EJxKuhjUIguw{?PYh{XJvo$H)MXzO@D21$U(u=j+dSvHcgd0q7L~qHe!DbI zI}^TZhV7sWFh?hDW6{3hc~_1;`U~saWb768>PRpCJ4vW~^+$mGD|&Gut{cWJapyIe zM!?kWM!FMf=!?X+7ChDNjd^;e0nZ zJzMY$vbuW;{Of4XS;S=!Ft2QxKX-)l-u>enEz#6GDNtrAc^u_qZ$iUP(-KjxWOUsO9- z3u;tVBYG1zI~5sj>%3sg{x0x7ZJi#D_x?^ABGNGmqZe%zg8BnZJF*wWEShX6dt;R~ z$mv1q&*tCDoH?V|JnVh*6e%+9A8r)Fx04^*(%mo>POA>A$oB@@r0KI$3pW^FX&g2< zIS}&fTLYZKe_xiY|DJXlFtR?kLR*n=9bZxJH)+`4AN27pb}(ObE8Y%S_wW9wE&!KmBjGzw`emCVorGK%~g&OmvbpA9OnA&T1(vZEzv zS7~W_>wH*!PxsjNri-ydpD@Laq?7j?9&5mQ7A!zq`E}hB(;#Q2j}GGbyMD6#7q+DdyVjr27FHT9Wr4Vz z!2nF`=KYVJ1&K=ZR9$u(MKHqq#5RIg%|!+D z!m4jCGzt_~i%qlDE5HBy)2Mr{d~MqKh-)}m{POah9;QQTPaHKZjt4uABpl9_?(3bH=c^uaA81E=A^5qT$QkCs(I*r!(Gs*{wJ`evk@7gt{b+l}hz zBd|J7u>#avNYM@SfrmFF%^25h5(Ir9^x?vO;NZf40=0@oPCE<6`n6C|q?q6*aWg*f zjYrX*Xw{mBl0%pdVO^izhy_md9MNCUms~FH24v%W)%n(fZkSNJs-f4bJ$XcoXwo5P zLS7D}wJw-8Es5?ntbLT*<`swMMz5A-@IQo1i{2w{!$?Z^PV~8YzU4+cW`OhqH5Nva zPw9H*ORdSO-xqh#-W!v`W z9|71PB?cKpr;Y`N-iY2F3cuRq#42XT9K%Y5BKQ{e%u83n&@<;#c6PqgNzc;2&5#99 z4nU|2%BN6%8w2r+?d2_R4a=fH;HJ$_RhpGHge=!PhiW{yrkl&|ULY#1ZI(rwIu%^t z&zn`np7M<_Ff|Eg}_M84|SMA%oZ*`pHJxKBr8^O3Z z#Go>sC`wic$ZN$1(c{d_11*MrjXnVHWcG{3W3=U!s{3fiXQo$GveLC?R^GhL(`dn|%#)DHIOmV-I%)Is zMorR!sl%q^p%tm4kHj4-l8NpPBWZ#XWBl%iT;Q_pbmfKA@`a$g=DBXXzoQUU<44MbEaXqL`oadlu1?JHoI~LYGi|C0e0rZHeK>aB-YPCM$=Mw+|L~=(4X$DjKdcWyQapk1 zZbSd;9@zmJzYV;la)#v!+M zPG=Ngd(+tr%ZA78;6?deMcHkZ^^l>(UNZ0%`Bc=R{ zNseUbg*r<BJPHsoLeH~)L?|vUS}VQy^g3zHzjr*TxC5iMdD8K*PN zrx(0tQ3CroOMadZ@B+p-PSA*_h24e{y9(Fwe~I6S_0W7v4VuHVpNBnMZ`$`UgZYU0 zp$vTx^_f_9zl;*h*R?L5_;cHvzIJcJb`lP&MquPN<{dMK$Vw6RN1n6RA{>;R&zf*m zR|I%yZP3-GCcY8wgV+#WGbW=*5D&xx=|_@=#IFFfS;^4)jpwBssdjxk|K?%iO8$$w z@c6k#w-}2AOWzMm`;13pP$5@5W~zI22@&HZRW^lZIE1~*f6!YVANWZ2z)a>oerZ9} z?xrL<3n!)AdZ*+1mg(?WkjQ`+BlCMPx#dK~c6Un2Yrv|l!VwIp!8!Z`vnK*375_)4 zBn2jAj+-!Pqn_p)B8r#k`e8}VbeB0s4EuGVcwSq@kmQNb^K|~w92XA=(HmF|ntLD5 z@si&zOY+eRbCuN}j&EgJ0p)!yGc}pT{C(k@<2sbd{`fT--TkQ~V+C6x0Fvxj zZnNgS=ch+WQQmBwcPzCy0hAv4DvF2zNxUZWJYEW=9c}nP7^JZ|LLs^;(&>Y$BR1ge zdj9^l9L2L$U+Pj>kRi%@)G!Nhy6@G|zeEsvE zugTm#Js-lIB)~HL>G+e}^SHsfd>D=jBWf(P|sma#T7XX$UGVDtX*kZeMZhxIR65yzDZa;J~)@DCh0^ z*T2#3i_vWc^CZf)^Lhe@;r_PtxXH0$fUua?W#c?Cmv=_LJW~jOfR2 zMi^zTzo9Af3EVYq3>-Xm^u$)BrNtM;FqwHSEEdA#x8h4$PClG(6JE%^&&Wy*ukmQW zwFiz|_xSHqE>&DFGTgaja(0bKB53F2#L#pwYE~!)t|lviLI0ntA#0Hrxye*3{L2*& zZLBp&evS^y&5Z0*;n;!O63Pb+yu88(sLYG_|C~c~o5@KNFy$pYC8Dl*PXs>AC)JJe z4iK;ElfM+k^fQK-ZLj~?>zsi)bqInLC|Abd4B^T1n^A z=h@tTSOt4W@r%WU3@OjE|9{_yN;1zOAG;88^&8efn~AJxZxNzpShHQ*StBu+xbOpd z>lTX4Lw1pz%QVh~Og*=Bp$7#%<*plAjC6~5e(We-A6_}tet9+su+)%A(CMa$H3Ofq zmQgLhY_waVS{9rdyUVz&x$kyY_T=wDC7Z^1c*+f*@`UTh=m1iww(Rx9xBYDWErg7# zKnaU;5Ccy4&Aw-l1WN>@l+O_#J{T*i85{_YCo~k@7RxLC`x8=3VP2yEDD5vd$bPaB zUwrPE~%ddR=bKr!|qmKxT4jRL0t5D^K_WVqEl z*Ags<>fneyPt{Vjm997c{`8^N5$&8d@7LiU9bc$FXSV+++CAdFqS#88X{`B=22QsM z`%n^3|3E?+M!i?T&-8_5$(QeQo*DMSKs9c9{PJS@e|BTc7kw7etDO)EgFwQKbkErP z&x%ZJ^DOC5#xp+I%=K&uJ9V1=S58ibP=t7Avqf&%Qyu$)@@P>e-0IlshYF=vqgKsI zt5dgx8iPXhC;e~A$XU?^&w3{PCizBt6J651@N8@h62Rqox1`Ux3kD{tCays>Zz%ii z93(|0R4qx4PgLdadms5ey(lWtrZbD7V>g*Tek(|3)a9nl3;up~vbdbJwknDMJr8bx zLmK4Kk|IK!VgHvg6s5bn?_JCwEhU{6X$=BUeLuIj#Y5}6fv-HG1a18-goId%q2a&3$JE?s)WOmkj5s9)#J9o|c zrz;w!^2bq@d^CnIE#cg|K!GrfT#pE2fs;Ua_P8)k&wqb{E7?KsEoCVQC^NxrgXDko z+n@+8I}Y@I>G|;LJR}DU1d+9PETB*wLgvxFeZFUaooG zI>_x{E(g;334@PdLV-lm)%}u=vP8MpfTyV_BZnAwTp-^N^dGHG zR7!fkAC)uj(t4o9Ln;gG>z6ejh%d^Mb$W*_KPg{ab&RFUJn8Wk_SxXStN*BBA_gaj ztb{{8A%Ec1-kJRSQ&yjxVnQm(^{#s zox+>?S4@RgKW`73Vq+7^zMp$Kj?j@K2#qAIgs&)!aBPyxUh@j`<;f%W8#?~|N#u9v zeA(`$0%{fvAGANQi%-`3dzI|FbP9lR*c<%#UJ>zqDvxvdZRQ?a^v@EilT>;cHWn}x z;t!sfXw>^d67avVNyX195~95EO{4&j%#qKKm{B@wXwmBJ8{w#R@cdFJv*J_xgiKkz zWW`-X9y&BM!sNHH8xUT{7QnDK;uuH&&_>cPDdg9&6|997J7=m>s}+H+`W->*#>HyL z{BIveg$C#Lo1Ss3J@0}C)~UYyxo6E)7*xDBe3z-~4}7SvHdZ=O@)YX6;M}7+6>j{{ zGva~244D1>-~(rR>=sqbtgPCq@-EldAlr`JVa{H^dZrxlB_@@XVzf$thP!+VH};A{ zMd%aN@Zo9B)=*{_=v;ApdP4d7Qr|@=(`I<>(28nWM(+?^wpQl6NsX@aSc&6wb#ubg zx7p%R9+@e?IHc2%6~h3*r3#!43x$NKg~V-@vBEdoU?9gXp5u;jvV8Hg(%zSIwP+nI z#1xHvX_rOwpDLDEgDP?D-sZ>A$S<<3eFMgi8h;Nkh_V0du%%td z4dWiq>^l7r3?*JexiKBg|M*%zJ=68>FiIeLy19{iH}7pvVf<36_XZWNQ`7Htb;@^D z9$YFCD?s2dmP17mdW>XA%#X_JbjEoa$w)*4MSkQ*!5=fC(Uh7}(L*JPiLPrS_*M5+ z+E-OC6W&Su``PBcHqcWyNc)-GRCuDA=|G(`446TVTp!nZBV;LL;5tPAB?PGMqcVuq ze5jt!JcnLHQLXlmxVa1x-_EXTG@_mrk)?Zq0rn_1WtK<@6Ay=WOV}BQVCSWr}9?BfO{w6kr(@B4ARSHQuik)F9GJ2o@7js{s%ip2X2dpAYxArV+) zl5Lbu>4M-N{ew{!%;@(Qz~i)@0GX{h23BO!OObocL-KgltKTtkb$RGwe+*SKhqR*K z5YB9mpEWGuUNs}Qpx?PrFMsd<#B8BpI&_)Y98<}6@>Ny6v?V3!MYUvUdy@X|h3YL1 z)=|!!UEh#P-M;>&j|RuxdM-HU?VqZMBi`OHq3gt3k{{TzjU0(wtVa3jmmNuE(th1o znVpsr1K;;D_XOwJmB;9B_-eD3oW+H=IYyoPv;XG6o#5>E}lf4g{8jdX|XTj zn&s&jRyDS4KLu&3F{KsUPRrLnl9S^K)zCDBM<~3hXXi!NQYdcEC)@Xb9gq3iW}4qY1tG3uvW3s&*j;E;HppfXCAUnIMwY7ih66zqLbPZe`k zMewtS^&7X3CtqvYaKEyd9qV~@epgNg_rqFhmjT1M6i$`5;N$f7laQys?-aTi_e+yOIG3y46Z?em#%kO<5QDu8 zFYj92!Q_>9sSsOu@<4Wqc~Z}MZ}hid+=9xjuOpbP-w%fG?|2XlRq9Se$5Y2vAf1^9 zZa-|=OfNIHNjLmTv*XQy5Im>jj&_{L#F^kz+1|uZ#vSei4sxocLQI2lK?LakBk4T+ z*4S_AC{%<~gTktR}>&Q6q?1yRmX=i&7(2 zQ8i)}wTYs?`+R>7|G=HweO=f4dcR+<=gZ2=m_x|jP3}l2;%2L$(dsYDPqQGu+l-Sy z8V1LL!_X}7Smf}jFjTpTGDlo#e=8?gI`DginWfF<=UKqIMIVZ%0Ts#u& z*?xvj1{6wNePKpErrj`RLrpc3cM>c^cN2qdQ^lRji{VB@@FsPz;83I2U*z|E(jdHWI zE0@v=849%vGqU+doe3kD);4wA16jvzD5-9{7|lnyH)-8aZhO}SkZr)OeK$QK#uu(c z;Oa$2ZHW>~Irq1<{&d=o`s)xSGjno3DT|WV&bk>gqEwo@ooGC2g4n(?|9F?$yj;Fd zwT)gdk0Fl2BeSpc6Uqi<0oV#Wc2IjU39U(Uf0y7uW6gmcKdjk#5s!SBbsTBz1E^DS zmq;}~(k$OkMs3jQsH>OK$ez&GX}N+s&JWx8J26c=Ccn0DAL%%~ZKhsfS01Z1pt}m+ zT``OlQKLmVIXI1_DYp`Q<;RG0XlL_1jj7m*(Lm@6Lqo;BaYAC}$h?gC~54v$+(te_mf(t8uk~ zXV#vVyP4rTC>MLqTq&>u8I9?jpEnjX{Qzqzt8o3T@zg018n<|z)BSgNItpENWaZGO zL6IynDq@RWc6IPi^WEujq9W%cJ4p*KVbLAI z3)QQnxI01-N2YZyFcXs<(uG#^n(~_6;FbFKsroL1i#J&^IX<<0N|2h{)u`T-`&fuW z&nxNe666b4<-pi6m$oz|%sT`U@}zHG&7F;??8H95R1Zn?iI==!C~FnfI4m=_O~YMg z$$oosDs~8W`wiw5YJE%`zkr7cvbvnzFonFnHc~J!?342tVNJERiZ6?qu zSa-F_FE&`pcflB7eAGxIZ9PaRd#Px@khspD!PhvG%iMe z?SoIuA%9(^dWZ9JfPvrQx&t$@?b44T9A6{j2TLdXyFN*V-GAmcx>z%xJGWpmBG+kh z-Fesws=H*qr4zPf8DLd;1yvcY*y=k5oAhUGN~I663!H)s%cbLLjk$Ae?0?A5l{&sV ztOC1O`~%BSG`6ZUJ1(lfkZbHJcgjLXqIHy9;g^3O3lt=tUSBr+ZN9AGxzrjoLTe3Q z0+&ac%tr$zz<&(P&ALZ+6=GrPjfx1v2VLxjXk{PV)f(b4=}?Hkc+-l{LAoSAyuEuOP+{Ds$=Fi{e$azuy7 zpw^~Cj%5HBpWAyw;&R`ybLj}D6!Za8FX-1W)-I%!Reh;P2JE<5x()Y~^2nRCGQ7~1 zwGhsm;*QVNEPG`rox82)fl^5djQT6ZZDM|ethssuK$!s-2H0VMp7PT$y|Gb zy1l{~oP8utByEK|`r}x>R`i+5zrq{Ox)s#bUAqVKt{!ZO;)lbP(WVYdGL7BMm0}F| zo2DbqNvg8QbQWecmtuO|Cn2|M^oBz?h7fCRmb4uTk7RIMJA@__L;Aopg#~z2|113! zt9Ro7m$i3%a{Vc^k#z8UAp=c{cDAl=1Ku<5Z{&D zO88#K#%3Tr89(v{k1PaglUFc_o>)c3bP35q^Z(!x1&J+ zoYZD5{k$Qnlu}CBU&Mn9n8keOq7p97=v>~rlj8(413f{NsNxn?vpvA); z*4~rT9eQ2<*nWxc)xm%gijyOX|0*5x_}Ag#&mZ+F4e^57Dv20Zifd@GWP3lO*n3^d z^SDN|Kf{yVNJCk1tnNv-5pHqAX|5D@@7{#%JgyJxQ*FEbuZq}q>&>zBWGozyoD5LFCnR>2ykL*=J_k~zlScd{? zO5pHWm5PpfB8E40=MZTv3Dw|lUpyMh|}B3Ql;P8l#^*~F?1@;TU*-=*=^M< z^KvVbz!LXfx~MwzzMc8>IyZhN& z_5X|kFyM|f^RQIax&RhE8!0&JN*JA)#w~FPERkX=zBP95EBAv7=_cwY7x;Q%e(iV;G)p!h2f& zQ1SU@pqm%+ke@e|x3EBUeR>!FUXjPolmd8RP_Y(-3z@E%chix~!{j)~PVbA0b5}uu zfAxwczybU#G4R-fe8C9xR4#N=V2s(TM^XD6Bl4=)9)l&Lh#&DQ(r z0>rO?d6C%vboV$kXzNHUz`8jtx#T6}e}ywR=>Eb8X-sx%bz^3_&A!Y~Teyda>veoi zw~Pv!$?UP^ZoBP|!_Ac>|6zZ7GPY~UnZuxOh@;45s24XX$g4)ieO=IvzgGi!pDZF- zev8kr@l0~WoQUvG&6p29rOoGF*U-&`;n@5E?ygs5DjU8b-%x9QqZmW)*JWlU=v0=* zxc#u~%#M~c(qGHR@5bOUA!owIytj;M{wzXX6uIx2FU!a0X09u#a{ zxJx0)<7?S~5Dh-_aNLcqJ zhcK6U>sWfZE;GQTdp7F91SYd@;9xy-Wes3p|`F7uZzupFO@!gq(( zv#mq(*b99fXVU&Z1Os4Tk<~JA`)fl@Spc&9ns!%80;lAkxYV5pOj7{ zN!6mZ<)zAPp4rM1EM-bwULDpu8+uCdQ>@RxtNs}<1oT}jGXL#W6ept#-i9s$v-Nl&WlK>S6xku z*R%*G{fHMH1rL63c*+M3jnDQwlFi{N_k^`m0aExbs76e;lsHs26O?C7cw`FK!5qqW z$F}m6))TO0BYgL6#my~avWfESkZ41pS5;bLecfKe$Ft@ClwBphfC|(U?pGSVdmjn@ zdBey`ziupE`%7 zG6P%&>+6b(ZCMqRH!@#(H`UOlbVhkNH5LmNe2*=i5XY7dO|}^3_&{Id#0>*pef>Q)$!e;E-Yx{XBf z)>D-)zYG*f$|{8DvGi<_68=JJ7=Y%q{)!avquL*u%-517qb1Y4H=+?6)3m{l(}nO4 zny<=+t?IqG+Tg8GT@7obXc&#YN+mS-I73Tpu*HAc1-8e+k@_ zZ8!-PGeL~hL^_2UTcL)7jv>oFU;1D-z0|DwmKPsuIr;Na`Wkd@KJYNl|HQP(4|a`8 z@EC*mmW$E`%3caW;}*NJfn#1*4L;eXZ2f=;(3B^k5kvxnow7ukeg7ZVi&Y!nMX>N=rhvwnw_>R9_o{TcBUfq`FE z;pVIHpP53=B%CX?sCqnFXqC!BYLpj>`jkyJpx=+Qa%FnoLK#3~GXyANoWk;7Z&%RG zt_BB9>(MJ~sTRwjvzJeL@T#dWO>19gPq2iiZ6vII+nCi__HV;A*$Vr1X0*Emykb~8%%O4`(OFo@)-%(K%bKKODqv%*&?a8j+eT4~h7i;4AYuUp8o@944DdAEB$v!n9)-BS4=3-2H zDX%Vr`G)4cedk!naZB&G_+c5wDhH7iBT7X%+xZTGsaK8dL-yE|G(O{@Y2WoSFEOFn z{Q;wK?_53Bo2FxJwp@$yC)dbz~?`@m~kJol%m+$DWzyRuvRaORmMzXDH+| zE(Cac2w^QE@86zTGVNOL7b`$Cif4;S*=Of5670K3uhaynT3&x;R($2fQCd{RN+7?h z$PBte70)8y8;!U?qv$eAV1NA-(*VkV>FoX-uXJki>s5Ti?EE@XpTO5p@-JDzx_DuF z&BFsIlbeJTsKtc~{rh$rw(nnB_rF)Pg9Noq?jfRO?Ck}R@ov{IC>~l4K z^)$Ea#wTyRdZ0;>zcuJ@#@V_Tyukrkz%>Kxp)Vq_QW|0x29BPrJx>C$s-96zK9Hma zbyU&nqdsiy({#m0@M?g{7y-}*jgm1zw-v9;@2(t{cm>&S0Y%4C7G7*}iDdbXu8WHV zOHSpA$jo2-#kGJKKi()^LSq;UU|W$$5lnrX$`uoL?(pSK??AAHy}db=NrJq0YAEgi{|fZJSfmekH+~ zcxHUR7m@W%$DL~dq2r=mw1RQ*V(iz8i~qB?T6RMr`nS{0VW}Mqa^kOlRgN5V~Ib2WxG{>zqi@#EV1%?IU{OQI}$3SZ+3yj zYVA9TFYUmh%QWP*w-G}O*4i3JPa%O?Y={=ok~4$s3SY|jwrSgr{uUr(bR~g`Cp%hC z>5>=ie0*WS4#jNZ)J7F8w*9~_daNr4Rd?*_Y#yb{a(X5%r)F>E-iaXl5UU!(MH0Gq zqV(s~vFOVrwWAg#lVDO`XpI!V>X&jCe-kk?w#Ts2pEsO3?JY(2loGb3Mk_dX*KUp3v|MLbqLR*kvSD=Y1 z6VH^dx_VkCyX^+7&-e7Emx`z4@+gZXk={OeHVI^NGV^_+Htbo}&L1jxb@SlhtUzr- zpHN6-E!?I>;K4bZ+5+hsE*>p-V`#Yp%JLU-=U%XD)M7_`$*Z|A3X~SBw-17_QoNU= zpUgie?aWkGU$jR{XuI-G#G`9os+@o&8{t*;H8ru%4lElKdk-J!m@)*;ejWJDRx8>V zEdozee0d+n;5oF5a~i#VBQiv-?+aac*hZWPAzt@uJy31PC|8=_v#bdo8YYSYXr@Gr zj$3Gq99x>f{eh`8OEka1HDEz6x+iSdE|gp@8>gRwR!raaO4^IWcn)c#-Lu`%l8~^Q zPRbfe$DaZ?Phela(=*X_vS;@m@B(=$rdHYyB$kn%9Z+Z9pQknHAE;K9)SD$*RMtR} z^Mik+LI;Ez=yt)oBT)X;p>*5|t!S3Nv&B&FLz$uK#=SBvjoc?2HQCfk8trp*n`|fl1=60mEPD zw74wVl)H+d-;{nJM^z zaE}7#$$c!tXA#GXcpl@=A|Bm&K}JSK(Bbt$@X;9`7*u1yJ|FC`!MRHGBE)BX(Us*~ zySS!#weFedWY5k;q|1nkij8%xxD^?haUi%W>$jAiCQK#Xlep3^>h)BU*8MMmclt<} zllZ}2!Mx&)TXWY6?o7s^zc}FC`s3UISz_I`_tT1a2gws=9^(*j+G)Z;v*44JN-|Zo zA=1VBA~!|1@!4$tV$un~b>_QJ7F1mW9xs^^q`VF9RcV?84hh7h;r+86N>H$n+^1^? zE%cgI>%TYaVC%m7NV~&L|J<(8u;oM3PFgg)~F;RWF9Lj`oJi+Z}@ z`Wjk1+277c}nhwBVDXT7} zPW}%|7){U(DrEkA+wM2bT4w;DPK;Uw=&$4v{7G4BM(+zOWe}CimD7v10Vqd(s##Sr z3~9PKVtc*v#(vP!qi1!)fbKFbBWr(B5#0wlTZm^%+fKY2Bw_new=Gg6js1Xe`u#R* z4addngN%|3@>r&(239?y9m>pQaa}Z>QM-`Fvgf4;K-z)zFN%`P0*C&*QT}{*oi4le zeP-fp$Tgz4caYMj8hd-hYB|qwvRQS0;3`=$bVNeJUULP%Pkx`HvYDB0aJ=~>qog91 z&#E~ok$rV!Nz~b~HrDD#Umk)p1Dl9qvG6tab$r`QDZS?PHv4(w1G2hYOl&bFnOyf< zdb{Nb>X7?{^8kFP%%%wR+z)tGc#D5deZuW4Ym+>K&eaqMb38%fHV0R| z22LJbgUv`%&n*}5FS{Dt6Rt*di_KClJ2lIS|J^wO{LwHCC{@Um@XNmy8L?QC@QiQ3 z+d_s0*LA3sIm$ij{iC_t(o$Fr>td}P>=CmvZNR=fNUD-7^RKk=nnod=0E07|ZFb>T zczOJl=_jpAHp(^rN_l8fEsGBHml6V9y0kCPWF#6Cd3ej1dukl;5<}YZ_&1TMkGl8m zG@H2{>-}p9zs}pIGW}JOKxDsQTek92d2SG_GG(s_=01juwDcdQAUL83>N;8IR8`n~ zw!C3@!>CLumliG>yPYb8$AJsvGR zJC$5fM4<_`>4or*&r?zk7swj_|HlIo;}z_`yC0Wq;T}+je4f}HjtXB}{1LI(hZ~a9 zEOr66u~QUtH(!hjAyRp(OJq`f{-{4bkej2o7qk672wS|Xp@)`PV{_VgNd>3?$lj@o z?B)ZG@%U20WAnlf#$F-7nb)xhOV2CVO{1IPCy;b53MP{AaGvH1l9w1YK2dRyJv>Zq z&;Hc=C`DSeox8)%UwVm%$exDx%tRj(u45ir0n;c0pd8}o2s%*F`>ybm$uEfm8nug! z_RDN}yVN*W+E2htpzl0ZFBewVAS~jlxrT6HP?%vSB!cA+>6vIesdbSod zG_C<44s)))drL5hNhf~aaaM`hHbG?6UK8w~dnPqQRQ@=-mv**?LSbAqU~#Ph*lQZy z7d1vM>vBC5u@!H)OVvg`w9uk?f8TNR$CZP{DIb>?Ot@o}GuGrFLwiXma(7cx=+o8(BTwu^mTE8$WM!i>faTcX{f;lBlgHIW+C)`;dNNk@w}_ zYpFEFa$X+>VKv%f?$=Igk6u+T}J)``|5EPvjZd;|PX z_@n*~lVb^_ooxF1^}=i_mI<_LppBP=jx?AdL1N03sXl)ABdI+gysLGTz5qxc@^{@# z(0O@;sS7zv$rl~2ch%(-Jzxsu`+%2Tc-g9wTissuJWsyPIOvs}h39k~vIY{x4;EeJ znBT%lT*}MnA|IM{@@oT4{@ZbatkiU)>NmrvkL7B!-M(aWj6z)%7iirjtvBPl zf#J6EYP$qHd7JdyzlJQHsx-%h`;sbgq1_-2XFLiM}Z)Yu~etdAu7YdU-A9&nP3{jR;i`5d8w3HKgwMRVhUli{W{XjEMb& z?@=)>LRwFlXaf@4-R2kk+I)ip(ZkEmPfw^vpLXXs+S5hkj%w&{Uxe|i2125|3@uvZ zFnN;3X6Jq*kvO{KW!uAvWOp7I#30z!+bbP56Y*&r@MNG0AZx;|!6t7DHjA2-D0Lxc z0-hP^1w%mKmHH#22qU{G@gJI{2h>fmyARZ&^G_hiy!i}T$O&-T=#u|E=`S!qecxy= zuojw?$YIFE%qj5mMokpW2vXT$^uUx=YvL3q7PxroI(#8X7M_e2r)MH*DETh;I-~Zm z3T+3|d67Q^b1Q+bMwaxTxV&X=dJj?gQ94rUYlKBV)m1H=T_t9sshVQ-83?F~)gLaA zu`|WH_X^c9+i1~T!)^zaZtOoDk)2)PaJ8x4){5-vi>l5Qe49{*c{;Qa&Qb*)PxtGB ze^0-*{%@V|2wI-je*`@ugM|1b8-nh<-i}a!rDYu*KO8o>mpgUkL&OkmOf1~yFK~-@ zNfo5(X`mBhT|KQ^lGK)NWHpF{aliNac|-M_e1(6QX41xb;CQ@Ec03~E8`qt#O$av` z%LSFDqx!Dc-;gKAbT~J629~65o!4DYqk<(e-h}HBVT7ERUJ8>R**SJ~S`@eRvF&x$ ziG-#1341-FWhWJ)F*p^|CVzQ?Uj-klENDra5M*Z_tNpz3+35n`*5E9tD%LEw7CRL2 z8h|YRQ~2aas`HBLW5N^ZIn{h@I1TEHwf@Wr@OZ-d^Gv!;kGoXcg*Ko;pNx8*J5XiEcgU-af?O%M*^GX$=`vnps)iX14Y(N+f_AF zSkB_&b+18)P{R94XkwAOcVXgGy~Rfq61iu-C$~Y+|SN2fewK3TG$gBLbJ&A=d~SPX62H; zwayRLD4&Qzsh^4kydlrphxV4rN+eJ)vSv-wT+p{|pf}~QWN{G;1oeWn7&SXS6_!gk z=*KX^hMmbGx9?Ca!^yfU!NPLB@&Ea!Rk2|ge@N2fP?45zD!P&_-w8FB{H|@|dc_Js z;FZh#J+BPWU9Ra|gphQ)q?*?bO60Wpl#Yt*SudRb}G+A2j1LoAn-vs1hTvA53M7QjQdZ6Pmq_@C~^AoSdOpd zh_7Bgpp26cr|UFR5t(aND7=dVvA_2SAc9y^vtA8MAwlmvmhyw?Te%T#TrmeyuI+2R?B9w2Pl$??BR z8D$0VS&Z(u-~7k$L2{8c6AGcl^1>@mj0+MFGS$`Fn8YRoN-=!&*TDl;b9Y&hwn$2V zFene>wKlwm2xp(7G%O5QniI_n8&vS_62@n~w3i$LJAgNxk{6@^YM*0PNWOKq;IR|G zw^{ku$$+DF)Q;ktkj2X?Iutib2Vphchn>sxBQn0i3Clp?GOC73@Pq! zlbwt`yV_HYQMQBvPV&0&&l|>Gq~6d1;e;u?&C&BTL(|Bs##d)->=^WHj|I>%RC?^> z@fm&eLAsL?Kr-G-hO|lQ4(>fO`FJjI1xp=RxvQJ37JDt~4Dkasik^vFq$xB&xvfzP zJC+d{8^tg3>)diu2Mqaa`}dbkU21N+C<(XI^J`8{WKfcv!)3O2z<5x3l-^*kRhOX} zQ>fXC0I1yU0_k)m5;Y@>cEo!{s{CXdV)bb~PPmYs6RVbLK!v^U!C z!-syY%G#ed-p$emV+Qrh)wu8aRG7!CTm(O~%AP5|jg5qxKyP0dSW;u9KQe(;7PAv( zYlII(C6SBikb-Z^u0Dz|6zkzBZd1LG&=PWz?(n>UT<+?rVY}N(*t7S9 z&HuQJO+tgwd0c43sd$J+9O@&)0qoJUnEg3-yFEhgu&#mo$W#RS8mmi4W$aa#s6=Gp zP7lOJ< z%TSV+amA?+!h_=Pf?MH5W<5??Jzn{yTamY7Yj`~I%ILs_V6RVeNw6r_py4QE(s#rZG zjjM7?WlB3Bo};r0w06w$dj|(UkRLzZ@xQc;jeXH|7%YdEmEhn}()5sQzmJ@UkneE+ zSfjhGEUrF~oL>_hCV35?jRZU;noYDyarDu2XdfG5GJ+f!7j4nMMzJHq>rXb))u&~3|<;0clt4D6gxre2P=kfg3=7vMb9&ZcGK6-=!VZDyWsbe@-i%= zqh2{A-x_m15$3CxR!e_P=aL4KcFeamNn`^qVAWmbmC`yIsAIG!pl<%%+IAcz1b71vIe72fzu9Ni+_ zKqG%fn&dZBlmetZlv6)U##A8=G?`#PoNn5Sy$64mYnT1jJOu?pCeDV~xv~LdQA|NT z5`4#J-0YlNPj*V#Z#HQg)2TOgR3^mYBJ!+yWt6cu!m9F7R*rPtj<)-~=-z1Ow3QBi zCX-QHZb}yRF&h{#O7#qkR2sUdp(rgBsA=LFP_@~0A&+w#m&SB7Ssk+cL2{GrVrnUC zq-QM@FuPXl)lkH?G$sC${C&u2&dd@g@y9##KdNoh4IPL#txA2J0G`XVN9P;qGFoGrIzNhj{x*DEd%Z4WVuoge>?JZ6tT;Kj@Z8Q+ zQD(iY@q2X5-`OV zV^$kH+Kn8#pN2M*k$w8E;jat0<+329Hne7x%S02DalvoN6^B>6?GG3-!|zV$atX&& zOjmLIz8Ym1k;h3CKmL)g83}l@#z;SoYM~@<&&BloBW+=7yp!fyh@@V3_e5#iaIn*) zUO+YD$$B#`ek%Y;gS5E+wrWx!$Obbx+IJ~N5{V6KfV(|eVIX2IA)Hz4GL8iu zY==>9r|XzOr1D%jIDgOrh(6W2A_PaWv8!pVMdxp%8PyS&7_;&{-P)LAJOFG6AUesV zKWu6}y4}T^$<#Rg-{&ater&bLhMJ!EDU zx}9HSyib-~**ebvcm2WVS5mvY0QSS(fkpkx8 zpzzi~JSC97okL;z)%~+ZeG}3-OfeHlX)y&6F0CWmBWf*F{@fP zl#Mow)|P7*{cW0)t%N;2MP{yNaXxFR-okkB|NTsx|f;) zVP9CkfO2e^-jP65-QrEE3|CP8*4zCI@3zb%vJ1%XslZMLyR3lwz$a%a(sRn|jiIa| z;i<(tkL{oUmf7e16_cjz?&d&<3rvR9KMQ5hKcp2E+0@lmm!HhZYt;djQnxWd!**8H zK@oy%bT7P+vdedt3)pnXw-H$b_Eq$Au#0ABhNeJFShhHQQEvi5^CVFak#iEZ=+b6` zj$*@5<|$pK??5-o3raEb4-rzBa6#i0E^yr;iLh6xhq{GDjz!ri#Y4=RuPO#)b?HlV z*!{E##ry>6kN1>Xndk!7Bf+6u!LLsy=w#Y+V0(( zS5sU-0Dw2OM%uz{?dr>Q^U*g!7z-(qA*0qymeP)eO5=p4(#}=?$CTw|b*uoc(Qb!IDR|^CC}t zQiW{Ye&aXuIr0;i#zep(UH9`wv(#4#hoas#2&(0|L@w-B_U93Mx<7xxYoo{HvMGlL~OeEA^^mI*+~kkw-hpM ze|X-i>!95wLvZD5&l5hZ&pOy0TeYfWO*ao?!_P6JeZPxWrBu{a97PZ9>_(?2%5)r9 zvOC{A5t9iN5~0A4SP*W!nj8@PbtY6Vyuo*KRtEmQ$pAS zcTsHVR(hgMhE0g%GVSG~9$o=cx{*&?)ny9E!vJezG52`kB^mC55f2|Ejd3;ghD3k*azF-2%^)Ca z&IG%>@3`k78`h4gJh7>ePF3U28-mNv{&C#we>6`tBRQZ-BVNzu$r|>yee^$2z4Y;Z3`WjnOa38noXePNS+KX+ z*~2>N@S6*Nx8~s8gH4qDCSYq4Az4o-^G|NeR;T!IrZ_nwKhJdF;B zMuER?!_VuYEVtSAs6OkAonvod|4r{vTRU_l53DmBOpmq5tMJHGLF0QE8&Ma1XoMTeFEI>e67h zEg{b`p!)mZ>E06W%+ZBRx~WXo_h=i{5GsirWs$)#%J(NeIK$$j<*!6tUV=bBM1apD z6De35qvvsd+ms9vX4Q1Fz;{&mRO0m^Np=1g_siC76s~Cm*(7H>M<5ZYVq3}1DD^<% zOzkz&7#9MnHJG!VY@^>4B~MP1KR(%0ueKr>5oLx8=0rTeaT%WdCARW?;&blE;G}sX zP#h4u2vBlKt0>oU@6Q{%_3H_b{$pme%8F%$Y`hA9Cfl`xp7Qc4fKpl6u!$eW;&^{} zN%l_wqQes$`S90?&M7*pjqMb<1*kxy_-bHztJNzUFHSaXls5hCG;@Z5bb9A`phJj(i&0=J<`$S z)bnV3e;V81V6L1__dXuV)Xne|NO6)ajn0 zV%!8&b7wDe_fNP9Wwel&^)#n`z}NW_GerZJ);&cYh#3qJOUENk5h(PMGG}@Reug6C zk`VN8w){zu#DVAgd28GIRY8)D=B!8>C4wbBWC?U0YovLxnJv&ls!>yAu#8Eq_scCMu z8I}3uB_>9AF+GzGsQrbkQ5!%il&Mpm49pX#J=c-h!vf4SyL4n6yM1DMhq zvl))~{+;mlkB9e~YOe*+c!q9>C@8bSM00bDy1Qd5(JpH6WtGc*U;xe3#dSG$wRC9+(({hMMrPE-~a$u$YVX~w} zfFWUawh;=7G#xXneWAUW9_H-WMOP;pcUwX|>>=3Ai(DvcDhK(|rq*p7#EEZf4DB~o zvJn2i)WP!{<>y(-eow*#>8e5(%?0M7y4 zhRMT)i&33eLCMPf81%!b!fuMGH?D#*c__ExsJ#>2lhU3RY*k;j_F~i?^Ik9%|1Q|K z_v>mSuK?ot9?)){v{aR3+B3t7HMqD|IUW9Wduta&U>I@`*;4ec*xEdab^?rFBTwI6 zgHQ~IunptanfPFsrE>)Kp?BXkdwbfem3D-dq~V=Tzoglk|nFwd}<;Z>6oXV7G-zgs6O6 z;*b?lS9V2be>Xy;WG=JCsFhNj#$1D9L~-4Ez+O`oNv~M;o|ysqZWFb;bKz-zdJEP< z_mN^!>7ehd7uG>4shj22y&Vux%^lWP4k>hr%eyER%~xtklmy+qohr?qp$&m@hH*N^ z*V|<>8klR>3f^TG(!G7U?F50>h@NPclyFTr7s>RLgJ&D<0Jd#fFHDP3W+$&%D{DLQ z+6fq=8PDYjCPpDVR`{)*Do!_@z+7Vf-BN+Ov;GR1tnB(#***%D2D;)OzOHKL8u;yL zgOgZ+;Ob}~um+E{-ZIL9r-27CKE$bn-Wedl1(PAvfQ&aONNIo`>KG~a|F2}M969mr zU5@n^e{D#d_%#eK9}}MMV!VkI*$WW_tF)Y|L*wHTv>t7nS4k{S&2Pip${@Hi zj+X+e-`TwhGL`)p(-L(6s~G4KidLu>eU_Hb_LgcU$M$9LrFotRv0@VLZ`*znwMzdr ze7yxI-CLzwwx17|*#ue7FOA!WfW7G!S*?``=AIefV9&zS!?NcSDu3jzT;zf-1n#Jd z?Ld5bmT8Z5&`O7Nw`+;WZAGVU5a)Bq$@}gorPUK|kK~LAAngnQJlzq))bVLoH z5V|8%Nf%~5$QW$@-xNu^W~$cUi>b(s z{vPlKMKDb(L(ikvhOsP2OR$W-{7bVOm8C$97)nsJ7!O{2>Fw9CnWB58*X&O?!Wtl} zr#iv}JECL*9i_-Mn~db;E$qLzXBo1mHxeJwD${_7S|JJ#ysp&i(Am-)xbwlR&f)ge zs77o_Y>|l^t`k%D@hDon#yw(p+b^FKG^`gNE&Uy+VhCc!Q&-BZ)s03y!}S`a18#LV zVNq?Las^-`f>#Ck{IgHK>E(X}6u|Fx1^9H+(1RXuVE4r)rzTR7Cw2N#4+cB`<29-7%0wSiSV=^kiDU z^bAsy&R#vhSCy*+sEw?99)_`djrh$)A0i5!*z9|WgMnt7sv>W-`O;Gdcv3Ox7kEb2 zp%TMz+Vdn%7Vm$&)p&s&-CCHDi+CTY8#g!sspys$w~TQ}KjIQnTBJ0$i#}cofCt;X zeBMCpwTi%AJZCF+^N?yF7cs!l&oCW@PYq2z)xE=VHz>^gU9zzd#)>B<1!QGG)C+VH>jH+EE1V0s$_5?rsiu=MZ{$ZUmIbKLm>KHmLvCrU8bgvlAGQb zv!xV@K&+Cfaam~du-U*JTM>-hwkc6p0BNy@@!z8~9CIJ`XlZoCTC7K-7dCaA7gMe6 z!VGCq-iOPZ=6%R=ZQRk&97hEu)_T0K@0R;umxJ^`&{1wjty&PvlP{aZ2ZO~~?sO!dT#En=#ud2>7E6&IAfQ<~*vb{!t`(?63z1%$ z!G?`2jgdcrUNu5JqKZIy*4_K59ho)6VwKQ7@J){*At6SWx?D*mrw(eR-lk>wdsy_R?F5>{9nnOu}21_vV>;%L;&PJU2 zdK&tBFU~`?URTg)M@vg% z4*6ZyRkq=~haQCaJzM)nx>tAa-Lu$W?_y&zFoUrGO7O0afx`fzK!pb1v)FT9E^daN zfT=+2LTr#(eF9-QNEq=j&%JrlnBOpAdZig3p_}3b(X?=Nf!!UK+GbhV0 zCD4ej_q7@b_=?<9{#HIo|7lc^WD|Q z!odBMsl-75X#Ia?SG49ReLG}MlEg)%$t=9)dw2!S{BIzKe&}g^e|h}$C7+e+aAF3; zOWVnH1mh-J?I=h@l(o$B_>&P!8cuotkEOGIYw``-INdS2+aV33rKC|p8QncldNdN! zj24A4L{LCrgh&W%l*Gu5(g7l)C50&>pdxi?&b%Tw)z@unhK{?xdW?TP}9a&)6-#~za;}Qkn(M3CNVDkPpi;8Kz zh{+-@xMW{4r|9OhsaV}9gEuXjaPfSzUv`Lz(mXbES-YI>%im+~YdYJ*zR2FlO8^w$ zba`&wAZ4;awRQh`u5-LzW;Y+0S6#5Pv(fr|&U!Q13%a~fcn|BQ)FEVLIKR;<K#xnGG^e z!9@-iR|x(f+Uy3aXd-k_z0GddyyBng`?k}?n~rX;zeU1)_BED$UK2m9hpEc7D`iQF zl-Dkw-%wR`Y8LtJ5*(xr$UaJ2f95OJzH=HWStOpZ>~cuDvngQPMUo`zDtpShoP5i;2}Kq|dsV zt|+gOe#K11`RTSVk`VJ30#nMDW(Ie1%+>F9GJ}Z|uD0+!ajhO;)Y*f^`$k>MC(phZ z>rUw)qX8Q>wQFaR-c2iqeu-;ZMLyB0#ihg*`?dZJg|$H=Y(O&F`N3lI<50hf!>@-|iM*esGZ?Kn*yb@geE{=sO+fe!FG3uHHW9cFC`3TFGzVw=y8a zbm`H(mfd(|Wuh-|VEj+fd{Gd>&7$`9k3rT#5w#ReX!WQP_eY1CjSfFio7IR+N20xZWD<1=pVS7l1+n1cSKDeX zzv9_AhHP?r-W}_BWbcPKv(bXR)`EW;#ZJamMI@9q#u|NEy@?LBi*lB<{#sIntN4OW ztQIc_crdFNy>Vp!c9|5#Ax_=9LLRO}k;*MOTfY7KQrFni{cT}&zGuoL@S(d{v$h{v zv^DWY)y~D29vS&c_SYd|u)7_c6=KGPh@U33O;b;68=}kubZCK=`7ClBC_pREh0e>8b)7wH(K~X4%cy_lntR)R=?!$Na?0$ zrwl1%B-bkx8E?Qo#hcu6Z$__PA^cfMH8bO^N|rY`AwH*}xyLhlfAyZhnIP70JrLd335{I-mP46k4dL zljQ%$#*;#DReTB?$J?-Xoqgz*CpD}2+=JR|&y&%w=5T7<9ZV`4Vd(wCTufMMoG?%J zb;S3o`r><5m2JxOO^2ukT2QQu;*p<$LgzUnOr(gG$75?e<%MdTbMno8E$rfi&Te3{`)D7Y003W@)^+Ia*>nHj6h{*_4Y_hAPEaA0p+chXw$XwS4~8 zvy7`2ne%*B#DE?iD3yYEm4vn`>1(4jUhd_&OFs? zNI^E1BUa1lO23{9RkE*wLv>uUpR&|}_EofpIqN`v9h5OT;AqD&eH2&Jily)TKoMv7Fa6blWJCH-BZbKpziXi;l`pde_X};<8m@zF$7ZUqp#lLJ^m=2-*~tRC z@Bj|EHssIDl;#{)hO#qF(|p5VI!Bo53?tZU50!F+mv?iuie3v?Urdh(S`zepCZ5damYc>tAt((yNT>~zd(OsJwUrDd-;Hf`lRI9wb5+@SJ zH{D~U#-Ot5#&%5G5*;_y0C`n=RJ9XaO-rKeL2|(7?~lZS13$hX*e&gux3ArY-e+$m z`o#azdlp}n5$egqX2l^XbQ<5d0t!R8wKBb~c)m#xuaybv(AiI~D-=9MBOcg=4H^~UdK$yZ!w@my7EwxIA@iES>e#|p zZsxv^M75Egw!Awk+9*(&<%*~sE|%sS4$o2%J3V)1KzX!@};jCcuuEt zTHV+(E^|`;B`ft#7t5zZeW^q9QRcD`<}9B-GLhZ9W&PhCn3nIX6f ztKv@U*T_03%E87DpJ4LSQre~q$zO>;=--XG`O|o9IGr12vJxv_YOqzA20HVLn9r-f zgjLG@_}ttLDR01|0>xrHX~aT8YkP3Bz7Sw6@1DIIQExqh7@KCRvdr=W z=M~47SV`he;6@n=-o1euzrB=t51!prx1{pozLcYSE?qkDOcrsNXK#J4UV!&lGPJOv zC?}}4__%E2Wob0Xsobb5Emp+lE!(8st5wuRsQU@LX3%#m%Lx?v`@PL;Jpq% z?T|-xLK&SF?>pQUk$X#%FW50+C1UqHQrQ1)9%0FpWhsVE47tPoF^e!EG+8vS^hJ&pPOTzL9mzuZTnfW-tjCC0lXmVL-4FfGb^;%ackes%44 zX##7*UOq;)NMrF&U3KyG+_!|x|&B+}2JQb>)pKIf6)qYCtRR~#WOu8PE$7v7p zJ%R^qrXh#taf#uc=+E($JFO}oRR`-)fmgUz@Awo0*aF_hJbOI2C5cAq7NR$iZYk4CU zwkc^=n&Q|?Xwwp%Q;ZCKR1i>X{SXqDQwLF(R!*Am@cJ2K{qp?jk=$JN?|aJuSB-{) zybgJpB9=J&q$GWA15nE!7_0j2Ay{UE%d2_eSEmS0!G_a^ets=b<8|)?2MW{w$k?7N zMm02_Da5ZiLhbDaPV;RAFItO`E9d&l`fMZl`AFdr-9P#2cn;iP&5MsWu^dNwqFBo( zVJHdXk=@y6uZMWhfqWnKmX*!VRIiPc7JgXh6YRtlG*BU>4kikl<*2;bZ7K2UsK?<$ z4mEvQX*S!^V0>JS%`QL)z(rz^B3@|(TP5f?0V8v-rT5$)~L51AyT5o?qr7CK4e-=Ujw-JJZ$e z{VZ1kW^scxNN)SLdw8t2o@jYF&V$Yty_N+7$G z!P|qc2u*lYz#A*Lg>zQi_SOq_1kPDkQoBG(J1Ae@`?HXzdY%It|7Zq(Uv6;rs8X!j zOutiec0ga&2BHpjPRo~VFQ1~sMz~DVRQ@=FQ$d2l#OPl*Q!9=3Ay%~XHie!o-5|xl z>zf==h4pb>{?&^mX>0<{Man0}(Cs9knh~!>;jK2kZ=i7>&pWP)krv4cw@DpkL^uBQ z4_A7-)O;T=6}cFSdS0C**KIegTYSE%YH@Ad=80xq|7CC|;Nv)eP}#Qf*&ddAI8xtu3>^5Q!2> z^xhyRphFufjs*F69p0urusq#Gwzbv*Du=aGuNxkBJV+L`c_H-&((D(==R=iQRvf`g zbTp=M*@?$KhQV71QbPs-Y`t^*>OQKCZme<*Fg}dVrnab+d0*9+L^|dEr_Xt{#46H5 z0QGYJ>hc*N1MhqD*-BOk2s>f|LpTJRT!+^1+OciU@oOt-#T8E1ve z`o&k6>HW#TD>;d?$FGOl+7G(2m`U!^Kzm*HN&DBJw zpQ-8;Dui(3QQrJhmgbogsey8I3#bXeT$P{cJvmi-86L*Laz`;z=)Prd=5ZxL@=iX1 z@u6;A{FcCdQ|D-H!Z6{dAn)c0D58`$d5=$iPtfE^IZi_Ij{Gna{*UGJ%+?wG`jz;H zeqvB$tObu>`e!2F0zR2sJ99rIb9Kdc_?+P zOP1J{RTxc92F)z;O8*X}Q~If3b)LrHMuwevNYbTLUbw~Km(nef3yK4$N(PBHae0Su zd=|oSR5Z(|y;o@2%g=_p|CCgxm&(34SF**A zH~8~-)JeN7V8rF7oxUrV>PZC6zPcH1u=jVw;Pa@{y!m&4v%49F-;jCyhDFw+DoZXW z{gIJUV_}GS9F2pr`lz+C*=JG9=R13FS=ls&Gj+mRI}MGLgfmzHTM1+TNF@(6g{@`3 zD|5m`Gq}H{(z^xj7;9FcD;%H0A59UZG9@QlDJxG8s;=@DzFX&>;}0{@s8U-&4GFfW z_A$rufJB{VI?wvZ47^>fuQ8ew+e;#FRS}$Pw}Sb?u&HFR&xh8j72joQmw*ofs6!9Y z*R{y4-n0Pa8PgnFg-^gg89fmd!$Ry`%J#w?@JyeAbw)$@#TOSPi<5Ay&ze%gCDZB@ ze$e~w6PL_|-5fY~Xs9bgtP10#fmWQ*54qV5Kp{7s7>5z#bJ)*`3}>5_c<=uU3#ZCY}!klbm@Uj>2we}K8+I_(P%Bn4i8)O?QHsvvRf zFgBGM=kHu`?p3q(-m6J_<_-#b(GjBoECb4Izkl>^fO+jh(1&{z8Ir!Fo~4TR@_l{*`l!3aj^;MZ6x^PsG@PTy6Qa2^=}a}DOCIvDJ82Wj4d zb#aBhDj(#j-PwfCVK73cO^C{!Vd1(<_JW}qOY2y=?@!D_U`I43h=dg9Nb++^wPF3= z=>4OpXH7fH)aNP$UF`W-)byr2ew9iPEPI?{U?JvhSS!;9cO974ko%ffmRI$<9rs9g z&OY3IblSI-oX#m%w;#BqGkmzO0h8+@Cn z!-^hMKGQWW&n$cE1l!xy;IS1_enTlwb~B=GnVDwmd(U1SKWi_pcM(3Gklv4f%?g$R zR;lNWQnWod-f*;Rd{Ljo&3QkQqyxY9hBZq>(LR0&7zU5d^FLOqwSUIs^>BW<2R|m` z%woIxIWFb0gP*n*`EWjYdhy;UjqI}ZLjrBp^5R%*Unc6U&%ZGkd8-y{^7^Mj>pu|0 zAS_`RL6VIRdG&Vl%3)8FG*@&8vbTP1ln9M}76z0NLf7kvp0>Tu`a~i&OC~Maf`B_J z|DGtDO}CklBV8}dz(gg<$xI?3KSWU9awKY$d?GHj?}&V1ilKiP?%2V=^*lwxrenZh zA27HZ89eue8nqS-3t*i!An=e{8*-Y;R_X&^iTLC( z6=o?C(Pf~RSEl1A(N^XJZnPB#x`9vH4tbL@Z{< zj#?75#lRL$e4*s91rez!l`3-rU&(=ja&ho`6(-q63zRfBo3|`4&2>BD>)T-jV}fgZ z(E}wF*peFo^1#Dv6KDUX&RA4kQ14HchTLP|)7oCs$Iyq|PcD2J`X~m@!>GsyKeM8P z0P-L45-(NnufP8eck4}0)jlycCb0;@EBMw94ld65GO4LwdEG31kNz3&G^wlqADO2t z!EJ0&?tX|>!I5KQXqr}iBG%-c===Gh5bdo8D912r4H|6Ps;X=HdpN&l#l7-ZSt;j~ zk8=py6%CdOX2!TU_oiH_&oO)<_=q$06;}s8Du+-VTYYmZzBb>(Im`tf4yaqDC|!_W zp!KDEa_eOd>T<%=T91R;J1y-?4y-7{TTW&^$gUDZo}qlPZd$~Z7_%A21EThE$T8E@;l4K z2YmM)%6e;iGdK7M9#8fVBZhhyGPqA{1rJPW7%uwfBWH!>*5SrA)ds#YF_4-exk>xZ|v|CG%tYiRn)}w z-n=F3rfv%$ElcR7S#VFSg^qB_Fvl~!owZN#CzV`A^DP}rb+uTbEES~9+$g$9owO~C zcS;drxm?}#_qp)7${~11D^6>)RsEPP4@-0jlwMidSx`F6p#bWh^AAUC4w%yMYT^d) zvW>>WX)&6|BS5)XF~x^Vz)NN(O-NxqnAucJyK?G5(vZO&a<4omw;G=(1rJKbt=~-a zKVf*?MvDLsa;jtYGUb5%W?U_H&5$2Y+Jos#orA^Vsx%`bI|W{hjsKM3jKSfzpyVlI zqJ3hbN3NJaio=3cGG}_uSP@y9`S_ew0k!lP2fv zf9GeS1F<*Fg>8fH>(eVu=MbUq2eN6ttz0i^Y5-EEsmNt-wzI~U94dOiuExcg1p&^2 z!1zM$U$f;TMg=h3kP9aDvrYP5b!^wj5Lw4hPH<3olEs;JpxgV#VD!B$TfN)IB9B_%YzK?AQ0>wLZO}2BWacjytjfl+(k#zplqqj z&6$8E9bbP`|9V^+GMe`*eZ~x-;>7B)o<^tlK6G~<-)KPK0n_0&F+E^30%2sYbK02MRG`X8CU`eRR+ASIIi10@eY z^*iROw3jy><|lT!C(ETIL(+@UF~F}{cXrjFGi-FWN+J46UKuz{i>(BC&%EIH*b}PZuKpQ>_A=I>FN+2YK!wqx+_onP`2o-_r+Lb~6 ztEY&rNTFZenXUAXiZTwa@*>{cCl@MR;4@W}<|v74Lz^iI`~18I57a&DKMT7FW&Dea zR>8MwmA6gfeNR_-9E12mV)=7EKf0L~PbV~Dw>bX&*hf=l%n=2leuHR zu>d-Dq|5JZxF>y>`+Y0SNm|q>YF);Q`GbpxHen3?CCTyh5j@8(YW?8a!t2O3Su!Ml zX<*dB>eD{J9;=#AZpX_|AZ_&E{T6?yx&9qDr z=~M0sB!+wbH0Qi#<8shNlCoN>oH>^4l3DHkQBIEUDu~&N+A3c0dy#yso@d!Vwl_GT3SSFk zi>(^|eWVV zKWdorF3qVxTh8;@PO7BQSZ2y@y9P|ueL(k8B>5?|Y)%v1stgZzTliQT4>Rm>7xR;J zB$6vlV-h9G$nms|&Q%gxw9HPqQ1ugWe_`H55hjfdW7%72do_JTvQ@IlG2Jnb zt)!uo^mP8J{G*AIvPA=;-+dBXf`RDLbBw+h+=a3G zbVNGgKQiTy#*RsDJvbq!ZCxK_c4?XO{NVfNfuGyGD z_AKk++2i%y)9yvZts@s!9$C-q8+!P+Tsgn+pbX=`c0QFik5SwmSt)$CxoQM!xUa4p z-&$8jiv-(w$~pX)yOsMJ?wfZa*IP!@IId;1LYIl3oHL7My3w2SG!`8|xxfTBlJusm zp?D~|Af9?sI)~RP#c5|nD@IB}YC39Y73wf=twSA_CgDB~W!8Cjki`^D!2-Bf)=5VF z#-}<%0a?8z;T}*8IaaD8ANF+!kDO8CK0a#ZV}$?pRAoY*g-T=eHX~m_hCl~n{Y|uU zF`st@O3O0Vwn@_P1{ai4ithLM%U|MkeeT#L4OGy<%f7q*HDiSqdHX5Wze^5w2x~2P zRFAOr$X^B-VL&&d>sJmwkh=x;;m#cA_U7*b11-p-+%@{R8s%B;2G8;^n{}TANTm@5 z9r5%TVNhp7qSl#OGhPX=+VQ*Fd5`BK;|%t6tm9i=8PToVE#5U9vl*!a}BesZ!&$?qcbaN{PPtqDgD4}b)mg9MXFOOCG4PsK8(6R1@CO?#n-6r{q zR!O?1NYv@-@3Pd!!vDy6kH7~|ORit}=K--VsoYi(eZ19(77OvG*O>Q5`T*XfpR5PM`|soBiwt41 ztN)RCeOtuTV}v|N%$VY`WN~XVuVM8|S~E&}JwzL34YWPG!^!V^7tYg^Xck`n(pG&X zGI%hMqXQ8X*xl|*n*cvVFpPyFPBYv;3MHthG-n*m9C_z0)A(y4Vg-(pA^7`+0qEGq z(3+U@AzU?x-~j7EG-r7dMC4rI7eh@n*a@4@q-)AuOMDQQ!YhKxAZlvNWZ&&e5siRI zvZSC}s2gKr#IFwD;bEiTQ3^-Z`&5lpx0O$gQ8%r%2JbD(BVq{M54Hz+qj@5x>>2IC zvw2umv}#;&Klv72o=X$F>H}|3w@`O<-;ZCg4z?(@R*_BcAs^SyPRY!=RKbT1OcxYK z>S7_kQJ%qT%eK068niePeHdCFra*p9UXL?%DSoJ?m_|ROpEt`C%WKaD{m$jKwC$Po zXwnmp64qQ$;d)Q#o~#7@5IV^T(w!NQcnJT#ScRG>&&LAS{oUNO2i54EEH)Yo6~g2) zhpSW8EcReIsk~l-bV45y1&ap!Ib9dSKBAiCNxT_xSSiNSVYUvHAD8rb->y>?8X|dw zx98uP**!pvB46isV95Y23ib^~k`qA}Cs~PN{$4Hv2~d zj;>Uh%>r>9e{w-h30V@d%|3kf5!i9f39X1i@|tkL@^3n4jV)NZKQVmP_-aSMpRE+z zNRmv$po%n`Z}t@Ax=2x%ZvriwWrdIOew%IIjV; z1W|hQ;h1?S|DM{=Q_JozaCbgn1z&P)53JHe9_F=(n>5|j#U}XdZSo}A$8ylA9wvxO zI8`}6v&72l(0>NRNpL>>B9(E08eh2Cl=mb7Sox{^h7E(1cQ%&;n+U||XpAV0>Mc0% zIaf#S>}+-%Ss%H`Y`f}^e1d>SKu|OfUfs<$G8q!*l=3bM48evx_hpl^xCQJ2e=ac5 zhV*6wrvq21v`dDiuSaV3K+r0AFZWJrXY3%znHoXSabk$7td_SoYIu*Jcsu z#_bIqkU#L&?iAQ?s{gMAf}#7SaYyF_@2QRov*3cXQqgbu{5kBuxt^)F%9F1q@Vc(SNkAUEI!2hHWT_S6B792Ss8Nym{2PXu?$$owiB7VU zvExsJrlzle-;Pc*(~AS=Ooo;PMM7qGy}lvI%z|ANk>9maK@np+c}+iQLz8?$KB&yN`|WV`GwmkKawaMVLGQn*4|n3LUpRlUR96ui33J1oR2+J1dY9bLd|23W*N48w z{0eBMe}Sc^BgKT<^SLp#Ji}`U`L6BdyWBQ_I}UC%dp}jOgi2?ZZc*KhUf>CBc(^!P zA>Qv-IIjCRVy8RcRyNmo)b|26*H*qXXT54jjDc!igmElmw?`E%1m;e?z=28pVT-Y8 z*1Syx4#LbPeZPecXRm^s7CmmfudzqwV~2jJ{7=9_+|A5y>QtwW$Z9D#QW3L;4g7UUMhw8c`vI{$r!Fn`f-lBpK-BPejlTO$b3p>KGbd6YrIZWfe4c)Z zF;4a(#!9sOsVAytk^;fazkR;+n`oCpBYP(PR+jImC`GCRX>COH*B-_qSD(Zev~ag` z_puEW)FCx2=lx^O8I&yDsRmsAzLCv}W{q>*3Ivp((>uoXa+NC0dhawt1*b!K7#09w zI4W9OPt-2t9MqU==-AC1_7vlV0{k2|G5&^hPUO+ZK|jIUKKOJ;g30nDS+kGsj4xTu zr_Hn9nGZ?UZy@EtBk`%hKO{uXnB z;-)x9{v$JfG^8)XYOmrjH|`wxc5lZ?$O<`VcOUdPxLew1$$95-2X!4|1HB!|j0fbe z4z&7&OAv4Oy#&$7b*r%BEACFx`E0D4TNmLy?kK$u_opj|eb&l;C+&cJmMhHO_8K>Sw34OUNZ@@(6SiX2T>ie3HH!f<8J#G2rg|<)Dj(L59 z@tBuDfhH{*r6#l;~(PF#K;iUppn9qzjI? zhqnE5K3^-}aEGtT1KPu{l&;UYZiuL2T|MIGuMn z{wa5mdRPu@*FZX|F)|IB<3k9u{8eJ1dlZVnXMo}mIBtVSenE*ppn_s6LuSv;9Gpdl zlOHRi@`5bmdyQdOOS@ipIU3=4S?=Tb*p`o+Qzfrg14=VvJi9ql9CDwdCp+S^ZQ6+r zGzfV_4p8uOR6^2)c8t2e4PSoz2Ela=(y_qAu=QBS*Si-pY37P+6&QEEwH^`I^7;Zy z6#_$+Umk($h~M)Hc510;a#jV~^rl>6D*52ytbpc{!Ovww?|=M97VdGU(ZUR_+of!) zQc)t7|1R{5Nqw~C+N{!12%7>lat_&}*ME`-Ocbr)OZ}4mLH|N5NR0W8!+ihfy2~1K z;LC0WfpR$q17k1VUc3^`r)wExqcl?Gsdm7#Jic@=Jb^T|sV1vXuCN8G zTC!h{MU9-)YX^{$&NX(eSrVvFswKMjDjzG913Kv$v#XgW29_k}RS&sAnH)0(1Im^QxdH4-CW2pbiu{wd$| zDYvJGulbjbIyXyl-;ASYJYo6qSzlrSjR5$xcN30u0^E$tZ_c73dOav?h<B8H#l8e%>`Xs5O)n};}HI8B5dp|yvaGN2}VzTmkdnr zXLWxc?@RZk9Oj1yQk&n7)e6e>`Q)1w@Zr3%*lZk@`no9Kv&8XxE|DMHwTPFaaF^UG zwENu(=_DF<5XQ`v!4mH>!RX>7#}u5Oq;fbUtyL_quVutK+Er;#AsF- zfGc%==Zg1syRtyGF;BGIG$dw3|gjp1dhA zgY$;I!#khURhE3SnK9>9V26P*DWxjTg;A8O(d383TZ;RusxTS94Zep0J9{ZH4R@=y z!L;H1e&t88(0eG3TiM;dxc9b#>G(ioPsM;`Jsppa@dwnysBc>f9DSP~X`}Uu6D>P$ ziN$5})rro#g}P2{(3YUOBiC@l(RhhCh@Qqr5o^l{(9fZ?R*D~^F?>1T#t#GE*Y6~F zY0gnAn@v8kTsD@lHiErW{)y7Y4ttogT-5l9ekd_*W#nXf_)&2Ao|rsu;HSxI=HNmD zEVTu*MfcNjai;h@jGbY-%xMX)w%xmmqdtqJ;rhF|y^{LT!bb8&P4_!&Mjs+_d|4as z!#F?6viw;WcxC0qSc+{+X?u$ zav_VBI6`%9dV|vZT?<0ZFf#kqde|vv*WOlN9zo-t`ti4v68U0vH)6bm$yI?i(Iq7$ zkIFYI0S-_Bm%Kw=y^XkD0P7FiWqiIuUW39S^>)6|Cgei46^yv-w6eZt{LajN^9DQ~77W=-`kFX)1hFL94`vFr?|^vc2<45=_6o6C9%p13XPq-l$R013`MDOkhD+rZ!Epzn& z>CNk!%@F1IKRZUn$|>G~Yw5nrJaa{6y}!0OZh33zc~^0ThkKm&m)-luPfUSh76Q3p zxUMSHpOP`e*dbwgw@{j8FTNARUdl4*<3?3ZwixvFWkf~!ii*RuhK_<`Mva8=E7TuN z*D^(dv(0J#QXCWhTcTo4k@5hkj-swC3R_^uhRrSAkN3@v(lw)t|7J3N+zZpzib-1XZZP?rh4NOXAP3B!A^k z16kt`$0@V6$$ttvgGw4$5(>*JfK!R>fl77@gWLP`@k}8F=JX$79lzC$Ad|a;dQF^#NeQ@6qznzUO7wXLp zX*C@wS6}OQYD&g5+`X1UYqs?n^-3uX4SG zCcN!933xTbm+PS97A|Xi(<7QKuttJ0h*9-YNA5L$hRk6Y=6)DdsBKQ}*nP}U3lYgO zD&L;oW>v-ER6<*Q9i{@;Pj=XB^x#$e-F6JL>oD@2RZv zqlM>r&otYNc1?Hr7*ImUWjc(SO+7DAg;BXdgR5yHvbjdFo;8SeJIQ~=p&iNADM#%-MCMv{8_U#A?the%F2#z@g&-65r%hs97-OoO1 zFuccy3^yb5A*_k>t8(eIo5 zPAh-DTup@i3>u3F{Um>bp8B&%T=^QdwWCuNB~^@B9C}bW{if!&jyFJJaSr&D3D;=3XkPF#2;7WfLkacG?pP4<40mdx`*! z(f0q0f-^sAu>*bNZwxjGP;$8p^B?IE#4is2uo<~sT)|swVlABzdGUFs(ZX4uNbj>_ z%^~TA4pzmLkeG}m{hK*yl66O#R0Tmxb-opGOhxtuSEWP;$r`S90!J)GEGE9g+eiR7 z0Ra9raPtpAHam*Y$Au+idZhs1>px9g*2bb4Vudmb?1>5tmHEp4vco_BloYHo9);bw z@k_ej?<>Ln_VI*L_wMjK6|_CUZ!lDWoFqWyu1Py7X)sVw{LbU756zgZ|3lx(hP4Z# z@uNuE29H~6O@Hjm&IGLA3b3EBob&L~^Kug2v+am84qj5u-E(FhJe$F0h9tKu|Mf&y zx=Hsz&ULOwqc3G)jjvENiMqw36A`~AV1C}lCxzr;d?_*J9%fmYCI%_l) zw2%6a%()!-JiM$!2IDz)uf}cZ_LoQed4Bg&_VHljG{FhfTq-P&1AK7TYLYGhuiPN# zHKT!<*U!E4JjJF{O~kmZTOq&Rt3aMF^4-Y=RxT@YcP`nG zQ~ts~j?BcB5wd7Ad(-ghmQq%r z>Hhs{q9~z%6~}EPg5*Fpmnx-_+uU{U_s>Jf4gw8ZhD5w39NW92M_hE}RAFKQhK*$ARZv83 z*0ozA;LI~1r#?t^oP%rfcgz3C5Ipg1OZGlyNtOK?>_W)ecc^ zifCgUf66}+Gi;=yDHKthH&hz+WH_-&gXHMd#2~9&PLaQ`h!)U8#gsaG^CqVulXnIk zqHgIe|9*9NOr9nK+jPc4ibiI2WN1=@jM2IFw{v_48=@6kr3j72cZ1!=!r59ZwM&qf zZ)QHkSD<8-?!la!vW~Mf(^u4eY&8_+O_=fCD&9uHE5 z&Vmq07Gc(99iG&&N`Zip?XmOY!qz>nQz9=g&}~qD%)nJcjfdusi@qNrG7 zMFMAi-FL%J*Fh1ll!Vz}tVcQ~IqeW4vrU;xJkqC_sQ`in1%V>XktPm1GBk9>)qsWp zV`8fY94P(V!rXgc6m?oCJx4eRXLHStxD=*yk>-n%LyTFy7VlBi+cUliZAteUGFP8W z%Fi%Eglo~j;?1aL0hQY{jSwv&jb}I2i15;`*|dROpY?`rg=dfAG&Dt zB9=4cRfd73bqJA#KjBHa$#)O2wxO<76-L4t=vM1)ce^8{${ywOSf0CNX zR8fR=l`yJPA*|}$Sp$8j-pE5yJ<$Ns zBSwgV(@y|4w01Sv>^4}0cw@|pw@_fm74m|lo`xgJL(AJE!7O`}aT(&g(yFgg(3j*c zcW&Xr*6Wr51uh0%#gXouyjhcoXo`slkCuVR$2?BvuRu4Bo4!zmvz{?1L8m60q6Q?Y;B znEyf3$97wp<&VOCSLee4(ymN-b$91B>UV+@i&Zgyp`A(CjREpow_0#d2QNIrUMn1KAXW!jt8qr6%pLVd1^LylRvGlsH54M!GOPu{%Nr-&&p0haOGF_#jcfBB0rjjjA=rxP|`3kj}d zI4)H;&PV31Dz9@n1Z^7%=4$N2P=PW2n1d+uWWP}=C}*!vQ>%+dM0i(HN1y0xv38k} zb|~ENxhzyJri<6j7~JL7ujI-F*u5&bOKoB}ozK!g;xk)QUq@Z9&A~o(`#-W0KL-i` zIomyZ8qSCrS#kyuH znjIwH&>Db9JO0Ww)4GDv{FZ%s%tGk^p#v*@rb3<-jG2YnRFIqXwixGhITE#aIN34X zHCJVQ5NLTw;m$*G^K@r8X=OsURtNe(RKtkhJWOrohYh_mGg;w_n=zH^?=5e=2}&9h z*uIo6_?8iB1CuEe44!j_;CW=ag#_Z*Q@H0}d2FzOH9qPlSy{<-*xh>a(YWnP{uf{j zr6M*~+5x^H zdgR6C&}Nb}%HE>$U6qvNlPh!pIUE)cHx<;v$?9^fv~n*M^Y*U8*TYgROl4}`3}9iI z2CubSo}SbE`K1GQvYbwJPK%W$N~kY#TQmb_B*$jqLDq%4rAfwpwJT@b)}sTd&()7p zTOR&FGJHnxOxOLxzqxDkvq zfh0GkrmwLS;hR>+YAsXb;SIJGC zvX=wlPh~A{zRvA8Lly?|zO-~~boBg4h6lH&Zy+k4HsjDnEGCt;>?=PE3XbYZSU!!f zyq!ZbrO1A$xHffJce7mMVBO^jwtdMVL*Tp~+Vr2C-6XrO{;KG%mr$>~Y5OG^`GPb6 zGZ|n+?g$>r{eGN^sBH0A3F&uLB>bK0O#Oxv0?gcqmthxSKLK`f0H^1p%w2@qlfbme zOy^B_1+1?mtWH|EonYke-N}qJT$khtX3+g?ZXFzhGcg^uSiH*k@ZrFiCmTw3M9}cz z`c06R3AmzeCNg|&Y|%^|g{qZQ=8xl%$CP3FjV_EOlYj{qQ%zZh2Kqm7wHhO~Siay_Hf9edXv zXH>6U`d;uucglmfC*Xyg9;zOcPje&eZunOat4b&BbvBHXT#hg2Oi_R2(=U{{Iz3eB z&PBd-LLS%{qVLVe;>b7~C@W-HW7ekU^gk4xha=SgAII%Y_9i1T?#`XFGRjtt?7hd4 zy|PpG-f>PMyR%nuhs;B{L*-;$W~3{JWTpE4{Qiggyx;G8y&liU)4i!V7Z`0YG4gZ# zhj}Z9Hs>VUR*f>HK{ES1$HP%uItzZDY7PZ1ux#eR ze8~C}^aW~y%{%*Qi9%4v3&cFXQLDmxW5q|#6~0{46zi${rW4QRKHv$gb$Ic}b_xP7 zxMHIu3L_D=+r*=Cv%^&IlA!5f2bxnACv2pV{8Oci#>FO)jx;r+y)HJr^MKi%@} zVoJ$8gm-4;IZfVLgTT=;7>ifV$@n*r7)+L^aVB~`1e{|2KwFH)-UL-kGiZsh%g|Cu zdTJdeMYSC9dlgSgdUT)7Fm5QcB^LwAFNCLrD+ykv)ah<^B0>-$4pwDOk% z$8!5@kr5a#W30Hyb`VI`bCN@#;XL^oA7Els&Nl#4E$ttdp4pAeNW4s>X^u=*kva`9 zO170|FkP$Wqs<k0PY1Wi$N3a^>j!JSHQoT+)3nvqodn zgu=`hyR;ZTn(614-1Tu%XWZ*VGyy7C#_=pSq(~EYo^|BgbT*ZLyYV6OqC`E({ zrW`X*3At;B?I#F)mY{6kbf2`c@R9uWEZCKbXVDz2 zpFiUSJiCRR$Bcmj8KHnxZfy-LfauDf%=9C-I_F%oT5O3qsZF!l>YP)ew=7Odd(A#RKnq{j$HKccJ!j@enS&X@eRCNIy zYQBe&Obv-4lKf`(peY7|8N6nArSVAz6vkT8?t7rgq@_LS_9-CmNDK7HONJT_VpikDyzC z!07VW8fzH)bOQs6GyLDyh0bsEgHXLmsoaHx-ugDaqI-Kurk$WSrZ&((#ZhPj2vP%N zPF8LDy7F>9+RHDDQf}+cb$zYz@<{!%LWA-NEks ziHOhc`m5n?dXzM;%EI>ZawH3)??8T&>1lODz>gpSWQ#v9FNAyf+yXi27!0L;W<>A0 z^k+|utOZAPK}9-Gk!M$G@vl`Mi;pQyyGLbGq6iPWtr`6nx!}7D%6wWl-cD&kb1KC< z!%McUY!+!-sc&!(zTJn+LMzx^XHcJ_ObU6!1qLqehp=nQI8{4$5cIhx8v4%Zm%LcaDz$H^J ze7v=sogPi`icCPPrW2q8WjjzP@ED>M5rRyUyy=@CK2UXC*a`aexlkpMALQ=@7-ve( zD-bT{vg=I{#{QouX_RAO>Y;=MxK z(Xwq##{5f#D2?0hiUQ~g?VJ6X9l`&$l1r3Ez=Jyv2d*q8?q+ua$tbeX?W=mU+a;;o zE^uKjr%<0C^vG;}qTMGP?~y<+mN9j$*bX7Z;U<-!Lp5e!nI&(vpPu#BlS$vEk^i2^ zt_@{&(`C7F1XV?0cHV|NDd^getbgXj%x)`^C;8S+IcW=)udY`eiVIQq>_fKMsMHMq z>c9A7{CH$`t$NG#$x@pyDpu^l)fmPbr-Un)jZlcV+n=cUAWhCR0C9Bg@WNu~d z*!PHo-@;UV{ZdFfvUEhgl zfxvQcNM1b-bmo=gIZUE*)W7X@ z68>x*i~KU^te)R&H1?E9D--Rd{8fw9(4R5RH&uEzCxU#hN>Z99OhIG~yzS%r ze6Cx^r*n98w0RmNU{8>H{^_%SXfCvPG~nkbCLbftDp1pJb{db-pG|jWea*a=;W>^5 z`BTDnW4AoZ127)gM!L;vM^OsYYdv%-3TI(W2yQT#G?z1A64p(jP**tSeb^<6`vYUo z^h<0-rP&T-^&_+e%#))=PlFY}YL|1ner%;=$QOg_7$=VyDRALa!)*z5w(bdQA)3ZO z@)k>j;Rt7g)?HE0Zky6~!(bHc3E)$)?Ujh42>ZxJY7bQF zqJ&N?z`oN|OZ-qnlx;O6M9VH13W=RInDS>gU*yOWd+H)?#Cr;BRHS)M;+bD!2Dcwm zJF*Yx}>zJlT zL1&Y~Z8-xd!CG z&y%CUnEJi5Ysh;V{^q~i6pY{E`M4|$ir!Zm>q5V2T;({W*+#phMvXj&w$l;{8gE8V zJdj+R(lUW<<`yYZxvvv)n>82WXXW9TYxZ;e*I2keK}*78n& zE6~>ucX3zj3o4X1QLF<|$qJ%3g#51?A<;hDJ~bpOjs1WSbnh{cS(0XJ`~GV_qL5Z> z{_3g~QDjPYCH3nAbXswUM`}Py z6Bd_2|0r_{;9f)I$f=w##zbHcUh?8a`=xc&uzkPmmm1FyMufTY;M$7Xqy&bGm*^f> zsq~$lM~B2-w=5G_*#y5KsPZNGMmF%u{lxhm6Ri-bfahuH?m@;y0$T_^QF0ofowQpX z5n*vR*RNkb@*0v`aMks2c}04AcBZg3!wsJev%14v{@r`7awL@fr3qIw2>Jjl|7>df z7TUS9MO0b^=OY4ZgUqO?{!Y%T`IYAszT%2H7M883q)}#423czZA6l~~F8T74>nuRj zBxj+!abMk#D`~dnfyEz}>;mhy$)a@eCAW4GX6HtRpoC$h;#x!Pzz~$Vhubr!m%ruX zHXhyDgX+}@9@K4gFb6ZPX?+S~VT`1VK-MMZgv15!-SzDJ5KBaH(SOe;!kw_l~YTTpz?7Dc`h?4@k5Ah$Q5$ytQg6Dr~!06V5m zqaM8Uavl6}o&6_|)*&QShkv?XW8JHztF^A!m7?SqUg_x#k2i%`bjpKHKtCW_lxnHv z_6E$n=;Y7XTkk7SV(&x!wXmdgDrd)9lB(sli|OprJVCHl1Q*TArwo|se#`iZLIbJp z_8&!|ga6Y--(!IXmw%?*TYC*5V^gp4f+YJ0zOly&-45y!{Q~hZnhGY6m*`3_G+S7& z5|gx-V+NlFO>cA5ArW>4jDKO$gCAFng55ultfgI`eP9GKMBzgZIDa+(+n8`MDbYw2 z=gv9VX|-uD(Xoa5udYa)=@UI7_YM)Rv4=2lM7%lP$l$Z$v8dr`&zA?G%#+fqRt=E1uD9avsupOZl7Jfi;TPs%~=iI9)v^#2|tH!CfEH}#ZC-E{F{G`e9 zFWw|;M@7I1jWX4t0B>Gqc(8OH)+^=;=2Po>@CTj#PVrQBUs%|!wmh2V{l{q2!dHOm zvU^&VLT1(}4LCfbm0iwS&|~R!BD}K8Z|8h7T_Wtct2r)K1y`dG%YO?#Q;2+zSkv4R zPbKrrPkgB`Ufgv+#83ZB3ta^yj+rJ_(scnN?*&47`LZWyG}1jobtrCmp{9?lTl|~J z)KODb3Q#O-;{jw0e%JpfBR81&>NTc)3`ylr{|o433EiY@rrht(Z_}U4{3tBX<6VLo zg$q#3Tu)n45JnRkD!trpCX?jbc8G@Dz!7a#V>?l_?;-? z={zmJp$e&ipBZ`yNu`XaC8A8yYo%Qq>WBuOsyt)s`G#7rRSD6joQ0xG3phnbBdrQu z#%rL>7B%AQQK83@gkWDA?qef7uZS9wsPa*lK=knJ z=UU6Ri{=A6I6sm3GQni?tLmniKdSFh?;duLzy3A3NOSC31*if@%s?QKw`QYzmn^2~ zFe#tzD8AI|uk3%_@}k!Xh`_2p`qI8_cMNpV%4Cz_qE>325d&=3Rt`sGmb z9C0YP?d)Zl0d6FVYq6gJttUr1-l3Hz+Cksx7X|9st_Bj~G)JJQl3MqGN3@rm-F-E7)zc3TiK-7XZs%#D{@J>xLJ*%W`qYfrzqrpf!xr8(>LKZ+%?kkg+o?{ajh zaz$bA=hyd@7=cfZ%GMqG1tltkHXU0OTquLxzE1B=->=eX_ zav>vQX(rM0$+yz^IykJO2r#S?K>}bfyOP&?nN?xG!7`I5R{9D`oDS@vBU50!YgRBFWncpY?5O;P zZI`nQ_HZFOBAUdC%z7D47NjBvaQ-~91c@?pz6CYAJwFlz)qtO>+p1}Wl5HevD-N`{ zJhnt|Rj!`BviGR>l5W-t2!VjgCqj#j6J})DpxCBj!pZ3BNHkE|a3o*reCJ9fiy#RYH%5j{Nn)}d)N&x}7hyUw{vk6AF86K1P<=I+QK zdzCa~xuFs=ex3V(d?>s`=teFRZL-a zeWYmiXM?03fi~k|Wlnes&ZHh)JHgBt*OJo+ZQQoZTzpgGav~eaJTnOl_>Tf^68`>- zOT#Pi`kOJ%4iEzm`<!rfQsv?}GS{p+eb z`<;tEicAyCod9%k6Z+hpSrR%e_7<;W;K}phCy_K00pOUo2vBmnI`p!jiGV!)213<; z-^=5PcP|Z-BJ|!De$Cx~#4~KaNzj5Vs$k!60oYGOAhQ?lAFZ9z7!<%P&SFJ#7S?yu z?SCU(WAr#{{f-oXV-dW2Qg3E|e%jId&Px`!mAxPl{SY@%&p+I_u>=;Bx_pM%L!4>g z{dl8~dSr+Rnl6T?_Y29^`gCuvzvE;=wg6-Qc?KpoFAdWkhnVg3pKKiMMRUVfpHDy! zWzR)1SghnC@r{*&Ffhj<+q9u_!eE6v0Va4KtZbeTluJIJ%W_Pz>ZZ$Fj23io2yDCZ zwSz4fCQtGFtMQK|{ABCcEPEWgrQKMKsJW*isEA<};as<4=d1=YBJND;906OlmH-8z z!9v%w<)oxp4Xg*(8Ju;S-Asn>MS+mW5=K{~fr&-0z_Nl6@w4TMgKsDkpaL5HGb=ve zhMc;I43Arzb|K<@)->xXvc35d@W({=FRQhTZL^@$JZpEe{4a)<0EB$I_=jt>Wi>k5 ze?V6!gp9(x!dbBKY{JOHeXwP~Xn0|y#Y1a@C&6A)Abz^`j{@d|dMV3lfJ}-VS6E&t zZEi^rU_u`*lWAE$L?>kls-soqZFA9InkICWJ$g^s7nRoCi$~{#+Lzf4U(l^4J}q%G z3e-de?C*Q7A^rmPrSZY42y?=uLs$^oPWBnd`4X9wdBY}AvDL$qUdoDYfema-$)eZn zZn;284ufXseFBYQ+ly~@(`calWO?RDsSYgo&p zL05n0N3e{C!A>6(%`k@cc~3{7TfS4YvB?V&1(4as5XI({G>;05*B2|MnL;z+s*Xg~ zh#t@)!IXtc=BS41E6NTal*rm6*C&+xwAUWU3S*Fw1WCzLNe1Byq`^ULoQ z%M-gDCPi7uUgz>D!$XhOm1jDm0c9WuvaL<78^L&@ct@wLW*z(MgaLJ?QmY)pKu>0_ zNx^Z^^oQsh&RGnHIpRR9J~Hs8_!)#=zs|V(UtDV5jBWF#t+|E3y*N+-0S;db|5U44 zWYCaX?zJ>E8wH>A1=H1BdS=}>)X2}Qh3H?1f}{mKYVwWN{NEK8*{mLLc2?s|cvu1E z%sa{EJYhUW#mq87Fn?%u;%<*X0NaNL%r!iX;<^AsF=&4YT_{1Ulc~URr-h+3gY00o zE`Il?F=cgm7xGi`x>2T{)%8*%CzYnk^!6+dL_-#;?Q5!gX2U1=vxD4dZpcLMq-gF^ zzX^6J*qlC(U9M?O+8gdZVKcA5W4(_4B++eMQ$lY3kHU&3KAYk1R7NSrl0`jRRUtcb zFDaP8ytQ6$(sQ1`jgxsT>k-7%BwWRA%@IRPa6i4@M{n`5j)(T0N=;SGljvFQ*ovBF zP5D~7wa94JELDSOjv1oFt@L?(YbTn-gcK(g30}Ooo9|TK+%7Z{4fRMzmW>L1u}?>~ zr<&L66H#&7oG-VWTbDIn8jWaRZ(+IGg(hI|)lij*XJgNy-|^qr7FpYJ-+P(E(z+Y8HU)oJqc zqd|wS`U3GHrA=Xe<(7%P8V(%Sn>-+TK%?2|R%Lo0F=xlosPgRik~PoQCXMzO`)KzC zd8j{JE3|!WS(pC}HQT%B0u&wjy2Zv7t7>&Oz-UaKVe{?vMy)2}gv*p>(uQtmt(YOW zqSfOyZU9m9*dZi*ZL6#8HT#`c45nSbnefKhpZv9|b~IX(Ke`#WU$2~GvD zkjrkT-^B{aKI`_d;cZr2uuXf+XgCYpnU4Qrbt4{__W^xYEBTUlIU z7cu;UzewW?TxK<(|3@$pFe3@)`m2|(BG+N^n`L_`$G4CCEPuFIuP41{;m{B8#t+r` zM_wZ6HrRhn0n|~u>`#r$&*XwwZz5D|bPD8E%_A4$5EE~=!A=y1*x6dHicAt#9={^c1Sm)C4r# z%8L~G?2b5Gd%%Z2A}+Gn%#alOK6x%1dM-h%182_Io3MKH;Ly=Xev0|uc_{;FvI6cu zzLRMi&4=-iiWxJ_5SqZ8Cc~`z4soe#_6uDtu`*)mV@kU_oyp|}Fp8cV!9j%jam$%Q zr95n-lmYK1r`VHA?4-_S2e_?E0JW3D1b{6#BwKWGXz6LCXeHG7Y8?&>bMA@;(-|mz z_TO%Fi>ALZ!kzwED0hD>9{!9+&-GfZ{q`Mt9B-xFT^uwF5WrZlE!QSx0sW^oi~@xoj)_{gJ1Iuh>K;<@Rs0gv#dpiI>!%Xg3A#qUt>4O(ZF>6H(M z*~1WaDx>I8n^>|IXYQngx8~UFPDE($J2T+~h-8T637>iIw%>&2bgTqe8L}IKVuW?e zG?O{>WMSHnFsfvYnfveBy^tH%Oyq#CBq{co-~aQl+Ym?)g}Z+o8ytcks`b_?+a9<| z)Dl%Cn}X{^8J6TDMmP4(IET$2qWM;Q7;anv@M+$$-RZror;UkG5E!xnzy9f@{ zbZe(((dOyw&!zkbGDuERSwq`VT`eA&w^=FR8!Au3ndZy)Bez1deTSqT=)@rN*eg?^ z?#lQZ=l9&S_CJbTgGQG+>L*C;UXrADHKtoVvtZZFMi#p3O@kGHWG3k$`=YrPnF&K# zA01&DYC{ToA`Uc+z|WJax#Q?41AOa5d%?AI%d(tD&fN(ya+Kldj91nlgl88>404uG z3s*aPvTqZNgX{#9g;(Oj$Qr&+EU=f25B0@4qKTT-`liT|5w?c7a!fAKpyu{YvfO*$ zCNDQ8-SO)LRP^`kXeM>@lwH2%jvvTyolMi|fvg-UlTsxfgtFf@C!PQaRGMYTcIDqZ zP7h%zLOGxPGtk}M1!bTyk0Ym6cFyWr{8g0Z9=x;@`8gJQ6_wEOtsY3+vhI{w67#?4E7~n@%*a0PJjhm`*tJz8GdYNi)e|_ zfCs*&1@N{DdYSazTU30VxxDBZNRxB9GG^g#?sdeMJ^tkySF0+N#%3Me$jicFN3@wa z%E#=!^S`?(U#!8*X8G6nVJK6rrCcq0=%Noub;8IN7oVTSS2g?Aw#r{{3bR%h;}t9E z@CY_Dp;7T7{J=_UTs?0_`-J$$5DwjqN|Y3d8R)=a9yY3tw8xk@{C6EmzdT=^`~?=n?h(p%VYwIvsSetO$u z8-HRbg$*up{)b`IzP54y2kG5%c?n5wVEc%xR*Qk-jzB7zHIDJuxfa)rE|R*(=ZUA3 zNV?4NP`TKRjxYd#_dQm6FV~Ty)ht4*$fn8a!J>Dw0%3Z~-??9%HDer37jT?etqx(Ew3I9F0!d7@1jfT*G258w(MKb`k|af?va)lywN?`G@H$= z(c4*-VF@(8%ILA}A4RlyPcM8AjGN?E?mc;-p$04k9jrLpoN#y$d?q#(&&y3(ZX!k_m)3N9XpLHq(7=9ynuRkbCMFadL|6RCDDB}?xU714Yc zchr#7cw>~_U)bKl7(c-@Z$vpcRa{r;pM;q|-{15QXQOVFE zGuz=JHjI$6oKqIqCPrX%IspA469!H|XPa}Lt3nbhUdH9eU#|`*F*OhmSx)zsINRI* zzm3LKzai8wsJ5hhHl4&<61V8js9+KFboEvo1piX>i0IdX{v?6304>}p?jm>F@>KET zx+2c(gG^23uruICUL>6!zR8{jd330e7x^cksX&vOTTig8p{zGPC6;XQxkt;4D35Wy z%nMkC~3kdj7uFHBn)2D-J zruo3?l=$;Zhzd93D(>ndw=@08{R7>0Cyi%yJ?oNwQJO@aj>qrp&r#b1AR^{Tka@rhLI!9 zik^cOPP)OGzM%EePS|#A<#&k#n|S)fG<~FP>O*;&;9KUjKE~=;r|WuN@I%j-r5|a2q5ZG}Y z<%i5ylt`G9o2%x(3NzG4%N7{1&0!ul>aHh`em457=e?Jd>ci28v9@(^S>l|b(M%fr ztG^s(;9v;%()613xR$$L(CLT&p$yO>e=r~4};r?pT`~pj1o1V$-;4bw{@>K`k zik!XGt9t@s|pt;NaEg+~!>RPt1PW0j5#XorPpwyTlB|Nt>#YWKI6WDM0 z*jcQ35d*OH1(Dsw&>`J_n@t`PuYY;${?7bS0!Jexr_Lk^vmTViJz(t>!#LC#iDJtw?5RQOvBBFLq9$#Pa;Jh!k6t|Bsd?~okzVab zTEt`e6l2Mi!f-J0TSnMCBqaA}UPD^*N_lreyGq}bobJFx3~HEgvmfg31W#XYHR9sf zFNdKIj(?7$$Z0E27hLuaX?=JbvtKxL$w0*=~`ZVBMU?s zVb!JO!hzTMSX)%4nOMz9Lhv1*Mm2mFLYLKf&80FU*~^V0VkDZ6CxRWVom3uo!$?wO z3`nDp_FKKcz|#lbetE)3({Sx3`sCwEN8r#Ay3HVahbOx~8>t2yBt=PoPbthRTl0FI z*-8z@^7=!3XXP9M4fdNNA{|*?%M`;w<@_p)n>a?|#np`8tH z<)kf$Zc~BzlRruP&e-Ip1nIv^e+@XmWTWfjjTd;GTIPB8f3A~br8WPU{A-LyYd zNs5d`9bf9UubNlXesLaHU1vHytk^`tA9jw<(5?qs4U>2qpadbpTkHe(h%uyzkCb0d z^{5J90OI4adt3TuMKX`Mh$rPDZPxvZ=Gz-z%{K^OmK!!fSnle*oNi3C&}t4g@TsxK z_HP6TU1nKoj6@rc$4^pn1u^{S<7c8k50Q=;_mh>^WsFmDadxwnDkCOb4;`m!-=&G^ve-w?odmkd_jlmB$tC z83&<$b~(SWnrl=?7)uV9LtiF|L@G)dOI4r3dRx-up<+faF`tbByB*fcy?cFgfyF6W zta#Xm@D~tk0iWYq^b@d)LEU+#h1Z9#N$6l;#3P9%$!?xP9m&$}*Eo^Aj7VS^Nx%$X zz=bBmeA$WC7NeQpz5BB6%duu54J3QVc<#S{_IPQDOD#8&6{Lv!al*XH?qiwncnQb- zs$9z(bCe7yODLk1nw9vE!W*^tD~kb<|F|MwFc#QNmyMAl|3`5iF?;T|A(-)Us@wj3 zcN@eQZ<{U}Sl_1#q;x6i7sa3I77kVOve@C30sv@|cV@{`JEEnp-_g5dhb(XTriwl! zA9ZYw4G&CiyWH{S!yCE__#PjIS0n7JChV@vQ%1Bybl51y*e{J(S{Dyb_O$}pK&wf63 zKiKw4wic*Ts_y#y8?MZ5;24MH_o&&a%B>e0wIh8sKM?M47BmZ+SCXp4PF&{1XL`zV z9Z?|Cw66ZrR6fOi%RAwag?I2_NM5-YX{Tg{FC;d|Kt2LDC}<7v8=RWXt4(>Y*ONSH zS?<2z!h0J@M`mvw_}VDvH8&SIFE1>rjcn0#vj}3X=PD=i+HFxnz}t} zJvdR@tFEf-9f-dih3W@nA1?YZ({7UCM`5jm&|y7Fk%Rp$PvnmhYoYU9XHKt*f2>DY zBwA1C4LrWL?P0ICxkV}}86 z7A-=;@V&_jRe=4p*0IfGRlE5xgLx^Py+~PPPO=kEAJK9gCUQwwv7~~8q{^So{bXi zIP5lCIO%dW2Mq>tT&oK{oh-Rult7urpMPlz_IR)bH&Q4ky9T5?C8d>najMNX%Hu(z zyXR9Hk>SYef3qT4$-ncnGjV)Mxg!-`>1IRG?dC2gQrKi{yQY|ilkGs3dJ^^sVWY~x&>uWBgv9-WTggY3GZh<#~s z<&Vwo)2Azt<;Tvs8%!Er=mHpP}2m=;ua1hw%EoG1Ia`b8Vea;;0 zoet%FkncWQr-X=PUAk$*GUx$du|sR5^p}w7sGtfaY$6=daH5UPnar86yh2m(mIm^e zqGizZTMqF4p*CpmarJ49aWlzv?~{k}MYDRr)wc9<($Y2M`B{mR?R%0+9P5c50x=t2(j6=>gX4k`l-)?P2 z**;5C&E1ttJz%$W5J?;;{UE~l+3dlTkI>$Q(G7N)5Y=2e%T`Hx@hf&qUY5ca-BzOm zk{j}De)74@hyx4fLl-;@gvJpZgbbB>fX?0f~rwnOyWRiJv-YlYH zFSaif_<+Z6F$k^u%lTd+ku(C`tU-VIj}`vnVBi(kT0nX95$ze3>Cqspk>jtat_?+b zlsJ!~tJMD34Yh7o?=64!{LTF3D$Bo9qlZQU=`HJgjrKxGOQ_eq?P!x^Gjk4;9!|~> zBd64K&t<2~ww@S$=fmIS_%lvK-gNlGId5vV@(Q0t6}z}I+Al~mmNq*~-I)lERx8vC zRYC{~b}Q*)W}QaZ%w&~kmD>8CI=m+8=dtmEDw&MM_w(eh2OuX~Zql*>?dEyw~7v&DNUd#jzf@7r(&Hb{(hhz5( zA6LJx2BKj2-ak(RMR;)myWiRy$F9c4L`jxe=XK56mOyps|0sA^zP;bM2|^K`rJ8m^ZjudZ$1wE%`Li`H+@{3XPLgtD$}Rrxh~~%IC0g}2sV8_Uvtbf zRgqI%O_Bbigii>HQGq{_GjD%>$7T9nOV4-IuG^vShR?ga!=`CMPi|};Ol|7PgfDCC z?os$byX-@JtA-cdRjXW~E3Jjqy#zz^RX(-(Sg0$WWJ=6BG!3 z-EshaB|DhuiM1>$FTZTqnQa(!>h@|!*Lre+ZoLep8%Xt<{Ms+_R;E(hFWcv4B>OEd z5M%;Afj-e_XDO;NKhc1f?%A!&owkSENsu zv;UbeC9S3ZM`ErH($b&8Ec!(@9~)iOOr^qM-YBJ;$%I?Lj(nHU!e-focXxdeq59Or znXYn6YAZgy>=?L3fd-T&fi=;`LhGU_9K95KjLN?3RKdJG7`J7kqRLlQ}z3;-#Hk?v@; z{RL`mP9l&bHyQmxG5OM(7+-O_uDJ3i?jPje5z9{65?2tnSG=(z48;vjp@!&dpm@~7 zzVB*j8C;bMnaSX-Z|wlrvNC>7+X6fdyPvC9sc9NQwVw7JK?z!Bv96j^wN}jT1~R{m zZBl<{(#W}Fwq4wf6#Ovud8(Pjs;lW>{-Z~t7d)Pj+tewgIee6!#0Au$fGRRN-Gluo z-G5y5rm&{rU&OL3quV7PgRJirR%G<70y$Y^93w@ej=AT}6Qn#Q%^xR)OhZ*>f@U|o zSKJaH&foBJRSs4D)QcjT&bX;2ml(C?AKRk0`AhQzZ5rRaz}kf#$;H6Ym5mbG8nTr~ z4~Mq;XN`6DNxM{%?W!r&@K@nS3r1Jo5_u7-t{iX)p_#S z5X~gU`GaME8d^vDYGv-XY!?%`OGMz1GFS z?b9%2P8L1a*xJ#wyEei$q*nTKYFq^Gvr*(}lRl{VI%@}6dsPVXq2S-20;?Gu)Wswq z1>@=?&1zgqpCgFCM?*qebUlIAd`fdlb5>x8Go^UkNclI058Stu*%#DHi8`^!*05sc zZOh5(a)fDfLsi3h85rAGeW3YjLUS~*%J-2jxQ_T_QnlMt)9PsK*4@SMUj&I8Dz9uN z<4U*KYWrMf#`z$^3wq-OsSt8qFK0}!6m~9j6-nr(Vl2)GyXATe8a-pOeLmcD71IL` zXX5UJSyw`RSYDa&t&0#2&LKIA;raPC$#7&-6;eU*kQeOk(;jKwN(``k7s2^&=XV+C zN0K|tQGv#i$-eO*rIY;7O2mG&$Om2se1Y~q%P#hNiO~8x5t%Qd9icSmD(ypqi6Tgu zab(Fg`%7CFlI3P}X=LwJlsSGTnJ3Z5KkGnmI3XN&q>dPCNkES5yE-eDHOr1;Q`MQd0ABWh^VmQ`T%4Xf!;)*kFDg(c!EJd{+`n5f}T|CEeZ%4JM1>@6k zE|0ElR+2Y3myT%{Kzq8+*Ub8adE-fq@OyN+AHX|TUbEC+DVPY&I-AHa=u2-^)9>>fS>0?)g5?KISAh~?KDDZl8vw~>g5f6t zxw=<)+l8t4Y`Fr#<_d>b@KhI8MbeEJF2xz-{(1Bh`K`5vVZoSJB$;Ib732E#-#XqK zJh}@H*tVpy?p@wCGat|8wI z{LyzHRy23A%G0t^M_T%@`)q6eKw;~biB`~``o=oTWR;L1_;aRayCLPw889zhdcVI- zQ`gU_M{&oK49d~hIPKnyYL4=;VBU6%k&$twqMS=7{?y*imvYh0A28|Xy)h;D^RGv< zKaS`WqQlg$vZzRpV9<)7+$4hP9`DOTCx{p z*`y6TgDu;z;T&2lhAX(3K1}l?9mNTBYr^!xp#egS)!*Z_KjW%8{MVdpvQ^#nQ(sK^ zi>sN{%|f-qjB)wwuG_^0&Qx-gbzBNVP!X2o+x#hxju(&cA%z+~;vr$;ww?;N6is8( zhpp!8(E&Q&EyqPznx1nBlVhd$#Zj~C&a#OspO~jRK2V1sKf8ZAEqOnp8ERGQabe9nKimw$KpJvV!Rz#W#)H#;13RiI+Rk%{25|0mT&HzZl{p&W)5p%WsqI` zW)z4rh*0*Yk3g@HV+z@Mza6ZSfYJ{|?2^G|zP}O9UFk8Cfrv=0u_J&V!PX|ne@6Ew zR;~9l4ncAPUcj47davq2U{XETxn`axh{xQ9uOFoJ9BkwX=e}AypUNr_etfS$GlZ_K zl+51!8xvqNRyxVTZe{sdn=dqKau_04?969*h$hjj8TyPEby)y3yJz_#sV>i#H#Rni zrhP=A`k{1HQAW{{@bN~VVOv~=Nzg#z61e+LF%bU5O1;j9Q~bGNmi`K#$s>HJ`E-2( zPHL8a-->-@rH97>i}8-8+20_p2wU>SmVPw3Iu;eIeB8T+vRuDzC;2G|wL=cEQ^>{g z0x0Lzh%Xwt4F{+=x~50U1OUXE=Nb|0Oyg#mfA3!^+Mvgj-HEQw znQji-pGg5W%wuOKT>ivDESS3+h7xq5X}Dra^7v@VXp@V$>Ioi-ZZRk4UIL2|idSk( z&VfuzeX;f)Hny|Fc(1b8i?xE*LDy0rA5Wa$+V>5g(c8{`s=p7n^4?qxmxggo=kqu0JLreGA*$TSF8?8{! z7g6nVo9kxiaztlOzXuP!DUMsv_3y|-+!=eCI!PkrT%K5$<5x*UWBQhtmkZesN{bz`v~0!l}UK>U)7#soZ2rc zHT8Ft9j5JM_+36(Bfz6^^b$P&;8lb@NnPqw>g`Lo3hy<~aSz2zYSFE9rhR%$GDWjg zw&j%|XQWr*r=9PvvQdx)yRB)P-<1m$YvA4X@+-*-X3*if)V`I|xnJoCxyCRRq5``) zpUYXqx$`@D*ZG$uSRS<2ZYlF?QSIp6#Hern^N0AD${jFvpu=(lcTOD<_RK;~Duvp_ zSo#wSWrHKX!W>^ed{aI#1R~m?hKX1(=HI#)BDt1AAma%$ovq8`>pXJ4Is1?aEge0G zA7CURRNyH(UN2fXGp^Q2T+s%)EL)xz^O&|jaqa7sp2GqV4iOrvg_z5!!~Ytt5+<($ z*0ylZdVN$3-&W*~9L7toW~TBnOuqb&;~bnxQl;n%t^Z`0m$q_;Dg z8O;#|?r47c`mCJfft;T~)w;3p=*a?WnW<=nj^ubW<2R!fcQV2(rw3ub;B#N`II~E> zl=eSUgK>X;BXxG-{-c;D)^;iA_kMd8ERc@y6!o_%4}#f4Xzq(+ZXH7Y~|Nr_VHD{I^8~Yb>h<@;n)Z04mleh)(!yGjb#s^0TD)w87CO-|X{TK1mOAMy`KA_iRbCkfeE{ux^|i3IPW zDSZ{LeSa*Ln;ZTKGJ?lA{4;o;W!%~&ym;e;A(|FnjekQQo@Y%tgd1*0tG`6De$B9v zCumiB0fm$^QLxo-c>qtEaRaP5bE*S(@<*ywIoo-ibjfZhS~b?A;Y4YVnnZ`3-oQbQ ztE0K+bqult4S8ZBkf3>IEZSE+V@TjwHY`FE?zzj_J(Z^W!C)d@50kY@@6FRx8>jg{ z0Odd$zn=bB5HhV?SJW@I1cjxHUGyfn>~LMi>SU$9r%cW<4f>to8ta^MY}^UanN9E4 zh{z-?1R;ok2bq{-T;d0a6y{wqt?e7MNqeDczAAfYa%`!7X;iNLj$B;R1{udqkUR?P0}}GaW!Wh%D0A z^#U~Xq!TBZmJyg>9egq7Vt#qPZZE-?53X#Ot;|e$mQ{RC;ol)zxXuD8xGH0cDp_Q0 zxr&>rmX+paWNl)W;v#WO6DyyElSX)jOL~>QapFBr+*>YRn7t5cT3#uXOc8EbF80iL zmUtqCM!dmIOAg>P!C1CT4GSEULS!N_^<@&FGY#1bdXA?;F=%yhR~DE8SD8aHqBP1* zqGG(mq+q6DE9r{KgHesb@plzJnO(_H5P~h8u>HVo5-6m(=$)cO=RPJpYHn{aFBcu7 z+@?5TA*5cbyPw%nto-xlW@Z=DHxBv7#K29=_RT}NdA<@>D}t{kKI`T9mEQ*6zCFyE zV!c2|#$%eZrKn+lF-{1gJuxXh`NxRx4J^(jSGsDvySs=N>VmwlUKXF7uc?pDq|k?bi82P5IcYU^rND7P*l z+|N*7&zX-uJLb5v;yp%JGq;PtGU5?ZS=?GggRU$wD$(MxGl+7MiA}{Dmb(}|GiMr7 z-gpVek8!e!-w)imY|fv9T|DAzPYSm&tywd%EKC}R_dbj;x?;K_?c8=^J!^o~7-aJt!?Fa#Ke33Z zlL~?V0K{x9Mb$;hX36A;Tt)oHRYmE!o1}QWRUt)LxPe!;Qi4_5wTXM4&BuyN3Kc06 zKJf9Lxa#;W+GTl9E-%DvtdksLwp2Tq>zdwmDC!El{{RCm^DW}^;O&(6F#htREVU3a+!nzU!#^+kE~-;acLL7t zak*9!E+06G0f}M6m5hDAP}wY`J77}X?o|rZ;P0j@ypxA z%jWp^B^{@vnUuVWcL{8UHf|D-WTN9ZhjvX@%qVBLs(NNscEVD|%o3Ax^kdbzS!7}r{41^_Mz2+s`Ep};$ z-XaJvU%NAV#Mvh5{7NPH;V+w+>RUeyd{iyW^W)lYig>bF)W>qpr~cHrk2AB}UZV_n zl=+{TPcsi5=b8B6>|xp6$1fA8iDj8N;}WeU9m?#A=!aDx+%K|V%cvC0jSNd}?xo09 z4~R=(7^ndny??U+H^3&pxbDc!6#>NBReztD2Gxt}!2bZSD5`zb2AbY}y+(~GLIJtp&0Bl%_=i-2HgH>H09DDaaY#F;oZDDNlAJh-p|!Ly zUvsVZ0h)lpA2;43)CP$w0BvSWALTw+SrEtTiwH8B7zN!;T8hWvvUCV{DDSyV)N~=l z6a_<%({UCpe$JU$M)Wlf&0<$)nP{wUsF#>zyd(brC;rEVyW+vNBSA06C%}GGUCOA; z9zH*b_?PMj6*my9@siAZ36$T8lyUeapZ=RYDQ8 zF)+Cp;1z$=S_08=j1ZO*48=q=N()i5X4tw~iejf~F`@-6EV^S^vzP7_A(K%^nHpk| z&H|!YQmW;qm<+QuDQ*QpXi)SWu+owQqSd8(aTBZHWkv-t^z|@gdxd#yicxSZzL?OV zZN@1gUGT@wJxG-f_;bQ+zY^XhJ_$~xbv}f*ndp`0gs7U&HL@MVmEmPVfhf1PXVlM$ zpA$MsQkabL{Yy|C8RF&3^vuJ2XMj3~N8BqmcMEkpVmr1SK&V-{Ru7p)KBZ>(VcZm& z#RtUA`-3Go+-son^<)cRYvdYaU{gTd@JE#pZoy)~n8E8Xw z6jjFBWwFdP9m`D+>i+;C1hr+e5RD#gTZ$Iv z9&Qb|^ANJWqvr%owGg@`?0+52rIT^U#7Sbqy~=kRu$Kwq1VeDc_rZO_+hn){7E)KZ z8>n7~a=TfVNEko-K$I~lhCuEEjd~zHB_$vo%3v8K8>mxkD^k2fWigb9l=UseIgG5- z&rlW$B2t@;eiiQ`-J@v6lz)o z)};s@>bitu9ny$9z!zFq+@Oi6O4KK0z=Y|BJ!w|YB2Aasn5jj|EEFZShKj2aW0+RYJA#4{y1+ zKg!0*j2I!ZY=bMLkD6Qs9|BuqU&kM;L&O7{l`&*wWLAl960H$%Q^DrEuVklW9jIbA zhVeZN6NG>=&KNFY4Y4xO?NxCHQ^w;?XgIhJHE_5_9bTWQR?u9dIS>E7=Gq<`f7I(CM4?26#Xrq z?C|%(H7(q?xrZdOnPc+9EEDMBrKQE9xbTvY98}p?RoZz!?7kutOb9%eW1(?NKjVh=kA& zLgnge{Kb#~-cd(Kyi^618#rd`BOro;9=c=X2xyryKH`Y!e&Skcr3*w&i8>SQnUIyH zFqRmJ6z^mI04I$=6*trpr%(*asuhuzi==ap2I^%4)qTNm0hgPE4Y*cEz&>*KSDS}zPS3f9 zss@RBXxtSIj41iEGaxNL)&Bq?0Wc^G5{}5V)Wr-BGWgQ?UvF@&&g1|S%(KkLnP&vM zNs`#C;NANwsyH^Q>$C9|vksybhD(fEHqGAWOB`gH`2+s|A#V!Y1-=LU;N#!EeUR~( zG~A>WKsNq=$>z_GLx38)*}JcwxU>9#?|~^8XdtV7`Xb>g;whT)Vr*4+2kAH>RUa^Zssypj_=MduLcn8m?Fw#kNS4?u2SY>QSR+e9v63%I+fV59wx(tZ|c zGy17qqTW(dTbF@n?XCzal+>!BE9id^@v3?vaESIxOFwjCwm%Uq(BlBRDx0fAY@j^; zaRIp6T)kn7Z@Fv<2AaBcFQ@=U#lD{t7LKtmsMMxY#%~Nm94T^jAoqM13NeX*ZF%~E z0}I?O)H1|-K#a{XI&d<*a08Wr?jG4?L{i-_cPt4E9xRF@D5S#pg@9NA;5-m;!^3gE zaV*kT7VrS+F1nJdQ#V+ij7OxrAOUw_GPyIK5j zr%wxa{5HXS$EiAi%eHT(1EDgja2-w9gHRJax|XoH7~KXfLoeGXm0E@8k5dLGxTjGa z!^af#N`m(a;KZkyLqxe!pnNNV_rl=rc=yTT2p;f=-Nz2;4v17k2ktOxCKeQ=f&I%- zBWkYJ2ndE_h03f-c!8QAcp;4ta0Aj@z8gOzu^puf)KIR=*-T=}#1%27$$+wpPm&)| zJxXl3ZUUkjinHzpOfZ11;zX_g0Fwcfp+#S}%vS*}$5;$WLvPa<3kXP4>kEs#jKzcS zus4w@m5S>8_ci|jtthB54P+u+?h$lq98#HStP7}6w^7?z?tMo$Q!IFow5)t=Hq!^r zWAwA^QpE!@2%mDJ+AMiMZBNrJWk0Hw*qjyAM^sAi!56rcfj4cA_NgTds(rCAeYh>h zU}|N7nw14>E)ZVg<{Bvz7KE2I5NSjL@er_LZkX2PzfDhMp{QuKE9JSNaD7CeN z%@p6ueZvde(HoEXn8maBfY`RZ;$$ny0&Okd_P7q%9j9kdZKf_ZEh1QJa1A3YD`@u_ zt3jApR}4#-T)B#uwxgtg$jwd9KMGBRw+c2|-`sa!F--Y^m%PMWkX;QU{{SM^JkFjm z+;;qmo!>Ukr2NCgsnnz&^5>H+cElSXJYgx~<@_#UT)A@Pz0ar@amuzk5nZn1>>`V@ zBnAVX4||U&LDKN4nMsHzP#r_QGx5KJ)pOJ{D!9iNCBzu)jBOcGHU9vlAPbuyKr;ZJ zeDu!=PLg(+ly^EmaPv^yFa*8nOlvD=1x8V)Y>-njT}L^k`+}(LxOCL71g%$@eugKA z`digpJN;H4GS^7B3`UaI(>tXmh@z!K8byo&TcfG6y<`vK<%oqX#t00{4IBMSzOyYl zjI*$V0LH4YXbh=bQYgq0`w)R)HxT5Cv>1xOLFeu+$AAULxRg&iiUVd~_Da1<_XEVd zztBQaF`|M$cRN%D#LW?WI3Y1l>Y^D)0gJBlL{^NZaqd#3{OG7(BSj+J8Es}~N;1}anBTe2~mikO70H5(@yKjN?m6qXG!@Q^6axW$Zj zUM6&pXkaX|@Ty`4`(pOoUrQAxjoXL@n8Nn@i!pcq06k1F{Q83Ih~2SWz9lGNiq{KO zC`)w@Y^&xf`|&A2h6du26#iDx{p@_u!v}x+yUvTh}|Thz{eqbh}ezIs>At?#H=h%xlrrKOIpJQ z&AMSRf?qTxwgHIfxbC>UuMzJl(+k;rE#eQs72V5r%Y3rhgQDQL%-2;@bux->RFJcb z{(Xp7&tk6S^ux%px?u@Udxl16q{g1}_b%hzTpMA!4*jy)&zqTwiL3YJf_sZcmUv!n zdVy*ezTp{6^0ette*;isuk;{F%1B3~^$g~XNQ%J8!N&5S`JT3#5Q4Q-is zMh0Jj+}08BK?>i*)WT{}@P0MIo-lEk4DeZ$b-=pv!&T!EjaS@PY1A=94_(S-G|Gql zmxQl_!lvhJR5Se-2X(#%Shyu^x8ytoSau>X9#^&+-G){L!>2O6GIpW$WEe|4T{5)- zOvBy6%`&hCDJgPHw!-ckNw_9P;H6f@S#_<-I+*GgOFBHTg@})28!j@a5)9~#_r@lC z$G65NR+c2*+4U_mEt+M#%hup_#qh+@DY1&kZHu~ns!tw2TvnP+mMixbq(D+N|Ca3EUZDFyc!l$NNI4riv> zRUJfZwR-Ubwp3wDLd0#`U%HBOnQ3gd6D@h`g~fan0+yg&RP`^(9~@gP^5$a{@bPS8 z9%8*qYNh!iDw5u%eZgu~QSyGGn=H|PcA-2lqh4ooe!P$<+$OUMfM5?+>N^hBSa34K zx5h=s+ZP(R=mk?=pKz+pSC*pT^8j5ydxM&ct_J0{ak-sJ+rf>|oj0ATW~B zyg)l=gfHQa4XkU-JDz3Rg&2i)!@)Y`sIhA3mYT~OHkQCjid?XjaZ`L-EHf_KnQx1( zw{tnBF@=K!Di!I44Awo6yct_v#5%cUwEqD1CKv8m7ps@I#QQ=P@WsW&JD2H{my;Yd zfW{9hqc)PEwEL!OREk<46)=ZLhYm)gi502bR*QpN74b8{E+(6dsn&^e1;@H}wqhM3 zaQ!YPIhE;ynq_n`W!gi{)Lz1G2`?_sh-|1*E@?2smpb;QxP3QwlF?N2M>r}Y%g$q@m+*HLIEa`h--%2p&<6C4<7!Q zBCjh^gbS-W#-pfEb1OFqQJS@u<5Yh!+Z&6d+U4fER$&hi?(oYJupz12#Sxeh8jCJ| z5~Bq)#x~nG!Yp3k+Y-@G*#hYIA1o}p_$`ZQQUw>$1jVyuhL5)3#%I5WQ(RnEujRZ! z8Eg^5!xMRz@FL)yb8_S3nrc}DW}CA!+`a`MxMB|GW?-KZ(%zY8dzU`gGb0Z)0tMVp zGoUVbGUE(eX?CK{qK=}adX!45jqYA*W5g)x0o*I77XY25$V`oHR@n0uh9=~-tB;A< zac&SM!VXwCKHz78>D0MzQp%{VrG+jAL55mE1VX8xAwGETVx`?xIasYtCU-Nk_Q1OL zaDP#D=37+)P;8HFz@?PoF09Qh!==Ql2S2FA-Nqa;kg9vKS6wl2`DvCzFU)Xf`y%|I z7_JvV7LiDunS6s5!uf>Vu``)Xtnb2C%YYZuJ!ppM)Ymo(WG^r!@Z!z674~BDY_FK% zhAG<=juxeR!5susnR%9X6{2EUF77>&*mf+qrX?nE_sz>@S)2yhp2#k$Hwnc!2jZOH zOw<>nQt~8M40CLJBP(r&3Wo?IVmX9@V1JmxLLw!N;rg19is#dnW|fs2CRK|?3z5rY#qg$NY@bcf8(+?fbg=jt|Ymx^6r& z{c!a$5crIBGXUK4O#I8|66L~G*s{I<08*N`6F0-Zfuu2#%a3c?uiU*H1rr?;=@gjm zY1;$Z`;<2ngDkmwA_-STx^dz!M_gZ0m#IYW5HBk{FN@<7FvoV|rT4)exW=NLOvPZb z{YB1U)W9y-7i?bTwN1k%&bf%`BheGZOB*Gnyh>s30XGUR&CUEIzykpXXm+tRqKSC+ zsNgD9nC229I#t85WF6c#xMzYExHW9;bpzsC6&v5Uj}dYV63c_g@~h%l;V4s)<&G6q zzG5+Yo2~ke-e+80zGAe_?&bQI;wDOhiU|h;C_@rZgU+bYcV+38Ld^~CE^@#T|*xBM5smcf?L}BkPQ|@mad~Vp&1;LDE`Czhbq^= znKr&J5F=9m0R7y0?m&~V?a$zd09@}dTWTxJ`^G8MzkE=@&BS#Tj@K!Z%nAxN9FOrG zmRz|^=6+?IG{s9;xWPPpe-e$8Sy)k{$Cr8e(_$d*JbX14IcvN1(RJw@pE za^5e2y!-tSbr3++Vxw+^`7d0JOq~QzucBB_*(|!@hm6t3>Jw z7<4)x)yze!A=vS7iV}oFhnwPFy{(S@thc{X>sBpI0;g{ez?bS-@bSXMib~dchi{ht zc!aroIO)UN^S|Juui!X%vRent#8A|@a(Y3&su4PXX92Q25lHGZV%Y4gqa8*nkw=28UT)ttox`Fct(;GR=_bk$NWl?@#%LeW5K5MyhHnl>xS%@yBZsTs?;^Q}WDcch}Q!Mo@mWpaC za?PkW-mu zRV`h6JVu6~`yUJn3pAG)L}4jAA&{)bl87%+GO#F~{6gl?&SS$=k(K`dBmI%8wIeMd zt)6BAd6gQv-mhPQHc0mx6*Dc>#{P7NT+ugY%VHd3#KpbKgad{nNATYi_3*iK939K7 zGX8JhD{;g9k$(BR_YUV=F6T@%M}v!&bu94}md&>>QDKrD@t9Jj$Ot~;v@nL{iU*hK zKHoHL;}N4YgUw~SjK+eH33nSZ)Rbot_q5JliL@+_1Vg1{!nc$mV}0p!9tqiEWMROJ zqUw9GHFp!NW&q1EiCAbl_V^?1Uaf%e5z=(Jl$B!SzfrQYI3wOztBp)xNd%YA7aF z1g)c}+Zf~%2*NVg?lTRmVazhtHo3nis0m9Bh=>-L(py1s1&;L`7p=kpUCJS{R{>VW zY|gGEWMQ(glu@zfE^O4U&skZo$(OuR`pzcm`JLQzAFX~TY(I>ZGb!9`&&$knT-SF! z-041VD4+nL?xXRkU&41ZV9VmnQx;#ijC_-C&l!8+C)<^L!F)wwo>$U=2(T#w8YW&pXw4mO9S&!5$p9oQJ|{b&-SJE zAHaXCb$ReV#efO2RZH#yx$6NOkkgYQKTsRLaW!iTDS;_XskM-rUA0!nNn%>w;9lo) z`Ht?R*ThQG6xBu6B5ioDi0*rdUmZdQT(gAs%1^ZF47aii+`7EneBkC1_)AkRU#W0O zX>UAa)K*l?xqhSR20eRVL%8_*kIa2XZ}RJoj%cCZpHS3zrbrO?3NTCscL+O}0GcOB zjE~&>X?|{1{Cv>E!8-cGsfZ3Io+i!ujZ*S3ND%1Zm*xfsg>EASMMQ$clpNpo8D2iw zxlKQsggT4m*Zd5zxqPs1)?>MoBP`mnnEoBhdY2pQ=Plo#y}jp9(zB&ko)$FwwyyhcRzxFP;psW4Ni?%hl!{S!J6jLMH2H6)YZL==a z&wRGm(n?Ci=`W?+B5wKE@;#FqR7X@tRe4^(Kj@6+xGHX}(hJfdYB?Cz#F$*xBN zLK2~r`J_LY`*?Z%4$i+P5iZh*csdE#?2in`bE&5X$f@Pw>LnxrMNwudQP&^)&r?4x zuaA6Vvy6E8Qz`ijhrC3t53Af|sji{%vL6olx!W-1Z@99^=J>qwLXzrHwRdgzE~T>l zM*1OiYAEQ6VRBIwivIwdpWLeI#=?1Y;m6$f9KTzNwwaO;i$6~Dw{q_8$#1E{+N zrP3Z%)Osq~t6$3z+Z}fpuxTI+X#-)&rr_97Mw9js=JjoGA5H-ph;V|xOj5;;*&hUZ zrYbe4xEh=8H`5O9%<8Aw4|htO z<{lyQr*}0jUkfQOY!d@7*|T49)cu3eY+Z>!Eaksk)~Hd?)X7%19|Ekq-hB|;B`+8J zx74jD2-Z_qQuuoNog`{pcq@u;i*+qwYxOUa#Qlh}^2fLLKPbVAm@R!DxUCA!Os_N+ z$?8)e3!*sk`-Oy$#4SOVX89TD;gs78Aspgj##q7?J7Fp-?+@^HkmOX^`r-coQ%PO1 zVel5TmG4u-I&X@DIqp^9zPpUQh96S$)UC?;jhRVtEkg>~x9(XN_{RPh4@rDe)H^0R zImezW<*0J??i`hvTdDh(i3o>-#AVAPJVoD$Yx22s>BO{9&l~s{i^4jr5gZXzm3zd! zp5Z}zWwB1;qSAvRv5u*+GrtDmw(5z0XNcTYw$~Ng1=JUo9?ANnjY3hGjf*N222PmZ zpLy4LlqOl8{c8qTIPo&-6@Ld6`~p;+&)tsa1rXOcWfZnuyfL zo-^iV+l?+II~ZQ>XLB9%O;zz<4w--aH?x)|wwplgPVRa}CU=N8Wbqp680sB7SOURs z)E|NO2|-mfmJigdUZ|Mbw+k*Teoy*}-=&CDr3(Vp)&o0?7Z^$g;Q;}G?);JQT5c}V zAJnYL7|@x6xN!EovBVdRqxytlob|Q{X;az}e{}C2X5$|*g-Vqw;m96ofFLrrFI)}I z-*BE_`j*af)cjQKEz}nF@t@((nV&pa++K0UGY0R&i(I;RJDtui zG3q`(Mv1rTJW}Ol7=?EYsno<+gw}&ZT2>0VjQfPI^p;!h4a3qbTPjh|k@{uESRq}( z)j>B4&S1Kh?lL#1nEA@VyQ%F1gf=3K0CW&3UrjM5-dSGFkEp9m`1oPpQjWD79Q%O* zb9mzVm}6B;aa9HDfpr6Q%M%!ee{skbwJeRudn1}!KE!O6CG6Dm!(Mo!ekO2Wwr9R+ zs)xB>3_txQ6-~=D4+oh;hZ#w<-Af|%P+p+DFz9!=ezz@_)kBNbOyU(Q#^t4zMmiv& z`?*wFmLG0K$l66WGh@%R6F9% z*d>>{;-lV4eq!;yESqzyKy^dWqFZY4j5P@un&Wyr#i-k^e%J#e z6Sj1&pat4_=V?FVFRGdDXUwqbW<6(t15i~JW9HtbNLO;#{dOmWaK!W}({28bvQ~ik zO{478rc)6bo}e9YoD5A&*~LVa0Mw!-O(QBjeNNbK8V~D;)EAVr`ngN8dFSdDr9eGi zdXzX|`ik)tSj+T9V6EQ=Ps^quM)s%w01eB%a&kwgf36M9wP923#(ey`s0IRNV8x?d zuEGGvMx!W|TZx199iM6aGZTOPGjh3LxJEWJE2?7%jz%3*a{4?!FenaPz>9+5T1dqz z#n|MR#6h*o2I31?jWLN034&&~g^Mt*$Z$uv>UBJ)bEnA*Xt;RUa}}42exu$uD>ZW+ zFqp@zTkLy^b;3_@Z!-!b=6L7CZh0%>{GD<+WrG#wUv>Q1Y*vjO9|fY}+-u>Hm3Es$ zvy})|=1YEOY{ydis5NmbfP;8qHbTn>Och&RI%e@oGUj=>^vmVHJW(;ZOnVYgYUd|5t_3p$V2IgY8#G1t1K}o;2xzoriKftVT|G(6}+J3(gGO@O4L>F11erWt|^ubrDK^p zn$eC^aTaDHmwiASS?vulP2Qr|+ytwEnr3YA1G%^}$TIg0R$s&lfJMMI7=E0R_i?Z9 zGq!l#NE8=4eZW2LV&lDr@3c{xKFc$49oOZ^GCJNVplOh7x|}CEjJQRLpNba-S2_ z?=sy-%)^N3m ztmWjyx%NfzJrgl@pEdGFpAQ!%Q}u_y|){5071wLAb?RVaFsm9!~mu|lISHg?&EGWtOFG6~w)5G%pF*{{YExlOuZd_CgnOxpX8 z3F#|yx{PYwigVY7c)x)$+{c-G3B%$Yc!kJtCYLRE>9~S zxpgz2fYi1&>SG2F=Av4Os~CxEA{|V}%*N%i@l#4Cc5+a*qOA)LxSr*sIX@Dh1A|EP z?+{Y3wvhTf##si+q?DPLG)dKQN5bRO!wg+~JNRSI!S@Sr8G@GYJOg;99sHS`RPp(h z@u{6#M_qoU6wjjKACF&e7}V|Of4Fwde(qMzH4os)^#I&)WLm23TXzo$lTqs7O^h$1 zcDYI`xZyTJQ_YWvvc#ESZ!mD%XH{@*+?OJj>Qgn;e&xp4$LWnqrYb1|?qFGO(_iiq zSonpqWXwt@ObraO8`QZ25rX@ErOl>_52%}Wu^igJwZyu-IhH4kORVu8qTdMx6Ti%J zC%5VlseSvt1aQs*|0*#`kCC6mzlpL2gNFUQx3SiUVa&OAovgbx09 zE_$B62s?%5-D`!_OI$ZHxapb%VWo(N{GFJwL^=9+Zt)nyN5p0n#J35YOPigb=Bt}2 zVJXr(wq9;G%a^>y7`Qtiv+jwneMO!37kr`}<8t3KFx2{msc{ASkAR7>_YDOQNSj5A zEDF?8*!IfIO}reBQlE&0ZnZA#CVF7pGKd=-5r9fK176|p>5k_j-oD~2LQ~wY2>AJ{ zQjQzzi*qcoM6=Y+sL@|5C6b0}Q?eDKfIFX#0Qdk)%~izPfTKGG&X-UxeZUteluMTw zwzkS) z1IZ5fbdIPVpe~I5Nnv+EEWU~* zBkYU{TX=eY{KErqFn0~EpkT%(e`=1P-YRZ%qlLZ4HzU`Gs4jB{W0{sQ8U%muAmx=> zgCjFyD`Cva2SUGb%f;P#m1tEP8g8GsrM2q7t3zuOY}`7s@5E_90dZQyqlee<^v-g>6%fi?qnq@n97u?0D+$G0ogSY~#kZ*@`!@|;wmZfpi?g8APYlAuxa0{{UHs9vFO%_-M%fbos1q;chlJYGh9L=3cn;pB(O5=4k2W`ANFOo zCBfR^XolnU99j<;-;( z`95I$RT}sOW0Ss4Z9;vJR?sSe(c}0Bre}=xGcA_GIl1@O%vm|4dS;h9Bk*3TH=2QE zz^fvoM&a176#`|_0*Pmm;vkJ{V*Ce)XEP?HK*fZc2!{DPmep~6OpXLO{WzL~>J8dr zw@{orDljJT*;!+pvaiDYM!Mk-cg>JTTnnOgeA~(4E#aH&e#RrBuB%UHPq?_)yo7p7 zf>lIKXN*;Rt`-0ry!hhyU#?h}kKwEwkf!vK%DH&2XBT`LU|{=?*T8mA6h`ys_}Jz( zyKL(opjh*c?q}c^@Go$1_fpgbv8pN#0Jbkd19FI~Sd}bJzM7h@*ZP5#HvZx;G?4=; zq5AEDT~L1u`(kbVJQ<#%E?}g3xc7Gw_Z@=aX8VvmK($WGA6{i5m`(<=cQfVx03sHQ zD5X`qgqse(f@UDe6|Yw^K1lOZtIIDnJWk7~&a4Vqmjnpmg7_k;TdA`7V%~VSAqv?p zTOQwmo3EX=`^4*;$@$rr2Tlj4mU{W;vG^+T9-apH*gQdt;Zz#9ucJ@CA+U68~`h|)K4K~>b;yhd*I zA4HhJMsDGHV~k$lvr_xuUlY5A1S1GLn1|oPxqZP>I%R-YV`22_WmRWA-vgR`GdjM2 zTRm3es)J!k_>Ak&;A=GsF1`(VgXfHZqfVv8`1vT;!0u(J^m$@;EsNlAu~}8Eyif=z zPh=N)!OiUR2Sl@?S>N#u@oxt&ak+mE&%p6AvAIcb%38{XF#@0)mgUqcht##URx?4D zvLREbCG+;l{{WFH-rJjlt;bBqA$X=f1lXN3<_@CF+nGfR+)RyDZ~KOL`B%5g@eD`B zI?Mv|9|ObwM=JM!>=UU;^(>dH6MGrYn8y9b$Ay)XgT!8{IRkt341-lfz$8@ufA$Qm z`iiLo+_sogs2JnaRx}E=)+=wBXO2%0)9xMd(enjBOJ4N?DP|h6i5!)GJeubwxUYY~ zalj#f3M(Gw;#32cF?G%$aQ^^iWM6_{SdL$Xd>A-3Lvc_NtgLlNv&k{XxUS|{p$&#u ze3jf8nEevyDuvx!9TWEjwU4czgSfGsAu-rWKo*v*Eo<%}Qm0w{hdL zRwYDmZvB-3$c-sz!E{y3o^KJ4G)AryrdutTY-T!{^A`f(!3%@C;CIfg=IthCc&~Bs z6?gE=6Lzg@x;#g4_+|@fd3wn`$QP+eNU(ZiYg0P8p5L3PPW~Ev6*Vi7j}*;AWbD_8 zOz<1GF|ecxh?y+09$8p=fQBG=Wxz{X1Nw#wV151|E%zMQ_Yr}Qn95AB*_ieB8&hI+ zxqygMdWLjW`#Tta+KP5|AF15BnHI^%Pc4Cs*ZeeZl<`nOWAukoEwKbj=;NSCGRq!;Y0L{wTJdR2(<&yaq zS33*y>bMM^qj4oeg0XP;mx{w_@^1&mDGSdq9iPg&AW=hOpmfTWxI!SC&Op>O+-*+ zE$b7o;JabzF)Z;f_%2+(oxUJSXTCe&L%uqe!=pA~ndy&5!>W~@j&q^~W-S5}@6XJ( zTks{kWUNfks;D?}3bnR#D@_XSF%d^2$u7U_RVz`XVOJjL6@}4Ld8XjN7JbV>cO5mr zx?CEGGHsoeDS4MOGj1q_!V0*WR^I40Zs&d88Ak-gM*DwLGDP5vX?DlVJ7B~F1SD8N zb4p&Nm!|CwQ1N_do(Szd)V#CFmkiuVpB#Vd58yO>b1Iveb1m@;&HPrVt;_hW7s#uq zuZ8>=TF^G@wT{4S*p#1qc5-=-)aWW;vuQS2P1g_0P}*OBga{%*#M$mB(i26C)9}K` z@;DhrZhR92^A6YQd58Ya$nECxMh5c&cMAA;^~E1F@eA*Os;Dgl>L&9#`NT;B7QB}8S8%b3j8caUb#UCJqAQt;0@bL%)G(Zv|+7n55#WQeADOl;n97zgnNZJ9OsbUn zv@YUjgQwA92}Win+wLX2cO2i_Dke(lfaQyCOrLV}twS_;fLwMww-(|76vLlf=gcNQ zis5plO679p{{RZ+tKeyx_z`hac;?=SF?b%OnmH>znOx5F^)QbyXWCQO157ip&v2a+ zx2Reon`$kL^PiR3Q0dI(7%KM_1JqkclCyF6U#NHS9hLIb?x$&Y8{z2j2H-U;0!$D} zEGLQs8rTJ}v2ly%Ua4t(J9O@~u&b~RFpM2f|7K8vxFg4U!YLmaYu`&cWw}Ni2reN(@c=zAeM5M)a z{{Uukxa53H6BzSkY(j;Vvb@1F1nPK}G+v>#LKSMV{-rFMxAoLQZw|iVTn{fv-_ah2 zZA)983Ys|y)?v*Of|+v73+8q{2$)nR^h{()^o?Lhp`(0fd>>!I=i_X)T(!sW+_;Gg z3*SVh-YPHzptjnEqW=H~+_Q~mk*2)yoX(~NN1F0Xm*lxyJhu!Q3XhO$jIR?q5JbjA zhV?6@(+E)+zjD)1QtS9L)Hu(WFkHPJ2%1RlxEw5VFO)Mg@>@AIG1nEFo?hi}OsuPb z%ofuLL{LN{s*i-*6}EK*+nhuUFjC`~+tQp|SMI4heey)h#k8jn{{RZ&kL0#mTQA^W zQkLJ5&y&os#PM)h{3CuN33`|D3nWLx&DR3*7mJo$0D7RfB9D3JyseBD2Wcn`OOY(C zEWI0-v9`r1#-Xp7?ET6m>=Az$ezo@hnw!e26P`G`{ zN)f)!D1qB7wSz3`@hyv=WLJpFbP*lIbVtnb5%C|XOu_uP^BAL5R_)Gw5Nr5f;;C}y ze>DOs2+mD@3PRP?0c-e5V*vk=1Iy#}SWwrcH#iCHJ; zTzet0>KnQyiByWe?(-VfvhG@%+ZG*zGg3blYwlHL)GMgL^9{L)2QzHXPT^X)F8xQL za$oicR<|uvOZ0uflLzT5w3mc$l&jzQDb!R>n5bVD9ltDh#tp*UfLRKWBE}$z-$OS8x9SR(x>Jsb+6DwDdj1EBWi!OHDcpJ9;mk)KV;U~R}m)S$bym3Zoe^RS=YhG%Gj@% z{{Ru{XU{AJ4~mw%e6juyJW&suU2?-*6B~`SLRpOxo)~gsKOdsnzJe_ML)h?<)y!Vm zWa#_n&nJAFKId>?A}Glg28*j@{+k(-W?Uk0TG_`>#@+`*J#!#2QM2zc**sikqA<+{H#lSOMFXt zmihi`m(_5875o`|=PBGcG;lDovjvz5F>NFTq&f||>IiqkZ1k4tA`as(&-zNoTet4n_USj1~4v9laffx5EETIOcm|d2M zM8%_I+-oar$#uBPE)?MOEC61}D=g1U66z}4DY&Ur{H^QwXl4`*-M{=yz4BFxur%4E zVkZ5nzif8S--BI$3fXT^aQ00y((?xM!7P<37agk;Q0$1@;tBzGOsA+{C0MCG;05a8 z5Ojao&>iLU)Wx4H8d;V5VuMU8BD6Y}7W}iPilHxa&LOt2pL>RaQQ zC!6CQI0$CQ8q79HiI|XtQ5l{I-9UPUO7Y2BxsNfazD-BO3xN5a%`%yk1H@}W1+UF$ zW8FT*z-h8l>bLxZF;vzt@WH_t!$%s*Q&$T*3=yX*5zR8{?Tae0e1HBPYVKPtnT2C4 zvy)0hEcY%Hp%gdGkWBpFP$J)+DC4_!5gBFZQXu&I3z(O8{}3!%?-nDpo$>OMv!HoZmlQ6^GQ#Pl)qUC%=f?qa`u zc5!A)=db=Zjkw3p@%%Qud<}d9xtl#fljcz#FK(mg#@qmC<>2^vzHW#VK-EFKR!4$j zNW1%%HqSqA1lg9kh^C5-JN^!(aZToG?ky;Q0@Z%t0~Fs(E^vWs8q%)N3kPOBL}XfJ zX?dZpU(-xV9T% zsh+AU0F2ehsEyMbvb#PMt%kU^<1!&Nv4W-y%G*>heMe}{Z@%NC?YHv<4KY-|amu{M zrd#4<#M-@_>R-szzfjy9#Q^HaCSz_6UR#!yxU4=%>uszNrihd3V$??bLrRKcIi^-c zmi@(!M6Qw$V(gCABpwJJ35ku&wpS}yAlFbvFGuoQ{{Y8o>UwH+^M1I`#NgTY2woxF z7e|tBjWQs*CsiKUaYRL`%L1xpfoAD5SC5`t zjA7hM9-=GYn(`6}aE)E)gh?^k0u7;25D~SW2etw9X}?n)0;}p7XoN-lN3v&!6vzJn zhTr}?ZuqCfSL5j5!Tb(>Hx9-ppMh--hw#lPO3i9AsK-QuHm+4?S2xDzNd}e~?q1fe zv7Y8^9Yb88RTwm80B%0N9_MTBEl@`F70ku~TaNk{b>ca<@05F=o)`)UNB*ocwqmy` zeakFW^nbYCGt@Av+`34N-*TGd-cOD~X?gA$R+xl?4!R26LB=39YHRo8Oe3nJ$k zHy62Be+;Ocb#nWz6p5UF_KG557^o_?3z!PKQ#;oDs?OCBc!vb80~Yws=2-2xGP%=rDFmv^jM+WJ zMR9FJsItOi#OdJ~CMtV*!NxpF6IDOJK~F}*oSb?d6~Q=C(~%a6-r~&O{8M3;41ms$6RBtnYp~%?T0)WzNY^GX^8Ft zOaW6erUnvO#ut*HIb)e5KxH`-ybH zX?m0jc#g!f{6DF@X1Hi-6c9WK3JNbr*>=}f9X0N;Wrqz5j_zSEszX$ZghYn zEI}^|tNMb0)yIro#`7CotFj9?)}jF!H5H|(H%fMr=8RWR7bzAUy%BB1X{k{aSlKh& z-KSqS`HIo5!K;*IJ8}O2$lCmJy;2lJCZ+zERp)!TU=}&{M#5?~cs91mORXPicECFd{HsnJn$MW7cxQ=DIAz;VJWTg zIjz5CA9$Et^XGMYY*KOtiCCGbcHg z?cSnu;DkV^?cAWjuxdP@CCTbCq3}B3(;3~vc3$B9KlDP4K5;h=SZ(}qDmjiagR&-4 z#v`;uI5>b3`M7H~u?}Jqu=|wj5wlDigJyy;6ak>sT|j9pf~$*K>LW^y88tu0&6c)x~`AKyze!%XRXN`sl$PSd~CUY_GPvLJ=QTWl<_ zD#@F{4iq7jN{I2)>gG)oC0xD_CcS3c89-nKdUN~R-QLi4+{fOL14>m zaP}NrC}c2Tbj9MvJ?WI9km(LXHMjE`tQYP$=i{kG+$yCSJ|Ph9;k|zl7ka$I44tg9 z71V2ohA|(Kj}e7+{CE<@g`p{q*W5}h@8NCSYoKJW;m-NKGoB4UJarX=V&H0f*ZP(@@B))kg(s zKeWl5Mf?~Hsqcr?!wxrynAr>>eP(=0%c@-BvC z;hm#7g@J%Fbjmc#mtk=X2{C>58DPxA+%}5!G2DBJa>fAdl|W=>HCExXa*iNyshJ^L za12Vgsu()|0LUf7!*<(Ms>k9XY)<2&kq#JX{x5&Xckr)p&i)w9L$(lYY8{gZmJ(vx zWE+?(1THAC`hbUb5mlVWaDt!~&anRg*sWYji8C=M=$6VFm+X``!w4G8881Y4_GT6G zP55?005Zbw9YIuzr8I90GU0ktV<9(djrQwCT zH7%Q#YbYb!#FD6Xz*SjJr&8IQhk`E{aRYqQGv*!fQl2g1Q~U_dWIG7 zO&v_rD-7x(poELr03PA|Fbg7Si7Yg8O+c zekPgW@f_LWC99}PAa_cCk=pEF@egdu#2cvEu0HMn&X_h5>pyeO*mVvS725{aitt0M z>LrY`pp9V{Dn$~o)C8uOg$anvjk4tQM^`dXp;4m9=I#fBqnFIT=eLE*y$C3@AmyIE z9kXMuwbQlgTEb-cW*x%IxM7aam?X~On_#USOLYihI2wYo@S#qX*`oS>xVmlxnFvSLsH7p(1V>0J zWzB5bqc+Ysh{{cq_dT+i^zm%ewYLjO^ARrqEMRdN72z|8?fc=0w&iy!Vq?z*^$UJ^ z^DbY87O05e`7_fM^Zc2D@6R~yQht6J>SxTpGuJxd_#Kdxi47_ik-)i9CR1#%sQN;k zPoy@+=Ri+67J(myuZ&l?94uSeU;#wFpg&)@4Mu5svC>ov5(2#HW|y{ggxpEDCTDtu zk?vpL`fmxJWjDn(oQGfCw%EC7`%kk!3 z(V0-+?E_LVG2S7QF)!q~qI4vx(Gpb7XqDaY1DAl@$p|##e0b67cGpA@v<9O@6&s4J zjgb21xGc$9nxJL8dWUMLY@-0v2c$ynxHN{-8&uq00bK-3Wk;Zy*BKD+{f|ZM_*H8hpfgNWhjdTzO0S45yEW`zA?qJ*>5<91(i%ljIbS31RV>8nT$}z z?E%mmhFYoUAXp;xBtYs>_X;6PFCK_NPzI%H$b+btQm!+X>oJPld#Yk#aDTj57nt#a zS7dQor*pfB3RFiZL{0Kqo!z?eQi)Bn;ylONELJrW>po^P9UXc#)TIo(@y2#xGY;_XY-R^ofvQqK zAU9E+GP~jaUsCU_O3m<8qE?^a%L~qUJK>o*m>W19k8rneuS8}mkg<4}BN7;-g5vJkj#9g`WPi+3r7XA!Ja?S}*x01MP5zi?nCb5SLI6C&;^10IJ{ zEJD{FV-Oi-bt}Q^+;&Q*F(O?tYQx~rxMmeFrauKbJiPyIQ9 zRvV?_=vG#&jUnn0Xub|=SMVLq*-)_9G50f&l=znMDU`}(FudHpZ`99n*>Ras_UCgw zlNmap(DL~*nw7c5-`5#64=m~Y{{R3v;*!iBcx8cVX0jCx#H=&Og3ZqJDpV1JpgFfZJ9?^uQw{amJfL@pSc;DTzi5qIun zBfsAiN;44+vllYLuVhD3*A_UB+(EdDRo4MEa?;DZL&caP=x7+!AunoJe^CHk#al^l zBzS_@g{lbci+3F1#IP0&y6=IS4ytTCMzXt#XUunrd{LDaq6vw@E{4Sj?Zq6QroaHgDtK=it)jVc+m) z%rDP5;^qGU4t@>H;cvq}W_x}{$nbYI<4C4GOT3aj9d{0-v9cwx_2wxA(;qXk-42(y zr6)011l&~4%NJ&Qi;*!X8_5`A63JL1e~=cWJ0OhgJAe_RY^Yr@%2ICz$8{Rh!y3>^ zVBW4&9%n&Rx#;e^B(|4}mC=EklP;(v72!hTS z=ZN_ryvw^~saB({yaPxm)Nlp3vFVqsCd8LEYk-&C!*vZS z)X2Y4ET%#br@2ei!Y&k!?Z%u(lm7rGscZ^x7@{Yb^2~$fL0@wdsf&I5KHhJU>Upl< z2VotkxN#MsmOadun63kynwRc(D);iwWVg6JS%O)Y&%lwc{{V%6_xvT>CMT8|X=Uf< zbuG*D$HUWv>0psTy~8o$SBygs)Jh+Ej2UgJ^?F1xyXr z^ruqc?FV_5X~O>iS!yILyg=yUm$~4vyi-1=YT#|DSLq|uk`%Q&p2(p=6_WU`aSuA+ z@08S<9jscg3M*sS#oTA#QyUB_y$Go+!5jmq;ie@6XjnI=9ZE{5q7U5@WX08-1}=0M zm{)UVWl%(VDh;nu*B&tjmFxY4M#XI4%jW$d7F^Ipxb&vixY|ojUUm1to&zM%B zUS=hOg`!%a6)l2bl(QQrX`Hx0ojocK|5#`i8wkV-+8w(>@s3UL~ zTJp**;FX#YI+Rf9l#Fj{qUG&*w?}i`?q3h9mU5F;OTCDd7l=u1&$;HlE4kf;oB;{J zsc(p_RMksn{7dS7Wu>BO&9L((3>LoGT(&C7V@)yR9%4NI04v5k{MfDw zq{)BNA1{9le+&E%JK%eQ8c`0iQPb4if)}zN&v8!TZq6V!GD297XP2lo1qu+YBH@73 z4uo(BEo=`g)*-sIVElIk2>>5h(v@o^!c1XOT3j5pA1tX};2QBPV3&-FMyLT}^#S&p zimoiFSuYgj7cs3$AyvT2n8*RKRE!n2EzSH;(Jde>3>`&V;uS0@+Y{Z(2?Nsro3A}i z;k*9;BWnoyQm05g66LM}cd2z3H-?CLoe;~mJ0o#RF;M9{imJ10k*=bhMZ*vi;f`(b zE%7n@_Df5b%^p4>C@}RIPYlc*%Ue8P=R}x`Pl)dxwFOzhRFOouLL&+!(JxiPTrOax zEHZ#@L2y)O(Hh5~_bhRukS;@Hy9O4b6O0%ej%pXVoL(G8yk71{#Q0@d^ z9m3R|6m9Yekv)Qa~K*yV^=E?zyL$W1X<8;pyn$pQ_d>+Ujb z?mfrtWGhvP+k*`6pYV#}yOl2Ep$3MPc;5adW1u!d2hC-Ox|H=Q9;SPbrdy&{52hKF zKHLULxEkoZ#!b0bO5}~+IVCGWjfOYpM4v52zOP2&&ERX?E9;WYt)_fAjY!+O?F_1iutCqQbW1t@6 zlF7V(k?4G)Fw{I7T$L5E9i`pNz%79T5>b|` zftONTLxMLezFEv;wr$U8YZ7)D{iveeVd)$$QNo>Zbq?Z`9JeoOUlvOyI)`xhdYIu? zEYgcE@XUO?@sYkx{{Vx}3?)y`^W((Fj&JxeF&Z8M24HnHGkd7yLs^TJb?pnafp**G zU=*1VuHpqmGi=&nQL=RW1{@(9VrWZVtd*hMxE~Ur<0j*CHM0nNvD_Zze6q_IS-Dk) z4hahwgcWV?@`~atWu3-h0uE|B0~KsD7u>Ufd~mpnai}~;ZHEsP`>ryDF>A0%7Iwj#t>Ly6C+P|{v{lxSj5fS#l>Qm zb(d^)6dNBB_llc)fNou37nQtQ$tY|sgxc3WA-5@;I0zy=DLawd7vdeozEM! z6=Ie2d5l3|`Mp5GwWxi=S5VE$6r?gD#NE;{r*eqPu#VJ~Dxt^T6H5rZkroc3^O<3Z zm1jdN$ttx0n~h5#5*bJ_21r8le^F?43?xfTR}8S;Zg%hqp1D_uViK+DBGlV`M}&oU z3Wc=(BF)i!$~;H4%=&RFsffQTmt1|g&nYSuoJ>JW zPAXUMo&Nv;cE;2Ynk!P8jJ{RKma}nQ9FoTvc^Zb2SGE)$20fC+rsfbM;=7EdB5pA- zI7*13ucaU>ANZN$wF?AqcGhgOwMR@_``1a))rYzyy$HUF?@n6g_oED^RM*liECT0x1{o(R)M6lj?ewG%Aem(0Ww46*JrvEXkPf?|={qsa)g zHbQG4SO!s?%l`ng7WgY=#N;tW3jtw)ZSf1>i370-okSJg#Kn}GY9XVCaKJcACtSYfRCs_Dbi{F1Y9``0HU|TH zzmR;N6DP?$a>KWuv`XXc$xl;10OzXr8Mp;f^08M34<$-@HN_~(fR$IlaPAS%Ty+YO zn#mL(5uF8*2-Qc%Qs7lUdcafkg9fAbtiwW$8Pm%XSz5}fsCLF;?lE^UmN>E~cklw? z5~1TG=AtUQc+T;f87zl}R>oE1h6h_v+L|#fgUyi#zko9+l`{+O2yrakz@as0Uq`kQ z0194@vy5WAe;ty^WV7G~{s#T&ik&?-5@{NXOJGxNZ{Ys`1;5FUGZP+WJj?5aH7V2) zbrPU&gHciF?Sw|%Q1nYUD@?B{0&I=kTUZDM=*ZHDP4l&k+4AsAW%WOh&W;9Eu>IwS@riS zrk@My8p>GIJDdKdgv6t(<(79AVBl+k5wPlA0JWgn_#<&f#*x^<&ho~-vau8k)KWZH ziHVtHa@*j)6Wbc+?kvvh9YX*<91f|YUU2v+;#pGYw!CwG<@=WPDS18sYN5H6fQ#G9 zjtFtMLImsT6<2iyBDe#t4woATiFIGEvLcmJEdgwOtpvpc6t=13Z}EFSh+-Bm&Gh{d z+2*R>;wUL;s)1>{#49Zt41W?U?xz#q&F~vu@Fv|_e zhb0?C@X%dn!wxCoTxs={unoO{nr;32A_9Co#Di}&+ ziv!LeK(b8--eBYi?aH{~;8H^D%Ul+h)EXE#5|Q+j=SZa)oi*99JS-{`8BI-J!)NOCOjk$aN5OTx0ywwuQr3&^%VHr#( z0}#th5I_=<5F@IK<^08JEig8gQR>O$Z6%&k_-o7Uj;hZjU=EVz0b3F7;`JTZ%xB(T zbj2X9x1U$y6x5X%*fn6=p4b+Hmr>aaQHne#K|W@cy48JU;rU$5Y=e*ngJ5VY{L)qL^X2TZ6+ z+^;B9ChjepBIm6~aR_Lrohmq1pl6nt#715Wt2ej=r8Np=7jzC)=p`hEwScz0MMav` z<^|aWE9@ZtA`&gjJi$ADIfZFvDu4gP04@;#0s;X90RsdA0s;d8000010ss*M5E3CV z1QQ@ZA}}&h1ws@+VR02BP*VTe00;pB0RadA(CJ?Ltr`OrtDtY$mA0&WgqiA*J$5GM zKPj$%mVQT+r?t+l&|rE!Xhf(*##)u7LBw2P`HrD_Z}>8y;tfo@mb!xs=s^ci_ZN*D zh;>u>YBaMs`4XjQqxO5&{he!i3;A9p+`nbR-hfK>h&`dNK{5(;Z2*C8FvcFkA9xyE z0<=7FqxTfcnS7Ilma(?=RyH9bc~3&4yxnr*nw#eH6Dbihnf_^5zDOeCXIAfW7*u>R zLX&JTDKSlPGK=PIm7zKTugt032B*e=*w7vz5X+1-zHV-S`)@%m0RXRM>2PaebY~D9 z0p=c}^E#JsL7;%ky*@M%dyE{a>>Nha8iE5no#zu2!}u#T%O*L8ud)O%#uv;zNA6s@ z7aeyp-X;nvSkuYKcQj|Y>hn=d25zWYdXv>N8(S<;Vym8$8^p#(Vo;j|^nsfQn@kDt zUl9V;koO1?hL@=`d7Mjvt3@|HVf>TPf5mcFj9Zx5XE?rCgkFYv!z};+im+rRFsb0*Pf|U_X!R*hLzLj<- zv&i-nT8=s(gGWKc$INqEs`OI;u^aX51_5F&CL+MZOaWKD{{XGmE)6bTx2PHcdZwfC z&>3@d4R9H7KrRjh-(7FHdI#8y6td4U^Zqm^+m~x)0r}EEwq_( z<-lP&2n|cnOP2&rOezODE{_waO+eKyTtfsVEM5hca$#cxxH*8=Sl%4fnQ_Lk*Egkc zA11-UHg0Z&%Y#M|%AOVX2~Zd`s6CB5mf?V}s^EGP6VYjtCH5ItqQseVbxrr98MsS= zCv*70`5jNSbY==H<;q$Hvlz=Uj=g(pQOAC(4w>1zxo{IP=O|`Oh0nE5#NI@>bpxFT zvfwo?To(a~)d?n9ie<*+#0C&=*s4IE6LeAp-(oXyLqKjU9mM_3#=EwJsEQJ0$grk7b|ZuP3RyHz%=R-Bee;fQn7%5A$~a-e?XJTfI|qCQ+MpPqAzp! zvBMaBhd?5TTBcmKVParBtbPkdI_~#@0jYP!fZV@$H|)7{cA&s+4`}uVFj<_yWz=3w zUO1TtGijVf5~>yhh)6nJKt`%BiH{ZTFyi9C4b<6RkwIMUQ6DHjNp>uBzuDIG^*>`E zfq~E;X_rx(XtLRmeNE+gs>5pfk&TIu992C*jI1crVU%IL3c_o>z(s3{IiJOf#Ktp4 zJo}lefcXq9&B9=5ko?X}Fn;}_0dlHdmo8uG11)vkF5oo-Tp#i6vju#w>rn=P)VqQW z0jQ^R^vLE_Kx!jdjgI2uCJZD^lo*o_<)G(@>9On6XfZMAaG#aN2YA#KU=tlJ9lxdu z+_RH>v7t9yIv(`h6u|(Df)t#<#6^4UTjErxOlDCt`M9wQnZJ_Bl+qT+{fth=f_Rz8 zi~M$WYM8%@em7$NHxhnd;o>m(IE?=Q$EoQ502)3&@rEDcU*P`$ACfnLmSpgPSZ9s_Jnayvs#*wawp%a@g<%yIDcQ8g%tu2jLhNANW)echJZe!| zHUfJ8036JNZxF(0#(}g7Oi%&j(Uh>NiM3!zEJbgE@3)Z8VMBXQ<1KivoGUpTNfGL|2HVjNDvi|@Vi1UvJspEYluwbNL zFdG-HOtru+3_uG{AyyD!5{w}1oXWifGN2HhE?f|5efLv|buJA=;sF7vW_E4^Qtl7< zfItX~!MzTE)D2Mo0Kz#_W7cyQIUV|n+|7XWF_9T&+lsbmWi`a(N|$eTZ`ssh z6z-XyakydT1tx4CJCsjSx-SeP^;%rr1AM`jj2VOva2t#Lw6O$zr<0Q{aXmt3t59cy zEx_||n}ppJu5X3mdV$06z)`i^xY)*inuUPuGn?MX39vE1tR`T_5Po@bGzrk_*FcSE>snL-5M@II0{x)-fv5~0)-Hvm!8Y-rF?s0qqD)xnY~}hz zk5C@KQxz+jlJ`p22tCH?V-@Un+r-Gxj}vK}2w(pI&f)BWSa!L< z6VxtwFU7{lXQ)KR35)=a|2Y|Wy^}()GfrZF6K6)F5w@b)f32}MY8TZ z)$$Y(2`aO4xuS5c-VP!N!kBpPdn%R*!Y`|#oVcN)$3KD8Us_* zeY;_!6!XMIikBA+#>Y^t%7;NNT)hUo&S21zdtRaH1~4Dl?h_QiE+W(<+{Wl}^3Bfy zu2aP%Omx#PaZNNiPf=LRM|XZnWxJ3b1n5GRxewuV)Q#zLvf!R|+wzMdIM#YblYHf!lo>-GERKL}dXHfGl120dHb@A*1 z;`K3zqaHQh`G1lhjx0l$qg)@DP^XbnYa;t)(HiFLS~xk)g* zE%Pqr!=Q+2V`~v%<_L*qK0YHQ9tyFW4^wQ%j9rk}z?ojh(o6i}7Hqq3EOa8)<%znd zXI;i~rym~6xDAT;DdD1ZG0fO~e;R{=7=!#{Zt?Og$SOLJZe%ykw+FCGpBFA%8Y|Q$ z&#_GyNj#Vj67B(_0!%7IQE&jL!AXhax(c45b7vUl52R1z{LE>Ev4fe&se=pWY92p? zxW&vW0D<=L0fnI|;e^QbxKB{c?LAh3+IprTBw5TVHkcP``iCY>#fdSR%&`Pn;`bMj z(>_n?8NX$(LS@T?K`{3^5DBzIH5(x@$OoKli)?(DjNFH>R6^j(5N(R1Wb{*Ihx%QB zEC`I;@lcxJOK)}QQoh1WGXnwN@?IcQ>tp^Wtcx>t(adjffZw=4&~p`W?3-_NqBIIm zKo|j^6#~t$Eb(z)FrX^X53hn0?g57|2%N=b#gEi)Gx<{Xm~uP0vx^hEsGcv0>7v1e zkrNenu_oX;8F`sAcC#oT^9j8bNfBuvb~8JO#^xMnBUI0jFVLj(8KWL$#Wew*A9D`< z`6gQ389|#WZIvoi3pT}5a~F)&xG4S55I7L!u8R{g8|D|6`@h!mC#e@A(GU&oLn9IN zfs}zoxi$irQlT}~`>)y!dzYOT`o!WRL?bG;Ch%~aK1M`7P^OMtcY%|I`sj%01j(8f0j z=Rp^#<7C>nWud8xN}Y8%6H*#2Q4bWQW1n7frcY-abjla!M}7F6@UZf=#OAWQm_~H zdx$xhvJf`K#0S)ThyJmep)&r+m#O1H{{S0EL8VZf4^#1U=;f z{*~m!U5Rin%M7ZYjxQh+^=HfqfWE8Uf#e^Q%8d}K4lDMg9u$(Nm&g%!LIy?LGJ|vq zfyuU;3kZl6`O3IL8T5_UdK1M=U}IZ3@@_2&joyu@@0u6KhU%^Lc_DxeSz5l>SdGI$vA1mwO-N|`qp{lg5iJJ5ZaxltGcXEt@piUq+gVyorazaLP= z%0yyGv$_VGrUp>Ux$=DB-Ps<5Ih z8ist>!%%G8wR)`=BSpoKo%1eNxJ}B64aVfmu0qC-4{-4q-hkep6B##gau8-MtZrvg ztuZ}~jQFc{P!P4~qnO9wbuL^HTB0@T`FHWF=h?|VK zC6g+(R-*=B5~DdL=JPigjeJ5mg9+QXAfqug8Hn1>1pJMhzCd0VCy?ell6l-jxrmFo zkI2R8RLa4djWFWGakH18%~|hn55zy#H*mrsCJioQA29H0V#&;P4vJ3AhTvh5Xu6f| zrE@wEn}!WRsg0@zGjzypVKtx-K`vo^rsia(v04LqUW>tq&?2ynjEF{^O4hWYqOHsx zKJBE02q;~5oC#mvBxX)}S>xGU^X)!J_B|&9kTv9NvLTLMm|!7)-bf zL(C{^d>P11vvIqajmCCN3Re?5i+uU^{UP!acxIjVqW2V=jJ({a7jGowXbk*=1CdBD zhw8as>P(ue2<-ruxQ)5FPy%$hw15go@ z9Job$1QQ?XFVg}HoJ^iM5TO#KKp+yJ5D1EHVDYc&WI&@#&J&xy7b z_JUyc4tv6dj~TpXMN=42pBgIM!m1W#t1|tld9&+%3bUHHwq^yc@u+24npiqha01jhSJ9bCBm>we5lw9KistQd5-CCoWCa~7MdXKA^UF7Z*4 z<6?wBB}#!wnDJi&4~hV?iMP1ag3fG(+k(YM7jol&Q>DYG&_OQcO4g-n3D+VR>p(?#$CCqG|jvASB7dA`WyOuN& zN5sQ`o=$Ho9uK8_Z10`HK2PS+yN5v3*EdYNyN4kWvvDvcEQjjMF#|vtpTVE z4nU|fJl|rWF%xt+kHc_kU1@N2FGW&d+MTv$VNfx-;b9fJdHD_0EqYzW7HIMDhYLC5 z4~i6CM{`?I)VtB~lVeo!ht|;d4C)x2Mxr^)lz4sw48x*-d(6j~(Aa#BknV4dJ~UHY zz_-XzwqnRvtjtR_%hTcwL9Gzc(;%Ut??b3F6YXU)D(!0!2x?xJ6!R3pE&^aTHin*% znEY+WoLEs8jk2Iwowf+}TFVOJ3cgQzFXb3>W9-+u;LrN83G97~DFD1n{xo zbz_srMN&p1zWLJ^m6sP;Gd4qHnRlx9JYOYo0uTAC2b6|-_FCs4ji9E#NZe{14Pafd`sEx!T!w6wM;RpWARX!>mF3cJZ zA|HqiMHYAfjTU1|ileFJHg6P%Oh3#iJ96XCk09K)GpS?7M4=gO71}hd0kL1{gHrWg z;g>F7u#xa0nO8C6`6QQdGhk$yapc31m9cp_aT`w)`ETi;9!yz$cs@EB#8ECiq%lSfi`&MPZ z#^SjUI6ak9(NZB7Hkr|zpf{z<(|54#9frdS_7TFy>L{~67+TLD!5f9B zrqsjsZV0W!e*M>=FD^h9$e{p@p+_M9I>_Gyq(#J~^ zbhsFfw_kff=%F3$Is2T;8ZkAwX z6LOyRhU;M-@0bRO++MCQhA%P5TqL=a`+xT0e65`zzex z@o?N9XqeQKQxbr%3W_wz{bn_@!T<+9$oV11q^_1)Evzprm<<{HSChRC7SD^BmmICI zo_@g>_6fgeH>boVpf{kFbP)T5<4Tq6wu;}o25q^tiCV0&7xI|8s6^W~!kdKhFzq)g zc&Ux@F8=^6ai<7GtwhJkjCp|bGIxJ)8rJ^+UhED-RL_8+-72*c&>>Z(JYh^;^b)4t zW+bjpndA&>wR2>>#FNWHZ%*{Vmu{orp)m+cJ$%O5*I>uG>gp%hFa5zGk+O_efZ3@GHrakB|zb-bR< z{BASpln+~Ce{Bc+zu>xXJJ*l&5v!Q_%LvG_i zEKa4sNP)=j607!(7*t9z6wR|_+f!`VCzFIQu(L(vjDkM9x_iMK!8Q+15sO;oS9O_HD*3C#oa8ZVq(gQP!cv`b;VMs?cgRGPFM05}+E~ zxz?D;Q!!zQjZtm0`J(pYPvjkY$LFK1961ZExf5;1OP)`UT!vaT3>;0iEL2ek;Q+Xz zg^`i#Xg~9|`Z&m&3=3WCn@`5WHjyaGGi=*7%9wEPG&12RYHgH#fLsEmJVf$T1?XrE zLC;J1Oi^c_G6YiEwF+Y{GHiTW>4PIXF|0-#)AvW-luyGsYj}z8@cx zk0APJ8Iu)?neY`Y8ES1HTm;I#f|yh2pc8DOV&f#o#C`@Ri;3Xz*}5JJp2vXDe;j^) z!4v!fVeksW;*r_IP>PiZ<|!y_J2M+PDwgYPtBOBJgz`fEml-o@SxqW0P;tz_K%Q1@ zi%aC3kI4$-y{2q1Av>q0(4!Fw9_GUWm{R$evK(bd@iPxA$622c1*SnhAvS&0Dpb8q zUl8#u%QEyH!7R&xi0g1Y?fo(lDz&-E`yyRxu$Z#xZh0O{Wj0Hb7|Z76z|cHQ%)E>q zd#48%nU5z8n;K+WOxX6F0Jx~vF!;sec!szh6GiYpf8m7#Z}|Ak{{SBx7|?aJLM%lT zA(bknSfj8*j2Y;mhsHx2#9xQ-&%yB=L*wKS;$bkp&DQ5}CIN9)yH>6WWo;Es-;-M4#by#sNOgMqv4lo75h_`uhg*6JoA)hn& zuPEZlwCBbO?wOX0LMX=h_lP<78Bh;(`?o;<0KKYu*k;l+sZze!mlQ@n5xa&~m!L6v ziciKeXO7t|YslGuQh$znRPo5+Qy7@(U?2(;a9X%Exp$$LE?%`L8MftU#XegmA=_oa z9r2!nk=LkUb`yD<=JI;8E?I!YX@@aWG2~o=i({zBBP~orXk!9y7mr6#AYvHkp<;akVo2!%CZVKVVCjE^(kS7;jqx$80kypl&u?DK?m8)|d7wAmZYJ zO~N5tn`%~~EI~YP9kLk3a3wBmg^b)p-qCZq^^eVQ7tS}zd5YbxWHWM|D_fUR?@iL? z>YM6%=(GIHcg}A;2jc!~o}0cXAzj@L3a)~^&~JB!8? zZe?L@M8|D9h-lB_o7C{uc>^q+bzIZm8}>(ccZU)V1V)2&Dh?PhdUSUPDm^+zh=8P| zzy{JaP`Y7A4Wv{`6cBVsgM6R;p6B_0uh%|tKKD82I@kTa&^rY`EpsZ40Rk+)=qa#h zIkdhqfrBg8xv(CEMn_?HEz)sP;lc5%nS50l9KO!-5OV@oOen3qaz-bTbJA0Fw1hPH zHCYU2nT91^Fa~WIqVgXW9J#}~137v~x2fNSW=#ePt1HHziR5Q=mwk73A=QxyOy4xN zBlDQHik$!R)$1}qOdwfJTcNu+eZy_Y4LABP&PPLzp1ldQ3-rj^by%<_U}fX+PeMJO z$$fyF`Ph%W7CuA0xbWwQ#(1P9_q%8vF;8TktO%8cXQ&LoY1qODusPy;X-!|I55g?o~?_e$UuTZZd5MZ~G;Ev1sl zmu`AleYMe^dV(w~p{jlraJ%LaF^Pwt;sroQsk^ZZiwlIiX;i6%hv zT)!hC4|HLIRu26|8Yz#E)O9)Gb(;F{yaXK2+5A^JJblzAV5~(Y@6vKZ!ebaQVVBuI zx~co#<8qJ33711pef8`we#amvlf%9tZ2tFm_p^{TB94!Siy_^?$8_G?9@P41x|b|S z1rYK%KtOtj+2 zm~xEgHus+?;t5w!e>w6h`#Ep_g7tzK%m)8LdA_7(Ij3mq={R0{t*b>kx%z)*l4|+D zEBe)i2@*y__G&(I%qlW*`l~Jd#}CUGZto}bAo#borVm+SJJg6@O-}y-;4jZN+Q>M! zkJ2~%#ong5Q;)t>)8jh{;wiipN7}GB4K@IfY=v8Dv-dbM^@faJDS3K~;149@&4itD zILqNM&d`dy27_dXx7`gX`qHP6O!?wG+HvPK?T(owc_ots-^1dR@j(0|`J$ltTH-mk z0r;)FyxFH*>h%WCK1{S4tRGRKtq%$KConD;M0P$G0q9PQegpat+kg6gJf}3$x7{7) zl(bbgs?Q{nq{cTkk>hoR%;<>MasDbHuLf2d<%WHjo5l``*?Xu*MPywtlkB$K#|Tbg zeiSWlcfTEDkz5UBdq7yT6f>IJL|UshBth^CcRP+7CdmGz=dSMDcl^`vUt+0bMz2Je z6|Hc-Re2affN31V?xz%lqIrhVLrnD5{;s=}(wK`0h-B+clA#+rdxa00#O0ZG(Bw}bnC zfEVHpt5n2e58u2z2Dz+7ZWMnF*V*h21$`XNjhAxe039hYZM(7b%sI%2ey>eNJVO?y zfW50gZJg}HBmE+vy>{rs%ffJ2Qz&fxVjXv5(0{*Utny{SOAFAfLiwDAw~NXw9i^*r z{WPwnZpHs_)q%eVehc41KTALFIOZoB|2P09P4tRhh$j8rO5@!l+6^~pWzTf?5&i^D zuR{-W!AHGz+}D|}5iZjs7*QuZ$a)!nBqnEId}dalUvzIvos+=563(I%ZQV{gARQ}l zH&f{G`#*p~D|3_U4cTHE=*Noe)9(0bUoH2)wxY;mLo4{#4<1W^ly$?IgALHou1y}$ z^WQ76e{O9fq8e?LG?ky2(0}ER3)$Z|hr>6_%((ul_^v-@SQt%uyh7Hv6dNUeA9ECx zC3PXON7DB+l&hDntN*lVHO6>F_ex^qMhurVCM6KBNm@R$M#LP%_AN^c|F5vu(W8d_ z0ltF0>mtcj`g=k@xx6|wDRdd`!2FR$V=-tBCMyIxU~ z`j!^?74l-FQk3Kvo;QH|Gv9KATlO4kiXB5aQP)0S(<0J0ARo^8J58hmW$`?ZLCL4_ zy1yZk|Ke2J1s@g_Hivt^JGvmKp(n8Ly|NVOCrUaE=SHgi$gm zj2HZFPslR+s_dTd_WaCYssdM@8ECr#8$nuoWZyw7Wu#9ku7-X3>lF!|Kg*t*iYGts zoX<+{Pm+RCU^w-!$yoy5ImNenJ9ic58x}}db5(H7;*n-h@g@AthLjXF>pOG1Y*ccOk?=a@ij>DeV ztnCDMacPpKIX)x$M@i+}XFeah=RA%c_^8LnBq9uDpALbdsxExiZ6Y-R=ORJL%Jgas zPoxi1Vxqqv^H*nvCDA!DcJO!-s7ffu`peH#Ip|>fTglehpNs{2>qbypg_4#l0NQ9o zEBL2mIa)-QFrtO$&qqr`~+YV_?i^Kr1KfS)+ z*xjJQubzcTm9m#?Kq#lAvkFR!Ap^7_jOh=AXLNAoAnAX~5w_$0aL=?WBn0W1zCA7< zVRGlBBv(K99rYnp@XQV{hgfnWX8aA2csYCmicSy@-mRe66Vv7Z<(lMAAwR}r~G#<;oX16LL^?yUTc3bN3vAN zk#;bsx48EbZYUB0+u1RHZjF!cEQF|Qf`wo3L#5lf-!*w=U6S{X-qt3p>*_ES`M9`O zjoOVpqW?e&Cg`S1%x`T@wc+hs^5j2HA^9Y%KIL>$s7SjbvU_Rl4b40o8MJ$PWth4l zue`{9ZKJSL`97f9N5gZ)f#;;IHJl1jl2vf}?rWtBYjYFBOxd~j-iof4KaqlW+zeQa zz;z=y?%jJ-Cjm3l2u=kLJ~aa(ZA$f2r-yOU#Sa^xM!MQx46r(xH@Se`(fU%QZO6%O z7daa8*ykB+ygwtM{vz4iiQ+^%Zog8T4(M9zY#W$aWdY0W*7{q~*+g9Ve-)%p$YF8v z(mhb#!J%00zbyVC5{yscL^~^zCt->y95TOseDsQ$&-TmW5;Vw5ugx=%cDqR#3XT$1QyBMiWUBF%~Bg7cEGne#mi|u|XDCsY!Y-uS`#qkHa3` zz=T#;)Ccut|9bv#a&%blHmf}d^CiZS$ntIwQO9c`eGGAzqFV^O9Gw9xCdri#Z826J zlZK(+uTG|CPE?gUtO*rmZD*(2m_IGKHAv|UqrgyBeH2G!c<#ywn>wUh`w1U@=6iO} z8gER=`#${v{-hU7Xt`Fmm;soN2`mk@r}l3oGCN@`ms@b97A-OO!W{}~T4D+7cE}cA z4p@BwiZ=NW;K(NNZ;MJy{*8D4iZX4x{T@TF0Y;I#gW76HoD)k_xJT5^J`>5b9iJ7c zXi=0Y&Hu<q7(bIb3AzMYQ*9vzDT$nxQ5FIyNSPa z|B*pv=35unjxw!U>|4Q;XQtCh3&?d1#E0;H}UcKHg=%p9o|Zf%A`b*$-b&ci&^Be;PJ zWSl?gV>7p%FkagIT!&qQqKX+&6>WuYmCS&Z2&uBHGiGbleA5TmkeDWmySRhM_y7~{ z72+PqaV->?{vj{n#PSUTx_Gj<@~?`*is+T$0WAeuhyM!?D@QV}kh>QAJ)<~n-7sB( zTAb};H-(k)q`Gsp<}aeJExnbJff>Z3vy1BEGHjWtlehswSI6qq+1;GXDn`RM%CYV> z3e=QxEa6IU0gBZq>7#9iUrl!a1|4ujTI%*?Zrvw9T>>C#y|Qrc0qy*iGDYU`9(S($ z%|q$xD9t{nLzCr#ev15fdyKXG#eu(!n9Y#SSKX-_mBC+DhBta?AKu_?0+uhAyD6u; z4tx{dws1R*jFu@q|M8&1)9q{h#)dxl$=Lg6OkK>TUKPSTYW#1Ue>$D7p7ScViSK(n zl?g(*TVGf&VA=?zj43q59N)4RdaU$Z;nAng0VbCiokflDko&{yo{QV0a>PSMtGUG) z<#8@|ivlXz-_|eZ{=GKtIUOM}Ae2;Hr5bo%z${~ZVuxU-NO;>op*AY~KQFBm1Au^l zl$ex&h=kyOPFetf5I{iBFD0$PAP9mm3TSGXIugZIw3s+K2L->5{r_%S3Uxr&ePc;m z?ynZwnKBei(+kB(zTdF1+rr}2ZEQVRoy_9v`tC=sEHJ0IB00aR=eBP}8>W{hXLR;# za~o3 z#=Sm}Mv|rqOx$}HtMo#;eP6uONtZ+wnXTx=EE?5ZAt6G^Y+dZQv2F~NF|dA8^CKsT zpafRQQ)2N^Or~)1*@Jk}S1faQKo2(q>IvIRUxM?8dQvuznQaeM zepG#lZqu<&J<|{k+zL{xy|QM$pUR4C+H2FXm0aL0mr%lg(Y9gpB z?uz&jAS+ZeIKL)$+LVzJ$Se&^%U_ahP}Vk__~rY&vM}}qb&o4^W9Rn<%O2knao#WA zs`JG2mVdgSkj>yQ@yPRg?^_s&JAJ>ZSqtUN6mkcU7&E-jmM9$J`q9rNJ zVxSAj??_^OuNCIWQmQkuZL#WzzAhq{cO>);jw0y`+N7PbZ{CDz8XUHy-@krGd5H@+ z=%!20hLt>i*STDAYi-`e+$+p9O>DU)A6WUl6Wb22Viwf}-~`rzT!aBsW>UHc`PeXF zzh7f+@`S1Hwa@O2`#C=l>VnRW!hbN&aKj#IkKShMSXYQk9eotX9Q|`)wir2R@+x~u zKWH#l&GPeio(xW0>4wfhND@ksT-LlDM17lsJ@R=6Xn9p-ls>yKFR&)=d+?|60Nm zQt?_8f-Vt-G`5jRGmAn#I=^eZrU2$hJYi&(e4tB~TUt4jl~lY|e*a1418o9D*y9GW z9%G-?qyY#b&E5h;EqLwv`o8gf2qW{zi;|Cz7})OKPgTFcl_X6xv!3aWf_gsa`G1^by#F}c(ZOe7 z${fZftB9YkUytb19=&g7r#RZ}W?QA6A9oe;Ox(VEKOT)4feCG|#%GFsaIF4nf;iyQ z;1w3Uem>>2%v;~74O%^I+e5JG!QRpAgn65WKanu}roJ!3cj$S9&`-nmmOCG(l<)uI zas4@>C{6nscq%=!X7C*wI-{X_k-3CVrB5{L@O^8U_2K{5oB!+G|DSdLf98FH|L5H& z{-1fDvR4n7b*9ul-?u0z5`z&x zO^6dckc%Ef)l3A}wdP{faTySsVWW7S8$OM{j`)f20q>l4LA3 z*?vu}RT~@wsKpcwQ2Oq+3?wu?>zPY|sDuH3nyfRR?2;nX85%4fGW-VwWe92(OH-2l z!T0j2Ki`zYCWXIwMGRDqW)C8JTFEc!>!qFfWwxOXT90c<=eKzznPOSLZdhrkr{I#U zC?hcdn|Ep*bHP(PUJj*zKD#YoV5+mO;Gz&2wFD4a^&zT==h2QTQMTd8(&rMJQ5o7$ zk?INl2@&)?S4v^nJ*D4|Nd*Rycm;Xu-M((J{JGayttC2(j2!ZYs^V?9f>BVU4$5|U zi7xm+CdQ!O!#mF`y-L*I@z*e3?v*%;uozE>FaPr7x+Lp zNkMTQ9zE^A#2gd-79MCjorGB#C1K4wC0 zK)N_Bp+G7ng}8zP&ZcT+6}0~~v!awO;KSVr@AL1bD+AtQT@Pj^3Ty@4NCFRK;?49{ zgMn>L5SpRSZx86z4(k%EO7V3y$P#6;FfzJV&PSOi!EUG*sPe}BpC044mcewqyS?rK zfU(}2{y#uFcUDo}ALP)BAdwBEjl%|7*iBBV;?_?eE7hDVL>vD|JM9MFmSN&>S=63T zWhijFqOD;)B--Lzs8uQ&)CsPiftzSTTy#HLQK)RV#PiJF^>fVp)-_aM$sxgH&d?^W!Mh#GsaQ9IZnKOjyahyj$UAy5A%IKtfKR$7 z5xk=~C0KQtR{j$Ci}+tUSk;=nE>J4nLJEvZ*9Bc@mr&zYZ@f-7 zPDBf%R0A`$4R$!^_a6T|;Z7$L_*vPaz@V$~Zp0wT?Vrbc-dtmU+*BMNeeo(cvYhNi z>qCs9-BjYDr=H;Zl?72`C2iKH&fbpIU=dzUcYokxDUK=cXAzO$fxB&oasH0N_O<2Z z6LzUYb7IOopv6E;sLIra0i3V(o}7+?T2*OfPGEG)#{r3;JjEdaHfBgdsI+YnJ1B@= zw4qL_Ft9#N>7OcxpPotq(Z>a8Mbjy0gRXkVO>DgQAbfZG7)iX{EKXs|ur$MKI_R4) z(H^`d>ck@Evd2VccF#ILLVT`4xrN%25vh2z7o{$4KwC`pV3+bk*mwriHjrl12`vS! zlLe)qE&v(QS!3bdw{u`GA8AR(;ehqc)|z~S)eIVmRM36j5LRbfdVq7<2F=LMqde0J z;^9Qwb8<2`KOv-0Nc=PN+rqhV4?Ej-`&>!>!gUH|7Yh@|^U<+Y8ux;A`ri-{|P-9IB>3Sc#C6UDKbM63#b3FUPrn za&QIxR+R+JToe$R#tH?1a8MqQzySax=;um^-RmU0=tURk9|A3gn^H}bd3dD;>iH_z zTVyy6ebVPZ!X#;LHM$66|A?UKmnBN97Y{!xIns3+-^;N=z8t|u#N*i8T>t(D`0O08 zPRcS;S64{@p@RFp=u}ahNCpGB!M$-9Wna|z3HK(br_g@JH|9_M#N2r8#CJ=+>Torf ztJ_4#pz+I~`R+1BoOBQGB-X`6GuS!pCz<9lDW7JIO4-`tB}}KN5R|97yAM9oa>t9$msRp29iWW{t*;Mfo6S~htBJmTI(v0 z{GFMgmU0-E)aa-0G3$HAY+)R+ml&{y4xw$z2q{EY(~$FdgAl)E534tI}|2~TFTNQ=oHuYF`+_+)H3 zUxg1rxJ}m05XXz~yRhzvuz$vuWk{KWbU+p2uNH(2T&U?(d0`Une7?M&8AH}%z-_)!&Z-UafZ6czg>9PxV@Q1QxLqR(d|K*JK%-$i$A#rux&^HG>J9)2 z#Jm$U)KkWUcg}%C9a<91yc#%sOP0ZdcVjhUhJx*eO4=@89_;?GIB@o_RnB-t;v7+1Ky=Z2w1dwrmRx?$VS0#Vgmbde3#L+&VtuBz56HHKfiHg3X18@T=Ib#4sR^97 zGHQvRUwcb!B~zb!wBOsj=G&PoI2~vhT}Z-n&qw{o3`u=sio8O7)pur^p1L^}!3rb2 z0(Zx-OahwUuGr>jGCo9!ZT$x@cU4n{KS-`6b=Koft!nN@V$}p(h&s(J1a$rEG}Pgd z68Nm~hGQ7=1sfnq_2ee`w<7zp^o$B~E z2J6W_sg$SGY-S!HJQ#Mvc(r&zOTs9&cwN5kwCb-lWeY}bEyzV4c?;`(q@ws}77{&J zx*-a59gP~!jBqS~Xs7Fpy6-r*NV#x(3qsFhGZHBBb(2MrYor3uM(&sSY3Z5<@PgX* z+OamiTUxfo_Vjvxv;}b!aWk$^?n-(`5f?v-cQJqZ!C3Ynogad)mrOu~lqhZG!~U_g z??VgU2i%T!4b~c=IGU-;cmC0^C)&W zh%mP;q%vB*){Y!d-GTBAU&qwChZ(jhE;(kY!QMeGV2sqxqW51;C?2C=lRxz7I?G_` z=i){b$9-`EKh43RH?QfqXfQIo;FU!F@qEbnwIL4)DCE%0#A-SJ>ATI|tpT+p2Gu;N zZ9?ys*o<1;0)lrW)|ryV7dBo|NXmFH?dqFe0JmWuw_O@2*Zc?Q0Ia8@OtYq{4N3+0!3}2S z^^=n=TZW`n>OYDNUu|O5h!TH2NOQcS%`Jfv=?SfFvY_TWZO}gROR!To z^&sOXz*@;sVV);gyFQOR!PtZvpjViT%CJ&U8n1huOY+i5#)&-Yqh}Y4d=#b0!M4Jc8F z6n1)!0qs<t0g}dB=dD!xvQm{lZYcXIn6-oeVpnzmnQ8cn31PX!^CWbtv ztoA0F9~udk+pPb7CSziMw=$jB|NgRfb722;1^04z?M^vec`S4bLF!mP;UX9)M+mK= zldO5}yToLQpS%N8s7N|&RAVIwqFwGy2D74)Kv@ z9Ks2I#}Zsv$RLz?EoG3~*%XqYN6BjSxBdP^O9MI#B^1s!)5lCo6wk0{esBdI-hO#l zyY+v7P3N^J^^WXkI!8_iuBwL5-FMMui&5nAx-+Onm*E6pO}%9ntxCG8KGxPO@BQ~< zT5HZY&(az`W3nufIVbZ&!+lg%rb%3yE*rD&WBQY@Be+P-{wg8HIbqqGja1%cAI*XA zmKLpGhM6o(9Z20xl-9i5oK&ZK!AA4&=7|BA@yCNt!6gYTR0J}ILHBNa@dxaGuX0G` z)$~eer?yRGH)-Q`NC|*}q=EEX{ub=%PN|FK0wp(8vnBQk_n*RHNMb@LT1|^DJ7Zh1 zJD+F9K6mZ=_<_>DTScpD8P=iB%1X`dw*jX0fkImHo7p2KJm`8u%Q`icTVYkdEel_p ziq~RMLz*S^Z5Z@zs50FN+4q{$cSE-|K~6zUor*!qk+mOPiwkGOm(jkR^~F}nulIXn zER(smr}MELVM!YL-+$1Ss0<=9{iTF(^iJGR@RP}(n>;}XeAf!rfpMTDb>EV0b?cu; zzaM&g2&wE2wbxzk)wa~8RTHge*0JBT)q}Awl`2-2zcnXk0i=m=n8uc+ zZ{NF2)+lU?c(*_Ikks4^!q3<_K9ATY0EPlNkR<4G9Ret=Ou~||H(o$C;;y`j_eRP) zY@#4f^8v}2nMls|r*#$+avY*zz=j_p)r~JqWqU#w>+0$T)Z`pE^Az8vmVm3s*F~P0 zm5*FS4gY!oK_CEQ!ciJS?;Xz~8;aqJCzv{eZAu|nkk+2ev75)+Xfv@0|88b)oM~Zp z@93ehRN)Er#4xXsjC_GBckF;=#*Z=W2b{`+u8=}3M!nEVW4n!&(zXQ6H-QUjL8wN9 zAYE=2Nmo5IO2%eOuT;~ci>uj##8~KQ5BTGvZ8_fh*>D4=y3%l6Oo`o8X%YmsP}E!! z#_6uYG6iX|2Uh*MbfJD8Cwah6PcgUAb-cponn|Y%D#uzeaI<8}5IWo(Z zv|V?Yl%}~JKcmH6OH24aBNZ9}J|OdZiZg1iC1!$r2esH4bwQ|zQc7ysx)K(EB|W~@ z$zlJLpuu3TCtwDvhX;R3LsF*+Or>{eS;i8(A7XrFmggX))fp!{PFagN3SHw5MnEh< zS-@-pF0{CNJroU+;UN`X_VCjK``|(Nc*^dOgg3i{{6}vdV#T96ml!`(b}TDFcLXRm zvW##~u5Xej)FhXI=kWPz+@;SUdji)2PnQmtP`U1QB6t-={7KTI*2v zqkNU6v|BR0J%--hB%Y~^cNS6Kr**SLl3|;+QIHhU&k*G@LIRgg>#>^tCwE%7f+&ub z-S2FV4-OUy7X~Ul_Qz7pMEaHGTUCzvDdn9Pa5GidblWm~?eRK2+t2 zJ(u=6X*w(}6~0}!U?`wFQQ9*-%Hs8ni3RuVxbT)C6{nq}9@RBu7xZi8Ou}M0Jtlr| z1ETJG)>zdE?T%S6kCxwm$2a-+w0kU@{BLHnnB70_AP>7^#X~ zbQ~iSC3(q^K_2%e+=vdd>uVBYm!N5PtA1A{S}&RSxUgIBRmdvQyBWm4MOu5U6a_M^ zP8Tha3*~E~=WINlpM;Nrm}nO#>WN*-bb+O0KQUI= z!to_0=*_4xj$(RBkc36?lc4fvN4~KwEHat|iQr6VQ8i}QL)K@QPCb~|uw4A7m}j~Y zqG%y3Rar}6#(&_gDx+rTyjwtDBZm$z>eX|d$p8rmF~0@qkm!l#*%Acl(%jV%d>O}^ z&RN@pQd4gH2P8BOAv=oe1!IG6#tWm2g+<{3rj4%FW6&|tQ8<*bF{ngmCS4jM>9Z0a zZf){Wk2sWNiuW_W=Lf6!o#34gL%oKeB!<>beP_I|>{x-x+XXr=R;m#8!13!zqly(x zk5PjwC}FihJ`uUV-)=XuW=$O7#*U~#rnv5>&Xui2qC9(gKt=w@XXIqvPWHmd&C6by zMXkEF?a}d}hZ+K0>M5Qn2@Dd!59eS{02NGk(haho8avsL)K(u-gGLyZ_nHjrIjbXW zf{$GI`7{@duGIhefPomJ|2OXfHs5$ z`y4E`Jm7d!LCn8GP=*4vT$comtQBy!99eYUn`cWwR&LR2i1}=Uyl6=NRBaHKF!PFE z*sJ66uMDuFMeVzmm%C+GMJ*1{pQz6Yq~X5^`xJ|O`R_->zACgVOye}mSUl=iK?}*B zIvtZ1sdjhNanpC&E?VKLERh~{7F-KX+U+)C!6%;!SQ4IY#GEjZpd)xpNR1{vy3vr3 z!s7%K9dw&NyNHHYB|BuO?@VU&ei~qD%@-fIB`;(h*|Bwz|3DX8nDbiBae5{K?~qF^ zN+*&6~!k*N5BATHiGm9ogSh)=Eqv zdtX@!+%DlzCLco&*v~k!b663Ja^b#HKPcqZ!r+(zTzOHju^>W=04U1e@yjJdU?%^o z6N~lu_X1%#F9bMrZ8s)fObh(khgqO1+hcaem z1WBzAu3?DmV3*TI594(76;zOc1OEj&tJ}u@!AH{Vp=nao6oQs-66n35f`rhK*()i; z>xk?U%v$c4_(5p0fVc0w&CLVf@HsEEqyph~8r}dcm~rHAI+4sS{DUM`bcImnb9Uk5 zv;edkn?x{E*G~x&vu7!U;mZwwnn+H;8jjTFj`UOs^z764;JPgK&d=dPO+rJf#gApW#_@51Y6>>$A9}TsnHT&Z30QgPmt&kI^}e9RW#psTziNZF z7B-0jj3WVvYGAAH|*x5@Ikv6RE-X?ZmRckVY8j+a<5e1e6A`3vACi&9?c z=~8&ymY#?LiaKNcKwPtQ+pW8N{8$KAHAe0RDYh#azSsQECa_4)@nA22)LPUywlt{5>EI^f(#Ag8KJETMGkl81Hkza=u*8N;_?i zj8nt~CjvUWRes0BZi1Lc{FTb`ksFXi<7+=p-JUL5gZ>ps$I9x+%qu#M*ojQqeB<~> z^3+9Tn%HuW;T&F=ekNGSZ^=C|NfrWf-SrnEPx|yZ;-v!mfXVdtCdm}qqW|@Enwso$ zh<-tkSoGJ0CGC{V0e6Rc{HhEN5V~W67J5XY2gQKym|%IVki`oAc_LXQBny%}pIL50 zHt4zFS`tJXH!DT(eAPgD$`VbVG|^`G*{wvQ!5_Dl)?%s?rV&iZtJvB}AAPsKz#qJa z?rfA7CUXjU$fu}$g}Dg-ErTc7nfa!LpP!(H>j%0)_>ep~F>AT9+oo)Icwg`e*%2if`fQ0GDlo6X84az#UTJd-y9Cd%fv}Md})K zkKs!zJ_5nd*7+B>w_d~Bxu7IowmWY*1qr++yZI15t@$me7`3heV7^D!oz*%9sCnK<7!k{^WDmGmK*T(3ni^JmFt^>+b@}% z9TzPvzyrMdE_&;N=qbN_`t0G-#UxrFZ=zLgkf>fxp8lzuMT4aoKSPl+lQRGBzE)h# z2zrqQvEEQ5akq(SB4IDot;&o|@BU!!j++dxd59?i(r|dLJ6U;;+F~f>;fGj9lk>UD zg7g@m^BK7UzQZS-$}F9*kGczlPyhZBY0!`&5;-}^*{s^YllyfXBZXj?Wzv^$HYD_C zGGlM!^`3nuSkj%(8SbBB68|)VN?zy04zE{V^%TuMc5o{QkFI`oV^}-mEU>Wk0u~1^-T5AzMT55 zaI(n^6l1NN7IpzBZ*7#oxAau!bwv8?Sauk9kC|N3<@xP|5tj$r{2tIaBOc@%65Xu=nE(!(Hi&W5YQ8lgzqKAJonJyy;uIVnG}! zA+gjAOdfHBC;V;Sc*u(9lROG%MYwVL6!p8dnr!JX-sF zqIfs3QifH5;(A>W?hC4-iZ+vQte1Xt(0b!jF<%FaO(ug9lISwlZkPn7j{J)`p>ZG z+Lq6jzefDEHvg($s9!8EJIX0>OnlO_DoOq%(M^iA|kJQC@4{Ez}>2mn#_@Z0j?9fx@f)$_MKl?&4GL0JFUn@1}h!;w!J&rmu zt=3Qw-UB}^RFvk|sH1N9W%S*c3yQZMa^c^>g9OXQjE!FSdTxJ8Q^p|BVu>0PfGUHo z7AHOAg*$X-O9A*7&w|ErXFF#C3JpMjF%DAjv~cY7roJWPVbhe>)zdSFndK> zfuyjWU~jqtB{l{lSDDEREh6efda^svbMrBli#zx;u`l~~{WtGpo*uH1)jv4tt4R`W z<3JSJj;qGC4q%9%me&*=O95=mG2B?>KN@bY`*+ztFppN(A;Ax|etdDd*9YFLkmmxbCtFw6IP6 zQqwTVZ&o$_Hy~t?2Z-N^2qF!1+EnKgh-JhO|B`3yuai#45lb1sBZ<96*ie;ojRJ0< zx$=VVoJif&qv7QL3k0w7(U;ro0 z-d*yNGoP2u_Lb%V*>651UB|KuC{%GaHrqJEqU`onxibV=PeqdXnL~2C{jXWoGNmboL~c{sW{SP|jE` zi|Nb8d>QFg@W_aNr7e4}_}LeRiPDpB_wo{NVX_voi;kyXQ#Z6)6B_F1;0#Xx8zcDH zN%JHq>#Wm0WuoniL$#MPAvG6)*d;Z?b-{A-y>x(J*a`(CRb$MikQw~*-3z2H-DSAJ z0V&Jgu-UE>HcR5_md8}y&CNGlGkrr|C5cx6bPLmVw$pmb3vXya3Qi$WN2vq<0CS8g ze-Q-)3`-c3DBt?*kHXyl0j!!2$Vy(WL~m#^zjTR(PBEqA3i)Aof|mEHz}&`=(^e`q z1O{HW~vG>i9e!-iJ z)de)e9Y$s%QF`9oTBVh;rqo{p4Zj;B~2NU@BEfUD7qtxX8<}Cg} zXYErtWEwx65_T}eJW8h3NeurbWu}L~8*eb46s@R#fM_&3O109Xc|OGdujISEiFR50 zj2yn-S&O)MH(7LYY$_SNTtkHKxLTIVEG1Wjowb%@#E2B?TKLDI%;dD?l}y#nWGuQb zZ*JGfzUJB$<`e%PK!#zDnTJ4sc-49QwmPAm!IFkYGB4++fmPDug3VM%i{AQkYo?APm2>_B@X|<`Otyvx zU)e0}&u%3zaTs&=*jcFR8;mFGwo&9j>LfgtU9n1|$-3oLv%)-zCJcbI-sdC+D{+q6 zl!Xr87!JKIPLx*EVt1EVc=MB22I_Xs zNkFslO0FL;F(!AkGA*Zu>TKARRjW9xC_%&@L_cX~F)>O4TKQ^BGOW2}yR zOg3qJn40jv`rtP*knl+mZ$bkkSfQCYOipS<%!97~1I$m2LRu@t>x?w{1IKlX`L zZ68^h*p=Ga*Q-l<$sAxGZ^wfN>+84vF(u|!n*smf zr2v0JQt5Lf$t`y%)7cw-t`~unE5`y!c&d25CP>Vq6@*HVrY%$6{)wAG6`U$!wQH>J zfE>k(QhUrR?bfp28fnFWK&&|$K(E;`+ilA(kJ8Y<_vP%UpWSkVpj-P?GD!@+_C@PP z*2zvq*Yb@~hvqyykUe}QmCX55?&%xPC>O(A=y)Et4Qbkd)?D|F*)k}iNBmG#CPz`b z=AXrV#!lhHQ5+CDjMq$(Cv>Os$fgknAiZx9*%37Gyfy?2=&l1u@ne%1*-Vq}Y&Eyd z;!fbdCz|Ux?`*%_#4h#|DU&wqYwW8X8wq#d%bj?y{Pi3a7#YfmQ4Xwkv#+|@IUFrGj3Gd*X#pdVZwfbEDmiFtqP&#)g8adB$qqbiGF;+WuuLY@`$Liv)TXC*o5+Vf9rzt5EdX9k0$A-P7SlVDRRU)DFz2BU17% z(O+o5pCd#-1{?Jxq+9%_9HM@tu}=Mm*U%n}|D?3Kg7&@UNB@aHkAuu&Rq2$T8f_QS zmb8YxCeC{@j+AS+M_FKXlGJ}1KF*%7@paI8)jZR0r#<^6Kzvj3k}f^n_V45O;Fxw4 zBr-u*CitfyZXM#~PGE&Kk`wc8;m~}G`srpuYOY4mTL-<)Na4l0y6!Kp2dT1O9S`+n0F#5#`(6;p`aEPnnk9qGso_I^FL7>!PPp zlZTKVj~3EgU>wvqv(ptLIW4h^NH!AHjrVPGNEuK@-`fQ{uSWVR*!BIs%dnq#Q18fp z$=l_AA7^gEpt+;xag+;o!F|05!k*dL8!GJYE8iB*$jf{lm}hokeRQ679xuchA{A+w z&6hu+**g`h=|cPf<6S>M25-8JI5a|U_)EvY=W}6`Ap_J ziyvl?x{c;NJ!o^Dm@<1>t9a^D>cjmVgC4Kl+D3pf%YSOz<7CL_z&PhQCUeS=@k2>F zcL=A}8ZD=0KA*(2b4C5$c^(8s;t_gMrPhKW%>g0uZY^?ZrA6^qUcHZ4%g%JDHY3Ge zK*Cix)O9~qUezb@MCuKPuh7KuG2rlsr$6}dKA}QDWoa@ikz_K82loM$hbkB}xL8`G zg=Wp>8-2m|svM^#Ch%0`&E@WSVrA&X8Fx74Uu^lMKMdxD0!j3tI)6ivdW|ZR;>_Jn*({KL_%Wi&h}joOHY?@#)$f ze}L)8Biiq`_%9+T|FByf-t3i$HtMRXBeP6us^fO-yO z15;KH)<*X!aGe36Nc|YX7kxiW`;+=pC`>zlyUTXTUJt%4)cf)@uB#g80U~m zcMG?yYBR)}<*i=*#NNO%`RKJ<*s$JxGV=5XpAUM7YNmoEa^+oz(>-y4V{!b*{>Ig^ z6eP`z@*n^O@g*C1ntwuQaq&l{QXE`LY)pl7-xh2*e}4SpQDF}g`F=T%Hjc4!kmC1q zIce{c#_AwJzVSW{@^1PL(SOg8Zdqktv`_vvGc|k~fx$F6KgY-%^Ay%2$yRqL4%};Y zX&qBXNsBUB@Bphgj{gAY>A>0}xgJ^UmaAIf{!B9DFozS%5UDlf7VSnUEHo<};LlspFNOodY^@ao{eNSShQSX`46xr_jd0F9AX%CI89@%&&w zKa>dHt4v0gA2DvbW(qr1=6eFZO&s?SQmh-+;7<_Q+TmePyyy1?m=Jj&cX34x@8$Pj zzzXWBwNL*5t-$YkhJ@|R3IM56;Ua2V>OcIsRVEB}VyT36+J2iZ-%!t} zKYWqUI#J5JO9PuPwi*pf19J|rH%CUnn&OxZ#oTUS_yGX^V=AHX5Ysd!F)nB-@fEdv zob=F2>2|4+zM${oW4&}TAjqsAE{C2L#+ofJ`1q9~j_zFutM>rkjN>Z4C-~}doPKAc zaBfL+K}8B1auCgSafun*)AJ1cvJ4AC;Oa23F&kchxD@SIx)1qYFzRZtSY{gI-9YE< zScBGsQphF^NO*?K5Nsg%5Bf$210w@vjVdh&I)MD#^#|^-8Z++WH3|EgnBK(YE)xp@ z1OADiEaYMruTb?ZRvmFs>G{T7D$|ufZVm3G>}EsVL>ABr z*s&&}W8yn+_}bty%zUAGgO*O>-=@SPPRTe7hU++OZfr0 z{a|jPW8flv>`cR}IkRQPOVsrrQyBSUPfOH$xZE3>b?)N$if?MBf*q>1J|;8yyd$X7 z)UhksnyaR*ILf~-^n;yyRE?oA7tk6Oo%Q~o)^Z8<>Gke6|Y9E|lZQ(P+8*Cu9n zWtQf~70X$2nPq=6TBW4)Y ziCU{N!h|Z$MNfX{`)teg>OP{l5rXH=a7~ zgUrY}ifv-30*2NhI}uU5O;?$dAG^xa0Y|ek=1_Qr$^fD6WMTNW7jgLw3!L0Wkv*kV zm~vNR7IJ*AV)g_0NWIE}DZWm6sEa~WBa22~uqniBOsA4AZ>Lrb;th}M2Zk{^7YVtA zIX za|$6s;h9}>{#TDn%kpKw2Y{e;8=-Sg`!OgwxrqrqV8uep_^+A7on4-*=w6f%ob6Z9VnhrXZyKp-Chuyy6b z`G@h1-^@cy!elkr)a#Q9F>P+OwK-XdJJj?&Py8x}4nRa!5E;k_&MIQoqi1YkNiYaM z@lZxQME6!Rx$&t+$(Oa$i@m$4vE0Ijf-Bf0=#xIUB7K8(12Z;XwshH2>e+EB5 z3iwrS*+OJobIhT4{2hPLKL$TjGjMQbqf)r>vo^n0+4B;4d>730CIy*FpjGKLU_Z1y z{NCb)3=AWXnKbKX5Dr#}L#%2bn zY4M&a1`HuYRiUsFzkqk&@e|ZhX2{q>Dw?1Xmc&9-@gRtQv6C1*hktH9y*Vne)Z-;< zPAqbYXWrn)7PAqwm$5a}Rrml$!k`=68`P;%rT+jZoNjU1yh7DILo(vV%ypik`j5mC zNwWtUYuRU`<@WUpF`h{mNspH}I_Pi{^I7V;_R}Qvy?g4h+)i!fQUo6c{HAX+HfO}V zlSt<-HOSS})ZzaCU{<9@#&Tp;7%&A<6)FMzSMtA$e^Esbi$&WYxQ#BOH`&+fv92bB zoWmwYz*yv7Iy?5U@?VAw{@}Pw)1H`YT7*R>v+}>?Vn8G*u&4Pz?_y=fdzo_u1fN;; z1DV?rxCz88Z-5kLlObG)Mvbo$7^cMI_bMKzs%h6!w0$!G(+)9Bi;7~9+q4rf{H82w z$MRHF6ro{GLXKQze6BLyF=7hw7KC3LSMuEN;##8r0Dlt*>Mxy%nNJVOf0QO|L%&1R z7_K%m({wpCPtCO297&Z(#DPRztj07hWyILq+(lsNV+Dfsb>&+7if{M_{eivQCKjoY zxX)MhFWU|$Jdfqz+z|Y6ntACj?&-0TgY}gP#v{bfio|SXc+4(;QodrCHa*TWFYMD! zq>CVLn*ebJ9wK5u3{heM2mL}h7zfb!6Ay5jdG0K1xBBI36kQ#j(QqdlnXtF0>c%9~ z>5~Q}MZ~n?57rIOi19xh&Z8IX@SoN!Qf@B8#IvyeOFskrBWBnWEXF2!rfi9UisWWz zYi2Ud%P{TAK1nO!63lEU<26~bBRF4A#EXRpZxKKJ7B7#3c%T2o05uT+ z0RjRD1Ox^G0|5a500002009s(5fUIFA}}#PK|)Yc17UHoQDSm}k)b1C6M>S!GymEE z2mu2D2|obLEU{XrfaYoa6SR=(SLvITb76iA@Rks`#%v2-cA2W<<=6FenyU-Yw!yERXzj^k$_E9*Bm9 z!{&<@ZwS7nOZq0DMp4NeIh@ep0z!)?yC_uK0kS!RupN`$QlYGxtNf^|4{M+*&&s~h z%hN7Vj+xwTjvnMaNOpox?24%QEql13xw6M3DRp!O3M-;eBv!aXg@S~rdXZwVNRc5b zJGexkNRcL`0U(U028Xa&1sRoSY1?S17A8bb{?LuP)y|69Aw(!e(556PVr2gSD>Cp4 z)R%-To{yz?rTIp0VX{ehjxMnecNF-Q&t_^dsv8Z7H5A`O2$9mR z@YuE<79Q@3HaL5tL!?UNR)-{!L{y_Ut*+=y=x*ETTCpqr708Lu>_ZizMZA15cxbhI z;4mdClDT3}i=xGQB#6gjR_ zA+g-ZbtE{KDy+j<6faDMB#9CvC}Sw$8&fBy6Cv3RB+7wTmz*XnD~9SEKCX(F2GZrK}VX-Y}41SS^3B3_OaFx}*3F{AYKx}Y?%M2#ASji3|n=6F7 zZVQ(P?+W#Zw|Akns-Y1VcfyrO`m9J)*0dNE1d87UD`o4qY6P}Td+U|Txa`W%rzWD& zTsNVm(OufeP@z|SDeE`Ph66yxXiEuDs^8;H^;nj+M9O4T5-d##w#A7}&ABBimz!u* z)0p%UFWMZIpqsT7EQ*9A=UEaY$Wb+AHIctFNR}bbtxIWt#?-IxxSBH|!&yzgd^U>2 z$WWohWU$t)U`T|f@`GubOI^I%X}VUn3V~RZ&yZUu{yt|RH(AGMGZG) zDOIvr1rbvrLy%h861hr=7HFcNtO(J|u$z@lDSF!?8VR1~_(ZZw>k}>;n~Bji9N8~T zmctnYy^z~1OU9}-rQ(R3ob`J`h6G4Ru~4RTE5oG?T5<&q1y^Y)d*+RqY<;~bVW}a+ zRt5yGBv+zb3p6V-961BF*PA)hBC)4P8q};MU~3_vtq~8>z0nf!N~$7QsOfT-zEM$V zaWtjH6=Ch-goVe0^oOP*i4NGe4l`n>;g>i5skAR#oK0(ievw`5yfJiC{H}zB{Lys6 zO|+XLUEYOv``AD67NUxgCFk{j zY|R0rkkI>wrr+D@ijo{9WC^PCK97+q8(KOm#J@{VeaT|liW@_kF)i(COEO+;k;K;* zrs#@o!CJ*aD3U7@zF3#lzP+qWrYx43aO*QB`%}tL zYeW964k5*wT~cIMq7_+Eoe~_v$Q4-s=|ust;!v+xi83lj%{2(Ai7)z7K6@b) zBfk_lM(A@PwZN+WVDjIRT_44&EI5batB~@c#R|WKf23qY{G!*Uq1(FjBL4tOP=JO0 zWpJV15Q~()dm*LUm*R%4F&<<%VXdxGVq6xbuTdQ#dnd*FSO@lolJ4UHLa`6+l-;|* zq=cy-Ew_>s6pAXP+DNNe;x45Z%JB)rxp+5A8pYgN+Z+41tH<_>H^dRG-O&450;OId zRadeq9TYj4a5o>vQsbF~yO7o%=0%rV55Y=33$>yvQHd;2dPT|0^VUk)P)L66mij^Q z5ZD{qYcF#tiy`Q4jWT*mEOH8umx3A}^>19K-3~1Tyqd`2bt)yqS9VC=*L4v?lvj4T z!v6p_Nan+DQGsDxy*BO6m8twK8>7lM+Z;^}<*9#Q5^AMZ{Fkav%#4lupID6yD_6eO zs8Ha4b>004X&0EHTfxdG>i*dysu^YeiG>jpk#lc{EUuLmG-1h_@8}ZlUmK0hwVNx+ zX%gt7KjEu48gg{Z&{h%iMOax4(9>)?0G6*SoG*o`pN4@8v~>F?H!`C8#? zR>^n@m!eC%5_;U+8i-B5d_1F&^pXr5#Y{%P-2y|?W>+Fb)g_PH>tmY?Ca^cwxi*<2 zSq%jJFUBDzEFDb4GcLNF7A>^^1Hgpa7}yUfB)IFTnTaj literal 0 HcmV?d00001