From 530a2171b4c80d59bb2bb4c1ec6549f7ac7767ec Mon Sep 17 00:00:00 2001 From: "DESKTOP-7R8JEQQ\\k" <1076390229@qq.com> Date: Tue, 24 Jun 2025 14:54:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=A1=8C=E5=8D=8F=E8=AE=AE=E8=B0=83?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Game/Controller/NewGroupController.lua | 7 +- .../Game/View/Family/FamilyBanDesk.lua | 82 ++++++++++------ .../Game/View/Family/FamilyMyFamily.lua | 89 ++++++++++-------- .../Game/View/Family/FamilyMyfamilyList.lua | 2 + .../Game/View/Family/FamilySelectNumber.lua | 57 +++++++++++ .../Family/BanDesk/Component/item_banItem.xml | 2 +- .../Family/SelectNumber/com_SelectNumber.xml | 22 +++++ wb_new_ui/assets/Family/package.xml | 1 + .../ART/base/Family/ui/Family_fui.bytes | Bin 99736 -> 100693 bytes 9 files changed, 193 insertions(+), 69 deletions(-) create mode 100644 lua_probject/base_project/Game/View/Family/FamilySelectNumber.lua create mode 100644 wb_new_ui/assets/Family/SelectNumber/com_SelectNumber.xml diff --git a/lua_probject/base_project/Game/Controller/NewGroupController.lua b/lua_probject/base_project/Game/Controller/NewGroupController.lua index 5c1ec519..8a693d52 100644 --- a/lua_probject/base_project/Game/Controller/NewGroupController.lua +++ b/lua_probject/base_project/Game/Controller/NewGroupController.lua @@ -1270,13 +1270,16 @@ end ---@param id 亲友圈id ---@param tableId 同桌id ---@param table 同桌玩家 -function M:FG_SetBanTable1(id, tableId, table, callback) +---@param tableName 同桌备注&名字 +function M:FG_SetBanTable1(id, tableId, players, name, callback) local _data = {} _data.id = id _data.tableId = tableId - _data.table = table + _data.table = players + _data.tableName = name print("发送同桌协议") + pt(_data) local _client = ControllerManager.GroupClient _client:send(Protocol.SET_BAN_TABLE, _data, function(res) callback(res) diff --git a/lua_probject/base_project/Game/View/Family/FamilyBanDesk.lua b/lua_probject/base_project/Game/View/Family/FamilyBanDesk.lua index 83fddce4..0dff9842 100644 --- a/lua_probject/base_project/Game/View/Family/FamilyBanDesk.lua +++ b/lua_probject/base_project/Game/View/Family/FamilyBanDesk.lua @@ -1,3 +1,5 @@ +local FamilySelectNumber = import(".FamilySelectNumber") + --region LOCAL local BanDesk = {} @@ -25,20 +27,19 @@ end --[[ 禁止同桌数据 BanDesk.BanData = { - { name = "备注1", players = {{name = "大哥", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}, {name = "大哥2", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}} }, - { name = "备注2", players = {{name = "大哥", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}, {name = "大哥3", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}} }, - { name = "备注3", players = {{name = "大哥", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}, {name = "大哥4", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}} }, + { name = "备注1", deskList = {{name = "大哥", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}, {name = "大哥2", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}} }, + { name = "备注2", deskList = {{name = "大哥", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}, {name = "大哥3", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}} }, + { name = "备注3", deskList = {{name = "大哥", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}, {name = "大哥4", portrait = "https://thirdwx.qlogo.cn/mmopen/vi_32/Q3auHgzwzM5wiaLFFbHru0weDn6qaXkzW14MLJcqEMxsv2C0EuAxPH1Cf5DGZLmd4EppPeDWlksCuXtFJQC85mw/132"}} }, }]] function BanDesk:TryShow(r) - if not self._view then - self:Init() - end + + local view = BanDesk.New() root = r HideMainView() - self:Show() + view:Show() end function BanDesk:Show() @@ -51,9 +52,21 @@ function BanDesk:Close() ShowMainView() end -function BanDesk:Init() +function BanDesk.New() setmetatable(BanDesk, {__index = BaseView}) - self:InitView("ui://Family/com_banDesk") + local inst = setmetatable({}, {__index = BanDesk}) + inst._close_destroy = true + inst._full = true + inst._animation = false + inst._full_offset = false + inst._anim_pop = 0 + BaseWindow.init(inst, 'ui://Family/com_banDesk') + inst:Init() + inst._root_view:GetChild("win_mode").visible = false + return inst +end + +function BanDesk:Init() self.btn_close = self._view:GetChild("btn_close") self.list_banItem = self._view:GetChild("list_banItem") @@ -62,11 +75,8 @@ function BanDesk:Init() self:Close() end) - --self.list_banItem_model = {} self.list_banItem.itemRenderer = function(index, obj) - --self.list_banItem_model[index] - local data = self.BanData[index +1] local tex_name = obj:GetChild("tex_name") @@ -85,15 +95,27 @@ function BanDesk:Init() local btn_addPlayer = playerObj:GetChild("btn_addPlayer") local tex_name = playerObj:GetChild("tex_name") - local player = data.players[playerIndex + 1] + local player = data.deskList[playerIndex + 1] tex_name.text = player.name ImageLoad.Load(loader_icon, player.portrait) end - list_BanedPlayers.numItems = #data.players - list_BanedPlayers:AddItemFromPool():GetController("cStyle").selectedIndex = 1 + list_BanedPlayers.numItems = #data.deskList + + local add_play = list_BanedPlayers:AddItemFromPool() + add_play:GetController("cStyle").selectedIndex = 1 + add_play:GetChild("btn_addPlayer").onClick:Set(function() + + local view = FamilySelectNumber.New() + view:Show(root._group.id, function(number) + data.deskList[#data.deskList + 1] = number.uid + local fgCtr = ControllerManager.GetController(NewGroupController) + fgCtr:FG_SetBanTable1(root._group.id, data.deskId, data.deskList, data.deskName, function() self:Reflash() end) + end) + end) + end end @@ -107,26 +129,28 @@ function BanDesk:Reflash() pt(res) self.BanData = res.Data.ban_list self.list_banItem.numItems = #self.BanData - self:GetBanTableCallback() + self:GetBanTableCallback(res) end) end -function BanDesk:GetBanTableCallback() +function BanDesk:GetBanTableCallback(res) print("BanDesk:GetBanTableCallback") - -- 最后一个添加ban按钮 - local addBanItem = self.list_banItem:AddItemFromPool() - local btn_addBanItem = addBanItem:GetChild("btn_addBanItem") - addBanItem:GetController("cStyle").selectedIndex = 1 - btn_addBanItem.onClick:Set(function() - local fgCtr = ControllerManager.GetController(NewGroupController) - local groupId = root._group.id - local banList = {} - fgCtr:FG_SetBanTable1(groupId, -1, banList, function(res) - print("收到同桌协议") - pt(res) - end) + self.BanData = res.Data.ban_list + self.list_banItem.numItems = #self.BanData + + -- 最后一个添加ban按钮 + local addBanItem = self.list_banItem:AddItemFromPool() + local btn_addBanItem = addBanItem:GetChild("btn_addBanItem") + addBanItem:GetController("cStyle").selectedIndex = 1 + btn_addBanItem.onClick:Set(function() + local fgCtr = ControllerManager.GetController(NewGroupController) + local groupId = root._group.id + local banList = {} + fgCtr:FG_SetBanTable1(groupId, -1, banList, "新建关系", function() + self:Reflash() end) + end) end diff --git a/lua_probject/base_project/Game/View/Family/FamilyMyFamily.lua b/lua_probject/base_project/Game/View/Family/FamilyMyFamily.lua index d52f657e..222bd5ac 100644 --- a/lua_probject/base_project/Game/View/Family/FamilyMyFamily.lua +++ b/lua_probject/base_project/Game/View/Family/FamilyMyFamily.lua @@ -39,22 +39,21 @@ end function FamilyMyFamily:Refalsh() - --local family = root._group - local family = DataManager.groups.groupMap[self.groupId] + self.family = DataManager.groups.groupMap[self.groupId] - self.tex_fName.text = family.name - self.tex_playerName.text = "亲友圈号:" .. family.id - self.tex_fNumber.text = family.member_num - self.tex_cradNum.text = family.diamo - self.tex_nocice.text = family.notice - ImageLoad.Load(family.o_portrait, self.loader_icon) + self.tex_fName.text = self.family.name + self.tex_playerName.text = "亲友圈号:" .. self.family.id + self.tex_fNumber.text = self.family.member_num + self.tex_cradNum.text = self.family.diamo + self.tex_nocice.text = self.family.notice + ImageLoad.Load(self.family.o_portrait, self.loader_icon) - self.cStyle.selectedIndex = family.lev -1 + self.cStyle.selectedIndex = self.family.lev -1 -- index = 0 是显示隐藏按钮 - self.showNumber = family.isShow - print("family.isShow",family.isShow) - pt(family) + self.showNumber = self.family.isShow + print("self.family.isShow",self.family.isShow) + pt(self.family) if self.showNumber == 0 then self.cDisplayNumber.selectedIndex = 1 self.tex_fNumber.text = "*" @@ -70,6 +69,7 @@ function FamilyMyFamily:Init() self._full = true self._animation = false self._full_offset = false + self._anim_pop = 0 BaseWindow.init(self, 'ui://Family/com_myFamily') -- 隐藏背景图 self._root_view:GetChild("win_mode").visible = false @@ -128,8 +128,7 @@ function FamilyMyFamily:Init() self.btn_checkNumber.onClick:Set(function() self:Close() - local family = DataManager.groups.groupMap[self.groupId] - root:OpenAllNumber(family) + root:OpenAllNumber(self.family) end) self.btn_applyMsg.onClick:Set(function() @@ -139,8 +138,8 @@ function FamilyMyFamily:Init() self.btn_quitFamily.onClick:Set(function() local fgCtr = ControllerManager.GetController(NewGroupController) - print("发送了退出协议 familyid = ",root._group.id) - fgCtr:FG_ExitGroup(root._group.id, function(res) + print("发送了退出协议 familyid = ",self.family.id) + fgCtr:FG_ExitGroup(self.family.id, function(res) pt(res) end) end) @@ -158,26 +157,25 @@ function FamilyMyFamily:Init() end) self.btn_confirmNotice.onClick:Set(function() - local family = root._group local fgCtr = ControllerManager.GetController(NewGroupController) fgCtr:FG_UpdateGroupInfo( - family.id, - family.name, + self.family.id, + self.family.name, self.input_notice.text, - not family.ban, - family.dissolve_opt, - family.kick_opt, - family.apply, - family.ban_chat1, - family.ban_chat2, - family.option, + not self.family.ban, + self.family.dissolve_opt, + self.family.kick_opt, + self.family.apply, + self.family.ban_chat1, + self.family.ban_chat2, + self.family.option, 0, function(res) if res.ReturnCode ~= 0 then ViewUtil.ErrorTip(res.ReturnCode, "更改公告失败,请稍后再试") else ViewUtil.ErrorTip(res.ReturnCode, "修改成功!") - family.notice = self.input_notice.text + self.family.notice = self.input_notice.text self:Refalsh() self.cWindow.selectedIndex = 0 end @@ -186,34 +184,51 @@ function FamilyMyFamily:Init() end) self.btn_hideNumber.onClick:Set(function() - local family = root._group + + if self.isShowContenting == true then + ViewUtil.ShowBannerOnScreenCenter("设置中,请稍后再试。。") + return + end + + print("点击了") + local fgCtr = ControllerManager.GetController(NewGroupController) - fgCtr:FG_SetGroupShow(0, family.id, function (res) + self.isShowContenting = true + fgCtr:FG_SetGroupShow(0, self.family.id, function (res) print("收到协议M:FG_SetGroupShow") pt(res) + self.isShowContenting = false if res.ReturnCode ~= 0 then + ViewUtil.ShowBannerOnScreenCenter("设置失败,请稍后再试。。") return end - --self.showNumber = 0 - local family = DataManager.groups.groupMap[self.groupId] - family.isShow = 0 + self.family.isShow = 0 self:Refalsh() + ViewUtil.ShowBannerOnScreenCenter("设置成功") end) end) self.btn_showNumber.onClick:Set(function() - local family = root._group + if self.isShowContenting == true then + ViewUtil.ShowBannerOnScreenCenter("设置中,请稍后再试。。") + return + end + + print("点击了") + local fgCtr = ControllerManager.GetController(NewGroupController) - fgCtr:FG_SetGroupShow(1, family.id, function (res) + self.isShowContenting = true + fgCtr:FG_SetGroupShow(1, self.family.id, function (res) print("收到协议M:FG_SetGroupShow") pt(res) + self.isShowContenting = false if res.ReturnCode ~= 0 then + ViewUtil.ShowBannerOnScreenCenter("设置失败,请稍后再试。。") return end - --self.showNumber = 1 - local family = DataManager.groups.groupMap[self.groupId] - family.isShow = 1 + self.family.isShow = 1 self:Refalsh() + ViewUtil.ShowBannerOnScreenCenter("设置成功") end) end) diff --git a/lua_probject/base_project/Game/View/Family/FamilyMyfamilyList.lua b/lua_probject/base_project/Game/View/Family/FamilyMyfamilyList.lua index c35b6948..54232cfe 100644 --- a/lua_probject/base_project/Game/View/Family/FamilyMyfamilyList.lua +++ b/lua_probject/base_project/Game/View/Family/FamilyMyfamilyList.lua @@ -26,6 +26,8 @@ function FamilyMyfamilyList.New(root) Instance._full = true Instance._close_destroy = true Instance._full_offset = false + Instance._anim_pop = 0 + Instance._animation = false BaseWindow.init(Instance, "ui://Family/com_myFamilyList") -- 隐藏背景图 diff --git a/lua_probject/base_project/Game/View/Family/FamilySelectNumber.lua b/lua_probject/base_project/Game/View/Family/FamilySelectNumber.lua new file mode 100644 index 00000000..b4bf6d4c --- /dev/null +++ b/lua_probject/base_project/Game/View/Family/FamilySelectNumber.lua @@ -0,0 +1,57 @@ +local FamilySelectNumber = {} + +function FamilySelectNumber.New() + setmetatable(FamilySelectNumber, { __index = BaseWindow}) + local inst = setmetatable({}, { __index = FamilySelectNumber}) + inst._full = true + inst._close_destroy = true + inst._full_offset = false + inst._anim_pop = 0 + inst._animation = false + + BaseWindow.init(inst, "ui://Family/com_SelectNumber") + + inst:Init() + + return inst +end + +function FamilySelectNumber:Show(groupId, callback) + self.group = DataManager.groups.groupMap[groupId] + self.callback = callback + self.list_number.numItems = #self.group.members + BaseWindow.Show(self) +end + +function FamilySelectNumber:Init() + self.list_number = self._view:GetChild("list_number") + self.btn_search = self._view:GetChild("btn_search") + self.btn_close = self._view:GetChild("btn_close") + + self.btn_search.onClick:Set(function() + + end) + + self.btn_close.onClick:Set(function() + self:Close() + end) + + self.list_number.itemRenderer = function(index, obj) + local i = index + 1 + local player = self.group.members[i] + obj:GetController('lev').selectedIndex = player.lev - 1 + obj:GetController('ban').selectedIndex = player.ban + obj:GetChild('name').text = player.nick + obj:GetChild('id').text = string.format("ID:%s", player.uid) + obj.onClick:Set(function() + if self.callback then + self.callback(player) + end + self.callback = nil + self:Close() + end) + end + +end + +return FamilySelectNumber \ No newline at end of file diff --git a/wb_new_ui/assets/Family/BanDesk/Component/item_banItem.xml b/wb_new_ui/assets/Family/BanDesk/Component/item_banItem.xml index 269b2ea5..170c2ebe 100644 --- a/wb_new_ui/assets/Family/BanDesk/Component/item_banItem.xml +++ b/wb_new_ui/assets/Family/BanDesk/Component/item_banItem.xml @@ -9,7 +9,7 @@ - + diff --git a/wb_new_ui/assets/Family/SelectNumber/com_SelectNumber.xml b/wb_new_ui/assets/Family/SelectNumber/com_SelectNumber.xml new file mode 100644 index 00000000..e2340fe6 --- /dev/null +++ b/wb_new_ui/assets/Family/SelectNumber/com_SelectNumber.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wb_new_ui/assets/Family/package.xml b/wb_new_ui/assets/Family/package.xml index ef85dd2a..485ea0e5 100644 --- a/wb_new_ui/assets/Family/package.xml +++ b/wb_new_ui/assets/Family/package.xml @@ -333,6 +333,7 @@ + \ No newline at end of file diff --git a/wb_unity_pro/Assets/ART/base/Family/ui/Family_fui.bytes b/wb_unity_pro/Assets/ART/base/Family/ui/Family_fui.bytes index cd7c348c4efa2aa58eb9d2ea07011481181fcb56..7be91a5cb7c87eaf647bfea8d47196ea680414de 100644 GIT binary patch delta 3481 zcmZwKdvI079l-J3J!fy?khxrW9H2m`h$sRfk(UUGpsnC5)?!<&?Innmf)e@wrIbl& zZ2z$BMB&yRr=3ZC)KXi_lg$ra89YTF_xG@RFN})C?m!c9_We!$`-2LA2QJP_1ZRd zF8Lo(ZgAn*iZO+kwhS7fKLno9*U{-+z^`dM(@m*23tP8T=JY9ar+ONd-nJD6?kO*P zP&YDX%7AB84!9p^D{Nd=l`~l~cc~#{QbX-_oow3^oo$~BhmrYL$)p3jxNtB(I(~Da z9#|OAK6j|y9gav?PmumA>A$it@0PKJ#`a6g?DJ}_QYG_Ui~HKkDvEJv#No+J-dD%fv+L;C8@3I;OvxSXu@U*d=&}q@YmoP z&*mAjr13M{2-l}r?}BGgY^~JRJ#e$<%*$lS$R}}caXb$0NU?saA6LV@o-Mn?+z89t zyWZ87cV1DMjNI|>`tfCO-m{F{Jn8wXQrj$pn>>@Dg30i?B-RM4wQ!r~%sgrzfIkJ* zI?lp9p2L%{Y(0rD3Tp+ISNY{|9*s{W`#(hTQkTQEp2<|fulV?gxPge&NVp-*r#-vA z^(%0TXG`CKoPHnph}1r~+p`QU*y1T^d>Wj+C>dJjaH@8~>*1O-v!K;6p8ag@kva|6 zd$!aL?;-m|Vu7%E9BwYw-U`e1+EHZvB;1i=%W_ap5X*^3cf!4%!!gvBKhT}tUt><7BENhIri^x0$H+arm zLf=1yZX@c6NN<2!ioBWMh$^yqK(*TOBDmXg3EM71u3Ac5D{OYc+3Cs9N^-EgYgvYQ z$L(;9XZ0bkg>yyK5sMvP3)g!#)C_4sec4B3ZiSmYy9bkl_9h~EEkA@iJiATA238Uk zL}a?)-eTjdudt46*+6bFsq5g18Og}ar+I6#i9S!c82vQaNe_-NS7_}DB?BOcmy|j zCPRfQXyG`CwT@T9ZN1Cs^K2bcB5xmP;M!jqj32p$Bz^dPuC#UXQDVxZ)?%i!h| z+n>>aP_oCea7T(WYMJ9$|jgY4m<+{VnK~Mm z2UGS$>y~PL`DedZx_WK>@|m|zyF=xctXjEf;nLfeE?Hf>X5}qQzooKM(qE^jlKRR; mQk+CpF>z5bF}0YOR!mGUCT0{9GmD8?Nn+@l){~8Tv-vN@Sltr< delta 3048 zcmZwJd2AI$9Ki9J+1*!2$V)x4fMC5)4&hNi6oHmYkwYs8Dqc^BC!obYKoChqJQ9x- z5pg||dLTgr8xcYgZ9y(MYyqJf1gm(31gL1#D8$z9Z+2d~5H|h2eQ!SRH#0leYyHcq z*Ir1yG@xCNDkYaLdMv)nd;Yqt99MC)jTJsOH~ZDmq0Ty7bSrn z)FYqRF6F@vnr>wy?uH8eV5gNY&mgr{>dqj$tn5C6?6LCI>C%OU_FCF^IwAE|zDDw+ z=AOEJw7O8|cinGGzm-zLS1nyWVCA5z$&bbs>h{`?rgBTW@4c@=)i2l{WqRqh?YA>G zQ}{NQzLS^PL}=cEvyT1C1W)0`aCtI&&MCYUu1RJKk0YeRp&0--CbR!ZvMPoPddFR} z?Jj|@=iRN6ttP@H2{!k@qag0^{cxFMvz{WUyoKk%l?m1x;Vb#tEXmf5aD(HN%%SwW zJNHVO^#DT$o?Ka4=S;ohBH^hJ@dZ z87_BBq4M72z<$<0iWUYs~5YAi`_dHKdVrhFeQ6OyA!db_fsqh*po=H4n z`4C+0*qa8+8slywG@rmVj#K?<`xR&^QA&h*F5H;orAnoGQOpCX>6Y(?3;MaPvF%cn zs{4o=gv|!HB**!%jI}JotmSQRnPc@A!@{|uCK8h@-vC!SHe~wLpl){&ntR~}$M(T~ zg>EC_VR;5lU+v~wHW3?GNo0u79Ds`*8`hUUkz(0Eb}^|N;nEym$f(ICx``N1gk~#T z;n?<^{jEk511(p>b&fr$TzWo|xX$t&a8r_{*TdacLbDpq^pAUPpIdh5P#2-egR?pQ zkjgoF5-dkgxnoV1zaJh%$he1QGhE|1^`;w^LP#Ri^WjFva@^X}p&KL-nvdXu0dd!S zS;*40i-^v`dN^F-*syv0hbZpgz7iVYvRpQ^W%rmYnKGMg=UaFuAKm3~GHLoj+bY-@ zH6++jgSQUyEa$`NfpNCCg{%`i+*;^y%QwTtIhG1prA8(+9+r-9X@WK9S_|v{;0nj) za+<7!I}&?sm;&Wbq5Y%0nPvH5xG7gTT{G-Xy#tDONfDeWihCX`a4ZYTE=6+~ z&N@zAPcfHX%FDY%XtHp5l9>`+0m+I9^$xhkF$F56;TMU;!s-~@m}~pD_`&pC?((lq zsHVXM#ja~`-aInpWQZSZ4qW0`ms9yu@Ph>VjqD$S+NeypmXC6sqy`?$ld~<