From df9ceeb0cc0a268afe36450d19680e1bca7a3fe3 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Wed, 22 Apr 2026 17:17:39 +0200 Subject: [PATCH 01/23] feat: FactionMapStats --- lua/wikis/commons/FactionMapStatistics.lua | 427 +++++++++++++++++++++ 1 file changed, 427 insertions(+) create mode 100644 lua/wikis/commons/FactionMapStatistics.lua diff --git a/lua/wikis/commons/FactionMapStatistics.lua b/lua/wikis/commons/FactionMapStatistics.lua new file mode 100644 index 00000000000..68a09902513 --- /dev/null +++ b/lua/wikis/commons/FactionMapStatistics.lua @@ -0,0 +1,427 @@ +--- +-- @Liquipedia +-- page=Module:FactionMapStatistics +-- +-- Please see https://github.com/Liquipedia/Lua-Modules to contribute +-- + +local Lua = require('Module:Lua') + +local Arguments = Lua.import('Module:Arguments') +local Array = Lua.import('Module:Array') +local DateExt = Lua.import('Module:Date/Ext') +local Faction = Lua.import('Module:Faction') +local FnUtil = Lua.import('Module:FnUtil') +local Json = Lua.import('Module:Json') +local Logic = Lua.import('Module:Logic') +local Lpdb = Lua.import('Module:Lpdb') +local MathUtil = Lua.import('Module:MathUtil') +local Operator = Lua.import('Module:Operator') +local Page = Lua.import('Module:Page') +local Table = Lua.import('Module:Table') + +local Condition = Lua.import('Module:Condition') +local ConditionTree = Condition.Tree +local ConditionNode = Condition.Node +local Comparator = Condition.Comparator +local BooleanOperator = Condition.BooleanOperator +local ColumnName = Condition.ColumnName +local ConditionUtil = Condition.Util + +local Link = Lua.import('Module:Widget/Basic/Link') +local HtmlWidgets = Lua.import('Module:Widget/Html/All') +local TableWidgets = Lua.import('Module:Widget/Table2/All') +local WidgetUtil = Lua.import('Module:Widget/Util') + +local DEFAULT_MAP_NAME = 'Unknown' +local SUM_ABBR = HtmlWidgets.Abbr{title = 'Sum of', children = 'Σ'} +local NUMBER_OF_ABBR = HtmlWidgets.Abbr{title = 'Number of', children = '#'} + +local MapStatistics = {} + +---@param frame Frame +---@return Widget? +function MapStatistics.run(frame) + local args = Arguments.getArgs(frame) + + local matchUps = MapStatistics._getMatchups() + local mapsData = MapStatistics._fetchData(args, matchUps) + if Logic.isEmpty(mapsData) then + return + end + ---@cast mapsData -nil + + if args.mode == 'mapStats' then + Array.forEach(mapsData, MapStatistics._store) + end + + return TableWidgets.Table{ + sortable = true, + columns = WidgetUtil.collect( + {align = 'left'}, + Array.rep({align = 'right'}, 1 + 4 * #matchUps.vs + #matchUps.mirrors) + ), + children = { + MapStatistics._header(matchUps), + TableWidgets.TableBody{ + children = Array.map(mapsData, FnUtil.curry(MapStatistics._row, matchUps)) + } + } + } +end + +---@return {vs: string[], mirrors: string[]} +function MapStatistics._getMatchups() + local vs = {} + local done = {} + + ---@param faction1 string + ---@param faction2 string + ---@return boolean + local alreadyDone = function(faction1, faction2) + if done[faction1 .. ',' .. faction2] then + return true + end + done[faction1 .. ',' .. faction2] = true + if done[faction2 .. ',' .. faction1] then + return true + end + done[faction2 .. ',' .. faction1] = true + return false + end + + --- this loop is only wanted/needed so that each faction is on the left at least once... + Array.forEach(Faction.coreFactions, function(faction, factionIndex) + local nextFaction = Faction.coreFactions[factionIndex + 1] or Faction.coreFactions[1] + if faction == nextFaction or alreadyDone(faction, nextFaction) then + return + end + table.insert(vs, faction .. ',' .. nextFaction) + end) + + Array.forEach(Faction.coreFactions, function(faction1) + Array.forEach(Faction.coreFactions, function(faction2) + if not alreadyDone(faction1, faction2) then + table.insert(vs, faction1 .. ',' .. faction2) + end + end) + end) + + return { + vs = vs, + mirrors = Table.copy(Faction.coreFactions), -- copy to remove the metatable which breaks some stuff + } +end + +---@param args table +---@param matchUps {vs: string[], mirrors: string[]} +---@return {map: string, mapDisplayName: string?, total: integer, +---vs: table, mirrors: table}[]? +function MapStatistics._fetchData(args, matchUps) + ---@param gameData match2game? + ---@return {map: string, mapDisplayName: string?, total: integer, + ---vs: table, mirrors: table}? + local makeInitialMapData = function(gameData) + return { + map = (gameData or {}).map or 'total', + mapDisplayName = ((gameData or {}).extradata or {}).displayname, + total = 0, + vs = Table.map(matchUps.vs, function(index, key) return key, {w = 0, l = 0} end), + mirrors = Table.map(matchUps.mirrors, function(index, key) return key, 0 end), + } + end + + ---@param gameData match2game + ---@return boolean + local isValidGame = function(gameData) + local map = gameData.map + return map ~= 'skip' + and (map or ''):lower() ~= 'submatch' + and #gameData.opponents == 2 + and Array.all(gameData.opponents, function(opponent) + return opponent.status == 'S' + end) + end + + local data = {total = makeInitialMapData()} + + ---@param map string + ---@param faction1 string + ---@param faction2 string + ---@param winnerScore integer + ---@param loserScore integer + local apply = function(map, faction1, faction2, winnerScore, loserScore) + if faction1 == faction2 then + data[map].mirrors[faction1] = data[map].mirrors[faction1] + winnerScore + loserScore + data[map].total = data[map].total + winnerScore + loserScore + return + end + + local matchUp = faction1 .. ',' .. faction2 + if not data[map].vs[matchUp] then + matchUp = faction2 .. ',' .. faction1 + winnerScore, loserScore = loserScore, winnerScore + end + + data[map].vs[matchUp].w = data[map].vs[matchUp].w + winnerScore + data[map].vs[matchUp].l = data[map].vs[matchUp].l + loserScore + data[map].total = data[map].total + winnerScore + loserScore + end + + Lpdb.executeMassQuery('match2game', { + conditions = MapStatistics._buildConditions(args), + query = 'map, extradata, opponents, winner', + }, function(gameData) + if not isValidGame(gameData) then + return + end + + local map = gameData.map + + if Logic.isEmpty(map) or string.lower(map) == 'tbd' then + map = DEFAULT_MAP_NAME + end + data[map] = data[map] or makeInitialMapData(gameData) + + local winnerFaction = gameData.extradata.winnerfaction + if not Table.includes(Faction.coreFactions, winnerFaction) then + return + end + + local loserFaction = gameData.extradata.loserfaction + if not Table.includes(Faction.coreFactions, loserFaction) then + return + end + + local winnerIndex = tonumber(gameData.winner) or 0 + local loserIndex = 3 - winnerIndex + local winnerScore = gameData.opponents[winnerIndex].score or 0 + local loserScore = gameData.opponents[loserIndex].score or 0 + + apply(map, winnerFaction, loserFaction, winnerScore, loserScore) + apply('total', winnerFaction, loserFaction, winnerScore, loserScore) + end) + + local total = Table.extract(data, 'total') + local unknown = Table.extract(data, DEFAULT_MAP_NAME) + local mapsData = Array.extractValues(data) + + return Array.appendWith( + mapsData, + Logic.nilOr(Logic.readBoolOrNil(args.unknown), true) and unknown or nil, + #mapsData > 1 and total or nil + ) +end + +---@param args table +---@return string +function MapStatistics._buildConditions(args) + local conditions = ConditionTree(BooleanOperator.all):add{ + ConditionNode(ColumnName('status'), Comparator.eq, ''), + ConditionNode(ColumnName('mode'), Comparator.eq, '1v1'), + } + + local startDate = DateExt.readTimestamp(args.sdate) + if startDate then + conditions:add(ConditionNode(ColumnName('date'), Comparator.ge, startDate)) + end + local endDate = DateExt.readTimestamp(args.edate) + if endDate then + conditions:add(ConditionNode(ColumnName('date'), Comparator.le, endDate)) + end + + local mapsInput = args.maps or args.map + or args.mode == 'mapStats' and mw.title.getCurrentTitle().text + or nil + local maps = Array.parseCommaSeparatedString(mapsInput) + maps = Array.filter(maps, function(map) return map ~= 'TBD' end) + if Logic.isNotEmpty(maps) then + conditions:add(ConditionUtil.anyOf(ColumnName('map'), maps)) + end + + local parents = Array.parseCommaSeparatedString(args.parents or args.parent) + if Logic.isNotEmpty(parents) then + conditions:add(ConditionUtil.anyOf(ColumnName('parent'), Array.map(parents, Page.pageifyLink))) + end + + local tournaments = MapStatistics._getTournaments(args) + if Logic.isNotEmpty(tournaments) then + ---@cast tournaments -nil + conditions:add(ConditionUtil.anyOf(ColumnName('pagename'), Array.map(tournaments, Page.pageifyLink))) + end + + return tostring(conditions) +end + +---@param mapData {map: string, mapDisplayName: string?, total: integer, +---vs: table, mirrors: table} +function MapStatistics._store(mapData) + if Lpdb.isStorageDisabled() or mapData.map == 'Unknown' then + return + end + + local ratios = {} + for key, winData in pairs(mapData.vs) do + local factions = Array.parseCommaSeparatedString(key) + local total = winData.w + winData.l + local ratio = total ~= 0 and (winData.w / total) or nil + ratios[factions[1] .. factions[2]] = ratio + ratios[factions[2] .. factions[1]] = ratio and (1 - ratio) or nil + end + + mw.ext.LiquipediaDB.lpdb_datapoint( + 'map_winrates_' .. mapData.map, + { + name = mapData.map, + type = 'map_winrates', + extradata = Json.stringify(ratios), + } + ) +end + +---@param args table +---@return string[]? +function MapStatistics._getTournaments(args) + ---@param series string? + ---@return string[]? + local fromSeries = function(series) + if Logic.isEmpty(series) then + return + end + local tournaments = mw.ext.LiquipediaDB.lpdb('tournament', { + conditions = tostring(ConditionNode(ColumnName('seriespage'), Comparator.eq, Page.pagifyLink(series))), + query = 'pagename', + limit = 5000 + }) + return Array.map(tournaments, Operator.property('pagename')) + end + + return Logic.nilIfEmpty(Array.parseCommaSeparatedString(args.tournaments or args.tournament)) + or Logic.nilIfEmpty(fromSeries(args.series)) + or args.mode == 'tournamentStats' and {mw.title.getCurrentTitle().text} + or nil +end + +---@param matchUps {vs: string[], mirrors: string[]} +---@return Widget +function MapStatistics._header(matchUps) + ---@param key string + ---@return Widget + local makeFactionHeader = function(key) + local factions = Array.parseCommaSeparatedString(key) + + return TableWidgets.CellHeader{ + colspan = 4, + align = 'center', + children = { + Faction.Icon{faction = factions[1]}, + ' vs. ', + Faction.Icon{faction = factions[2]}, + }, + } + end + + ---@param key string + ---@return Widget[] + local makeMatchUpHeader = function(key) + local factions = Array.parseCommaSeparatedString(key) + return { + TableWidgets.CellHeader{children = SUM_ABBR}, + TableWidgets.CellHeader{children = Faction.Icon{faction = factions[1]}}, + TableWidgets.CellHeader{children = Faction.Icon{faction = factions[2]}}, + TableWidgets.CellHeader{ + children = { + Faction.Icon{faction = factions[1]}, + '%' + } + }, + } + end + + return TableWidgets.TableHeader{ + children = { + TableWidgets.Row{ + children = WidgetUtil.collect( + TableWidgets.CellHeader{children = '', colspan = 2}, + Array.map(matchUps.vs, makeFactionHeader), + TableWidgets.CellHeader{children = 'Mirrors', align = 'center', colspan = #matchUps.mirrors} + ) + }, + TableWidgets.Row{ + children = WidgetUtil.collect( + TableWidgets.CellHeader{children = 'Map'}, + TableWidgets.CellHeader{children = NUMBER_OF_ABBR}, + Array.flatMap(matchUps.vs, makeMatchUpHeader), + Array.map(matchUps.mirrors, function(faction) + return TableWidgets.CellHeader{children = Faction.Icon{faction = faction}} + end) + ) + } + }, + } +end + +---@param matchUps {vs: string[], mirrors: string[]} +---@param mapData {map: string, mapDisplayName: string?, total: integer, +---vs: table, mirrors: table} +---@return Widget? +function MapStatistics._row(matchUps, mapData) + if Logic.isEmpty(mapData) then + return + end + + ---@param input integer|string + ---@return integer|string + local dashIfZero = function(input) + return input == 0 and '-' or input + end + + ---@param matchUpData {w: integer, l: integer} + ---@return string + local getPercentage = function(matchUpData) + local total = matchUpData.w + matchUpData.l + if total == 0 then + return '-' + end + local percentage = 100 * matchUpData.w / (total) + return MathUtil.formatRounded{precision = 1, value = percentage} + end + + ---@return Renderable[]|Renderable + local makeMapCell = function() + if mapData.map == DEFAULT_MAP_NAME then + return DEFAULT_MAP_NAME + end + if mapData.map == 'total' then + return { + 'Total Sum (', + SUM_ABBR, + ')' + } + end + return Link{link = mapData.map, children = mapData.mapDisplayName} + end + + return TableWidgets.Row{ + children = WidgetUtil.collect( + TableWidgets.Cell{ + children = makeMapCell() + }, + TableWidgets.Cell{children = dashIfZero(mapData.total)}, + Array.flatMap(matchUps.vs, function(key) + local matchUpData = mapData.vs[key] + return { + TableWidgets.Cell{children = dashIfZero(matchUpData.w + matchUpData.l)}, + TableWidgets.Cell{children = dashIfZero(matchUpData.w)}, + TableWidgets.Cell{children = dashIfZero(matchUpData.l)}, + TableWidgets.Cell{children = getPercentage(matchUpData)}, + } + end), + Array.map(matchUps.mirrors, function(faction) + return TableWidgets.Cell{children = dashIfZero(mapData.mirrors[faction])} + end) + ) + } +end + +return MapStatistics From 5ce43b7ec5b83f3dea9f3404389675047ed71991 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sun, 26 Apr 2026 11:13:47 +0200 Subject: [PATCH 02/23] rename & extract some stuff that can be reused for the other module(s) --- .../Map.lua} | 32 +++----------- .../FactionStatistics/MatchupDisplay.lua | 44 +++++++++++++++++++ 2 files changed, 49 insertions(+), 27 deletions(-) rename lua/wikis/commons/{FactionMapStatistics.lua => FactionStatistics/Map.lua} (92%) create mode 100644 lua/wikis/commons/FactionStatistics/MatchupDisplay.lua diff --git a/lua/wikis/commons/FactionMapStatistics.lua b/lua/wikis/commons/FactionStatistics/Map.lua similarity index 92% rename from lua/wikis/commons/FactionMapStatistics.lua rename to lua/wikis/commons/FactionStatistics/Map.lua index 68a09902513..73426108f98 100644 --- a/lua/wikis/commons/FactionMapStatistics.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -1,6 +1,6 @@ --- -- @Liquipedia --- page=Module:FactionMapStatistics +-- page=Module:FactionStatistics/Map -- -- Please see https://github.com/Liquipedia/Lua-Modules to contribute -- @@ -11,6 +11,7 @@ local Arguments = Lua.import('Module:Arguments') local Array = Lua.import('Module:Array') local DateExt = Lua.import('Module:Date/Ext') local Faction = Lua.import('Module:Faction') +local MatchupDisplay = Lua.import('FactionStatistics/MatchupDisplay') local FnUtil = Lua.import('Module:FnUtil') local Json = Lua.import('Module:Json') local Logic = Lua.import('Module:Logic') @@ -370,23 +371,6 @@ function MapStatistics._row(matchUps, mapData) return end - ---@param input integer|string - ---@return integer|string - local dashIfZero = function(input) - return input == 0 and '-' or input - end - - ---@param matchUpData {w: integer, l: integer} - ---@return string - local getPercentage = function(matchUpData) - local total = matchUpData.w + matchUpData.l - if total == 0 then - return '-' - end - local percentage = 100 * matchUpData.w / (total) - return MathUtil.formatRounded{precision = 1, value = percentage} - end - ---@return Renderable[]|Renderable local makeMapCell = function() if mapData.map == DEFAULT_MAP_NAME then @@ -407,18 +391,12 @@ function MapStatistics._row(matchUps, mapData) TableWidgets.Cell{ children = makeMapCell() }, - TableWidgets.Cell{children = dashIfZero(mapData.total)}, + TableWidgets.Cell{children = MatchupDisplay.dashIfZero(mapData.total)}, Array.flatMap(matchUps.vs, function(key) - local matchUpData = mapData.vs[key] - return { - TableWidgets.Cell{children = dashIfZero(matchUpData.w + matchUpData.l)}, - TableWidgets.Cell{children = dashIfZero(matchUpData.w)}, - TableWidgets.Cell{children = dashIfZero(matchUpData.l)}, - TableWidgets.Cell{children = getPercentage(matchUpData)}, - } + return MatchupDisplay.display(mapData.vs[key]) end), Array.map(matchUps.mirrors, function(faction) - return TableWidgets.Cell{children = dashIfZero(mapData.mirrors[faction])} + return TableWidgets.Cell{children = MatchupDisplay.dashIfZero(mapData.mirrors[faction])} end) ) } diff --git a/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua b/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua new file mode 100644 index 00000000000..0e08807026f --- /dev/null +++ b/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua @@ -0,0 +1,44 @@ +--- +-- @Liquipedia +-- page=Module:FactionStatistics/MatchupDisplay +-- +-- Please see https://github.com/Liquipedia/Lua-Modules to contribute +-- + +local Lua = require('Module:Lua') + +local MathUtil = Lua.import('Module:MathUtil') + +local TableWidgets = Lua.import('Module:Widget/Table2/All') + +local MatchupDisplay = {} + +---@param matchupData {w: number, l: number} +---@return Widget[] +function MatchupDisplay.display(matchupData) + local total = matchupData.w + matchupData.l + + ---@return string + local getPercentage = function() + if total == 0 then + return '-' + end + local percentage = 100 * matchupData.w / (total) + return MathUtil.formatRounded{precision = 1, value = percentage} + end + + return { + TableWidgets.Cell{children = MatchupDisplay.dashIfZero(total)}, + TableWidgets.Cell{children = MatchupDisplay.dashIfZero(matchupData.w)}, + TableWidgets.Cell{children = MatchupDisplay.dashIfZero(matchupData.l)}, + TableWidgets.Cell{children = getPercentage()}, + } +end + +---@param input integer|string +---@return integer|string +function MatchupDisplay.dashIfZero(input) + return input == 0 and '-' or input +end + +return MatchupDisplay \ No newline at end of file From 1a506f5bf38597a3cde297a187323dce4e1b1ff4 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sun, 26 Apr 2026 13:15:33 +0200 Subject: [PATCH 03/23] start on player stats --- lua/wikis/commons/FactionStatistics/Map.lua | 1 - .../commons/FactionStatistics/Player.lua | 404 ++++++++++++++++++ 2 files changed, 404 insertions(+), 1 deletion(-) create mode 100644 lua/wikis/commons/FactionStatistics/Player.lua diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index 73426108f98..be751d95711 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -16,7 +16,6 @@ local FnUtil = Lua.import('Module:FnUtil') local Json = Lua.import('Module:Json') local Logic = Lua.import('Module:Logic') local Lpdb = Lua.import('Module:Lpdb') -local MathUtil = Lua.import('Module:MathUtil') local Operator = Lua.import('Module:Operator') local Page = Lua.import('Module:Page') local Table = Lua.import('Module:Table') diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua new file mode 100644 index 00000000000..9c5e84cf84a --- /dev/null +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -0,0 +1,404 @@ +--- +-- @Liquipedia +-- page=Module:FactionStatistics/Player +-- +-- Please see https://github.com/Liquipedia/Lua-Modules to contribute +-- + +local Lua = require('Module:Lua') + +local Arguments = Lua.import('Module:Arguments') +local Array = Lua.import('Module:Array') +local Class = Lua.import('Module:Class') +local DateExt = Lua.import('Module:Date/Ext') +local Faction = Lua.import('Module:Faction') +local Logic = Lua.import('Module:Logic') +local Lpdb = Lua.import('Module:Lpdb') +local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') +local Opponent = Lua.import('Module:Opponent/Custom') +local Page = Lua.import('Module:Page') +local String = Lua.import('Module:String/Utils') +local Table = Lua.import('Module:Table') + +local Condition = Lua.import('Module:Condition') +local ConditionTree = Condition.Tree +local ConditionNode = Condition.Node +local Comparator = Condition.Comparator +local BooleanOperator = Condition.BooleanOperator +local ColumnName = Condition.ColumnName +local ConditionUtil = Condition.Util + +local Box = Lua.import('Module:Widget/Basic/Box') +local HtmlWidgets = Lua.import('Module:Widget/Html/All') +local TableWidgets = Lua.import('Module:Widget/Table2/All') +local WidgetUtil = Lua.import('Module:Widget/Util') + +local DEFAULT_TIERS = {1, 2} +local DEFAULT_TIER_TYPE = 'Unset' +local SUM_ABBR = HtmlWidgets.Abbr{title = 'Sum of', children = 'Σ'} + +---@class StormgatePlayerMatchupStatistics +---@operator call(table): StormgatePlayerMatchupStatistics +---@field args table +---@field matchIds string[] +---@field player string +---@field versus string? +---@field byFaction table +---@field byType {online: {w: integer, l: integer}, offline: {w: integer, l: integer}} +---@field byBestof table +---@field byOpponentType table +---@field byMap table> +---@field total {w: integer, l: integer} +local PlayerStatistics = Class.new(function(self, args) self:init(args) end) + +---@param frame Frame +---@return Widget|string +function PlayerStatistics.run(frame) + local args = Arguments.getArgs(frame) + + return PlayerStatistics(args):query():create() +end + +---@param args table +---@return self +function PlayerStatistics:init(args) + self.args = args + assert(args.player, 'No player specified') + self.player = Page.pageifyLink(self.args.player) + + if Logic.isNotEmpty(self.args.versus) then + self.versus = Page.pageifyLink(self.args.versus) + end + + return self +end + +---@return self +function PlayerStatistics:query() + self:_getMatchData() + if Logic.isEmpty(self.matchIds) then return self end + self:_getMapData() + + return self +end + +function PlayerStatistics:_getMatchData() + self.matchIds = {} + + self.byFaction = Table.map(Faction.knownFactions, function(_, faction) return faction, {w = 0, l = 0} end) + self.byType = {online = {w = 0, l = 0}, offline = {w = 0, l = 0}} + self.byBestof = {} + self.byOpponentType = {} + self.total = {w = 0, l = 0} + + ---@param opponents table[] + ---@param winner integer? + ---@return boolean + local shouldExclude = function(opponents, winner) + return winner ~= 1 and winner ~= 2 + or not opponents[1] + or not opponents[1] + or #opponents ~= 2 + or Array.any(opponents, function(opponent) + return opponent.status and opponent.status ~= 'S' + end) + end + + Lpdb.executeMassQuery('match2', { + conditions = self:_getMatchConditions(), + query = 'match2id, bestof, match2opponents, winner, type', + }, function (record) + local winner = tonumber(record.winner) + local opponents = record.match2opponents + + if shouldExclude(opponents, winner) then return end + + table.insert(self.matchIds, record.match2id) + + local side = (opponents[1].name == self.player or Array.any(opponents[1].match2players or {}, function(playerObj) + return playerObj.name == self.player + end)) and 1 or 2 + + local vsSide = 3 - side + local result = side == winner and 'w' or 'l' + + self.total[result] = self.total[result] + 1 + + local eventType = string.lower(record.type or '') == 'offline' and 'offline' or 'online' + self.byType[eventType][result] = self.byType[eventType][result] + 1 + + local opponentType = opponents[vsSide].type + self.byOpponentType[opponentType] = self.byOpponentType[opponentType] or {w = 0, l = 0} + self.byOpponentType[opponentType][result] = self.byOpponentType[opponentType][result] + 1 + + local bestof = tostring(tonumber(record.bestof) or -1) + self.byBestof[bestof] = self.byBestof[bestof] or {w = 0, l = 0} + self.byBestof[bestof][result] = self.byBestof[bestof][result] + 1 + + if Array.any(opponents, function(opponent) return opponent.type ~= Opponent.solo end) then return end + + local vsFaction = Logic.emptyOr( + (((opponents[vsSide].match2players or {})[1] or {}).extradata or {}).faction, + Faction.defaultFaction + ) + if vsFaction == Faction.defaultFaction then return end + + self.byFaction[vsFaction][result] = self.byFaction[vsFaction][result] + 1 + end) +end + +---@return string +function PlayerStatistics:_getMatchConditions() + local args = self.args + + local tiers = Array.map(Array.parseCommaSeparatedString(args.tiers), function(num) + return tonumber(num) + end) + tiers = Logic.nilIfEmpty(tiers) or DEFAULT_TIERS + + local tierTypes = Array.parseCommaSeparatedString(args.tiers or '!Qualifier') + tierTypes = Array.map(tierTypes, function(tierType) + return tierType == DEFAULT_TIER_TYPE and '' or tierType + end) + + local conditions = ConditionTree(BooleanOperator.all):add{ + ConditionNode(ColumnName('finished'), Comparator.eq, 1), -- only finished matches + ConditionNode(ColumnName('winner'), Comparator.neq, ''), -- expect a winner + ConditionNode(ColumnName('status'), Comparator.neq, 'notplayed'), -- i.e. ignore not played matches + ConditionNode(ColumnName('date'), Comparator.neq, DateExt.defaultDate), --i.e. wrongly set up + ConditionUtil.anyOf(ColumnName('liquipediatier'), tiers), + ConditionUtil.anyOf(ColumnName('liquipediatiertype'), tierTypes), + } + + local startDate = DateExt.readTimestamp(args.sdate) + if startDate then + conditions:add(ConditionNode(ColumnName('date'), Comparator.ge, startDate)) + end + + local endDate = DateExt.readTimestamp(args.edate) + if endDate then + conditions:add(ConditionNode(ColumnName('date'), Comparator.le, endDate)) + end + + if self.versus then + conditions:add{ + ConditionNode(ColumnName('opponent'), Comparator.eq, self.player), + ConditionNode(ColumnName('opponent'), Comparator.eq, self.versus), + } + elseif Logic.readBool(args.onlySolo) then + conditions:add(ConditionNode(ColumnName('opponent'), Comparator.eq, self.player)) + else + conditions:add(ConditionNode(ColumnName('player'), Comparator.eq, self.player)) + end + + return tostring(conditions) +end + +function PlayerStatistics:_getMapData() + local player = self.player + + ---@return table + local newEmptyData = function() + return Table.map(Array.append(Faction.knownFactions, 'total'), function(index, key) + return key, {w = 0, l = 0} + end) + end + local byMap = {total = newEmptyData()} + + ---@param opponent table + ---@return boolean + local hasNonScoreStatusOrInvalidNumberOfPlayers = function(opponent) + return opponent.status and opponent.status ~= 'S' + or #opponent.players ~= 1 + end + + ---@param opponents table[] + ---@param winner integer? + ---@return string? + ---@return string? + local getResult = function(opponents, winner) + if Array.any(opponents, hasNonScoreStatusOrInvalidNumberOfPlayers) then + return + end + + local player1 = opponents[1].players[1].player + local faction1 = opponents[1].players[1].faction + local player2 = opponents[2].players[1].player + local faction2 = opponents[2].players[1].faction + + if player == player1 and winner == 1 then + return 'w', faction2 + elseif player == player2 and winner == 2 then + return 'w', faction1 + elseif player == player1 and winner == 2 then + return 'l', faction2 + elseif player == player2 and winner == 1 then + return 'l', faction1 + end + end + + ---@param record match2game + local processGame = function(record) + local result, vsFaction = getResult(record.opponents, tonumber(record.winner)) + if not result then return end + + byMap.total.total[result] = byMap.total.total[result] + 1 + + if vsFaction and vsFaction ~= Faction.defaultFaction then + byMap.total[vsFaction][result] = byMap.total[vsFaction][result] + 1 + end + + local map = Logic.nilIfEmpty(record.map) + if not map then + return + end + + byMap[map] = byMap[map] or newEmptyData() + byMap[map].total[result] = byMap[map].total[result] + 1 + + if vsFaction and vsFaction ~= Faction.defaultFaction then + byMap[map][vsFaction][result] = byMap[map][vsFaction][result] + 1 + end + end + + Lpdb.executeMassQuery('match2game', { + conditions = self:_getMapConditions(), + query = 'map, extradata, opponents, winner', + }, processGame) + + self.byMap = byMap +end + +---@return string +function PlayerStatistics:_getMapConditions() + ---@param opponent string + ---@return ConditionTree + local toOpponentCondition = function(opponent) + return ConditionTree(BooleanOperator.any):add{ + ConditionNode(ColumnName('opponent1', 'extradata'), Comparator.eq, opponent), + ConditionNode(ColumnName('opponent2', 'extradata'), Comparator.eq, opponent), + } + end + + local conditions = ConditionTree(BooleanOperator.all):add{ + ConditionNode(ColumnName('winner'), Comparator.neq, ''), -- expect a winner + ConditionNode(ColumnName('status'), Comparator.neq, 'notplayed'), -- i.e. ignore not played maps + ConditionNode(ColumnName('date'), Comparator.neq, DateExt.defaultDate), --i.e. wrongly set up + toOpponentCondition(self.player), + ConditionUtil.anyOf(ColumnName('match2id'), self.matchIds), + self.versus and toOpponentCondition(self.versus) or nil, + } + + return tostring(conditions) +end + +---@return Widget|string +function PlayerStatistics:create() + if Logic.isEmpty(self.matchIds) then + return 'No data found' + end + + return Box{ + children = { + self:_matchesPerFaction(), + self:_matchesPerType(), + self:_matchesPerOpponentType(), + self:_matchesPerBestof(), + self:_gamesPerMapAndFaction() + }, + } +end + +---@return Widget +function PlayerStatistics:_matchesPerFaction() + local display = function(key) + return { + 'vs. ', + key == 'total' and 'All' or Faction.Icon{faction = key}, + } + end + local order = Array.extend('total', Faction.knownFactions) + return PlayerStatistics._simpleTable(self.byFaction, display, order, 'Matches per Faction') +end + +---@return Widget +function PlayerStatistics:_matchesPerType() + local order = {'offline', 'online'} + return PlayerStatistics._simpleTable(self.byType, String.upperCaseFirst, order, 'Matches per Environment') +end + +---@return Widget +function PlayerStatistics:_matchesPerOpponentType() + local order = { + Opponent.solo, + Opponent.team, + Opponent.duo, + Opponent.trio, + Opponent.quad, + } + return PlayerStatistics._simpleTable(self.byOpponentType, String.upperCaseFirst, order, 'Matches per Opponent-Type') +end + +---@return Widget +function PlayerStatistics:_matchesPerBestof() + local display = function(key) + if key == '-1' then + return 'Unknown' + end + return HtmlWidgets.Abbr{title = 'Best of ' .. key, children = key} + end + local order = Array.extractKeys(self.byBestof) + Array.sortInPlaceBy(order, tonumber, function(a, b) + return b == -1 or (a ~= -1 and a < b) + end) + return PlayerStatistics._simpleTable(self.byBestof, display, order, 'Matches per Environment') +end + +---@return Widget +function PlayerStatistics:_gamesPerMapAndFaction() +end + +---@param data table +---@param display fun(string): Renderable +---@param order string[] +---@param title string +---@return Widget +function PlayerStatistics._simpleTable(data, display, order, title) + local rows = Array.map(order, function(key) + local matchupData = data[key] + if (matchupData.w + matchupData.l) == 0 then return end + return TableWidgets.Row{ + children = WidgetUtil.collect( + TableWidgets.Cell{children = display(key)}, + MatchupDisplay.display(matchupData) + ) + } + end) + + return TableWidgets.Table{ + sortable = false, + title = title, + columns = WidgetUtil.collect( + {align = 'left'}, + Array.rep({align = 'right'}, 4) + ), + children = { + PlayerStatistics._header(), + TableWidgets.TableBody{children = rows}, + }, + } +end + +---@return Widget +function PlayerStatistics._header() + return TableWidgets.Row{ + children = { + TableWidgets.CellHeader{children = SUM_ABBR}, + TableWidgets.CellHeader{children = 'W'}, + TableWidgets.CellHeader{children = 'L'}, + TableWidgets.CellHeader{children = '%'}, + } + } +end + +return PlayerStatistics From cf35a64c4c56acfe228eb98288af1e9d4df279f0 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sun, 26 Apr 2026 13:26:33 +0200 Subject: [PATCH 04/23] fix import --- lua/wikis/commons/FactionStatistics/Map.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index be751d95711..e010c3b12ec 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -11,7 +11,7 @@ local Arguments = Lua.import('Module:Arguments') local Array = Lua.import('Module:Array') local DateExt = Lua.import('Module:Date/Ext') local Faction = Lua.import('Module:Faction') -local MatchupDisplay = Lua.import('FactionStatistics/MatchupDisplay') +local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') local FnUtil = Lua.import('Module:FnUtil') local Json = Lua.import('Module:Json') local Logic = Lua.import('Module:Logic') From e61d54febf54571939fead53188f5bd3cb31dd85 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sun, 26 Apr 2026 13:30:06 +0200 Subject: [PATCH 05/23] sort --- lua/wikis/commons/FactionStatistics/Map.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index e010c3b12ec..8fff78142c9 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -205,6 +205,7 @@ function MapStatistics._fetchData(args, matchUps) local total = Table.extract(data, 'total') local unknown = Table.extract(data, DEFAULT_MAP_NAME) local mapsData = Array.extractValues(data) + Array.sortInPlaceBy(mapsData, Operator.property('map')) return Array.appendWith( mapsData, From a20934b90268948022b74a1812f2710e1667a6cf Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sun, 26 Apr 2026 14:01:08 +0200 Subject: [PATCH 06/23] fixerino --- .../commons/FactionStatistics/Player.lua | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 9c5e84cf84a..991c9a9bf62 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -17,7 +17,7 @@ local Lpdb = Lua.import('Module:Lpdb') local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') local Opponent = Lua.import('Module:Opponent/Custom') local Page = Lua.import('Module:Page') -local String = Lua.import('Module:String/Utils') +local String = Lua.import('Module:StringUtils') local Table = Lua.import('Module:Table') local Condition = Lua.import('Module:Condition') @@ -85,11 +85,10 @@ end function PlayerStatistics:_getMatchData() self.matchIds = {} - self.byFaction = Table.map(Faction.knownFactions, function(_, faction) return faction, {w = 0, l = 0} end) + self.byFaction = PlayerStatistics._newEmptyFactionData() self.byType = {online = {w = 0, l = 0}, offline = {w = 0, l = 0}} self.byBestof = {} self.byOpponentType = {} - self.total = {w = 0, l = 0} ---@param opponents table[] ---@param winner integer? @@ -122,8 +121,6 @@ function PlayerStatistics:_getMatchData() local vsSide = 3 - side local result = side == winner and 'w' or 'l' - self.total[result] = self.total[result] + 1 - local eventType = string.lower(record.type or '') == 'offline' and 'offline' or 'online' self.byType[eventType][result] = self.byType[eventType][result] + 1 @@ -137,6 +134,8 @@ function PlayerStatistics:_getMatchData() if Array.any(opponents, function(opponent) return opponent.type ~= Opponent.solo end) then return end + self.byFaction.total[result] = self.byFaction.total[result] + 1 + local vsFaction = Logic.emptyOr( (((opponents[vsSide].match2players or {})[1] or {}).extradata or {}).faction, Faction.defaultFaction @@ -194,16 +193,17 @@ function PlayerStatistics:_getMatchConditions() return tostring(conditions) end +---@return table +function PlayerStatistics._newEmptyFactionData() + return Table.map(Array.append(Faction.knownFactions, 'total'), function(index, key) + return key, {w = 0, l = 0} + end) +end + function PlayerStatistics:_getMapData() local player = self.player - ---@return table - local newEmptyData = function() - return Table.map(Array.append(Faction.knownFactions, 'total'), function(index, key) - return key, {w = 0, l = 0} - end) - end - local byMap = {total = newEmptyData()} + local byMap = {total = PlayerStatistics._newEmptyFactionData()} ---@param opponent table ---@return boolean @@ -253,7 +253,7 @@ function PlayerStatistics:_getMapData() return end - byMap[map] = byMap[map] or newEmptyData() + byMap[map] = byMap[map] or PlayerStatistics._newEmptyFactionData() byMap[map].total[result] = byMap[map].total[result] + 1 if vsFaction and vsFaction ~= Faction.defaultFaction then @@ -317,7 +317,11 @@ function PlayerStatistics:_matchesPerFaction() key == 'total' and 'All' or Faction.Icon{faction = key}, } end - local order = Array.extend('total', Faction.knownFactions) + + -- can not use Array.extend due to the metatable ... see #7433 + local order = {'total'} + Array.forEach(Faction.knownFactions, function(faction) table.insert(order, faction) end) + return PlayerStatistics._simpleTable(self.byFaction, display, order, 'Matches per Faction') end @@ -345,7 +349,7 @@ function PlayerStatistics:_matchesPerBestof() if key == '-1' then return 'Unknown' end - return HtmlWidgets.Abbr{title = 'Best of ' .. key, children = key} + return HtmlWidgets.Abbr{title = 'Best of ' .. key, children = 'Bo' .. key} end local order = Array.extractKeys(self.byBestof) Array.sortInPlaceBy(order, tonumber, function(a, b) @@ -354,10 +358,6 @@ function PlayerStatistics:_matchesPerBestof() return PlayerStatistics._simpleTable(self.byBestof, display, order, 'Matches per Environment') end ----@return Widget -function PlayerStatistics:_gamesPerMapAndFaction() -end - ---@param data table ---@param display fun(string): Renderable ---@param order string[] @@ -366,7 +366,7 @@ end function PlayerStatistics._simpleTable(data, display, order, title) local rows = Array.map(order, function(key) local matchupData = data[key] - if (matchupData.w + matchupData.l) == 0 then return end + if not matchupData or (matchupData.w + matchupData.l == 0) then return end return TableWidgets.Row{ children = WidgetUtil.collect( TableWidgets.Cell{children = display(key)}, @@ -377,28 +377,34 @@ function PlayerStatistics._simpleTable(data, display, order, title) return TableWidgets.Table{ sortable = false, - title = title, + caption = title, columns = WidgetUtil.collect( {align = 'left'}, Array.rep({align = 'right'}, 4) ), children = { - PlayerStatistics._header(), + PlayerStatistics._header(true), TableWidgets.TableBody{children = rows}, }, } end +---@param emptyCell boolean? ---@return Widget -function PlayerStatistics._header() +function PlayerStatistics._header(emptyCell) return TableWidgets.Row{ - children = { + children = WidgetUtil.collect( + emptyCell and TableWidgets.CellHeader{children = ''} or nil, TableWidgets.CellHeader{children = SUM_ABBR}, TableWidgets.CellHeader{children = 'W'}, TableWidgets.CellHeader{children = 'L'}, - TableWidgets.CellHeader{children = '%'}, - } + TableWidgets.CellHeader{children = '%'} + ) } end +---@return Widget +function PlayerStatistics:_gamesPerMapAndFaction() +end + return PlayerStatistics From 9ba3e841996d0e346acca7c32b564ea6f47da182 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sun, 26 Apr 2026 15:21:21 +0200 Subject: [PATCH 07/23] display for map stats for players --- .../commons/FactionStatistics/Player.lua | 98 ++++++++++++++++--- 1 file changed, 82 insertions(+), 16 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 991c9a9bf62..1a0ed0cdc5e 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -12,6 +12,7 @@ local Array = Lua.import('Module:Array') local Class = Lua.import('Module:Class') local DateExt = Lua.import('Module:Date/Ext') local Faction = Lua.import('Module:Faction') +local FnUtil = Lua.import('Module:FnUtil') local Logic = Lua.import('Module:Logic') local Lpdb = Lua.import('Module:Lpdb') local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') @@ -30,6 +31,7 @@ local ConditionUtil = Condition.Util local Box = Lua.import('Module:Widget/Basic/Box') local HtmlWidgets = Lua.import('Module:Widget/Html/All') +local Link = Lua.import('Module:Widget/Basic/Link') local TableWidgets = Lua.import('Module:Widget/Table2/All') local WidgetUtil = Lua.import('Module:Widget/Util') @@ -299,6 +301,7 @@ function PlayerStatistics:create() end return Box{ + paddingBottom = '1rem', children = { self:_matchesPerFaction(), self:_matchesPerType(), @@ -318,13 +321,20 @@ function PlayerStatistics:_matchesPerFaction() } end - -- can not use Array.extend due to the metatable ... see #7433 - local order = {'total'} - Array.forEach(Faction.knownFactions, function(faction) table.insert(order, faction) end) + local order = PlayerStatistics._getFactionOrder() return PlayerStatistics._simpleTable(self.byFaction, display, order, 'Matches per Faction') end +-- can not use Array.extend due to the metatable ... see #7433 +-- once #7433 is fixed this function becomes obsolete via `Array.extend({'total'}, Faction.knownFactions)` +---@return string[] +function PlayerStatistics._getFactionOrder() + local order = {'total'} + Array.forEach(Faction.knownFactions, function(faction) table.insert(order, faction) end) + return order +end + ---@return Widget function PlayerStatistics:_matchesPerType() local order = {'offline', 'online'} @@ -383,28 +393,84 @@ function PlayerStatistics._simpleTable(data, display, order, title) Array.rep({align = 'right'}, 4) ), children = { - PlayerStatistics._header(true), + TableWidgets.Row{children = PlayerStatistics._headerCells(true)}, TableWidgets.TableBody{children = rows}, }, } end ----@param emptyCell boolean? ----@return Widget -function PlayerStatistics._header(emptyCell) - return TableWidgets.Row{ - children = WidgetUtil.collect( - emptyCell and TableWidgets.CellHeader{children = ''} or nil, - TableWidgets.CellHeader{children = SUM_ABBR}, - TableWidgets.CellHeader{children = 'W'}, - TableWidgets.CellHeader{children = 'L'}, - TableWidgets.CellHeader{children = '%'} - ) - } +---@param emptyCell boolean +---@return Widget[] +function PlayerStatistics._headerCells(emptyCell) + return WidgetUtil.collect( + emptyCell and TableWidgets.CellHeader{children = ''} or nil, + TableWidgets.CellHeader{children = SUM_ABBR}, + TableWidgets.CellHeader{children = 'W'}, + TableWidgets.CellHeader{children = 'L'}, + TableWidgets.CellHeader{children = '%'} + ) end ---@return Widget function PlayerStatistics:_gamesPerMapAndFaction() + local factionOrder = Array.filter(PlayerStatistics._getFactionOrder(), function (key) + local data = self.byMap.total[key] + return data.w + data.l > 0 + end) + + ---@param key string + ---@return Widget + local factionHeader = function(key) + local display = key == 'total' and 'vs. All' or { + 'vs. ', + Faction.Icon{faction = key}, + } + return TableWidgets.CellHeader{children = display, colspan = 4, align = 'center'} + end + + local header = { + TableWidgets.Row{ + children = WidgetUtil.collect( + TableWidgets.CellHeader{children = 'Maps', rowspan = 2, align = 'center'}, + Array.map(factionOrder, factionHeader) + ) + }, + TableWidgets.Row{ + children = Array.flatMap(Array.range(1, #factionOrder), FnUtil.curry(PlayerStatistics._headerCells, false)) + }, + } + + ---@param rowData table + ---@param mapDisplay Renderable + ---@return Widget + local makeRow = function(rowData, mapDisplay) + return TableWidgets.Row{ + children = WidgetUtil.collect( + TableWidgets.Cell{children = mapDisplay}, + Array.flatMap(factionOrder, function(key) + return MatchupDisplay.display(rowData[key]) + end) + ) + } + end + + local rows = {makeRow(Table.extract(self.byMap, 'total'), 'Overall')} + for map, rowData in Table.iter.spairs(self.byMap) do + table.insert(rows, makeRow(rowData, Link{link = map})) + end + + return TableWidgets.Table{ + sortable = false, + caption = 'Map statistics', + columns = WidgetUtil.collect( + {align = 'left'}, + Array.rep({align = 'right'}, 4 * #factionOrder) + ), + children = WidgetUtil.collect( + header, + TableWidgets.TableBody{children = rows} + ), + } end return PlayerStatistics From e3ec959308d94b00c0bc4d4a89f32bb048f67901 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Wed, 29 Apr 2026 08:21:37 +0200 Subject: [PATCH 08/23] adjust input params --- lua/wikis/commons/FactionStatistics/Map.lua | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index 8fff78142c9..13b0c7d28e6 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -231,16 +231,21 @@ function MapStatistics._buildConditions(args) conditions:add(ConditionNode(ColumnName('date'), Comparator.le, endDate)) end - local mapsInput = args.maps or args.map - or args.mode == 'mapStats' and mw.title.getCurrentTitle().text - or nil - local maps = Array.parseCommaSeparatedString(mapsInput) + ---@type string[] + local maps = Logic.nilIfEmpty(Array.mapIndexes(function(index) + return Logic.nilIfEmpty(args['map' .. index]) + end)) + or args.mode == 'mapStats' and {mw.title.getCurrentTitle().text} + or {} + maps = Array.filter(maps, function(map) return map ~= 'TBD' end) if Logic.isNotEmpty(maps) then conditions:add(ConditionUtil.anyOf(ColumnName('map'), maps)) end - local parents = Array.parseCommaSeparatedString(args.parents or args.parent) + local parents = Array.mapIndexes(function(index) + return Logic.nilIfEmpty(args['parent' .. index]) + end) if Logic.isNotEmpty(parents) then conditions:add(ConditionUtil.anyOf(ColumnName('parent'), Array.map(parents, Page.pageifyLink))) end @@ -297,7 +302,11 @@ function MapStatistics._getTournaments(args) return Array.map(tournaments, Operator.property('pagename')) end - return Logic.nilIfEmpty(Array.parseCommaSeparatedString(args.tournaments or args.tournament)) + local tournaments = Logic.nilIfEmpty(Array.mapIndexes(function(index) + return Logic.nilIfEmpty(args['tournament' .. index]) + end)) + + return tournaments or Logic.nilIfEmpty(fromSeries(args.series)) or args.mode == 'tournamentStats' and {mw.title.getCurrentTitle().text} or nil From 6063e2272e1554b3a76af8d0d07bb57481ae08e6 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Wed, 29 Apr 2026 11:42:27 +0200 Subject: [PATCH 09/23] as per review --- lua/wikis/commons/FactionStatistics/Map.lua | 53 +++++++++---------- .../FactionStatistics/MatchupDisplay.lua | 4 +- .../commons/FactionStatistics/Player.lua | 13 +++++ 3 files changed, 41 insertions(+), 29 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index 13b0c7d28e6..12591297aa8 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -13,7 +13,6 @@ local DateExt = Lua.import('Module:Date/Ext') local Faction = Lua.import('Module:Faction') local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') local FnUtil = Lua.import('Module:FnUtil') -local Json = Lua.import('Module:Json') local Logic = Lua.import('Module:Logic') local Lpdb = Lua.import('Module:Lpdb') local Operator = Lua.import('Module:Operator') @@ -70,6 +69,7 @@ function MapStatistics.run(frame) } end +---@private ---@return {vs: string[], mirrors: string[]} function MapStatistics._getMatchups() local vs = {} @@ -113,6 +113,7 @@ function MapStatistics._getMatchups() } end +---@private ---@param args table ---@param matchUps {vs: string[], mirrors: string[]} ---@return {map: string, mapDisplayName: string?, total: integer, @@ -214,6 +215,7 @@ function MapStatistics._fetchData(args, matchUps) ) end +---@private ---@param args table ---@return string function MapStatistics._buildConditions(args) @@ -239,26 +241,20 @@ function MapStatistics._buildConditions(args) or {} maps = Array.filter(maps, function(map) return map ~= 'TBD' end) - if Logic.isNotEmpty(maps) then - conditions:add(ConditionUtil.anyOf(ColumnName('map'), maps)) - end + conditions:add(ConditionUtil.anyOf(ColumnName('map'), maps)) local parents = Array.mapIndexes(function(index) return Logic.nilIfEmpty(args['parent' .. index]) end) - if Logic.isNotEmpty(parents) then - conditions:add(ConditionUtil.anyOf(ColumnName('parent'), Array.map(parents, Page.pageifyLink))) - end + conditions:add(ConditionUtil.anyOf(ColumnName('parent'), Array.map(parents, Page.pageifyLink))) - local tournaments = MapStatistics._getTournaments(args) - if Logic.isNotEmpty(tournaments) then - ---@cast tournaments -nil - conditions:add(ConditionUtil.anyOf(ColumnName('pagename'), Array.map(tournaments, Page.pageifyLink))) - end + local tournaments = Array.map(MapStatistics._getTournaments(args), Page.pageifyLink) + conditions:add(ConditionUtil.anyOf(ColumnName('pagename'), tournaments)) return tostring(conditions) end +---@private ---@param mapData {map: string, mapDisplayName: string?, total: integer, ---vs: table, mirrors: table} function MapStatistics._store(mapData) @@ -275,18 +271,18 @@ function MapStatistics._store(mapData) ratios[factions[2] .. factions[1]] = ratio and (1 - ratio) or nil end - mw.ext.LiquipediaDB.lpdb_datapoint( - 'map_winrates_' .. mapData.map, - { - name = mapData.map, - type = 'map_winrates', - extradata = Json.stringify(ratios), - } - ) + local dataPoint = Lpdb.DataPoint:new{ + objectname = 'map_winrates_' .. mapData.map, + type = 'map_winrates', + name = mapData.map, + extradata = ratios, + } + dataPoint:save() end +---@private ---@param args table ----@return string[]? +---@return string[] function MapStatistics._getTournaments(args) ---@param series string? ---@return string[]? @@ -302,16 +298,18 @@ function MapStatistics._getTournaments(args) return Array.map(tournaments, Operator.property('pagename')) end - local tournaments = Logic.nilIfEmpty(Array.mapIndexes(function(index) + local tournaments = Array.mapIndexes(function(index) return Logic.nilIfEmpty(args['tournament' .. index]) - end)) + end) - return tournaments - or Logic.nilIfEmpty(fromSeries(args.series)) - or args.mode == 'tournamentStats' and {mw.title.getCurrentTitle().text} - or nil + return Logic.emptyOr( + tournaments, + fromSeries(args.series), + args.mode == 'tournamentStats' and {mw.title.getCurrentTitle().text} or {} + ) --[[@as string[] ]] end +---@private ---@param matchUps {vs: string[], mirrors: string[]} ---@return Widget function MapStatistics._header(matchUps) @@ -371,6 +369,7 @@ function MapStatistics._header(matchUps) } end +---@private ---@param matchUps {vs: string[], mirrors: string[]} ---@param mapData {map: string, mapDisplayName: string?, total: integer, ---vs: table, mirrors: table} diff --git a/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua b/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua index 0e08807026f..6f5cb3450f8 100644 --- a/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua +++ b/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua @@ -24,7 +24,7 @@ function MatchupDisplay.display(matchupData) return '-' end local percentage = 100 * matchupData.w / (total) - return MathUtil.formatRounded{precision = 1, value = percentage} + return MathUtil.formatPercentage(percentage, 1) end return { @@ -41,4 +41,4 @@ function MatchupDisplay.dashIfZero(input) return input == 0 and '-' or input end -return MatchupDisplay \ No newline at end of file +return MatchupDisplay diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 1a0ed0cdc5e..5009e17fc88 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -84,6 +84,7 @@ function PlayerStatistics:query() return self end +---@private function PlayerStatistics:_getMatchData() self.matchIds = {} @@ -148,6 +149,7 @@ function PlayerStatistics:_getMatchData() end) end +---@private ---@return string function PlayerStatistics:_getMatchConditions() local args = self.args @@ -195,6 +197,7 @@ function PlayerStatistics:_getMatchConditions() return tostring(conditions) end +---@private ---@return table function PlayerStatistics._newEmptyFactionData() return Table.map(Array.append(Faction.knownFactions, 'total'), function(index, key) @@ -202,6 +205,7 @@ function PlayerStatistics._newEmptyFactionData() end) end +---@private function PlayerStatistics:_getMapData() local player = self.player @@ -271,6 +275,7 @@ function PlayerStatistics:_getMapData() self.byMap = byMap end +---@private ---@return string function PlayerStatistics:_getMapConditions() ---@param opponent string @@ -312,6 +317,7 @@ function PlayerStatistics:create() } end +---@private ---@return Widget function PlayerStatistics:_matchesPerFaction() local display = function(key) @@ -328,6 +334,7 @@ end -- can not use Array.extend due to the metatable ... see #7433 -- once #7433 is fixed this function becomes obsolete via `Array.extend({'total'}, Faction.knownFactions)` +---@private ---@return string[] function PlayerStatistics._getFactionOrder() local order = {'total'} @@ -335,12 +342,14 @@ function PlayerStatistics._getFactionOrder() return order end +---@private ---@return Widget function PlayerStatistics:_matchesPerType() local order = {'offline', 'online'} return PlayerStatistics._simpleTable(self.byType, String.upperCaseFirst, order, 'Matches per Environment') end +---@private ---@return Widget function PlayerStatistics:_matchesPerOpponentType() local order = { @@ -353,6 +362,7 @@ function PlayerStatistics:_matchesPerOpponentType() return PlayerStatistics._simpleTable(self.byOpponentType, String.upperCaseFirst, order, 'Matches per Opponent-Type') end +---@private ---@return Widget function PlayerStatistics:_matchesPerBestof() local display = function(key) @@ -368,6 +378,7 @@ function PlayerStatistics:_matchesPerBestof() return PlayerStatistics._simpleTable(self.byBestof, display, order, 'Matches per Environment') end +---@private ---@param data table ---@param display fun(string): Renderable ---@param order string[] @@ -399,6 +410,7 @@ function PlayerStatistics._simpleTable(data, display, order, title) } end +---@private ---@param emptyCell boolean ---@return Widget[] function PlayerStatistics._headerCells(emptyCell) @@ -411,6 +423,7 @@ function PlayerStatistics._headerCells(emptyCell) ) end +---@private ---@return Widget function PlayerStatistics:_gamesPerMapAndFaction() local factionOrder = Array.filter(PlayerStatistics._getFactionOrder(), function (key) From 16d1955a340cdde1f8956ca67bf985eb881cb6e7 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Wed, 29 Apr 2026 11:51:24 +0200 Subject: [PATCH 10/23] as per review --- lua/wikis/commons/FactionStatistics/Player.lua | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 5009e17fc88..76ffca4f408 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -16,6 +16,7 @@ local FnUtil = Lua.import('Module:FnUtil') local Logic = Lua.import('Module:Logic') local Lpdb = Lua.import('Module:Lpdb') local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') +local MatchGroupUtil = Lua.import('Module:MatchGroup/Util/Custom') local Opponent = Lua.import('Module:Opponent/Custom') local Page = Lua.import('Module:Page') local String = Lua.import('Module:StringUtils') @@ -93,7 +94,7 @@ function PlayerStatistics:_getMatchData() self.byBestof = {} self.byOpponentType = {} - ---@param opponents table[] + ---@param opponents standardOpponent[] ---@param winner integer? ---@return boolean local shouldExclude = function(opponents, winner) @@ -102,7 +103,7 @@ function PlayerStatistics:_getMatchData() or not opponents[1] or #opponents ~= 2 or Array.any(opponents, function(opponent) - return opponent.status and opponent.status ~= 'S' + return opponent.status and opponent.status ~= 'S' or false end) end @@ -110,15 +111,16 @@ function PlayerStatistics:_getMatchData() conditions = self:_getMatchConditions(), query = 'match2id, bestof, match2opponents, winner, type', }, function (record) + ---@type standardOpponent[] + local opponents = Array.map(record.match2opponents, FnUtil.curry(MatchGroupUtil.opponentFromRecord, record)) local winner = tonumber(record.winner) - local opponents = record.match2opponents if shouldExclude(opponents, winner) then return end table.insert(self.matchIds, record.match2id) - local side = (opponents[1].name == self.player or Array.any(opponents[1].match2players or {}, function(playerObj) - return playerObj.name == self.player + local side = (opponents[1].name == self.player or Array.any(opponents[1].players or {}, function(playerObj) + return playerObj.pageName == self.player end)) and 1 or 2 local vsSide = 3 - side @@ -140,7 +142,7 @@ function PlayerStatistics:_getMatchData() self.byFaction.total[result] = self.byFaction.total[result] + 1 local vsFaction = Logic.emptyOr( - (((opponents[vsSide].match2players or {})[1] or {}).extradata or {}).faction, + (((opponents[vsSide].players or {})[1] or {}).extradata or {}).faction, Faction.defaultFaction ) if vsFaction == Faction.defaultFaction then return end From 71d76af2c0b75ec87cb4f2b2e5a6f18452615157 Mon Sep 17 00:00:00 2001 From: hjpalpha <75081997+hjpalpha@users.noreply.github.com> Date: Thu, 30 Apr 2026 04:28:19 +0200 Subject: [PATCH 11/23] Apply suggestions from code review Co-authored-by: hjpalpha <75081997+hjpalpha@users.noreply.github.com> Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> --- lua/wikis/commons/FactionStatistics/Player.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 76ffca4f408..e72cb9fd57b 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -142,7 +142,7 @@ function PlayerStatistics:_getMatchData() self.byFaction.total[result] = self.byFaction.total[result] + 1 local vsFaction = Logic.emptyOr( - (((opponents[vsSide].players or {})[1] or {}).extradata or {}).faction, + ((opponents[vsSide].players or {})[1] or {}).faction, Faction.defaultFaction ) if vsFaction == Faction.defaultFaction then return end @@ -159,7 +159,7 @@ function PlayerStatistics:_getMatchConditions() local tiers = Array.map(Array.parseCommaSeparatedString(args.tiers), function(num) return tonumber(num) end) - tiers = Logic.nilIfEmpty(tiers) or DEFAULT_TIERS + tiers = Logic.emptyOr(tiers, DEFAULT_TIERS) --[[@as integer[] ]] local tierTypes = Array.parseCommaSeparatedString(args.tiers or '!Qualifier') tierTypes = Array.map(tierTypes, function(tierType) @@ -209,6 +209,10 @@ end ---@private function PlayerStatistics:_getMapData() + if Logic.isEmpty(self.matchIds) then + return + end + local player = self.player local byMap = {total = PlayerStatistics._newEmptyFactionData()} From 1b4b067f698a8393b3346d63aa76e4e3ae423e1d Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 30 Apr 2026 07:26:15 +0200 Subject: [PATCH 12/23] as per review --- lua/wikis/commons/FactionStatistics/Player.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index e72cb9fd57b..80825b7fb2c 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -21,6 +21,7 @@ local Opponent = Lua.import('Module:Opponent/Custom') local Page = Lua.import('Module:Page') local String = Lua.import('Module:StringUtils') local Table = Lua.import('Module:Table') +local Tier = Lua.import('Module:Tier/Utils') local Condition = Lua.import('Module:Condition') local ConditionTree = Condition.Tree @@ -156,10 +157,8 @@ end function PlayerStatistics:_getMatchConditions() local args = self.args - local tiers = Array.map(Array.parseCommaSeparatedString(args.tiers), function(num) - return tonumber(num) - end) - tiers = Logic.emptyOr(tiers, DEFAULT_TIERS) --[[@as integer[] ]] + local tiers = Array.map(Array.parseCommaSeparatedString(args.tiers), Tier.toIdentifier) + tiers = Logic.emptyOr(tiers, DEFAULT_TIERS) --[[@as integer[] ]] local tierTypes = Array.parseCommaSeparatedString(args.tiers or '!Qualifier') tierTypes = Array.map(tierTypes, function(tierType) From fb3eff8407edd8aced4f1b5443404fabacdcbad6 Mon Sep 17 00:00:00 2001 From: hjpalpha <75081997+hjpalpha@users.noreply.github.com> Date: Thu, 14 May 2026 14:23:23 +0000 Subject: [PATCH 13/23] chore: update visual snapshots --- lua/spec/snapshots/dota2 rankings.png | Bin 81986 -> 81976 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lua/spec/snapshots/dota2 rankings.png b/lua/spec/snapshots/dota2 rankings.png index e61cb14992eacd988c8c02d268744d07659bc1ff..74a37ff5e3a4fa6f0b6b61053520399ee9fa838b 100644 GIT binary patch delta 34198 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 Date: Thu, 14 May 2026 16:27:23 +0200 Subject: [PATCH 14/23] use v3 html widgets --- lua/wikis/commons/FactionStatistics/Map.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index 12591297aa8..60aff144d3a 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -28,18 +28,18 @@ local ColumnName = Condition.ColumnName local ConditionUtil = Condition.Util local Link = Lua.import('Module:Widget/Basic/Link') -local HtmlWidgets = Lua.import('Module:Widget/Html/All') +local Html = Lua.import('Module:Widget/Html') local TableWidgets = Lua.import('Module:Widget/Table2/All') local WidgetUtil = Lua.import('Module:Widget/Util') local DEFAULT_MAP_NAME = 'Unknown' -local SUM_ABBR = HtmlWidgets.Abbr{title = 'Sum of', children = 'Σ'} -local NUMBER_OF_ABBR = HtmlWidgets.Abbr{title = 'Number of', children = '#'} +local SUM_ABBR = Html.Abbr{title = 'Sum of', children = 'Σ'} +local NUMBER_OF_ABBR = Html.Abbr{title = 'Number of', children = '#'} local MapStatistics = {} ---@param frame Frame ----@return Widget? +---@return VNode? function MapStatistics.run(frame) local args = Arguments.getArgs(frame) @@ -311,10 +311,10 @@ end ---@private ---@param matchUps {vs: string[], mirrors: string[]} ----@return Widget +---@return VNode function MapStatistics._header(matchUps) ---@param key string - ---@return Widget + ---@return VNode local makeFactionHeader = function(key) local factions = Array.parseCommaSeparatedString(key) @@ -330,7 +330,7 @@ function MapStatistics._header(matchUps) end ---@param key string - ---@return Widget[] + ---@return VNode[] local makeMatchUpHeader = function(key) local factions = Array.parseCommaSeparatedString(key) return { @@ -373,7 +373,7 @@ end ---@param matchUps {vs: string[], mirrors: string[]} ---@param mapData {map: string, mapDisplayName: string?, total: integer, ---vs: table, mirrors: table} ----@return Widget? +---@return VNode? function MapStatistics._row(matchUps, mapData) if Logic.isEmpty(mapData) then return From 24d9ebe6b031c91a0c81d8c7eb4a7455ea1e2704 Mon Sep 17 00:00:00 2001 From: hjpalpha <75081997+hjpalpha@users.noreply.github.com> Date: Thu, 14 May 2026 14:30:16 +0000 Subject: [PATCH 15/23] chore: update visual snapshots --- lua/spec/snapshots/dota2 rankings.png | Bin 81976 -> 81986 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lua/spec/snapshots/dota2 rankings.png b/lua/spec/snapshots/dota2 rankings.png index 74a37ff5e3a4fa6f0b6b61053520399ee9fa838b..e61cb14992eacd988c8c02d268744d07659bc1ff 100644 GIT binary patch delta 34283 zcmbrlWmp_h*RDwd5g>%%79cpzrnfWu#kbwCx5-4l=hVa+u_`n{T@@rJ0>pw}P zd=9WX(7$rNV8>AKlN-ihy>t7Sc*BGtkD<^?$n)gh8|IC8BP5O0;Tyd4^6!@|jQ4ln z->ab};j$ZrGqD2czl2s=C;4qGoC-QJ#k|i%T{w6^@EO;71gi$-e352 z?`%Q1qe?4Y6H*W5QM$!yxQp9xM?9G&a}FK+Q5UsT!H93~DDII$VKA2a{F-ialZDZU{p~h4e+zC`I7gki*_pIXp3LHGKH}Z zn6fq$3+b>=NT=0cK@x}=G=zoo){DC|oms$1$Ai^`vVnVq;E)6jjmn%(1WlQ+;}v>Y z;q|bJIf{`x*V0P4;>$^JjX*X7Xg=27*NuPO?$#Q|-E=CSQ?KE4pV#g_6|!@fl&74? z@F(K4F~Es{VY0usbKx~-TsyKOb$!2xXf!lG{5!C{a$`gmFh(Gs{C?iy9xe6ZLb#X5l2@%)_GY!PeNhLe_Q#YkQ~vpy1*L1i`l#BF zz9*k)jF%YUTr@R7S&hGMxkv9ZU-cZx5(^U^+H zM$V?sWeroMD+V-Z(&}Seb~A84s>cP9eYL+h;`d0JNxg2jf}yJLoe=Wp#ani=Z{9=U zm`3`;+=R_89@Sr9TwAcbv|{MpyQ1rN>LFj327SwKLQX;!M&R|B?(?&vw!sQr&e^xN z%mC82@H5Ja{M#+k)c+>RC!y3vrDGtv>iiE^Y{OfDqSn7a4ma`M!e5i6S{*0jZ%&hS zys+kX&jgQh3JBMGcE!dh80(jk4yBsW&<Bc7V8S9#&r)EMq$NLued8pk- zDpT&n>xObmXN4~+1sXx91c8_;`YQ5xaB4}0pUbhLV~#veTO##>-p`fCx&ADb<$$Ny zro}9LTE>2&r}!r=St3f>alItc)Q|{&Nkp6iZQ3QvAr87xcFH8uhl`jcZ)q`b9CX=C zn|iN-Q$XgFH98AQYrGy*^Q@jytfJWQAmfX$Zc>={OyO_`T?WKkv&t+X6bY?b!_Wwq1tJe=Qb+m|(A- zMRq%nz=49m%hyFG+xOc z&Cin9G3!5nNla(&IYaqSsOkBKAA%hae1v3eRN zYui5+vn)n|<(JyB_5S4gZVS8XE~Q8LE1HJO`mEVxWq!vpOk>&Jk~}JaTFGexqa*c)k6wDV=n8H$RQzb3S$K4waIXGHDo?@&6lADV7zH6L8wtxD=Mm zb2tzpNpDw>0tQ{(=zv&LN^;MyZm*}OW~UeuRFhw?$Cy;jps3h2BsQ$O){G~}>#la> z`K%owGGA1h%u1V~N$LyV;$SnWoF`DOy1FPDJlIf8YP#c?!~2^gKO4V13l;5+ZT8b| z(T||P=#R(&_M$)U=i*n4I2-T*t)AHK%$6k+V&r-rysF)^F^Oh@1;VX_`Xc3cV@d{#W} za2P2VqpYp;zPkF)c5>x6W`b&HLxPqqYLIm%#EbqZK%?De4BfF499PuXPtcq5}qUUDy=Zk9!r_@s}smhVcKC1!| zi)M?eZ({L&QX0urQCao}xQ8yWoJU9fl`DK{88LC&wSWqcfJHYBe`07#ci6_9!XUS_T7`}s4;06?GmeAfz%7PdbKK=rxvfBMiS=EtmW9b_n ze2jCvy&JH6X5N}o9Fy!7l%$H)Gwxg>rOozoy>+Hx+}CXAcC*smbz5VFI@85&xS4ur zXu}leZJ^R$6>T+NbF$w`7RzqpI#ND9y8>$fh-=Zw6O3i6gsTFrkZa^dxS8#{X0Fch z8F^SiS+ZI2^|-eiL_JZ6hL8SiLQaHJt}K}(c1L(9IvaGozqr{{^KnE;@?L*xI z_KZwe6fwr{Egi(T@A_%ePZb^rFY~GDJ452=HrSMW;NMjroo)AbkuWvcY-IfgzMKJm zFtkl?1*_VRr`0#hxDI9B5;Pf@+cm)&_r5thDc8O+AWJ znPgqw=J#jqAir~|OT7n;(RxWxw9@mhYx^wt_ z)Fn0OJR)uQ8heHN;B!0!OVukQ0dzEPD)+5Ug?oxrS6SJkQ&hJ4KHi>Ki}yQROLXy-Pr|tfRUgj$e>{01(GT)u6bYo)mM`yP zBjJ)?!K)hN9G*KzAV3>hvR6ZGLgmRbLBKEi_~9;ZLGO3NXdH&Q?-MM^qi+#niH0G@ z*|ckV-gxMs)JJGbkY89FXd$E_WqwthkN*A7g~<|ml)>uPs6S2A_*9fmzsroe@c&(S z__6EP%uxn?3{iSVRAhdwDd;cG{WfAHxQ?Vk<(~g%L`%0f7W5nSBg&|yK0<)>(A7uP zlW=+2Rm@#k&2(eqTxsDg2Fgrr=bqQ~dJ~GF&_sYbNY8amp_aw<+R{90i$)CHZp8#< z2-fM?v9lHks*b46=3X7;C@Q}T-1r#R$R{r3{$0`zv>u^c9P?9H(NV}Fe5Y4!clBP; z`06@bRi5_r-eKX+eSo!sa~X)=6ulZ#Ccs3SC$cvB?DWkz`LC($VAI#6`fZ={wY~MA zhFeMb#Job~;P=SQ_Znq?*JqLuoO7C$bZ?K$s}55f#?%zDFdqVIK~fw(Qa6TssQD*k zUkev7f`Wz9`Jy;5s9xmTIgrok5t5xa!PC3*?$gfSOwF=A*)RN%?FsC4AQUhi-K<~3 z@7B!*?5J5w7BW z!&h>;fkH?2%+%5OSiu|BWYN%Gp-F%F{C&}qM{9-pEa;P>hnuUpK0!j&0!Zw5_1gTL z0#7nuLyYm?ga6Sb0o*xyKY15hEsPtblB6J$O8|dcT#EOq77V%C&M8nU2_xe+9nV!< zqaqhJJvp)G7h$^I=-YfzX9-_R=!_jL2-gU?EIYnE-G51WwKg4tu$|>_ZM2yBT#6)g zO#oOIZ{2?sFK@?;28ze;mOUlTZZtYm+YM(9JluDw{oRR&2GnAICwaMF65Y^bM=-Nm zlcPYr0Cwn*3<%dFWR;#F;SEL<)lUaa^wEYJ^A2Eg5|o0TSeP-@tckyy`85j% zb@TmgNdwT32<9~Ee1SUc2qsx~5I8?e3!w72Iqb@ji#OEQ|FJzvpQUtpb3EkgnORwR z(!-FF$+&~KzjHk|w}2({S`owPqW!F$MlL%?S(Hi!#ZciX-yv=C_;a~1K^Tjkl~vE> zjv4l|U6pJvnNI`*IX30D9)~&5Ai}7I7d;2sb^st+zcQ?1FuFUW9zu`yL+!bo+S_Kj zh~c6c^p}%hg~4joaVCsd?twaa%b?n+6RinntVy{~!8$8rdJ(_JbILL2nN;n|0Pq9TU^3U?sd1vVv1(Z zdw`!rAeGtTsix>IKZp+Ra^SR0R8g^Z7&zl{o`~y68}9HmZL2W#hy8gMwcu_6D=Vvw zjSW|Pe`{;&>@3V==6G|+F|QU8@w;OMuIb|9f-8D+FrKH}LrG!AoFv~gbXj<-*#++4 z7YH@3L;fnx-wU-%AcR6Z`tRU~MWq}{!02$Vy+;%RY_Q;vB~$3Be*dMm=r+VMkwztr5Qnr6>CDlh*0 zeS++BuyEr~rF<0(G_NS9Hz?R9<&%ZnAJ#|n<$zuPz(9#keP`DCBZ-dCwCwE8;o)y@>#$=k>{s8p#fc~> zkDO(l?abSeYl+a%;u`s){M^3U1Glpo89C3Xw)ZQ-L2f6VL@^uWWd2q*q02KiYcrcG zWpp>$ z0c3to*Zu&cGi!6OmA|RC@Q<(#*?G|cd(XQKI!+bow~;9iDuLw;a=8xGo}?6ocuK}Y zgX_bE&(zQLjk>~+TW-6gR32MtVI+E?@Q@U`xddjfKy3*3!Et`XG{)6(05u;cr-cPzak*1ak_@@B7$q{745zwn z!xgU4M!5-__Qy$5xo5hHo1=L7pQ1X>5x~$_^WtywhiAoc=7z?is;75m2tD`_$aa;E zkB@*MY)7{)JcJ;G>U^w9HlLyfa?l$?-E~a%n}yx>V>uqF6#2(dP_0-tM}hy2Rk1e@OwWAJHr#m6g{f`Y zG6_*TMdEPblaZ4<2*hS@FM^;9@`;SlKKS?kQ%gI$`@M>xTB&}H5a83BrN2MAOxh5h z$2fiEtDT|skXsKM8>F&=aK|aV>&SH3&wK$$pr5}(ZW~a+c^k? zgYI${>^R7-^TwqZvt!eE#N76-sd3h9MsF4WNaZj6TA27Y%PGm^JxJj4e9~Zu>=jz= zrtLx$cVr%Ix_PAQGeBQ;VmvdO-jw!jnI48swfS`#t7AK;YwEI-kcW@BogpQUNoRY4M>&8vbyt~D01hd1 zRDQ(B!7eKGjVFoWFr?#<@YF&i+&3a(WTHTAx9WHGo149;!!8nFG)q<+|4zHWNFNLa zJCKBwm2xJk&$*P!J*a}25V|!>h2{}|1&?^hnTPa5>!yeBQ|W6$#IGRgcOvJ7QPr`6 zGsY`~N>Js?#;LX9F7k&WC&cQ!0r}0-l)aku`8i?2iAxk?Yk@(!}5aV3eyxCrF1&jMX*?@g6 zjb=&&0x@gSUh>YhhbDiZ;jk4GU0@I`TOR0R5l@&(_Hr8yIV|f@-Uz96TVGonKQ!!* z8(i7JU`@Aqep`>Y9c*v^72Fywa%H|hii%PY>FLl1im#{3jNpZR&hhDAA&*w&GS4zZ zfa`)0mIXU^=KWlIlx&f#>m9f0b)G_EvWCUow0Zhv`I(Z~NDV@c%e||Sd*DI2uJayu zs)>F;UQtKI49O>6jNzJz6bp`L#^3!+BGD_oFFUa#vb*1mAkmAHYKnwHCai9Z;Q05e z1onV1M+>ELm2P2F0p^@$j=n~IUHSJ>8D-klymyo}4k%Xzwz!?@_M;0uvBwtoY8!FG z&NI?6{fRd6vszy&g6ei8ct;r7n8(S#Dm$BG!O}?sXTA$%Z@#oA`(VpXV?~Fhex2(T zC>sHJg!aj9p8Zjriuv=eigd?uX3_9)l`LEUo)S7q?r~mkw`aGILiAdY{V0wnJ7tE$ z(^4V2yKxT@(971K>4d~0e!Q*9z(aH;LQbnW_c+7#Sy>(3-M?FYPtA`?Nl@iQU_L_geufwJ z>fr?eaiSJ}M*5$+9Bt{01`Qnzs{H;DIkc4e5fR??nm`K&snC!AQMc>s=R&`|e<<5I zR;i=(`>c?x9RH7&la;-!qU$23KvH`yY;yFjH5$Q{i*Z3(zl$b80b$3$W5VcOCd~V?5bQsVt7~l=3j_4+lpMHWv6gF3KtgSO&jjV zxX9R*kj%AI{%K!9H5eBLBMLyotOII2lt~@JIx)OCeRCfEc!C~RK{%m|T-G7|&Y>lp zVp37{VmeW;qf=i_Qy2(yO)l6B;LiO?fH{ZN79&uoH;oHV+W5?#N=$m7LK0YMo5?lz zNMG+YF!KpywR^~Jo@Fo!CaR}bW53kRy|q1xO7qD{K{O4tU9j0ab`41P1Ow*ArmQAN z)b?uKPlGwjUfH0r#e?3DlufS3hTA&vYUp`wT%wNg%fGKy&L64j*3!Kd(Oc9j$?lhG zj*i_w4Ogs4DA@|m%l7IO74$*nF5%^r6+*#b#P{w!sH)6jOiEM9SeltHOHeH3D z@hiJ|rR3?u^q^cHT=t41Mfhqq@~2W%_~j6w^0CYCw9_L>Vv_MmR|nytYE&Z!MKCmEBi9fZd+3&!Q- z@plB+f7I66`Rn<_f0ZL|| z3%+Ul71yts)>WNE6SfkT)N@#qQ$6}<+-Alt4|uFH=aEyEGk~TtZo_F$)+D#^#}Z5$j`ff zz!t3E{;>RSDY$k3Uc(r$^xD)^I1>x$n;RFy%t@}l^oz-+g;;F3R{cdLI?qD9X3<%! z9Pn?5hsr9-oG;q?9vxotCKX9M*f<54JP6ux1C!o>c+N%kX)Q?Hr=X* z#FejZJwIcyLJw=G=V4XS3nG6-1}Chm#M1j2p^Aj>(g&9M(wyUeh@Yt%0166M3w~~40v}?WEn8Rnz zJjL~p>09bXl&hjnT=d?0@8{2Du1a-vQwUajN+`jU!7HlT7-zWlZ#twc04R%9xspTl zhEHqptVhXBTPk#Nt(vi~hOHW)X}D0@eEKJ9=@$5l4H2LWRl80>F83$Yz2jDzTbM-o zi9XGQvOG<&s)h^Y+z2iU=`|Oh%w2*qi%0Hv*vX{-TRE#al{4Hji}r+Iy2T@Y6`D1# zkwhH_raS)Z3Ep&T-+Udc(P4w{!d{3qR2bRU7v-z#u#_;>^g4O040&$(c;PbQ28cSe zs?v+SmsrsItk_m!C}@i;3=#USeQG=WIv^FYn{wq7;cg=sw`IZBkkyLWtfwTKR8()d z6XJ9xwz<9XQ0fOA^&8DTw@q>$~)kz&6pZHHNHek_aO07 zLod+ef{QjazGWM#5VyQC)tr2?o8WNiJ7K37y-|VVC12`0#9)VKy^sO~rV63|Ecic^OQ%i5tCyA;CVe)%GWgCVg=T%hJwlC4yRDg3Zdw9>y zEh_+wjYLWM4kT32sul$?;$0zyTUoIzWNkgko1e~H5h^5Tv6of?&Rc_Pm2MF4=8O#| zPh)d8(*!>~vsE*(_G4Gd&}uG@(%B2!?PrH!3I`OQ+P23%CpkZ`wYUD66rK}LhJpz=mdd;Nss+TSr)L;NFxBc8%2u_foUc zE9Cd`tv$Z2j3Fg!nz7$~4K zv0>T&mBd|TS-=p_n$^0y(WLuq=T=02T zX7OE9#ibAMYY;WL9f5NyKyAAfoJ^ZPmWxUy-Pny zir5Xjd~RE;6O*ih;%=*=gL6+ViVSkGt@XRs$g&HtI-Q=wT5*_8fA9nRd1)F0E_{K6 zvzN7+6pkfdiytlKh)R1jCu+TH{3~ix_x|vH11}9w&m52#^J6th<5d~hA@ic(z~vA{ zuZ-B}g?0_%b>(v4S~cnNwsBj7dXCyxB2DeE#cdP6(4D@(J|ta(jr+VCP%oJQ&liAE zMY*#_zg8T3!;mTTPsgB_Y?VuC>2qfRHCJ8{FSpfr z6S1G*TI6E&4_z6@cc4Kf3g+e}zL+zjEv z;Rn0W8oHVpQo(wKp%3SQ)*7kLL~+Gj)ieNzgo-RUCH6jv+Wr9h$9fHUnQwrOg#D!e zd^SFx^}QW<-dU@~Q`t7*`1uRl0u5*NA_S&-fJ;`n&X~(b0hR5o9m?f-?YQ_Dsw!GoFI>P$V4Q6M1tkta>!!w^HiyacT8==hkx zuwyjo!CYAQYAiAY3l!E^EdR!=Jegda*56k2%c-phom>iO+`nCTP-SzhvnepEq4nE@ z_~!Ggf{g0{#O z<$p!tHd?Bt*cQ4tR=w~Ec`9fWUovd1`ks`P&9{`T~#lEFEbQEg^7Zr2ICN$Hsh z$Q=hDNcTU=-!RF}uA?hW>#uXfM<1xRHb3sve}uTO~OuU zHjO@M^3>EIu3+Y9F4`?}?*{H0ksVLof*e&OX3LId{i}=TSjc`~4oK9yV`h~P4)`0q zFqf%cH*dz^cZ`-8@MCir6I-gOECwYSzJS~44d7&}R_Ebl5_9<$voGn}L}xW4Q=YZ5 zs$}>jtbBA?2y+?z12qahwz@HOs?mh1tvi0bULq5|jJ2_w`XLJ|KL$d7F!cIIM!^I4 z3vB{LYTeUF$=ohTXI4PMS~2Y|B?Ts5tYZB$l^%NJ6TAXs zCgcIEb07Dif`}OyMBv2OG$zMywXu^fsCnmoH~Vu>}_2ZpBL~KJ-yhj4A9|X#e}aKnAedGMXv5UAuZpBR;a9T zUW(X}g9HmK*u$MG!jQs2U3LP(BhOd~l`>^!Dhz)SHzl0IEiYKhgluF@yS^Rau8IR0 zvcISjTx`oC$%3VnudH;*8k?n3vcyMx*;!#bX0JdLHOOEvA6gJG-N%#g6<4aKh8pLW z%xUn9{?z;;&_HC^8O|47Ep^%VKL@}`rFiV~&MpS$^<-g#E=tWR7W>52AFjLqc-uXL z`mDN)M0_66*qt=LgS{?njMP<3ZeRm=8hy&K7s7m22$31UgZQyp_m;JV}M@m)m3tq_bv`x!i<1Z#(xK zk}4M2Rf|x8x!Rzx^lMXj6C3Fwi4Cf)-D&%=AG|f|=KcbrbTj?=HUpjS7W|%XI zoF}F2W`EiY%WyAN0xP$9*ZU&SYCrxsf0}Brp7hnU7PDD1&oisM5!~f3<(?sMpwWC)sPg89tfTI0sI4mwV#6m;H%8nCiJgq<-T>GYHRpz~;&+s9}v zzIN@;^qUqlEXGE2XcnNNfb8>Cr+yJ3@W1YHk6@9!0r zlV*PRa-?at^Uvg>Pw_eplQct74bBvkk&rZ+j656ju~*2D+yvQt zO`b0@OT?Aa^YSuWK?SoynX@*4?0-=_E>%q5YGS6C$#z9Za7qWLvom9)8~NRwo^q?s z(5fjbIf`qWdP$mZ|E*1WYpUaPM-hAsKM$vScpTnTWDgx!V$IrmSb+k=JL6bh7NVnk z*C@kqUW!528YxPW`fyi4YB1vVz;fy2l+O0tko&%ZjD0$?X*JnK2VSKFsY_A zna)DbpXURcTHkQs76K{*+Blo)N}4hLw6~Ng4n(378HG&mnF=BZ99^lcoaH_L*3ah< z4wwjFLi(TqYdkNm7c*?=wP-JM_PPs>lpU=CFB_WppPOY$h>iY9(HMPWSM0%0v#evt zmNl+T6Vpg>+@|gZcxYGzMY+5#h-85U<9_vjH>os;Y~J*XmbRKNl? z|5I*S_te(bJ*pw?y|9aHppPF-RxC?^eV8}UnSXksbyu-8#m2%uljH{Le}1;_k^bk0 ze@Qd9Bbz|ps_86G$Dgy<$d#k~D=jL8_W4V4!WnnCOaiwdfPaajpsSZi)^rvwQsxKp z^%OR(vx^Id*Ks(&_2f1JOjJ_7$3TfpZ8eT1Qx+VoZ13P%LqvW!(vAkI_MzIkQO&|< zrAmAqpE9Bg_K#L|DxruPuQ=G@xhXw=+FCSz)uR!s2Ofo}Mq<$3%#UY2ydeK3DnFn6 zZjUq#q;m_rj)PVH8vlFLoYMasH;DB+xd2$*6`h2 z%+D|U;3#XXSv1_*_EHTE!TAqPArl_@qtI;dkIG9`khlYtk_LN6`;M+xK%l*2N^d|sN+Qu*f49;3bdqhZhTrY5x^ZQ`&`8>f zfMS*`J|^kB`V(^9tgVOf{{=)jhkwO4S|%YHZKC5fy_8Oa0~yyrTlyC0u0oXc^Ch?X z`MZBM%-)3bTU~!{OAJZ8SPx`Hw(AFF0P3|YDZsOSpUUaM2}M$^xPwjdspf1uhjCtu zPR=*8&BB~U3oEbbtR&A{KA2?-G0|=hQGHefYxg8EjLF;ow>7XrA)4~;r6SGC#+6^) zwjghDzMb*LOY~Y*y!P>tR}GW{u66XlSsR zLb_xiWL}G>@eFk<+7;PvBmfUgqpW$Bk?Dfc3cDKIuN4(yJ)S0^v%%)WL9S z{l{*n^p<6`AaD04tk{PN`VyX98b z%OevyI=Y88{trE}Lr|*0TGW37E*JiV|2yB(;;W#O+~5+}HA~t=S=+F&khyRv1Ef{? z68>Z9(DZ+iUq0O4PB4TUrrg>2uCoc&)|_RGQXE-yi+wszRn2r<)gk?n>Mg4$=jA=$ z0I9$nu@MPrjV>je4uZTsyaCf~mJU$-@cCzCw*2<{2gIb82KoCFQ`QuuzW}iwP=33}u4>AZiwy=|HM?!+^@1sJE;AFR;)pqiM&Zq(RSB&f@?ym3 zZa(eRK)*#mQysq^-cqs=1@>Q^qHK}ojmF7@t6a7XdW>2@bqBD+Q0j$psBk^tpt2gD ziPN{C0rDC&h|t>uJLe}y5Frno*F_9PPTe<6@Z3rM_0}J{1)(=xZ_1n{9}Cr}2ALNB z_LvB1JXpNTSdPG7^(v9e!kq7tP~e)Y`0VL76u{qfd2+LRU%Om3KD!$zc>yt^t{|0! zm>4}lv6-GlQBi4Zqw_2xB*#fr(Ox&RL#O( zU?!Qdu<>|5N*Qg-ze$bS`gTU{)w(SQ3|uPClB3LDS`_AyiBn&4ry8Jd_QXx)S+$@wYrc4{4G%kOwOEEJVQd)IKdRb=1_ZH zI1y$FWT?^E!ObNg!0Bjsw@j_cL%6!K({yp$BzqkxU9G9_HpQpPyUxA{G~}{s=v^NvPhH4Hsj+>yc)h&AaIsT4mS$S6xF%z?a3xN% zcs~S$_H;(+I=bV7E|x#jbLd3egnbdKF-6R8Iyis!n{A(x7@cvE)aRNS_;M{Xp?+Xr z;1(98u}PH_JMFrm6;ocULRTI?v(VMvDN!!CpYgGS7E|8)C3QiqdQPM|?8Qlr@`OiI zpj=gSY9J9Bnoub!z{;DKFim<$&&VIUDM%IYgSEWUZiY0Ll^te;i>%zOEA4(08J(TI zI-SyUWWOtz*#9s$JNr?WpPyf^-X&qGXU73_*m0Fa1aCk1R0zIJsAku-)2PZxk8U&JAEyHFeAK2)Zjp0=4XP_bw5^oKUo*O+a}jbrn}Hu zs0Zu^?tPb(q*cU_;cL~}dG{w18LWkHq~zSf@xqfVpnzqi^JME!@Pt}ZkbDs{xygxq zq1K&4o9vTK$GctY@9a30ieaa8CQ1MomWiC*tE8$93TI2cyV)iJU_RX z;w7~k%-*ylqNJxc7*v`#?uL@M78|4p0lWnDJ&ng|yo9O1q7dfI+q` zR@5l%Vh4GwcHz?DXa*2AFSW1?xlPLmYZta9QyiQ4Hlztoh2u4D*c#FST%~S0<~PgLkyqg{^sG2WDK8v>Uc-6P8ONcHp-kX`kj^Gefa}7sEgFp$UtX()OKNeHHp`R^h3t zO3sraQ0`kkiVRQIk){XdfJ&RL3A3`LeLE{pa&eZ@@e6)+yXtT>QALgz$UG=}-x<58 zpooYX$iK+DPmW$b(HIip{7Vt4)8rW+Tst4BTreS)_NU-P7w!P8=cGVjTqeEz2v0iv zz*>*}Uzh}S0h>?n9+*RN21IV%3P)Je)opxK3T3{^cy3)#?oTVVI#i`xFocC7=k@_# zBIptlGT5sf1Owkf(>p_H)ruFFUS)4fjMFTPPeVUMMU84|ZIVc?W+|SzH7G`_Aw@y$T^bQy7sVfteoeM# zorU1xu6-5e#QC=s^VTk1RKI6z8Z4?Bzv#Yd&iM41Q5(1iCt#TNt(--4^Kwf5yy-3; z=eRyxXe5jY^szeAOSR$qUkFeHKw|E*&eC%&CAUV^>}Q8ZTj|+j;&XVY^hi7cyceO! z1I>2ASW*lRBfl)_0ge+8x!;*lh~23YmKYhfE{Dr%1Pu|^6DS1Uew|CKcKwg-0^nR+ zBx!KY5b7anK6~o>vpGA!2kYRJMfA2G;=FivdfZqq|H`shyV2oY)!T~#gsrB?KIJh& zo(i0C)Xg+CS$`#psBOxq@@JrxuJQg=^rCaEUhdA~BKq-2y_J;F+#CMz0R$T2| zxtvQit96Wh{8uX5h4)YP*RjNYATCH14wL#a-}IHI=sJJwFjhXce@3EdCcNEvyZSpm zMO5kFEgDToUT{J}R=PJHCx$I9)Td@YgTFBFL-}OFLOk(CJG;vRHKaFu=P?UeUHtM7 z6>(b%y+P}zWD2d(NpiS~=_|sbjSNvEc~YP9Cr%o5Np0crGb^Kj9?lMcl0L>y zPRL#Rbqtv?Kx`xWg|9I5L(?F1A+{XWyZFkZHn|K@%Wm&SHVUvmyc8}_zME(@s>CY! zA)6mSF$XvZ&0zWO`5i2K9UsuhpZcU8mu6pw4QLl4-A3$lXRcL;Dknike|n6yNg)s9 zsNkZ*x*iIFs&O65WA>J2e1#IS5!uE;K{8&FqFP2 za5r|4vARM+4uap^UVkOQ7rDKx5*^UF|J7nRKV%0TC+T^go!bPtwhJ{LH9Aofh4jUk z1&jfV@Dhr>32Nrubu|wdqbS!hW<;TxH|LnmJNaU3OoiKDy0(0mqRz`^O=i+vr#<0v zo`&PN~824k0dx$ zb~`@8VS;uV|97~EcD8>2Ky15pqna~0N;EBZ3c2glWEEkQ&t!`LloN)RC zpVRJ48(5wvQ15v)^v5IhF(+D)^3lD&okZFx>2&o9xvczbWgV#d!T$p}I^=&SIZise zaa$^9BHL@Ty{Bu$2J!E*haK;tYkP3`KfC_{LX)js^xKTO2DO70?<@vXdjA@)cr=^o zaWD7g5KNU+-koik72J&q&8Y9Kb8%l`es$99*e#>h#jHvBWDDKdT@uzi_qZ<|J9@G& zGIJV%zsfpoH@!%vrrUWOn&) zaXi;>x!9ETuF~9gy!b*`5MO)>#Sq=?B!7^0%JQ+iu;rcG6x&Ex(a2{>-ss`!jfpi- z$@ovq>5!p9HYv%?ylJEf3QsRcK^|1l=#JuAfJT(;J*F`lB1#32LCUahW{YbmL3TB|L1oN z!cc|xj|hPSMzYV-8-H0T43A?}NA~wL8Bq(3LJZvJ#?tQGR_4g9on@qmR`08CYBs=S zReyC?QcWYlKI7h4&ihtJ9ovMF@)Pk^;!M-)-l-tgY7^UX3Y1b*%8Mg8bG_riIb9{# zyySSzeay42-uvXpKatl%rrSYA&(P)e3!XR<*xmvj?RUy!w~H;`Obu#&%wUC+tr&O} z)$=CT%jgg{3vtvGAs|Zo=-ZEorvq=qoRB^67$ty*O%Wg!!sO9R^?0vwvUq00hzt6Z5BSB^zKqlt|{Ioa_nUt8O|NpS}KNf z%i{Ch2s~k1E6B9}{CJ^byYsD!YrvccYs-H#PuCOSt4xMlq}7YQf*I}134OBi$%7zm zHQnZ8{r(rr-YLql9T-S}dp3H9E@R(ZsQGp0U+}SrnT?ZSg2Fp%R^xfPn@uuHGbrbS z;e5yCwBLg{7frSe9pzdWOjO_(~?nSyRo|sk=&&1y+zJT;Gnz$!-PLn7b|%Gt(b$me;*6ZeWA!(}3$`&zpewf-v5S*&u}MOBQ93{*XgR>mrO|Z+%$Y zq&Fh-R(fU3FR1i`M!#BJg0tb@cvRx91|F?mLKt%hz4S-IOw(Y2LfaTOWldH#Pv zPJ%;g5?o!*pi#tn4V$N`ZX#aOMmS}g8wP!1p&G6g#3MYP$uVZN?tG4iHNGIRP)~mQ zV!U2B#Y5n2R&5|s-3dq=WXGUn>3;!SKAFPt3u>Z^r}n5TLOT5lF0wKt66LRB7~mtZ zMU?g$@zwMrld6K#jY6G6?uUD#(I90%5G>nm9`0W9Aq>qfd(Q8J(v|?9=s(+6H2GFs zbXBXBRp90DN89UIcPvml4-0o0q$^H6bSRF@Nl7I7kWo|`7eKxq+JiRGarF}FROA>v zdg;tv3%d1UALU%QBe`G~62-+z0y`if(yY$ae0xGqTBXd`ostJ@BBspMancy;QuvtB zPkt`14r)!jILlFHEy;^Oj5QlPB>(yJZ#X9L1N7nQpYoqi9@7+umI-a%5G(D(60b{L z5)432k$M1K^QBY6*1(5D$Nc^34#@2`kpnK~{|Owm)}_SeJnS)YQc5wybZoa@bY;9L znG~KYFsp6tEmAZ;p8fv<9Mz0VXkp~+JM(9T2mxorDwIcj^hdZxKhuK)SF=~CiC>4h zykVddC+Pb~i}C*lIHGu}l|n=XulKJ$#++*q?w!)qseO=F@gC~OW5@I%!nnlyob;q1tixS)21EGM z1b(xxg_=Z)v?p`mpIU^YvGW%^5CEtAlqs3dv$|nhG(aT20o`>?E3Qs3Lt|%$yClQ? z33Ngny%xu4=Kt#KEQ8|c+I5YD1dTv|009yR!6CRqf(8#B7~I_lhXz7$4er5%`{3^G zZo$I>!}v#$GkhNID3^Y5nnt9swV7Fe8EB<`UM z*@kx#1A@&v6eC_eS$A)!Xl$LoOkV6qn_z`o*}tM{5TS5LuF8Aj$k_VY=3&i;o(p1I zpZjkoC$GlJskfar|A0Wizmq_GP8!7E2LI9aJ7E}7lWy&7?&7C(l>t;0Ny0b)52W z`+moKf4iT&knUmqGJ{&6{2-dT3bjz>pkI0xkU+bD#OC}9F4TqdpK&2lVE3)v`^;E} zFXP^?_f_D|)Sk!W&QGNzwcws6C#V>yOT`nEB+%GB?4i1772^Dcdt!+a8Rj$0w?l=~ z98Vx_h!@pAXd%k~qJ@Be$A!2Mn`QrhxX|ZpE&BgR3kCjz7W(!dXdwU_i>Rph?tQdz z(afFzY)arlRoTi__=qPb9+JZ%jh)MUqGj4P^r~`pjz;JU_qE%}ML;yK`)4Cj_DMQ* ziKs~dx6-BJN0n8PIuQHjPA6K=Iwd#fC#xsO3iQ0pWoqdIgGE%2^_~e%FS2)H!9|D* zP);fZ)s0zh;+{QbCvyc{jfbf+c88xn!D{}Jb@1@QK7Daw(+WmWH;hIz;pK>)+;#|9 zp?WZny~nzZPad(UEF3QKlqgu~m+X=qMfVzhL=N#vmQDxf4aju~}`^ z`QCh=?CBmK=%#__J0Uin)gJL5tmhw8PwXT#NrVKL&Pk!1ZqpO26?utRw6%(RAibTZ zOx4-dmsADsuMrAuNK9+03RE7P+0A1YU2UfUrE}L`t|g)N^2JBnrT3*O|2N1?hw{w{Qq{UHo=!-Rq{p6-##qNey#3 zSJ?q)t>mZ-;bNle+dwcGW<_uu0Tn=14QrNu!C3W<>&=zsQwsmvd}5JA%Tba*9DXy^ zC0kw|#+HJNoST>k~_$al^-u}X|2F$8#m3o$524m*029UB(yaR;ZtUb;+kj&zC8}GCt;tF(Dx|<%Ejx=#9 zCO+u`-D{tmKhYdrO62Ww6~6F(65;%AF1BdUweXCYBq_cB-6~zjMP#pjGY6jb=jA=~ z(NDdbEAN<^A!lqa8MSM9v{C?ubz8Ug9Y@#?t^WdffZv9fe~>%~#S3PJsDPRmw3Bqw zo};5vXjp1*Y07(mcquy5O+M`{JmTBHs=$|{*M2JJ7&VqkUWhkhalW&1K|{67psD#c zkLfsU8!tyPZ1YRL)5DoMrx9PyK=ayY6w+<+gx3r~2r7`%E8hk<)l>>%EEtrnC$Pk+^kYu6mRh&G2@Vo^lnr>q{fI}=EgIsvU(c6@nhh= zSuPECe<)#%KmX*~?3{kHfg11_SKm7f=;;Ok_)2??a=P~2Rh`|%A=Eq=o$>z};9>cW zF<_Kf^7xM*W=`pEKaBb!y|676N5-)F0b!x)g{X3MQqHgDL?v~QVqsL>qibFbN6oN) zfYjFFZ-B?@Ym$@T3OFrotjeK0cCG)r7QQSi_foX+=2xnrPP#X(p5hV?qrd$y9O4kc zE|aTO5D4`Jx8?90Y;lG9l7d=gcCpCN|XHt-6P3m(t%Iy_iv5hf|qsM}1Z-e;@#zRI1DpYLlJ!SYe&m`D1sA zJFhQ%Gcx}dM+{!XBUB_Lfp^EKWs_~12|7yC;IX&#LTXv;WloUV0D0f+bT55}Zjq{$ z?VdZ&)axZb&wP1+M+TZ|Q+mI?A18l*HIZB>p3dATmG<&J=4aXpDD=M@V%%p-ikO+= zNq7f2jZC8){d?R*WWUIZTUBaE_TTKwG5EhT)1cwVp1=AoQbkSm{Er~Ux@!6V2J|!} z17`n1^oWFfv#mRdL$#1H9pwqzI=-bdO8*A?d6GrK$jZ7VH=@iz)092GRb>g1wIX@e zAQf=5x8U=(_>G5842*%dVyNq2#?=2}@vU2#g}2Sv^5ST2MyM!u{J<4YG|9)};)Vh% z^PH5NOU~6VrP*mm?>aTjBLNkipTfN|L?FTR< zMy(e$(Vayh!+?RE;KiNYpRgY#*AqZ@Xvn zY4z#o$F*JFj!0!ALw0m6)Z&1scd&J$04 z{nf^r%Rb>fj3@phDl!9db37Oo`JM7VH83IzkZ+7pl0Iz%4D$njpd2?ok$SaTV+5A- zEje9Xf1gq*-Uv~^ZGWLMFm+a2E7*BOq|5S-AWd79DoBzq9AkzLi$pGW?_>NGDl(0L z6gC3DGrqEgdCNVq$9d=c_=7g+OwzrlW`jV&+P*{)!Y~+qADJ3o$o`7*twJxM^i(y~ zj+vQ?@V(~(f4uesWTNN97KlU#ElZ&o_sEKZ3|r_h+9g(e$OGhefW67vNgT~z#rVSu z*3`LXIm3uA6Fc6AYyXX*)~VSvlcieYqd!H=uxGg5Q#b)4(_2pQ9)D;Fi4;|mi2dVt z#tgS>?a!km6EW@wH<;y937>8A!PPE7vhq)xA^9td@LvaULMLPP$GiG6sr%V=#JjFr z^%m=ES9*5GfZuG)tlAY7ZHm4CGsBd78m(;d`ATYU0IQJ(^cVRaadJ$pQ=eeg_O|== z!*`O;HsOzdHICA8v2bygIn6aUwT0B|<8K?2N^2y~jt=)0?KRe*nKKKK$e|_R^18T3 z-u~KDC)U?Bt+pI^>)f30QHo^wuPjU!@P~yFQQU}|-Spajq@)$VE`+LwSlvG%-ZI?i zWR|xyqkgFL65i3Sb#=+9iWQE00pi- z$Kt#1M0(htHtYWV>GDw8rHr~q!XTf?;1T_+>-jrro=(CV2v#8i~Y^`Ro zom8*Ug;PR-0>$6*m4CQb5VVFxJhKibE9>u4*hQ?nS2-QO%SP8xA;F#9Qd~5Ly_kdg zR`|xTQ+X=BIb!<{alESty;a>t>IkGxBY&9}8YUa+$q@iZ_bp~+HXSkGTy~XnNNN{W zB;6dCZ8#k2zTy=5ebp}<1W)qQtE+$4V!=_%{Vqh3{mx?oluSs4&7^8S zW!Q2zf7VDlswSKNmEYD~9>Y-Ko_k9E4?s|b?tn;q?X-WFp5VoV;p_`GF5sRjE_311 z6i}WDN+TP?r`$q1hinBD^EKamq_Ue!XfzAz+h=+KIqJo{z%dbTeLLiddNwCOn^VI= z9~?o!AGcrHu)w3Nziv$VEk3QF(JXFudK_=6bGC2ac}uSJL8Cr%oivDQQ3Z9c1eojY z$XI4E34-q)E!eRq4Tk==tUT z>rq0=w71jBgvwR*4Bs5V>&Jji&iw4>*~DP8sQvLN$c7X8pl0Jx?^1igE>wd9msN3b z`L@jbYw)*0t?O}3Y2-Ssf?TL7$5^Be`H)QIbFS2RPs9A7Ym^cN*!u*mDc*ICp}3O_ zRGy*uyU%GPI;%2y(Q@!u#|4rM8^r~=DHs}=MVrSZu4OeUesz(AHvdq+?cUL+)u^+) zkIGcDBnV4^|E|q1>WC|%C6sHna2bRwOeTl7qvg_nTai>}vARWPy7V~F@;{IeUzg{D zZ?>rQHc`EUuuy8Q?E_|=ZixdOd+eaflFivXfwDCZr#(zHzUI|k{wFI5jVGyHF?S7! zeBMy(O^TI(a|-Xvy1ffkrMkAoFXK}9q%H&gy9a2_0T_Ft<`F z-SYvUpiU)oLrx*c(%5N#&=ik^1Oo(DAWcGDB0$)2>g^)0>kw)jFg@pQFHU4wHj+$4 z{Ksqh4;a@6{Q8y(s1XokQ?k zZ93{Nhy81xclC#y1MivVz`2K?%Cg;n(E)l~I>wIWtDe3l>BRn+S@^v1z~Te;W1zC9 zFz>5T3KO5hFL@BFw`Ew#i)`x6w6yGowis~p#K=J*Dq?g~4p6ZIWC+N?5ujHr#b$a6>3HxZoxWv3+$pV##%A4M7DL z2Rz_iyV4S(r?WlVFvn+##=9#5_dCr#{dTu6gr5{z`A*zBy=Ak`ucZa7I!M&NXsR&1 zb4WJGEb%CMNL04n10LZeiWet+=Uer-e3sTU+FIS6QCE443t`@?>VE$&G>N zwD8zXm`j7T1LYY2MSoJ44y72_vd(MuW?GnvG_rGne(K7!)L5{miIm_VIz(ab@!3R) z=BVrpEJ;O~i}nSJmNUS=7{CY8Guo|xTmHl13tnKYJh)h0OzT6AFDGP!d0w|#$f4dO zhm8VJTzgLUrfSuIr1DGL|6sA6TW%rbs7NG|vfm{#=~t+3re^A8;DsYL-Di$Qh38X^ zSLFyHPxrLu%veO7RgKmM`sv~3W5z3dAdq1xmnDiE@j^&U7|pIeRz@qwu6#B{+G6w( zY+x4MKWo&bc$4q3WaJrKJRpYFLHbGcbS3q)571=pcTqUpbr`Bu%S4m5I=A^zs8m)t z+kZi)zMiuSPnCJl*~u5m?pk6+ymuK>%$KHG0MR7J-|MUiINJQU_V*GMP)=#^GEk~k zn_pGbajyyAU@CJ3pP{fZaWQ>1Pj`aoHZG*A&N_%BF@Sg(`7)XnhUQsGSG=~&xk#+r zMK=f(M?zY1%Q>WJ;6 zWin5MeB;=S<${M0P^Sn03$^o#?c|M>-KC90&5n`uUmqn^wRQ`^H!!UcQcMy7Qolf~+b*O%dvp4ru3vav*29vbaMZl!ir!u+quy{)z!_sD>%$VL7 z5JVtsL&tS#N7=9+CUwJjzV7}c&;6mlOMO7>j7kk_Txm;YsyrTWz&K&7!WGq4LPwZT z$M8<@n^Qr>lvq2nx{7Dp+*=>Gxz%0M)dISu4vw~Y#}K5`tS=Mp8oWRI;n!->jb`y|E^_0uKd; ziHS}r&-BkbTiV`Qgo$U9VW>S>bT-AS`El6K!SZPO(#$Ex{|ugkCkW3)KyC$pL2eSK zk|v0`7@u#?E1X~Ru@=?w^YVVG#fw*3Y752?%Wa+!fU8+Zt?=$#Ln2-wIyaO^!b^Zc znh=!BR2n0nT0Dg|by|f6p(sd4Cc<-P`v8x6nvN4RC${QoBf2pkQOO zGciee_DQruMgKE6+Sh2%GL$bOLDcv>PMGy$s~%{Vi5-`X@TLUhFs4r;jj^CSHzycj z9Lm@Q_zuTo%LawY^5PM8H5sWuho6etb%60xOrt~xpNd7V<>Hpr=bOq02Anfhj3nH* zaP({vSFdfM{%YHj=&AX{&PhvSkZh*q8cv{Y&mxZyRHh0feUsrJIen;)Dxah>ga76s z(==p-GadR=BU`!fIW*knqmsTsW%%KHEK%$(AW&A6bifz)Fpp#M*0##9pg3%w@m|1U z`~pdhmAZ9BT&ryTa40t2$5@xf^oX6r0Iaa5v628kP+`|LM)>#Q-hLs|n&_6Zj@v+S z=KYc$Q&93VOEsz~dFay1-!QbHM!?$r=^-eM)>I5ot^jvGEaTnK)QCn&t zcCB-ict2`4ZRQ{)!JkEiAo6};J<@j~)KV@-%(yQ}(J+Nq&rND1|LNj-)sj4aNkfM> zQ#6^o(nL%D6rq{<>En-i2zZOj6C4aS%f)e~%--%u9WO3(M0hsur;L<1O--y{ka=|* zQ4kS{#$j0|MEZ`4bLEzNPpSy5cph~}Mkpq|2r&ved3+#LCUpJoi7F18aA1$uSvMH?SO?CwZT>v2Hig zL!{Ahj#Fc4pl#SXjb&VFJ^b06O@%_Y5HId3h4fEY(omhra)RQ+NQ(IvnnFEE31LIg z!Jj=)RGB0zUfidbaqV8~af3W@#<)J2G_wL#B_^-xM_eBl%ur-u5NS(&m(|qPNorzs z?+HR%uyWffcKb;Lyg>0W`Uox0cfFZ7Z^5^_Wfb<~+^wN5fid@=r;-Q3vEtm9`{}K; z3@Lsv(QF>uTvpv-m2z3pr8<--oM~}rEg}BjO<|pK+a|S2d`03~#5{nx;lYQmm@(uw zk7~e}=#+``4$bCC(L_pPblbzZrXZ6aOvWwGB0tgDF2oT4Ta)1HFi!P)#@Np8H$@IY zt;KJZ2)VeV#gH!=C~Vzpu^TD%k#&;LkBh_deJ|eV9aV)t?uP3)|Vtfmh|T)>d)fz zs36iERzUnidSd$E@Z5btGEy_kxMnxHCEz0CC59O#%|OLczBheY!NV|gb}^-xolMzX z!a#Si=NhIA<2<`?{V8Z#V1Fz>ZIbl&rfd3w5T>$RX8|Kx8OSv(X-}L@ z#A2o2(rYZwUGpF%R6dsOjT|%1Zfgptz*9|D{^GT@izY!XhQWz>OsVGqs~{Dt2!Q%) z;l0B^Sih2{YPlB9Pxn&7yH!bKj47p#a4U85X=eefG_88LK+O-;ui|f>mE)HWREWi` zy-xXzqGehsw(ukh$AU7v^u(wprzp3A%a5!Cp*e#|YwG=F?-qRU^Yse>qw(oI3Dbj- z$1~=p4jm#yO53NBEi)|zb@n^J$vHiPf~RW^)PS|?mMa=&7j4?cP6$#^Fw^!C)~)<1 z^!}hGHg^p%BPui;)?`CwWKFDg%wRe%!V>YB-ZMX?Sd zA)Ux9F=LP0QlUdB~sny^fNq2Vyengek_;88opym^8 z#qXY}@h4L$QunYnq;+cw=_d1VNn)-fOV_EFt@V*ySSGzq!6i6jbzLYvBcuRhB{G5F zBLf0ON$iGxuZIGvvC*bwB35@kt-ig!jVO{|=Use~kIIfqdpl*aX`$L2i*UpV zG%K%dT&g+;Wj=187=S>P!^Q7&Os76k-o$xO5-^shm5GrQN-$CTbNm&F_wDkvzl?&t6AKbrtxPpv9UZ?tjiIM+mfg;3XC z2>)HR-67UhF#sEhi5a0e+ZK({6wnK;>2MV&7ZcJ~E$!BJSd=)>UR--*tt~I3Ii4EY zS;iSKb2{lz@H?3S-GC zm9rSk$bIuH9+xrxa{fn!zQL6|EwNC4_?eT=OP5CL*?6`75pkQJ=}40rQ8j!wDCLfc zQ`>7s-Ls;i(BsF1Q`MZR#$C5m$uexYyayD3`}PTC!g)U?iL65VbZGGO0Ah(q;)}~P z3X$GUz*bFP%aw^C9Da^(2VyOD7+0xFN591;I4 z@kzZ^0~OFqC-ag#c*2hA5n>^0VfH~mOpAWtBLh|T4g=TsV3m{+clr$P7N4Zxi1-}9 zEXu-zGQvYSuXa%bzMLi?W*?QfAF24}{=IJQ-C=kora=u_cLyIgp$w?KG->wxPq?c| z@Ufyk?lCkl$nP1pr&x$_i7lJ;B6&Vst4f=J7k97HR$cT1rS*G$q@@N61RJ^%l)ns* zk5S4oIX-_>8pQC4nEA6lTUr&t{<01rHCOwhaFS)obmzlX+$QUYa3i3-*34YC8nHsE7wM{L;-nQblYLQo`|LG zDv&TotT?~o-OXgp*@G9}vZ~g^Pbpxje*9YUe5?b5etmZeMTz8Qs=>E9J{^Zz=Tjz6 zDHA1iyFj=(IweFs?L`gH=?4?QY^yA_d8}r&L|S(#FvgyjQ)-RDRw9ia7OuHh%p14L znSDhR*gEJw!}o3dQH22^wQWWe3s{4^y3gwHmcAV5le`rFuvZU_cQUrJL&SFT&W?7c zj&5d}T^47Jhrj*YXOb}!{@7km2 zP+wax`5D2^oZQ)(%`Bw$$nSJ$YF@-WxEZN?sU-1PRrktGKZTdVsZgg)73SgRGB2~D zl^j3+q*!!V=;`MaXUz=HTV|rP5)}t-cZ=`7FBTfBsLsyBZu_29A_fm%lP?#>>SXeK z$K9E|Zz(vdtL~M6<7@ZEg}RYHfb3*-1Hn+(JbsIbg#NF2xCfpePg}rr>CcLyg64WT z$ruwnUpJi;d39_4xbk+HHQdKXD2^g?qL(-)Ew$*PdErdFV9ELg3QRZaeP_ELH3NSl5{X5nm^zcf zq(VE#u@R?WsNBMcKY8hnlGWTE517)}Hm{vE3O|1?A6q zB-`}p4+GK!tIdb|oA;4XCheEhe{sA2%^j}b>|>maRbv@Aq^2Q;fDkfj^BU>}ffd+b zdx5l6m`_GsYCvhr3^t4GPeJF+@w^h+;;rS%6^L6=-Y)oTb)z!5cXGm~BCqesocl=8 z{p~hLi2j}X`KkH3q)`9;=?p-scCo{8cVx$w#uj4tO#a1`g@z8`*_gfgWu!$2xL5)w zv6Q*Z+jcGH>A2WC&WPS8L$cl+jhVTEDcO z>AyQ4nF(&D#tka{^7UXnLh}mNuold$YGskuV%iM~kBHbc`35XX(CN@CI(ms7o~RA2 zc-X?m2ezL-vq*oEz?y{QEw@NJz!-(mB?U7alid!P{f~aZ$d$z1OT5 zHv;uWvgH$(LQ>uKOQus05Uc7@GBgnL zf$BXuziHx49_>#`sh`)2$2FP zvs)88U6burHqs6vH8g)j@u|eL$O*pkf3AV_k!+*Wt_ci(^CKYY% z>A^kMO`hEd@CuHC-P%f_YeHAURVrVXACP(O7^?v_u$py+eTy2_rrF=iTbD;-Oe1V^ zPW(K1r^n>O*G0EWGO3TX^S(H5@;J$uqOw&?98vT7NzB64rr)Vg3dER|#FsUsuW3q# zjlVY!7aHkkL(`3wnmS6tYGoL(-?=#699Tm2Kxn7|%^nB@5`l=pA%a_56|g#oZG^?R z>Bo;Bqo(XLC0Z6%R-67sGi&~<%jaYrAMN3VTZIJ*2Gkg2uhmLpsoNoj;~r%z(>mg0mheFI>P8AiCy6-_TX!y> zeuIxVatbLa_8L~r?E@Mge?G=|fP#k?4Xe=v#}^{q!w-P%b}L!gu$-Jt8?O_RlA9dq z_~y&CkRUv2`_j6|TSN?XB#9#=6E=MYxXj2KK2Phdt)sV^gdab=*(V%c)j8c4ass#R z&C`&hGy8kzZpQODVtlgG zH??G0Z>Ac)n7Q2b*iXhv_c&h)yK`4uXUx5~zWvxNiKVu_32j}(Dv4Vd%TbYLAh?G) zx2!MU-K^YiNi|2mm0i=;Y4J)8=^_2Xf<2*dvwz7TJK@X>w+F}|4lbOA<_87PDZIMv zhzqjp^km(zq&GW>0nBv$xvHmkt+Q8h_sr8dS$ZcO9i?Of!cRSsy)ZQEW=vOeYr{!+ zx#uNCw8I&POOKLQX($c{3=BiK_9<9C9I0pcWZOJcRi+9kkuJ?C`r`c7jpFV%z_jm$ z(HdM38rZvZ2Kdvj)u0Vtg2Q9Uykgek;=++`e`Q64A4<^4r}5WOF2=>if*qqizER4P z+b8obL~{5LKhU)3yh;HB?r&Cl$bl5o(o0f4$VtTvq6dMk*zdTBlXIOxgiK_xvCRI- zi|mn}Q|-7fD-Q~{nMP-(dR7XryjdRGJ#*GRy7~13I5OznJSZtBiMHeFn%|viQCxau zVA__@ywnq#G{w4mrwXHJw#tS^YVA z{T;Xc_rq5bUay4r$bgi^bIz97!2d-SP%Rl^MM$LBM4f}MP_ z^7*z$=#S3Fi-=_eIc|olDnBT<_(T5KCk~ZOf2-$=G5y&OkK30HII&2Vx}fs~^7RjA z&T-d%nEj|Nn}^qDy=Esgt;1eiDsPCSCkWxwM#w857mO9%=HNyz&5%V(u37TZw3}O! zDOs@@mQ%KGE1?Yl_)uXGi#dTOchZvf(ye46ZO<4YyGpc@DxNyE`ABF~eW+Vu9AMSTGu+ zqa*#wwk}vbUl*NN%$+u^jRbY0(@L3|zc!N5g1@w<9LEI|iEJDo8Sf~IKbdXp=nd&i zX0FS7NBLA_h{=97`ck2lWm%G6pg8f|fQGHh0SWf>e`kRp;HIGGF@B+fL9;%PWWMmkGHSpv7X-*gNeJ=q7Y0cHz9*PTner?@6JHKR@O^}H?QEig~mJp%Bb@HG6`>Ky!+!R7gX57EUf;~436 zUY{QWy}fLDw|EHHf=u*Zv6q{l#JYdY#=ZFh;xis0vpy2=JRegp?jt+Un|qt(yxDS9QTG|qDgx{ zRWZ8dKgl2Aen3cT4O1fCJq^85p7A@OgUNy$3uBc;^MkQL7R$s7+l{Qm2Q{0Xk91sZ zEq4?BIIwDq$2@zw9_fo1f}|_;eN}6DKMNXIU)_8i;M{WoO0TEW6A+RQ_^Ow-+=xSR z$`r#)Y}*YM(;dYCA>GJOk4$=Hk%caB}(2l+=mtO+%(Ax2&HKMK1_% z-AA{2I-o#4w%^@9io5B!{1sAv)z=?#|ifrq?laA?Vf zZt@YS2(8pQs>l6lE zKXQzHOBns5USM5DY!R zIbv70?#KS@ZhTtG<#fOd2Ikk;(~wMe7Nhavuv$e8EiHt0a|O5-t`)TNg&W_1btW0^ zs5k!wKM8WYAm+Jw_WLupgvPubMVY|wJIF3d;Jn-VM4v#Mq6Ci^K3(`Ag77)?_S&r% zX1b*lN`tc5kE}Sjx`= z7uvGl@yW%w7u;anU~c=lgW_EKFLjS{Vx2f+j6l*8D1`HZCe}PQMwhGO5$EpecU~Qd z&HEK|P(QI@fL4Xms5FIT%0Xzw<+I9#wx~q3hIJK+(*4Cvs)bYZEiXf-X@5}=db>g z@J2h;91(VMR}Kqkx?4%YvzMLFDqrsN%ni)n*1ifxysPz-ioVf0u49v+Lv+TmUUI0Eg7L@n8XM1$0U?~_b$xnENO$ zcXdIsc|OWK5ctl1!LX1%zQ)G-ZV$6AK$H`UVF#*|qt(L@-0zFkX&-JSWMwfo-Pqge zCpGrX3Q+$_o?B8wom2iABPSm0bPy(Ft)j!7rbwres&N_7E^?O%%}yYlr`($-${)2vtv$bsg&&QU5jT*bM>L$V_9+rgSE)- z3O8(mq|xvnO@H0nDz(V2ty9wGZrmWQ@jf)erg8SlT3H;+-mH>H#pQnEB9_{n`_-| zNOr0@iA#v!j%sc;X_q(rNVfVMNM#@PSd&LH(n-HeXljr3Ms!UTH{9V23%W&&jzfMR zhT_;fx15?@Ci=Mf6MUh*>*t{O5KMo*??t~__;#Z2YqevJGJno& zA2YrX!-|{VTlu7xr)yFkd!SO$Ej@F?mxvx1^kb-TZoph@pf3=@Pp-%Mb-TYro;lFl=tp5!V}2j#9W zjA-r~cgQ9LF8ZngpQ3EnD6M%;G4HG9==-jiMBnVtNX`W(31SwNm?{oI7rb4)uZX@E z=Rp4fW-tQc#=tba%{3vT9Jf2ft~$q0sKg{p$Cb@v=M~BB`)GpM%e-{Wwjs|RqgjX} z*vwMltNvFAMK^A@Q`c_Dr6h~AR_Mv&r_}dq+sE{6M)~`9k@Z-Z(`JoF-xve-rfOtj za1+B#c0p6b8WcMRxHjSl_eZL5#%uFfjiC`F5hQDJX<*VkPUZPNdVk4}A|>3Ye0cEB zF#0_zc1BKuXDUis^cE|2!e4>nvA{`UL>T%7=X@t4U8BA1pbv*vl2*RnIam6);vdh? z-w1?V6bB-9R11smd1c4))^25(aW|fuB^JXcg9v=Fb$eP(KV!~ZosM3tQFqc%Qo#fu z{Ou{*BrEBKD!{_nwCm}MlbwiUd5?{LYMtEFYqM`>cw2aV0#p@_`stRbx*R^ zK{Uk4&tuAms!Gr$Lm29~3w~IP50lAC<|g5|p_cnl4;AcU;-V5-EZ8K=gV6y-L<=@d za1U2DZF#x6#B?4Sg};91+stsI4;Ysd#O7Yy8mv>(-RE)lX`3TNwiafG(ik-R`4QR! zF*evMg$W+y%WqzK;V?*KeG1XMt=W?bb?fpkk<+MTt^e3&mHD4og(IN=WVbe}rwNQ9 z3pIe*V;B({4u0q80{iN5D7EK;x^q z&G?o}+f&1%;k{i$vyPyl^pZCt`&uWn+Y7^2d**5a0$vBJCYo-(u&`1&t(GC2P#+latg8RdTGVw9D-yQ9w`|dmMgXcoCpxnvPt(G zx)qwksYHbW;nhnVnOhx-82<91XM?WKD|vkSBxHMPYqbZLhNyN6$G`Tx@QAx_DWA zuT1Ag;MY42fc%sFbxv~JGb5gQzy8Tg{zH2VKJDcb($s3PnZGx#O3f9Wv!EzxDbvn- zfw~xH0|nN$jPq%9FU22K!L)5b|IQy&z1xq42ak)ke21S^!MmG+{_Y8Wgq&bi%ni!m zbh3xm<6!C>8_3aK(#>AFE1sv>D=E;Khp@qH1FIQHv> z7v}t^%y@*A27L$s=`GU*@esAH`fp}ydWReF~8ZGbRU-2NneBi^Og&Y5#2bmG54C{RB0sp2xAN_1`7T=te z0r3tpB6|e2-WeX8JNG)4DbX(O69kQ&_D?2T4=%W6{PNW>6pE(b#gZ}Bz>J6|&@|P0 zwPT9I6#04HTt`cFV@y;I$@}pI^B?dM-OT7Q9KOFi#d~Q_($I9A;#sHdXKF%~9m7zj?%TUwS zLt-u8>V*^_*l&*uKFl33-AZV*y^X8T{Svv~1Vf zYwnvT2ZA?oWh-8l)^l99?(?tC4U1~y?ot#uLVSXpK_F@0BhJw zbm6lG(@`~Ta6}kKxZ6^n-y}ZiQd5I>(QI=4yuFJF=Y~lZ*Bd{-CjET6rBqL!&(otYp=#CIQ+i>dSxirtL|E4PA5J55H#u%FZG*vqSO_krVa{jbGnHWYCc&o`W+ImbG>6t9BKt>u@^ z8!3W?`o`z~p;F>>v>1z8qMnQ+iFdU0Bwj-FL;qc|{2v|MLL-ri3izIu9lJOi0R4Nt z)pMFr{aZs9=ZqZXD+!PhZln7nC5(&!j?mdjTsuyS2Hhlt+?WcB)5<0+NG90h>RpY?*IWozCaY?LOwLX|+?ia%z;M2k z)+GznIqeq<%v$j~w9%J7Vgrc)Qa2={vt2`5F6~ELw*~Pg*#V5wf^Yf+-MICPJeo9g z%?(=I)XL6}D_51hX~$C3;-m0Z$s{=Zo-HuQhl2FSx8r1eO>|aXmdw}l*&n%Qn#oD) zEa4h!#y=${t(ygb89J;!p0GXjNxUd=e$(^Bu!l+RC*4+PK4M8PYyIUdAgrN(|1J73 z%y$+%#k@Z_zn1MVF1NcrQ@DOn>UmUKK9oY$wxE?T?ic9?X1=x({3#B5*fxoOvs}a2 zFX(ZqEd1%4q6kJ9qtz1RrMr=jQK?jY@7p)yGO2z3f{?dgqvL##7^aQ$fnL`?O zZ1($B9uZw8%+VJGZKAssz54CXh5a+EB`z-hK=)Nqfl7wn8&aIGx#v;-&U!iBNpPV;Mg&!?p%Jz z@q1$t3F(D8EV<`ZTQAjr-s1l2cl1Ud5F>u_$N9@5g@|Ltw>?7Uqq#?3Qbs?<*bB&RC}O?vIUbi*(B2 zWo}8sy45!$><t7qIw$!UmH0beDHwWDTQUHPv;`huAN__wQ^4 zvc>(WenFDeUqs`bsOux?z!!r7qx6Uzbqh+mEBF z;d;auCtt(-2pQ*A!-dP2yT5(3i(YI%{x+_x<`ob;1i2Ex^fdTIGui&#PmS8*%gu|1 zNSu9FBpHK#l@BNsJ8TRG|8)T0pWm$S+yi_$ENNQUCWw#7(a>n^7{t)jNqU~6SC-z4 zYuX$z^A*~G)vKjWtLxw8GbzC{UE;h!>rOZJ94U2vXUSuT>seSmL|go>yL_5ul(@hD zWfh=fG7?0d2x_L{Cvm+3MF^82kw!c<-V=%LF84u#-9jz!LHa7@%ycR4|VIP{dmBNfYOB?c9TRu&6%05~cgd^ru+`AZ{jrn7xR4|H7pD|g63{m2q8!huX!yScqnT5c2dLzcM z-)OF;G{cV9&a$`h;|&kXy>pGx(7d-IZ_(J}v5Wlks#=ASOPkHV#>altTZ>5C1Y}m1 z&D>2FvOP3?$RyhzN?sAM?KTisA_TH~{DoC5uqs z^%h(l!>(@cFyECP(QnWF2X~1E$s&1;f%Z8B@q?hfW)7|_&l^?(6Ul`=|5aLMXKP)G zmvZBEDk*-lmKb3?5%?f>UqLwY&-!j& zSh?$*DJMLhn-El?GMORpv99s*j%wsEb3qEREYMz4SJYS~d|JF-d;EcE$x%q9?vU`(e}UP=?96W>0N*XNR65pBe6^rdocZAW)O7Rlb4l3`q;?cn@~| zMag&DZ>Q09dVY8Z_KD`j~OKSwexlXP=&D zH|GSQ(`lUd@MMw;4Q(qX2EgZb*xA|qNgb2;bI?1j8vi?`?RR+w6@uLxzYZEv+m$rR zXt^aV@r%^cD?ndQ%vck7ax;5WQB$EJP$ncW$Tnmbz8GLs6)`*?H84;t;C=?pu%Fww zjsH>XKV|}O30F2{a|={|FyG>`boXGAq~|v_`5?WSzpisBjJtrNK2_W>JY~F-&5SOS zQ_8~5l2gh)yckd#PP|H-yWAEflbih-4CuYmZDZ@{1I)Y`@9SdAV&uMb3~|7Q)ZM_L zSD3<*P1?6sx$taH$3Uyl+Gs_?#2C-8WQ8KV@}Gk}XRk)b(89k|9-daQ$|=Hp3>rFg z=bTwBt>rl^$v4_*G6)Qc)>jz4SPL3*b?hBpO^MoOYrL`N@&VPu;Tif>ls5`^?07|1 zjjj}%z|$?^7R+S9H8O*%qV$u|M;ocI&Nb0>c?nEPLI?h-4~b1o9P}S3_QBG{ld)HQ z7?kIrt@pc@KW%bslV-I7CIg4;vV(YWW2!_%-zcp9rCZr&H(y&%vF&k?kY(eUa(O7e z7bKM_bi-e|KVuHAnN1`~QV`haY`z{4>7G8m27(0zCTawntyKzBi(R_}%cnUL#1P$#Mh&CwA1bZ{cDOy=cF3KQllx{=l$==CDRoeqlx{cjA z3kY6l*Hc`ianOyyBmzw%imEgCwarBl1{Xz-j=uhR>my+=zgLptZih<&bFh%jBe!ZF~Y& zJuKOcIX8n_Cbp7lYcq4Cf%_q9h9Ugo=%yA%!p|r-EY`X!KHA$dVXD8l>*_STI^{P( z%kS|lkLsN33=)Sn+%pDL=akFwMLn9h-w&nSOh@neaE*hM<@pzKMjNJ0`h@c z5#PPsb^OfqwjMi9;FO8n1y~=<^Xc4xVbkW4A0_S00!vlIvLiOIFo(zFiY;$w?$CC7 z)CJ#T&ioW~Y$RQR&A0O$JP>6B)H^yxM@riAM|XD?z-fBZ^2h!r_yNpEdGGp#hE46Dtd;2yFCKF~ro;Q0u>BmeQC zTZ8L*SWFDzBUBpw6_HH+uH&16(F=(01l^32s3wCpf0E^aBBvAif^K#`+J82Np>N|) zsAS$Aef|5^(%#-|ujJjWzWfF)>3*cOZTn%-5a_`)psflK81Hjfsi6YDefsaPgU6}w z(c6DyI~Lo1ItOrFUWf6-riA?j9?9VGf5Alij77-Wj>c`q-Agvp`{dsNe>cB?<5VHU zaqUB@gx>b!uX>|s6#nf%ZM4pD?}y|`xka9*>QfE$GYIg$`tJ?~bk-yux<@>KX*U8x z??^Q$1R=N1VVHu-dI}zK&%J*dmOX5?&^)xUd+%g8hmcFR-rRojy_B4-LKfUQF3DCX zzF3^tm+`aJT|5e_o0Nf)i$|sM%JGkN?A4~M4CDy;f?1<8JC@lO8*9R07vCo`XPa4J~;m( zQdinmZ%?&0CFs?m^QVA}sk!^#{l5x^G^LgAE?Th~mptEjYxlUU1FKy3j`GP}tE>Hy zTw>tBn>oa@3;`eO)_swQ9Lbc?2Dzzo$8`5I8I`08Fc&6y0LW*uVd4qe0Y=@~Y2D|! zmKptKf*L04-6+iRnc&}}XlT#TR4vIWjRf zHmAuGe7%dexqG`@nS5Kt>#-Ho`tlW`jyxM7qZgnyQUA-hRc)Z!XSD@C-w>;#P95%W z-)J!g`R0Z{RvN4PV$dL3;1BmcO*I7WtSA=&G*3zMN1*}jqQ9EF*WTx?o!zAk7(rSC zuD6!r*u;cfS7L2!2k#5#ZygtVv`UR=efUdk9e<>Jc3}M|EZfLPCphpdOzSyn6rY;~ zj?taz$~K>^v9NzLt|g5jT-#Wm!gpDCIH?~JSK=lw#}hd7pyKP450jRbUhR!c<1v@% zTX?ub0_(u~Iy^ju&)T(u%dqKn(okbPAe!lqMlDdL1ED5uUn)c_HcVbL&w6w z5wKHKz#Mix3%Q4i>ZRsek7X(y;8?z*HgwOfJT0Csss4G>#gt%N9oH>byb-lAIJ=%&vGTY6O3A0!{Na_TdBy&+J-Fue zny5*@uf4+;IWRvHCiK1CHBom~PKod$HL#>fxg! z8}tk@ty&`+dUXy)8{21SXar?gJ8yJ~apz^(q#Wm{jB+>;sj~HIUy|N0>zDDK3&tUei{HUaiF$s3s}YiQk>7o0~IS z)aBgF8UrIeuz@(HXexmn)QYHWY`i+#oo%cUX)kQxnVz1eprQ(sy7)yT?g)QEFeM9S zg|&?vW!!j}4>3utnc9!HKCfT}91Q^bQ<9FHyMXf}?C8ao;z8F|eS)cAYH1c=lqnRx z7EJr?&*2hDh`IqSwCQNWbz~W(WOH0~kgSV9T2b8=HvRL-+^oSm|3OROuTy!oB_M{Z z&NDn4z6_Y3GVnck;eRqTj5E)d;DUJikZx}#Mx>q~MgK1%G@2pFjr}_;7mrr^yyATt z8*VOFqrC_OJ@@9KqUxiUwISD~74KD>5fTqgaxt!Y@u9tyfm@%p9yl?`Kd>1uqtsDN zY4Fq}$_l*5E0wzar)yy7#Gg@*hFfI(2>j+g$>)?L$8g?iC=;bZq2Zhlhw#NwF}@?` zy6+3|OQZv`ePapx3JGmez#$l{o}C)cQT%EQBB3)tFT9S?D3`D{>5lG?~d)85@( zh}Ih%c#EO}pDbNKjhCd&fdB~epvMal&?jwE{t13`o|$Z8W+AS1c5jU^Y`ykyT+I;_ zBxZ`*F=~pAB95TFSUnpmPOAqFcc4hfRSfm#6_s}pD^W>KbQ>E`>Yz7^=2O$@Wgl&R zwP@)8khe8{vgqxi?l+m~Ruo~Dq&t}nC8nC}rcdxv#Sng|lCctC%lb0w(??S4$?h&~ z`x^m6C%5(cC#T1;2o%w@4A>oBt2;yhp^%ZB0!3J&s6*bnt12zYVSEC&TEu|p^7b`3 z!eY;kRh`F;Jnac5$OH^2yWV(18H$IG4>Z0|m~uzv4-qpd#}BO=ux|L)*4G2)^VSBh zttez(K6f^4Sgl&FfZV5A&bzGkE;hL2)YYAD7i4W*$NJf%_jkqH720#Qj_dHruQ~GO zdyQeoy&0svX*-=lIto`DN{(Rk%$f)CjRmc^RoU=^0EEGA^(wvV5&Z!MGog)=fDJ~;SEM~|WQ}^A*L}wRc8^6WGOw@vBcj9*XXn^DO zAp@fOdab_p^YimHS_*Sh^S70C`=3%!nxL9ew!bzrFb6;DnD=h)EVfv3?93N0_MD{+ zn-rnqf1u0cz~NOj(9M#|S#T^|F<=-i&@^Fm+Oe*7oaUW|IAmNYISw*U0^?;3T;1h{ zqC!6;@O-Uiu6OBe-meb^U{>OU%ioc1T$Fl%b6Mvc_5LR~1esEdRNJSeb9CD3&>O;$|G!&cs8=c=?dbM`Z0%7?(gYp8>JVez+-il*}D=4c< zOkzfw2C= zcJji3WP~?Ib#xXeMr9hrk8gbczF!3i93I`!ozmQx6QAGvl#_E}V>aj)H+_3lqTJuS zWF=cZ^d<8zq73ix$4Es~9Vimv z9E3`i1i!Ji-nFB?{M)>qJ)%I1TRGyw5_viHD7fQqQaals4SZBZDD&Sx{I|51jr#;4 zi5p*~1HL`~tShZKI#UZcXIg?q!R39h=jA->cD(k->K~p}YtcCcjwfCi`mc9X9zz&0eVp}Ihgi-CPJ{ag#o?D< z&v3H~u5UBffN<{tU*+*;hJd`1U0gmvtTN9GpzH3*UPe+Wt_oKvBxzS)m+T~VF*crR z4;&orzzJ{Z&Rhsn9&p;uDHl&5IX=eq6m&Dx{(itb?PzgZk)R)1e`}4*m~VGo*eZJ2 ztnb_U`~-x7Qd(#YlF>0SQDtM1a}Bb#n{!V$|bMqtZ*ed@P2@@^w`OP><4+h2v zhi(Vjay>CaZ6YD((K)}lrn8TZxg*D}kjdT@t&VP7+~0bO@{Gu`E~N3ZA7d5U_5v{A z!bs`Y6AI+B9dGCu-ixsHc)^-j*re z0M1@9h^Nb&MCU5Ewan@e=j4%a?q^9G<(=Y0>%=$f;V_A~wxt;x4Cm_ou;#SWRt4sB@)YVVWRf7<`j0rQ){ifUkUc7pu2pzo@Bho$E&SZtOXtiAg)&n%3#L-?fm< zjSYWk@D1^M#D^2o2AY!63R~JWiAS|9`IzLCkI>pB9lEhh^z20uUssB87+n)JLE5cp ziGZrK#i*xE%AB-KZF_n-DhhcF|1M=MW!!k?f3>DndaI%MQ7vJdf%DG7Nd7Yoi^@|K zR_(35C2HUa%qT5QkMnfi zOdI$|-BV@6rsGFSpFOr>p*@Ge^^)XYTY%Y0!&P?(M&ECm{-XZz?y9Kp6c)WHt#p^* zznIO&4(tF$^x>Fzbq znW(4vZgnTa#q_wRn5n*})RkTdZoSL_i#h=~(6=q9ax;6ykjpje_??EvneykNd|>&q z*W+j%(@6L@3|G0knJ>%YmW4i24FKXjH+1+s8}&e!qC1F@7M&qPX1|n9TIuT{6*}&O zkaJZ1sPDQubt%w4Q{WAQ2Y$&b10=oP6!hRezNHbcUSW{z;#*+96`~d=rZ@U?qf?Xc zZN1D0-R&DyRrn^m@l>h z=ybopYqhSCU%uyD?OPhjbh|sa+p9mTmrDW%#zX=ulBr?yUbz-T=*SUfd{$^)ZY+5s#bN#ar1)Wy0A@FC1kWoJ4`mUZ#XYbM<&8 z*#mZq{om0U9|`{04SoDrVaw#3F+)+=fY9S8DRt1|4R)72*g&QAKb2lOMDYgx`r~HQ zIDA8)tAo-R+6^|-`&1IRF#v$XsAB<5Tc3q}j#~7DObhgZ$`5sEQuR)%;o_)FY9d8( zHH$W-7Tq0iI@1p#oA+|(c8v-x5I7rrk zlIjcdPFmsnidP$Jk3zLZ@#WEjYqZZ08K(mP`~x$i$Js?j7r|@5-Lqaf+P+Y`iceru zMbkF-;2unqhZp0E5w`)|O~V2&4hgR1C)KB61z`vs`+$|-JG<@goR+#~rIgbQWK^D? zyCk~2vi{O+=sQ4}T>_a^bo^Kp(tOn{hd*LhS1p%2KH3L`CHrx>;vb5g$W7j?!(F#X z?`@~nLmxm{PkR7*2f@@=_AIz%MRraHAoTQ>TmH*^`fzlD{As*7l*3aPbMl zd^g7{;%AsqrX4g%h-v{L>oh9VLL0TVnjs4L^OUX)qtrVF_$aAq5;(&&#DUqsueZ2V z{zgJ_x!n&9HYdP2rQG#HIJi2lPVGQm)dGHwEE7pVE)Z8L(e|$6k%m#t}pb^>Q4I3I8f{to9nEEUbmoK1`CA%)9%bGar zkL)nm-6^*V)vzV(r`GWe6v@kKBcE<=bPkuEj?YdvKa(EbyJ|dMN06ncc#mN-BwB`| zx;It1`7L#k6d%hL(Z2?4essA%dFCu0_UC8uugeJF?91Ny+Vf_8z+xx0i+Z*oooS}S zRE+Er7Z+98R$%>oqcd_fk&P|Tc_n7*$vbI~n3a|FoGtMHr`vdolm6stMscs`I8j7}ULnSiX`yEky zFU27s)+(>}y%op40Udox#uf3qTJ$kqHm5>|H&yS2bIKJmk&)-KUNiLI7fOw_jUi)`s&_|OR){&NZHRM*=0nnR$VC4YUPT*I;O6F68* z+$@8ds>H@tRZVU8pgCwl0@qD4c5L0P6T<{Z<&7V}Z2dCV9%lu`w~n1UE}_zkH>_sY z^c)oh1s0XAmZ)J$1oLwL#A!~V>|&G-e49UZmLS9o9t2;eJr{`A7T^L2Kxw|WDjL;#{vj!Xr9n{ANw+*#)sP)~5!mlA&L&91NXCB<}&F z0~hB@+td=?$*81R!5WW6qk;FsPJ*xz1?B_~M?pOE_v$bX*&D`&lpKCLPWKpnvd54- z4~G>J^L~dLJ4f!?DkX=PwLdA{10G?4bJ*`39z>ox7Ez%fmf6Z(&ziX4mKXZz#;c&} zW@u9jYZe;}Yiw_z-rlb{Sbs7;!wCoyRuzm-9~7-}F;qCs<_PcZZ|~~sPqbfBGW)tx zErBkFz$-13e`c6vq@at1lt1mJ(?&H?3L`JkO3McZn5W*_FE05&;25Jbr$gBVyd@$W zFObNx_Z2|EQQTNt>pY-h*U}S#h?x&`a#U|pR0d44>gwYSm&t=7fTNl)= zpXB?JU6_EK4}GR=V7f|vKBZ|M_DEF`mxb+6F`Mk4^qPa2qzpBOi&Y5CE~n6STYWy^ z;8=iyjtVfOKb>mm+H-WIy5bKadIVf2K^}GrwO;=#H5(T3VQX%-9K-bI%ev zrs(0|pm}sz*++Y`&RLM(fX9tcCec;XQHIV=&Zzod)s;P%+E&)~$$+EZOS@^xY5D3M z%up2BXVtST0vFjYuvHDPBmbmkF2oVYuT5w4thb-Ul)x;emGv}IZgPD~Vik29~;0r4u@l22& z`0K8c8lKNM(#`t1y*1}eZyj4gR||i1naYu_%i8%28s;;7SI@U61wYpq2jm#LeH8xE z%jy~Elf@?{J0$^oJl@n(!g^)_eeYfLqrTL7B}Zrc8Dq9UkNnExyCjjUucfmPu<9mb z&m(ywpFLb4Tt_P{d35E3ZwSH?@_I4imH^YI!h}=bVzxuSG=tFa*^unKT^yHC`E^u~ zUKBpiS7ByO9op3`n*9vUBBOEvaP4Zu&7S-fmKq}K*#{V6c5~bwNDAkxy3z(i{TZq| z+BvC=To7j8;h!-AiX)H(`=FZ9yPD`)3;>L_B^R73!@lEX>$9^l`(7 zj>nksOMhQ6^ar}dR<$)4IBs$G#b--TrqEL33E+!SqBI^O3$k9glA<%$HhcP~os;86 zST+nurArdE`@dyN8qHUi;h#08mOd?&I+KB^U5BVI;}|CwkjawR!fAz7BkNb1gJO(} z9h+_&Ku%7`vNhmO!S*x$1svWQpH=-I#EoC3VNE5e1zLl;c0cKh z`(a%jh1^~$uGu~{Zph$2JAyv?6;ARKiko&!Va4i<2Hc4;ei2r9_>@Wxl4-#<)>4ZG zYS7=W)E?Jo_iT8o#i|-WH(o&<^#@_aiJn03;GYtuFHL1FS_3*4jW(Yh?ztJu6n9!D za`=)f2T=xRY%28%@9zHrNr@e61s?yKpVR&y5Zs#a&PAv}z#E=d)up;cKT)cJ#II%E z`AhTJAG7wZ=$Lm4JoxLi@!zWzt*4yp-iceTHjUF1*sbAM2Ix8h@>bt^$K?mNc9esq zY}(qt+Vv|971?drz3q#eEaoTKMqb93T=Gy^Dw)dZMy4k>-{_RMtq?D*i{;sH4#^$r zSJJ;OFrB-gbzqyP8W6XXHA=`z)mIqaylDOKmO+3hHu!cp7SqQK+Ki2jBywZP+rTN> zYfYx>?VK8tS5L12PP`KgCJg-F^72!_TuYAfCED1DV}?7FK_NS>o?Od;xbEDJKJR zG@z+`mf)KDc#?PN^#Vw`WZo4q?%e@$Vx05lBfO2O0kEyuTVc@mn)LWWL+4w3JOsYJC zfM`18@7CM4{jTW^NWe-u&s zbS`5qK$iHhuOZ|8$v%6sf4-{;?3L%ZF=|Xnb@mRBc7wzPcjoq&rF^&4)U@nL(Px;l z`~Hm9v*Gb&xeKNDN%_`Qu>UpwKVl3mfcMzxYmd&8+!wKLm@I=JE!BqRCd}36VGDmj z#ASF+9mzrqa&7`MCnFxlR2)Xn$(U4rD1`<90&!g7%9WXPi94c*__1umrU=XpjE51TS7gDh&xU?~99 z4XfM#?*PiJu*tLB|DOPgJOcMAs+suTzWMjA|_q-aI+tHpOQyYOeodnFLq(p&N~0^+Q)=zmPNH;a#Ey z?bv`4-hP891!Jun!gtu~L*L!9ZA#xp;l`z?zBZSoh3Dv!>BPq1X@7D&DO>yiHPX_P zXdVNzc_=Q*{#G(E8|u%6V!pZ}`rUs+rtxJZX4XB8yMGcli-qWew9=xG8(JmK%9rO` z)A4KlXWRbaHX)w_?u`sbu%0fIe*#~Ehi^)0mxn(G6iwFLrO3VFK)5yoZn6(|_Xm6j z$bC9mJ%3EG*C!TvWN))kUf1=SHVC*yptb7j>Gej_si0wY9!tx~0C1O0BdtJI_a3c0 zuj^M%Q(0$)^8YKw;`sS@tAhD6JvBl8d`g`hQk=yC@f!##k((vVlFGJuZC0JYqiJtJs zm_Xp4Su0Z*^Y3tx|7+kS!!(W8SU)y*^}}Q*dEA53$#6`y1CQqy7wYL4;nmqzx-kgI z_1QudA-N6eTxbzGHjnYq7;s8#Y-}c6npp?OryobdFeoTdObsfdNfn}@C>e=x3$lhG zRHGGz_uRg4#!q_n^pOQoG`>*xT%|eoztf;73-o8CNj&V2WGMckoOCP+Hw6YtpIn(Y z|AA-FOf24G#Qi>fXOud@6^;8zaF3{I~OwhC&nKgVKusM5oPp;;B z&e}-lSVM;hG+Rl_nl@-In}u>26AYwhy*fKI!@21CxRM0nu+ODxmW{U{EvCI!=%?%SqtuT}V%0 zB@$ZXE2C92HJfnr<7#>{BT076Pz^Oww9mqzW4dqMGc@>za4nY9THYN^zVj77tf=p@ z@(~vh-h?-YXw;$u_DGo{O)0LYE`p}TzzB`ZZ#~?^Faa1_}xK4m;TKM>daDc5d+`Xy%<-U!5(EC_ID~6Z< zX2Qz?Wt~CurhF2*-AAJKUnRnMqSN9iYyI~p7=Q$nT}%I%;EyUMSw1FA8wB|@6B)R7 zO+sARI*?-#L?Pg~)Uw&1k;86Zp!*!{?)U$ZTJd9%pNg7E`A(y3VAYw?YGC7J?o)2m ze#peD=^;DCD$RC*oIF?yjfpL)++q4CNnwJ8g?3+_j*Fi{MwV?~j*npNva z{JYYFZWK#If_4uHAm9=XT(Z1Bn z4l@ty(Q$}d6)ga|oD@SdbLVu=N66P){HViil3WBDNwKp6`&vC*y*&#;+>gh1E43m1 zqIEUBR`)6EzbDqLy86~DHUqChcM7mosM-XPpuBfUvVQE|eI38vY@%STz6+UmErlGq z#t$p%vzJ40+8iRMFP1l$E@7v9*;ZAmYj);~!CmBthcRGepf}FQ%?C&6a@mxT+c4!e zN=l;M3IW@c_xSJ~);%jTIqxZJ!aFu1bt4beIdm!UE|1gQq|Hd2^V-l)s4CZFs7iq@ z_I3BlR52lQgnG=dl|MhDD{0Uuh}B8OJ1tO$`euhJ*2ez|B}KKoYG{MNp9M&=<;IN7 zgK^u!w1Dra?a$$;?sjG6QBJhj%Kf_9?kBNH80;FVZS2BzUjjwGU4X%aj6fieF(fc# zc3{WV@aQVokhHP;(4^GwF0GDh$ws%e{&zgYLQCE499a?gi-L)7VOJPj5&om>cJ1uN zJA^gK0|JDfL{OCLmt!Q=Ud-8I(PoLd`i! z8~0^};U|k2c|aN4O7H31&v2+VBtp52mCEu|xm5oir)vm<-1Yv1_>ng=_UqWdRnn3| zM>TGn>qtGYc3E$Zc!O#BJT*-!~AnsvWv- zMz-CYPN_6Ed{vZ@Af4iLX70g9L`S}9@S-HEA z!Pvy$N|o=8;to8H5qpiBE1P##Z+l|WjHitPjjtMJt2S$lH@CT?3*Hc+iFV~_)yf$C zMAd6`fPl~rslJ-eOB+r9qOS`DZkv3h30Sc>It$u@4vXB{pS$t1}3DvC9qp0SP?ZoG&;z*xMHu z7dNo~<5K7XFFV@Xe;I;dHMU7y#&0fWBI#InD~P(bm4h=FXC~-lBDXefB8y9&t!{x4 z8KP(N%X-qNpFda|0&91bhibM!RW2}mA#H+(cZM#IfXTh zBVk;Upw2S@;`Py_PQ+0>)PUNJzdw3U8NZqiv8bS$LeX&EE)BDqYKu?!fdZxvKT%(K zeIe6ni*3p3mO41oKP7u5F_dILMwP`(%1zQZMoS~@W-Bj?Mte4gDhE<;|B+epc`Ns= zE~~+6MQg6?NlrI3YT2Khx04iFqHSGj5m|xPp#U3$8(}JS*X7ZzDe=XTQ`^;sbs-v} z;d)hNFNxgV7&6|x`y_i~r?$jeUEwR_c4UL}1i|w#vQ`OVLvf~erPj$4K|5~G%%&Mm zMH{gBK;l7UBCw3~?Y>^TOi`v~4kv4qi*U`>2@cpu$+mgT1>*K-8Js)X=EQibFvt`FGTr z(z`FvcNO*{XSZeE(AHG>)=WG8%{2y1VZlCVUqR|W?|&@y6STu)CcPH~Sgeg2CyQUw z4|sd1{<)D0O<8Muh{9ve6sQgc_ZNWfbUR zM6S1T{(+GV9Sv&Sv)}zX?uID+Alj2O?AbQohoLO?7gjA+Y?I2zAx;`p=a^S1fXj*G92nG$ zs20C>PGDO*7v75oIe}9iwiXylR(4j5v% zbLEywG%@PKw*xu6J?En?;J@`qsbZwMwYoXS$aKRf;lH;>C#=G~Uc8~6l}^_|4mqmm zN?JPMiK>mwIl;0TCh@j`|F{$c?QWm-*}_>hd)+ef zhqU+bKLPg;Sjv)4TVq8{*h6-jEU{SM(m*N-SJY`jhrGaVabp^OQMTxc`BgI#` zE83!}j%j3M7=Pr9+CXF@%?OyvzrL2`%|kxzrHrDz`&O(`$BgR-2$aKo=*qascY z2hw@2n(2dkQh*dAuZ+mgue+vM>i@(UJ^!ymfd1)`)+|lv{EXgd-=Sr%yETu#1GV;}TJ&c)EbMS?a7oVuui)!s31_H zf;;UttLd;BQJK4Xy(Y^f_Rg`BU?hZ%^kn01V;43?B=*Um)#El=`KR1|pGHeSgZnYg zE;&Y6y_;U!OD`S>8bfmNnOcUyNJf3B`X6>pLtR$eJeHUv4PruvjST?lPH!=mrJk(K zA>dI!u*dO}j%*3)H5 zzFcKuLX-)bn3f1Ly8tf!xs=gAJqR&M1E%l0Eicn>(9nF%*RV`r_O@mQ>hJgTUu`}G z)VCS|MfhHD+Aon|Kt@GSxZ&t%)tXBdd0DeTWogRm@(od4k>b2Q6-uq83%Ko7LjlK3 zd-ikJ6w9lO~{N}#9qS#3tcPYr&sGpltI$SeiBg%iW~Z`BCd5<@^^aRCD!BTvh%uK z$_UNgefC`5LI`wu7@R<(t7Ssm;#Y68S-17eoJ!ut{>1KhV|Me1;5v_yQ#CX)n-B}} zRAjJ~juh6?#2A=Dnfd^yMhQ;Ga~$y3f_oI0Wpo7{p?iq?a70R#?RFPFmbiCm53l-; z9OiwAQlmJss0%rK8RvXNO78uf_S+Ng*oaIK4&Z|S@xMA6jettyf4rN3O9=i+yZ{k>&uv+kc6&c#!M5pqe~bdN{?5gD21b&bxuy>tF~ny13e znqMB+;!&G|0O}^gEV==r>rZt6)0y(Ppu{ZaT-NHCGrz{GG23ZSMH6nM; ze=v&XD|c$m!uM0s_JfwtgNhXAyd5996-5O=)p9EV=pqKgBdqM;@uwqYG@^It8I7X2Y~rLa>zn1L#&8$=lNS?ct*HBk)}BGZgTi;n z5AZ_Ak`PO>s7|;`fYr@OW}B**hNP(stoPRjuqK&iy@K{b^1q-HigSYRzE#(C%Wv6i z&mt1`y$-{VWahPx81^Wu=#}t}R*PtQ^N#rg%^$8#Ukj;d;Z(Z1S0I615tqe3U5m?6 zD!6|}Qoh90W;U+`9<6$ZQ3wS)9R3|;t{mJrj#amIC7w;1MGBGdslWZZ8E?t+;Rc8l zEV%C9YNi?+3#mL@szT^eXUuJ=V=v%PUOauc3Wm*F;#q!#h!ZUOxpoTvUjt1f3ros) zrH?yXIf4vPO3kMD&K7SR)fhzks~i!JY5@JO6wql*l68h%+DbJS=TEM=x59wlQ*`aT zyd-{oKM@`2fvnIk*^Sxx=ZXn%U3kW4QUN-xqC6QDciL~0os_goeEk_FiW#kn1FfCK z)H@6OX1r?f`CFT5c>&9>qp7O^?nRW6p!m?L!Q@WfN0=328T;ECQ z{L)5SQtG5-7jfV#BF+S$Ec+bu{VGL#NmWes;j*&G%GpcZ?WH(kX&+y!Z?=bRWiZ2w z$HL%~70lpe^D>zMSEdE_y*(><}R&Z??v-Z5#3vu!l?=0^;mH}o{gdwo&;za-P5;fmVqo{kxk zO1<3BY%n$b353yY-`<`k@WJ)Hf1uK)>mH=}R^w+^DYP$5*P#c=7^2BSXVvQsF>xBf zKX=_)=C$mT()GDojs%>OEx{Kz9%+0-LzCJItu^5`i)hL)){eU#Sy;1 zLEKKTI!}q==G?LQ&0P~s&q#(jc=YuDiEPR{_tUh6Xm2e4NXoEwVMy6+65Mt=ULY4^ z;~ITxd=nC7D)N;`8Cnt|Al@nqjcQG*_(h* zo8(`k$gP4Qw_kUAC8QBC>`z6fW<1|?_RI)WhGkJN##yD|df6N7^MvScoR7k!Cn|e| zdVxy~c{GSl12W;%w6#TysW;A8_*{sr=hGqNy?np>-E-(aNXZ2TYdsA4eCmqvkT3*- z)X?XhF9eISS&iZdG13is$7kh+0G?6SqY6uel$K%T^HY^*Ax)IzOLaOURRo|7>~7!kd?_OX5XuU0-jjq-Un}Em+uU zU*9f=>WTNSWTY68uBh(E|gYLZit^rF!4jk+f=ht%@jS!s~tE z0S+8n1xJ4>2!J_%O`<|AroVKYC7GqT^hNlXLvb-~g5BdR1u@a`b!aF15j?okf41mr ziv|F;)U$Ybu}{&QY!0}PsqsFTThbw1W2_;osz59eNkhShotyI_H;g`z@XuJ$S22xB zuqmu2vcEq;--Lgy`r$XU1EW_y$y;-AZq3IqD@OB=0BFt8=mram+AoCh!$1#>Fh^w5 z|JK=Aheg%4dz(^3M5J4!r5lt|M7pHAyQL+UNJt|&bm!1Dz>rFJ=MYMF!_a)A&-?8C zzWd$Z{$l+(%*=5xYu1|kzOM6kUV37dMgW!jXMGM`TNV4l;cWtBipD+PBAZAD-CxxL zJhcx~xPFIEBqro5u5y%Yc;5G%%Bb*|y~SxbzT=^6_B`8b%aN}87qq?`H@gHk_o|AGm>sZ+cF;PwY%4^V@yhQ?m zn2H-aN>|qfQt>NfM|%Q6flsE?flO)cDI0j&;dZ(gGZ-S2byTlHG;oBSo%Kdp5xV^ zxSw>)=N_%Qff8r+Mj&9&@S+uh+yb)9d~oMH7^QEi!35*AvxrfNk1Sin85#^s(%Q-@ zFLI{{O_bJ5pzAw6?TJY~p5rrqQR{~N=sYdwb^-A_6%@kfhJ{)5ICNN(vd3QWX=US? zjJ4|^;#XovWe9KQCkN#`6(ZC2+!)bG#@mY?Vt1{i{Xd9IRBUdxitmd(98DUpwixbW z1TO1xdVT1)G8_gw(wQ8zXyX}eh9^F(|5ASk{dJCvmFvc}E~kD0g*+%bq1Y>7?clPb zHgW}AS_$allH3-iK1RZLdn zPnA~aFSoYb5?Q19Z&4qyiM^YT;WHDSnf<9=_WGS^wlVy1ApHDt13dzW;Ha2HaxpkA zF3?|XdgF5aT+Uw1F2ytQ7e`mlFKb|L9%3;8)XH-Pxvl>wIZj@8*qd`k{AS3-Z*Z$N8bMZDp^8`( zU2-993H|(q9a1m0c|GEQTEYimfH)LI%(-7aFoX#*vZrDkb z1-Z21tJoom+J61;U`!p_$ywlb3g^Sb9=e3?BXwu3@NIpnxWbJ-#k6{V?K1Pkzv&&V z90a{{&^w-cujKT)31M^zsOS^+!KfjBQ7qu=^E-iQ1ikZ6 z={LNyGXLnmg?E5|Q@R8^IU*X{Sy$_rvmc_?=te+TRwQOm9l3e-O7fe9rUnHdaP;(_ zij>4pErhJ?{XR4&;I>W?+izJt)cY*9@FYk)=h~~1w*i&yFvHCE6t(j}=t)P_{)yT< zXUQZ{HJy}XSKXTH`RsjU3jsv07r0d~Xx5oo-lZYSB*HyR`}uF47jBII#`ALVn8U>K z?gQo(ADOmC4s*vjU6KAU|6qZ@hiB!CE z228@M`W&h?wo3CNxD6r#a7DjlR>7vC)E<5=vM0M=+`GM&j|>sU33Lfxqy&LP%oCeF zDBGOr+J;Ts!>J)c_>uItQ*K53-V1^~_`wQ7!*lEQ<8Gn=prAh+s^h=AbL%g-zc?D4 z%wfmZr%{Xmv_CE#uy$z<)DaSb)-sexHN{T`jjx4mHKvF_{a6(1iCi^O0^=tBS^3`? zav)lzv}?C+41{8dJgjk~%6r};RCBSop+U=Y4zB##2e!@3F^Y)C$o77&c+^H$ONxoX;A!YBB!|xi(!=H$a*?4;ZFuTK+uF||#Fjza!FDvjA181}u z>8tZ|Q%y^;w58&^GNMWlz)}RVAP%BmM-P$lFdR}RyATa z0v+}_oD$#e3xXt3ky()aKrX1r929R#zp*UEFPm^SiNXHO@B;ddicCPg{DWAnfAXxp zUZmra#E_GNFkN4rE<{=|3X}g8CYeIst{mtB75OEyEQksX`31SqK;-?mG*B_m3mST* z9wOPvTDmPOE46p`w=iLl9vU(UzP1gNo|}=gSp3z}l9C*E_|St3Zcr#1G6&#jK|g_| zyID#wv}DAPZitLrJYTZFufZk~H zN@~(^ZgB1!4>a*TS2}n=P>o}?(#&NfE@_eu`oZI)8bVi==FfUt>kV5;l|XtWYsbgX zz%;=4GkR-))d}6udLW4;^%rZgr+ZH1wnE(R+zNC|^EaA);lT2#6cZcm=ZJS-l72+K zOO1Lxe%tKAei&|u;!kR+sDSxTKAXB=w?{J@2YGg99NdNmU>-ZbTv@8WjuchwACSq# zo>*Zc(LBH_f=U_VQKgKT`T{4-Hm=^1wLY|Z>{gjZV2vouA`XtK@Ei3Fr1oG2 z{b%F_;SuuTKD=K6+1~k_?B*jDtc%%7UTOW}>g4MKt5xUC4=?z{e!prHOFk3%r)X#2 zjt$I3*M2Z~(9ALj>5%&!9s(fw^ehYI2@*CK6o!uc5w}wGE3u#(%Wp^paeQjaLIGu= zBWuN$A7O%CJVF#1Y1oj8x2sUn3KX0lu_>SK5AYENG-}KH`0ja?q6ri+t!$($wUk_l zkUtOlP!DrshO8;zxU8(EI{@u8RaXW3&^EWUIL?bu@+?28X^|899gUFk1S-T z(}yv%-(Y+$od}EaaAAoudXIrz(k?d~S_V3lEyX%wJpSa|JElkA) zee@cl4x1AYq{vku&iQVF;p^ZYopTot}I07;M3+b8hQ=|g>IxexS>HTAW0 zCxvbU<9WyFMzjj$O)XAYobo{toX#h318YX8f7H38TH59ojvlA+Q^Ny9Y7&a)6{(I3 zlJ89cCC_htF(Qj9b6NW2hGsi9&;KCKqkJ@8vt53%~ z#Ew;1OFlep-q&XTRHlvjJjSa=?T0XL+kP@&Cxp9A;T$>B`n>fv3RB!wl3Gk<`@&!; zKHIKE6rDLF!eKsPP_`hp&!0-v!D{$(MX5*Dq9}SXNr7P*DCHIvurvhvikvT1D&w&dFB#m83JseqUlT<#4c7ZeA(M%#y(h$|4lH@8f>qI zhjqC&I^ZJfIKCw;37WP2|O_agRTG+C@%F|-uBrpEJwZpdk z-O3SewT3rFxD@Jc89|ouG7?i&sl|1N>%9fC=){jlj>e*?2)H54}IN@#nX0&RbN&2y_ zxgb#a=Czl)hET4{w7B^3?x>$%hNqXzFMLgT?!w12?!DsY4Ny$TxPQa>2^LVdNEq?C6 zmB%ipdv~Kgdgk>dZK_>!^YdN^A;qI}tqIP7cdaw<8u5axVZ{R_-seYGfQ@1wue@ZF zxf`FK`lQ*JcOT7*q7#!+57BC%j&J33)X*KhpzRB@kK}P#oAPu)>jRjFm zB*R=rZ6*{MW_2!}{YNn|BcW~_WWX{HmwBZ(?a3(U#M$ar;=&So_aQs*u3RBLL#l75 zH34@2q)?`PgIyY0SORNUo!yvfnFhaV9Q{6a`_?_>kXf9};>|{MJ_Q|2GmfxOPjdJ* z%js;Qy1-0o2$0VX0TnVSoR=Y2yFMt`v6QXTqUUL4bmQ^cpHn@?y(K&YI%mk^9sUB^#V?^TsjqtqZPP}c*0yG2mb_&jlcfw$E_ zIfbQW3p|f0x8Be&b9_LHxuTFJzhuh1y(!9Vj3HK80wn9u$?W6D_n50s4~6qpRz_D$ zQch;Q9-%NI0D;NSi!zF}*;VU|xzQ2sk6Ee5ZKt0?a$9lZGVh0Iy3X$DuP4csMq_=G z0@$jwETuIv_7w<1`@V#AIN48+nmX9p=$jh8%d^}%FZqG3!aox`HuEiDj9H)&F5!5u zVjvW)3@~ZOYG1&AwBKcK=O(7jy`0mIdzP%)$Fg`dJ$`M#+gQ(kCzTeIZv`ISu+G_YSK%8c!{LM<9FqR_^ETap6V0-TiE9_KAH{W@x3MjArTx zQ%?pRAg@bb_^MvSRIxVn{%OEV_UE%+3O@-6T8*YIL}*^8Hhz!8ZTY6Dtb=b(W9X^~ zXsadR<0nnhI?X);H3?hiY1y22@mJL%>kHmRMUgA9gnPklhv@tBO{miKsl=)8Pk&T@ zzY^Ig8a1_C{%{bN`x4G z8*jxQFU)|ipmY$AztJ^Yd<^Myw?(nt@roAZ%&WN#Vhu@|)&!rt^ESSW<=Sl{OV4&0 z_IunLI_Oxg{kUF*VCNR17OKAgM(5Z_q9Vdru`t7J?TbCsZMq~ID*Zip3yKH)5}BWU z{F{{u5!WM2ecRy!wi#sFe#}HrQ%MJmJ}kaX8W(0x!@&sF&iX)=g+&QVq^Oy<2{BM! zBhd3N1ap5$_~iK@&+yOpb4JPGWJy-;38US^6%)qpY*tq`KV>?^&)pa`->~7LzBynk=L0WUf%os`KmoD+WWp8 zg#sFtbJaPATFND_R}0)69pl0!O=ZydO7B~OJ@4dCfJ2%{BQ)fRn_5HLfLYejXw7(h zDI2bDFL)bsh!6#m-!wXv>I%XcR z5)eC|DpF&C2^@9-?FVfw8dSQ8xL4sOQ4ZYGj)4Kh^kTJP=oWK>QgNy z{woGHJk)1W^`1Zd#C~&X8f6i$>!%c}1$j#j*wYTT_*pIWl<6vG@z-o#XDbSzB9_Gj zLJzIp{;L3Mj<4FRamcF$I9j;WKI5MjgoY>cm<_x-?#I!B&TzSUF`_6>VcPDM(TNQ+?hDCbgfLB+nf$(?a}OR9TSh{_rNz`z#?*E!ss80Y zYq7F>(2G#Avf`ib!)T3zUMAz$#eJTX7xxkqs&S7_Grzl^O8;gv5vqfoiJn49vGi_q zCO0$OF5i9awYF(*r;xZ_tlPPz4A-RX2w560`H82CJegpFR!rFZ))QZ4F!W25w)nX{-^w*f z4CnshdHtSfn*#-D%VH0!T1bSJMzuCx-6n-mn0${Rb23*FU_ZynS7s9U1>#b*C4frJ z0pTPl+$q*kB1hN+!8{1M?s;>U-LERFkn5aX5)UPP*8}U-_^~u(Q3lNdRz`}W@Pq-k z>MZu>;j=0((w*S#<7IckmyZHr84FZ?v&Z$fDH~j_lKwaLRx3G$a=MK&DgUX`B4uhr z1xSBu!LA=_O?`CgFDUMDzMc}fJJ{RsajPp%Cuu$C;Q@u1nm*HFt1)`_ScYsN5&Fft zkE>7l{gsz4KC2@voo-0b>E}*kyyl6$0L66r+o+hRZedCbODq`wd{u-;G%}1Wxfx1l zk~F9q^0`z&bKlwi(@D;W;Wx8}3i&X!KQ8Q&AUX<+XdF&|%3^E|E6A4R+n+j*ujO^P zH?)(b(L%Eg;Umy=zfF;i*M<6F;q<1T82$JhJ$$sz!MkY;MEez6Np;(P7KXqhv;?Z6 z?t*m+DZxYaj*z-XICHi$(e?SQFJbP!wCC)a`##L&HLjH*nb6F*{?=dP*X&J;RYfjC z4HA>?lP<25pW1U8@C4H`ektr#kh)r}ekqD>MkiqU;M;^ZKlKOo8@>c@DVWQN7pDrQ zWZR`>LE~;E-o7hpv-8qU1XQNC_~%S#&sA~BVk;JJU(_Yb>CMlx5ImSa2yILI#dR2Y zd)iftBRTC+-6%j*o6R%IzWG+zuGPwb`gcu4==9lVbZ*bk(Xw4hiSm;EMddT&=V$Vz zK|%-#+BpxXH!23_%Q{{~v*k*|c%F+MuU+G0Re|e{UAv4eC=kX5V5;+|<5S4OoT&xI zW>|a%RiXF$Vy|(>Bt9gVHL4(M7^-2B;#h{}zZ~yO;b*~zhrX;C(ad$8y6yx|3gg5x zdnogO-g=#Bs1oU!%7Y$W3kt(V17ZY!PCaqa&d-N!#H1 z>^JSPD7fH)Ac`gEK*@n8p-`i3x0k(A>Ej3~YGY<&kVP0vr`W4XH0a3x3>N<33LmwJ zad`IS+Ra9dEoM*@O^&PwedW#{+Kcsd@YZrZJ8lJF<8m| zw&LP>9uFS-4XWQEH7}_rhsuiQmBuuj44~EYn4VY3<3j8&{les}A29AA0+Hm1KxA}f zfI9yXYg8>dBovx$O*c9#0jWMK>j_Wkm(dnln1Y-HhpE+oU*c$Bk`C?J@oYoKBm%<% zq5xW38@<>s!Ql=LE^=Ye{87zhjiMI=73-4x_EsceJbCf1j~(#r1hv%l^%i70*h#Qy zsIhpg9{ge+(0iZ&Ihyaa{-fH)UL*aV)~Z)jOl(eiX) zP}IF{5F41@Tg+JdMWxFTuQ_S4|29|$P*ceM{f%QtDeOG&5D>WW> zbbg`Nsb}#tgT!8x*KRiO*IOi`dmUj?k>>a7w^|)SiuwhWRj21PlL$^WY`GQ^x0}Ltfra5H!z*TH zJ05Wi7#EXvIS*l;-4mI5DHvOd4VR`*XbP8-zL1V;hh1;YpDg9T`|ZBn-LbAIXw=j9 zUHF^{#xkswLtSq=Y(6(WbUQXMDJo;J+qQisH1gz-wT!nk?}0dhYbgs&W!$%X=lRb} z>W)+gr2!~+53QL*^b_&{@v^fBp(~}dWf_|@FE2P@uedoxOeXpU)i3FaMsS!he1VV@ z`{1W8hYw?`wXy#f?A0{ZKG_iIo?;q$TnUa-0@mc(vBCPIx4Gx;qn<^ZmKDRXDC-Tn@^txcLEwd`|@6sQ^kJ6nxgiSM}Da>0{C0r!noCjkk<|*@|&V+0F&ay}=pX zo_hXovJ=Wi>!%a)fCNXBieVx_7Boj)xFF1i+Pw$crd}U+!2eT=j>S<$R!7Xn&@&iO zD~_RjQYzGQYvpUypYo*{5TZIDWfFAK<8$A&J6ZR-1|`i;n}5t;_3~&vZ+Yu>D`?%(r{#vIf<&2h&W~cm>kTo*lW~ACh3M%3eu0`CEZNlYJ zUOjMd3Y$r&*oJ$BTd;bsof(?zNLc}>q>c5nsZy_wf(*_=!%r*LdcV@mc1O~dgqCYy z%GvEs?>?Q<_vK6V77bZ%fu^QDfxpV93ZF3-H=b7p@SyOQXu~Znbh@>6imNg3_v2{^ z%~0NfdNwK^0jH3P`D2k4x|*w2O{-i+5#oICalCJ%aUeA$-L4~nna0+u8iMS!RtOk7nt$92z zJ@_OD=)<2hfdt%>`cKEvv4cvQi4z)zVS9rY`F4zzt@l9Iys;+f?i;v_9EFjV-`Y-y z<96_jo$mu!{Rz(UR<*aggO>T58r;|SZw(z6F#^wzT1`Je)d!<@?ff1a+n$U~O-vJ= zFh~vrHT}X!$65rLc~I|dl7-Qv1kX&2-9_~RWcw%f8^}3eLE;LT>HU9ZSr6r(tv{q( ztcdBa0$*(l&?%+MKHBzi6ftYq`qU-E9U`l0Y+~8*ogXC%_YUP)qppLUyPdS2{~!9j z4&^W6zv171N==4`hd*k2tEpD}u3buCuBNK=-~k&DqTZAo-(bEy?5Uauj)ZHwx?SzV zA#*uy$VeYse?3Cf6`#NV^aOXlb}C!5+@owK`!XRrf|6n(;j~iQ*ug*fFWNPnr5=ND zp11c$1%(DRH6FFW(E5_Hxon-Sp1+0FX9Zi=AI9Y-^0#mvedn9BXSO20i_wS9Z}BWS zkm{Farer6bD6mzHX%oyXMUW1W+Her>Dir(y`Qhj5h*tiyisu`D2-%P9KS_TF8pUIu ztx!IDPUaG9GhOyO8HhMOqsLMmOOghD&p>^G9pF%Q^EF%uuj`HUUw@T&_!o2gTNoG& z#pHqM*1MY6wu~`dr7eVY2ro>YU0%aY3DxxwfW?!+Jt6PgX7f-h6zuw9&>L5ID_(f| z31o6bSkIv_iZ%l#m!FOiCoI-7yy))M-U>i(t5K>ghD$ipPyKJAfXfXG*9`rY3}XJ1 z*VV*CM*&LB`Dc?F3^Ljx7jX9tptV_)`=R+>)$}zyahpL3IIjZ<0$O>STS*tq;Hh~v$gtOf20edyl`L1NUE}1{NxA0E{0y!B`4sC-`~KoxtH|# z9LbmVJZBB=kF-bK-%}sCRvh{)j}|Za>gXO_Zto3Z5)OO!AB8yH%EbWJQfoHip+ixR ze6Ol5cd&;Hd@q}*jTcUkRV46`MnVM58hE*~G<(xnpljYZusD(}&=^kU6h_6hOv)pK z!_VRSj~CUuT25A#dhg}D%fGW3LTmSvkVoA66uG#PS%DwQdMR}e*Wg<@FBOMvIj|P% zCjHB=*ea^|*zFC8_YM@hGms#ca-N*Eme;Vc`H@nY-`Cj3Itdvhb5ng7c1UNO&_=@Z zn#${Qa&#=3{Sx@tJ24!wRhfjg5ucMmejfQKvhJ@P?5#IWHy1~5ZVuZK2I1*Zcu_(6 z)i7`eoFD>UB6k-n2=VUj=EW_1i8;OxVOtG-Prbi~5YV>Vp6l34?Vka)Po6wMfcru@ z>Cuq{6BQc1_0l~NCj?90yb?9eqbjkU)88a-ukysJ@C4ro9uFTR$S|Ca7sESX7RRM>9Zt-`?Pkiv3nrp|DC`!j&e19c?s4u%ps~ z*IO5OZ^Jeu4|LcFYk@@BpZ1k~R}X7v-U)ozVMKW7l6qJ^MkB6w1m8CxUqM`{*-dGd zyhFFUU+~I6Ifv(4^2+eZ$B)RGdCIO$>nI%kRk~NrPHQr7Bm?iG2h)|MrF)2gC9u5c zqy@jZJkh0H*S}ezydSaTnJzbQu(Mn9oV2+`B#GvA>}yPEp+{yXypx5Mv1m~-HX8lf z4v%OR2Uqpsyq?PeM6^-flTK^>WIkTHjp|ba$CMt+Q&HhwGD4D9uSnmbJ_#T^Yvs3y zuN{=>`exs=&~%Rdl<)kh?3b9ZH9!xsBfi1-DG*js-O4bNKmQ?Pk{LxAj1PUNG)=x# z|HH!7(mEm;ams~Ceq)Re3tlQHyw2e>*fL|K{Rl!s@e2u&hU=6;`#AEgJ{X^O2eU#ZQF0bk0It}-Jk zHPIuI9n{&qUMjab$dVE;O}4BlTekw7k&Op6G#K|q) zoq)mp)iOhdk5~15`oyO&l2(d0F%DxtCO-*2hUl`^<;WH%XtLbxIRO2LKu_ykr})zE z_*l8aeEs*%mB{b)s`Ed+MgJ)EoZqq`cB& z+}If!aq^{`w| z!pKyX?|`0D^hhhqFW2Frx+>k*GR5+|5`T9(PijPfq)lv36r(K^93I>wd=|vKQincp zV-^_?JogA+PDqGEx|uPFia3;Ha_)5-%axuFtE#GsWWxbKy$hPU!0J>(= z?LdqRxWDeeQ+&2Z&}!1{rhhJAK0wTdYS8Fb+Ssq>dtIYg7d3n;_lG^W^P^0ExS72_lmyJ1NfRsW^BE|V)}u`N zO#9?x`Nu|rAmU)Npap&x4)-_`)!N!3tuN+7a14;&iraX!=&07twDnyK`EHMaeC|s{ zeahs;x3dopLM8vo{GsA}p1n%l?BU5ntPeOWRt$Duh2SO&znKmf5>jPSL-^}QB>;nL zJDfoRFLvGf7x<4G4ChBiIE;RvmC=`|7qhak)Q`y4NLCCBoyf_{4_+LtH0-xt4mt=h zb+wl0yZfbIJh_DI8n#b`Vth5fO=f3~GBcOi6m~u4np`#eAu@fcf3JQdx}!Keqp+Ie zbkP4?F&$CQJ!5)b3Zc7F+gF} z!LLJ@uA_!-RWi-{pE@ux97ha1L~Z=JaFovVXOP%M#9BK^0-(XbleT}%iIydJlW(>J*1l3ekk(PFXf?py(0mw17 z;DmVj3K11AItxUuf9^yY-&z)H1&#Y&&>u}`_}II-uCy{Z@AUQ7=T&ztoRb?`&)vsr zMjzlR@=ogSYY8ftAWqWiTO5-0KjcTu5CB-b+Mx03M8%^Bf2*Nrk*bxI)VAq6NCba_kZ?eSq zV^emqr-$yZZ6;a8r#Vk~dds^PL@r*g2NDgCt5`z_y?IZ}Xv$Ot?fZZU;)3Ghu%SlZ zYuDfvmEmxYxZ7Xbz11Lvnn>-6i&>5I?Se+N+lv{)s`F6Hs&Fv52C!CFN!HO#<-gcxu0K<(K(BZNRa@C9@5{I;*L`#a`nW9 z2qL(M`X__f^$4-D2%@3dae_e?*E`CFe?4~m4gR>=%+#!sm=V{3?7W=)Q3zuf~b=$|f!#1iv zkAC+13pf$SCBAvxX3`x=_vc~6+r0W~LH_nwC-z&*W5DSB14BsVi}^|G?Gu|No4xT{ z8CSQOrR>?^Bt@Sgqbx;JiNG&(Z-c>HzAXqz$|pl8QaMpMLU~|BHe49 zLSL#y8`%u%*j%S-NUZonnhutku_Nt-Q!3o3>Ug0CO{X7hgKcfB)a6EGG|>C4))QKF zYP?s5-~ia+KBR~(P2}1B#@eY+U9Z-ln;wC8=FhR=D(_!@(+BCPrGgcSFvhb>2PN-X z@ChD*IjPn8`InyLY_8_vCgQq6;_!}&#`$6=+|2rdul(%%x$7*B&Al#Fa-(;9v3YLU zW=BXsty2tQgBecW#*S)crEgXo8IT4+vP%?U zEm*+OuEewbm!%Fe3C3@I_a6`?2E<3lo?_!vfEi>bwB1_4R@gTx;;PN8vS(j{=wNh@2kkbxx$JO{pFp? z>db7b1`=G3uQ-ZCHegI9Z9Ra{oxzap{x2A%JF}+8ZI)EWi2===ZP9#H-)Pd+wUiWt zgmK^2SF`q=xb!-!msR>&8f8FnGFWHwy_l~Nc)J+~HdI-?I3T0XSG%)OGc#!BHUR$S zUx~iEgt4KBRg)eWBIKl0V+(Kj$ROSQ0dqkg!+rqs$kSxlPq_dnRan9JoG>K(+Nc3Z z?tK^JyxL*bxw@2cEuN`ERs}9OxDF`)6LeB3)Tp! zz^eUH^!@cDa3I%8!4r^g85&N`-^v1pdt`NN7Ez}VvC$IUeoUK}{0D(Dwa-_qQ4jou zpoCidCxTL)YHlyM)XqHjJZzOQ?zTAZDR8*gIzCIu+iZE zFN1s3+I@`>DSFh%C^j@aOQr`O45+?R_7&zA0%{s@@M(LfUGGq0pZUe+1 zhsoXL#S0qO`RIMtjhB}Hg$`NU4vn^<8H)CB1a7^08+FopyvU}zL2l&J%J|Ie0*A=W zF7VkO?cZazQAOE-a=F5qCte!|1?Q|LObvFK?khT_tMZ@P<0yWdft z*oTzbE{uMQa8OgJp0Zs`Cx=5zp)WjFbSR60c;5&c{4iZR0``HB>xtwQGmsO%oY@Z7 z7xm6KE@pS&VmPLio()fxT$i%yYin8b^16b@QO}|?N?jpvfmPiFC+Yn)kCh*H7}yar zm(4+jTWDWQ)Z52|0?Q(_*}uI6uvF8v)}1H4y*jg96TEu8tZ_$V-sP9HPk zUKS9g3pahwJ$gUz+!w3LRnVdFP?@Z{L2jt8xLAj=x&cyG7YUMcPab*+eq*nUqwZU& z)~-2}<_ma@5Co%H1|s`x&BxkkV$~gu-`aAPoY&14W7FV1t9_ScjK2M#y_3%zofWRV z3{v$FpMC+}4$q`Z*B51+tRMSr=F&%eEq;m~o(UjIUGvOG^A)SCVF%M@Uo~3g&x^}l zldgy|45D^;`PHs%7H>2!HcU-y%649L@lVdV17ojFLf#O@`M4gNoHJ>lJeS-ji_U|& z&>#DUs`KO7SJtSfm%T_Z;>(8O)nOIcv)CzJ7mvii+l#_oRx-n{_0eh-R9g=2;{}P(rq9ML`XY#l0xzy#^}z1oo8lv=2*#=5|Su z4sUECQn2`qsGTtNPejFk^hVXMjWFMgo0rpWG(L;Y&7n18w!V5<0nL`?ZFE3gM_#x1 z3`qcoNk*yS7StE6L2gKrW`X|zGXC%w_38iMF>Fgv<+Tl0GJLJ+_~8^FBiPtvUZpre zX#89#u`DqxzMOrXp_9d#b4XAs^~NBryBrN<20?$f&BmlzaMUGR_Z*_J#HWOi0;HEZ zsM%N|&@I^}l8^u@*T;cDg=*HkZ&05g*E_Q)0mWMCN;TXs8?&nvq~GVCGyC(G)__K8 zW;EZc%Da}9_;h0s+|^3ZDBJWPH5<-Y;?)%%_SJHtPhVNN6$H&LdCJJDr4iP!6~)Zh zh91{;h)*Hvn}?nsp8I!nCU)F5LhLoSJ5=e>g3KotGET<-m4)bo+5)p>C+QB}?k(!K z@{&3mqb36uLPjD-qs1BC(Qa4W(o>4binQ?fp0Un^qJHKz6$=|zQC?x6tkS|(zUA+IEz__Zhl{v?5_L3!^im2BxOqv zCx%eV$x#(SiKhuC$H?*i9Uz+~pnb?T3R&XI*nXxB`X~dr0y>Nd9_s^-ZpCH^1b1Ib035-j`EgGDc$W79(Zg4dt zC9((`E*uuph|fZ?^wMhF)Lf#!z}{Ol&W;dackMDlbB)zpJ^q+~mVu|Jr(XnL{59?i z_&x9I+Y+mtH-3DGjfU0u!GBnPygo3s-8eQ0!!yQ>>$HBQ?_lpdube@AA6CAQ!<(}Xe?>}>nO9u>lN zK9{^JrEb;{QlXAE9MSDGcve`XsA-xu(#UL5vdN@A=0hgC9ct|@w14?Z%x0zq5ds?s zdotrTx;x2A(r=qDgN7)>J7qYxr%! zhvus5(%W}LUVhWy@!7mm1$+8_NI}d@V!+uxdIRgyL?81d9{q4{Uze-#YP zF<%qph4_l1Z(Ci&|YWXvw>XqKu{BU|WE7>4}q1R}abAjv@)OyaXn9kigQ?0uK7iRVg(*K1Z zf^wC%l7~;$fE$GQ8kr2uVX@)^i0L&lIa)NY9w|uXH8LyU9MM7V-99!u7mG7L zLtxFtV!JT3_8fi3erIT4;m-G%rA)uHS43m#<@S zp{}jo%PmVRwr`qq)&_b?tE2A~koG^nwPiG49M>OW&U!G+20KdEQ7wK)6B9fWI|c1o4^SX(az1Hr3YdfDjR$<>6uA z5b*UT=qbvn_3vm;)+7bD0FrP23~{@CxpzAot&L@8|LK*<_I&!OY|pfTgU3oAD3<=t z>@tyAEtHw(HvBdBFOhD;?=D0-N=jDxe(wyc;~fZLBo6(0oq5?~>b>(G<|x{xTwb&E z7&>(~ZJnS<0c0lR1yF+kG8OVU2qu8c18gX$+XTVq={-N&d=7d06EeZ&1xwErg6T(z zE)%ZK3JZo!bTNahGf-KowDwJPKN?#sZ*3i6dhv&EDA4yf7LyZ`PUh{_jV0Tn@YTCO zSd@B;*Gk&LubZnhzzr1NdVI6;&hf*tvp>TqW??5^Qe@MntN_f*R(DU{PyNyiNr%hC7YtC#q4fLY#PLqLEXNj75oxvPg@9i3k8 zUe3DH*9%kzF~Gj>y~mNQQuIuh6L?=bEPU|&w)5<4UPAx-(g*10zgzBL=`!N3*C=mf!j{`*ulVk(5y)Sbg{GGxCiZZ>+S zs)0IwFy&y+z}&c%(XQ38&kwHv?_HE7ab?k9@lIqMs?S$|8-u3IpyF|-NT`?A9=SV7~ z24mYQAKLXWu4u{PIqMq)x0`R8WeQ*ZsHgdY$A}&&USg+w;$H4Nn|ya=yl2kl7$Rf) zB;wVD#0x;WVPt)h^{8KfbZz|inOxyMbgTw6H1YazPBldlo9m2)a{IfBR%Fk*nwsB5 zr_X*BVD-SDXcrzHbDbqjUEI=7yv)vn6ThXuY7_^x+q Date: Thu, 14 May 2026 17:40:11 +0200 Subject: [PATCH 16/23] fallback to factions if corefactions is empty --- lua/wikis/commons/FactionStatistics/Map.lua | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index 60aff144d3a..da183559cc3 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -35,6 +35,7 @@ local WidgetUtil = Lua.import('Module:Widget/Util') local DEFAULT_MAP_NAME = 'Unknown' local SUM_ABBR = Html.Abbr{title = 'Sum of', children = 'Σ'} local NUMBER_OF_ABBR = Html.Abbr{title = 'Number of', children = '#'} +local FACTIONS = Logic.nilIfEmpty(Faction.coreFactions) or Faction.factions local MapStatistics = {} @@ -91,16 +92,16 @@ function MapStatistics._getMatchups() end --- this loop is only wanted/needed so that each faction is on the left at least once... - Array.forEach(Faction.coreFactions, function(faction, factionIndex) - local nextFaction = Faction.coreFactions[factionIndex + 1] or Faction.coreFactions[1] + Array.forEach(FACTIONS, function(faction, factionIndex) + local nextFaction = FACTIONS[factionIndex + 1] or FACTIONS[1] if faction == nextFaction or alreadyDone(faction, nextFaction) then return end table.insert(vs, faction .. ',' .. nextFaction) end) - Array.forEach(Faction.coreFactions, function(faction1) - Array.forEach(Faction.coreFactions, function(faction2) + Array.forEach(FACTIONS, function(faction1) + Array.forEach(FACTIONS, function(faction2) if not alreadyDone(faction1, faction2) then table.insert(vs, faction1 .. ',' .. faction2) end @@ -109,7 +110,7 @@ function MapStatistics._getMatchups() return { vs = vs, - mirrors = Table.copy(Faction.coreFactions), -- copy to remove the metatable which breaks some stuff + mirrors = Table.copy(FACTIONS), -- copy to remove the metatable which breaks some stuff } end @@ -185,12 +186,12 @@ function MapStatistics._fetchData(args, matchUps) data[map] = data[map] or makeInitialMapData(gameData) local winnerFaction = gameData.extradata.winnerfaction - if not Table.includes(Faction.coreFactions, winnerFaction) then + if not Table.includes(FACTIONS, winnerFaction) then return end local loserFaction = gameData.extradata.loserfaction - if not Table.includes(Faction.coreFactions, loserFaction) then + if not Table.includes(FACTIONS, loserFaction) then return end From aed7e4bd2cde2c70c4669aa74077b7372abce33f Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 14 May 2026 17:46:13 +0200 Subject: [PATCH 17/23] option to restrict on game for maps stats --- lua/wikis/commons/FactionStatistics/Map.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/wikis/commons/FactionStatistics/Map.lua b/lua/wikis/commons/FactionStatistics/Map.lua index da183559cc3..08a8bdfe196 100644 --- a/lua/wikis/commons/FactionStatistics/Map.lua +++ b/lua/wikis/commons/FactionStatistics/Map.lua @@ -13,6 +13,7 @@ local DateExt = Lua.import('Module:Date/Ext') local Faction = Lua.import('Module:Faction') local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') local FnUtil = Lua.import('Module:FnUtil') +local Game = Lua.import('Module:Game') local Logic = Lua.import('Module:Logic') local Lpdb = Lua.import('Module:Lpdb') local Operator = Lua.import('Module:Operator') @@ -252,6 +253,11 @@ function MapStatistics._buildConditions(args) local tournaments = Array.map(MapStatistics._getTournaments(args), Page.pageifyLink) conditions:add(ConditionUtil.anyOf(ColumnName('pagename'), tournaments)) + local game = Game.toIdentifier{game = args.game, useDefault = false} + if game then + conditions:add(ConditionNode(ColumnName('game'), Comparator.eq, game)) + end + return tostring(conditions) end From ebdc77aa99462b6b423da03bbbd521ee049eb761 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 14 May 2026 17:48:47 +0200 Subject: [PATCH 18/23] option to filter for game for player stats too --- lua/wikis/commons/FactionStatistics/Player.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 80825b7fb2c..b83b365e5c5 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -13,6 +13,7 @@ local Class = Lua.import('Module:Class') local DateExt = Lua.import('Module:Date/Ext') local Faction = Lua.import('Module:Faction') local FnUtil = Lua.import('Module:FnUtil') +local Game = Lua.import('Module:Game') local Logic = Lua.import('Module:Logic') local Lpdb = Lua.import('Module:Lpdb') local MatchupDisplay = Lua.import('Module:FactionStatistics/MatchupDisplay') @@ -195,6 +196,11 @@ function PlayerStatistics:_getMatchConditions() conditions:add(ConditionNode(ColumnName('player'), Comparator.eq, self.player)) end + local game = Game.toIdentifier{game = args.game, useDefault = false} + if game then + conditions:add(ConditionNode(ColumnName('game'), Comparator.eq, game)) + end + return tostring(conditions) end From 9b9590b2e837b106c38adef32bf21ea98ebeb64f Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 9 Jul 2026 15:10:33 +0200 Subject: [PATCH 19/23] remove usage of Module:Widget/Html/All --- lua/wikis/commons/FactionStatistics/Player.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index b83b365e5c5..16cc369942b 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -33,14 +33,14 @@ local ColumnName = Condition.ColumnName local ConditionUtil = Condition.Util local Box = Lua.import('Module:Widget/Basic/Box') -local HtmlWidgets = Lua.import('Module:Widget/Html/All') +local Html = Lua.import('Module:Widget/Html') local Link = Lua.import('Module:Widget/Basic/Link') local TableWidgets = Lua.import('Module:Widget/Table2/All') local WidgetUtil = Lua.import('Module:Widget/Util') local DEFAULT_TIERS = {1, 2} local DEFAULT_TIER_TYPE = 'Unset' -local SUM_ABBR = HtmlWidgets.Abbr{title = 'Sum of', children = 'Σ'} +local SUM_ABBR = Html.Abbr{title = 'Sum of', children = 'Σ'} ---@class StormgatePlayerMatchupStatistics ---@operator call(table): StormgatePlayerMatchupStatistics @@ -380,7 +380,7 @@ function PlayerStatistics:_matchesPerBestof() if key == '-1' then return 'Unknown' end - return HtmlWidgets.Abbr{title = 'Best of ' .. key, children = 'Bo' .. key} + return Html.Abbr{title = 'Best of ' .. key, children = 'Bo' .. key} end local order = Array.extractKeys(self.byBestof) Array.sortInPlaceBy(order, tonumber, function(a, b) From 56afea669b55394b99bd504d0be3761b7852d4b0 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 9 Jul 2026 16:04:04 +0200 Subject: [PATCH 20/23] some annos --- .../FactionStatistics/MatchupDisplay.lua | 2 +- .../commons/FactionStatistics/Player.lua | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua b/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua index 6f5cb3450f8..2459141e976 100644 --- a/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua +++ b/lua/wikis/commons/FactionStatistics/MatchupDisplay.lua @@ -14,7 +14,7 @@ local TableWidgets = Lua.import('Module:Widget/Table2/All') local MatchupDisplay = {} ---@param matchupData {w: number, l: number} ----@return Widget[] +---@return Renderable[] function MatchupDisplay.display(matchupData) local total = matchupData.w + matchupData.l diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 16cc369942b..1b7853b1208 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -57,7 +57,7 @@ local SUM_ABBR = Html.Abbr{title = 'Sum of', children = 'Σ'} local PlayerStatistics = Class.new(function(self, args) self:init(args) end) ---@param frame Frame ----@return Widget|string +---@return Renderable function PlayerStatistics.run(frame) local args = Arguments.getArgs(frame) @@ -310,7 +310,7 @@ function PlayerStatistics:_getMapConditions() return tostring(conditions) end ----@return Widget|string +---@return Renderable function PlayerStatistics:create() if Logic.isEmpty(self.matchIds) then return 'No data found' @@ -329,7 +329,7 @@ function PlayerStatistics:create() end ---@private ----@return Widget +---@return Renderable function PlayerStatistics:_matchesPerFaction() local display = function(key) return { @@ -354,14 +354,14 @@ function PlayerStatistics._getFactionOrder() end ---@private ----@return Widget +---@return Renderable function PlayerStatistics:_matchesPerType() local order = {'offline', 'online'} return PlayerStatistics._simpleTable(self.byType, String.upperCaseFirst, order, 'Matches per Environment') end ---@private ----@return Widget +---@return Renderable function PlayerStatistics:_matchesPerOpponentType() local order = { Opponent.solo, @@ -374,7 +374,7 @@ function PlayerStatistics:_matchesPerOpponentType() end ---@private ----@return Widget +---@return Renderable function PlayerStatistics:_matchesPerBestof() local display = function(key) if key == '-1' then @@ -394,7 +394,7 @@ end ---@param display fun(string): Renderable ---@param order string[] ---@param title string ----@return Widget +---@return Renderable function PlayerStatistics._simpleTable(data, display, order, title) local rows = Array.map(order, function(key) local matchupData = data[key] @@ -423,7 +423,7 @@ end ---@private ---@param emptyCell boolean ----@return Widget[] +---@return Renderable[] function PlayerStatistics._headerCells(emptyCell) return WidgetUtil.collect( emptyCell and TableWidgets.CellHeader{children = ''} or nil, @@ -435,7 +435,7 @@ function PlayerStatistics._headerCells(emptyCell) end ---@private ----@return Widget +---@return Renderable function PlayerStatistics:_gamesPerMapAndFaction() local factionOrder = Array.filter(PlayerStatistics._getFactionOrder(), function (key) local data = self.byMap.total[key] @@ -443,7 +443,7 @@ function PlayerStatistics:_gamesPerMapAndFaction() end) ---@param key string - ---@return Widget + ---@return Renderable local factionHeader = function(key) local display = key == 'total' and 'vs. All' or { 'vs. ', @@ -466,7 +466,7 @@ function PlayerStatistics:_gamesPerMapAndFaction() ---@param rowData table ---@param mapDisplay Renderable - ---@return Widget + ---@return Renderable local makeRow = function(rowData, mapDisplay) return TableWidgets.Row{ children = WidgetUtil.collect( From cf66abfb163aab9aa2f8c250403c2ec4fe2a156a Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Thu, 9 Jul 2026 16:05:02 +0200 Subject: [PATCH 21/23] more anno fixes --- lua/wikis/commons/FactionStatistics/Player.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index 1b7853b1208..ec8d53cc4e1 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -42,8 +42,8 @@ local DEFAULT_TIERS = {1, 2} local DEFAULT_TIER_TYPE = 'Unset' local SUM_ABBR = Html.Abbr{title = 'Sum of', children = 'Σ'} ----@class StormgatePlayerMatchupStatistics ----@operator call(table): StormgatePlayerMatchupStatistics +---@class FactionPlayerMatchupStatistics +---@operator call(table): FactionPlayerMatchupStatistics ---@field args table ---@field matchIds string[] ---@field player string From a8ac91839baa12db2229000df51911501e136b20 Mon Sep 17 00:00:00 2001 From: hjpalpha <75081997+hjpalpha@users.noreply.github.com> Date: Thu, 20 Aug 2026 08:28:30 +0200 Subject: [PATCH 22/23] Update lua/wikis/commons/FactionStatistics/Player.lua --- lua/wikis/commons/FactionStatistics/Player.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/wikis/commons/FactionStatistics/Player.lua b/lua/wikis/commons/FactionStatistics/Player.lua index ec8d53cc4e1..570af66dae0 100644 --- a/lua/wikis/commons/FactionStatistics/Player.lua +++ b/lua/wikis/commons/FactionStatistics/Player.lua @@ -161,7 +161,7 @@ function PlayerStatistics:_getMatchConditions() local tiers = Array.map(Array.parseCommaSeparatedString(args.tiers), Tier.toIdentifier) tiers = Logic.emptyOr(tiers, DEFAULT_TIERS) --[[@as integer[] ]] - local tierTypes = Array.parseCommaSeparatedString(args.tiers or '!Qualifier') + local tierTypes = Array.parseCommaSeparatedString(args.tierTypes or '!Qualifier') tierTypes = Array.map(tierTypes, function(tierType) return tierType == DEFAULT_TIER_TYPE and '' or tierType end) From 6ba650d198eaf58a32f4e7b146d50cc613483c67 Mon Sep 17 00:00:00 2001 From: hjpalpha <75081997+hjpalpha@users.noreply.github.com> Date: Thu, 20 Aug 2026 06:31:54 +0000 Subject: [PATCH 23/23] chore: update visual snapshots --- lua/spec/snapshots/team_participant.png | Bin 41806 -> 41840 bytes lua/spec/snapshots/teamcard_legacy.png | Bin 36675 -> 36678 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/lua/spec/snapshots/team_participant.png b/lua/spec/snapshots/team_participant.png index 66ff89dbde4e3a6a5e43421e7e998c964887c925..a473f1b388b8aab73a0292fb0080ac3dc49c3c2c 100644 GIT binary patch delta 35883 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 W#Da?XCG;=*gIydw&UM)T`14=v^>=vy delta 35693 zcmZU)2T)Vr6E+N@q9C9@1r!7<^eVj2$Q%DN?>pbjmzm7X+{xL!d(NJ_`#ig6uk*@4=asL3=dH7S91HYmw|jn{UaJ;8kYw!5>Mk<^^m#d?n2 z{RmuG%eX%Fq}x9xCkZ*;949w*PF`DC(IBR<%1TK&iaAFayx!_a!GDN@s`4;_jEp`_ zKQ1dDbB59`Fr|s)ca{@fk535Q-44_rESZOd>wK2~rg6T68{K#JUC-<5yzDyT3@?9B>m>7?sMC@d2G2i!ajE znJg%=*GWUe%Y!)g;+vbRGdLBb8|R_KaOv{6+y=AG4WgBBmA0E?7Q*jf599{`>GXbkhvAL59WX_vB1y|M(1DCOu(%;=yzr z`5g+i0W5m5|CekdaJa_yN;>qU*KhaeSJy)W^nm+!IVYF)B)hyTTeajKVoYf;Q%;uR zUj*LAj~_2}#+Bd&d~0GpeF998!F~n?Ny%NSec5ZvzOmq>(up&nmP?p&%uedic~XWj z!Lu(O>%-}mklyG#`HPlD2!7wNCG+TD!3)gKq}OZ96_ZNQsq4OBkprF&yTH#pDL^Wg zSK}M#3O%USg-#>Y)%`C%A*s&nWKjUpdY^H-zaYbGNjBbgY!Rw4Ab%c*s>3Gai~vV%|LWjIa*&-b?csN^1Ib*p~>?K$|oQW zO;w)TF>5*N=t||T_%OTrcCnY30+0<6plvi~C%Vr`6EUM=)K(tqxkby$uW9}?5l=CUS#Xqq56p76}+L^7I2l4u4kDA<{* zH5~n}31w0Y5AE+&N5-Pw2n%DfWc-Rhc2v=-?V_D1b;F%(#srmBdf!#2hT<1oQtrk% z*eYZmeLE7L440}NC%z#_Gt&wLmv+rhg3Ew#zvLsIEtJdXmy~^n>J$F&&wdovyoGVu zm)3^Kc9OQw$+nF9@YETEb?fz6w^p?YYr}!@N(U@cd?SE@pLthiJ{{B&({jS13A3oz z9E|Sjx8N&#^U6YcbAb__Bil$wnPYi^iIX%kJIS~y-*BMMmY(^OJMuw zS%P1DsGsi2pN~rz%X2J~q@pUms(rEya_+~1kQswlE$lVwvrM0ag$1lwRQ6lt1Ve_x z*jk#Ij4v-?1pDC++`W=0uhw6an1_;&l0HY0V#0T#Z3 z_?Vi|GJVJ;cze=Wp~FmLG$hX4xAfy13NkV!TmRU< z&LZjg#D<3Yxr0a<)D_g5MgIv^6OisttjLdQxwAt?YjCA(zb7QMa$yLFNwEDQ-#KV? zu%Sin1V$e3&}ub^KLiv0hz>ML-(I{P?I758kYl`j7&U)S-zE|{wejES_(sk!s zxTh+8xjaIE-A$#Brz(I@-zn&Mf|Cop!}VhNZ|X*lZdR>=F>~!f1}?av{y4Ky+-WeH zLLQna3v4GJ2W73f&k)*(3J*6JaO2g7xdQdGNq4E^Re+0Huht9$_t8xWq{7N#l(f4`mt-q0vZ_vFOQjiQYgV{2zpX8 zPn>o3((=j4(rr)w9yzE#c(bY<{JOS$t<>-Qgjiu8yw=q3f!rIHgy+#y+2RZ6y|Mx8 z<2E?Q(u&uvylC)tmjmShF&KkpyLC@?&Z^?fbcIgs-ouHD+WRLskNn-Ew#PAbID3A0 zyO!$)Y%G7hVZCTcH`;>UyD0tV`ftb;{(~{pjx;-Z!Qwi6vHX5HCT%krXX;WvLBrf~Q>9BEICsS7ZJq)hgS0#JZ#L*^jv}ow8gC8MUID;d-9lm*rGjud zSgUP6kjL{rZJ9L^EQd!2Jq>{yg_f5Vf9=$uyehF77x{rVIQa3hC~GV6@eFz-1R+Xhn!`8@z?W_#sT zi)%u!2vc=D+kioI94qc6x;2&MJU)cj>j!?7Q0L{+S@Vs4`tXXXU?%<8@JO{b#%uT0 z?(3P#si`POjUdkB2!w<7LsZ`TLSgL~g4^{k%p-{R9=!v~_WYBlW6?_#9#g!7-O@tt zYBn}DSjG~srEAxVn8DMi5iC%kb$_H8OrOOn<-P;XlL;)AZ&VP*_P-YJ-Jho0DE&Ro z9-3zzEGVLfFZlRnbBFT_OQ$y5NFLN7nmjN1T5R<`x`BQ+QY|5N)A8&#-D$7Zd-Kgj zIOp0;mH9oombv5OqySC@VRjMcz9XkL3YzE>Q;-ZZLPVylzm87vyEx#jK6)3(lEn#8 zm@`qk&(#(>PKp*cK5;vDw|MklP;@Tc{VSBWXv^`olC0;OhqE6mTKcjSo(&lWLx8N~ zwRi^v?90fRfBc?!0h=a*v$}0RNPzOzO|gg7tk%N$EK=4#u#at4_56(!TfmJ>^y2 zfzB|v^rX*3sid0U$+7FC&!~$BE#x(wGI;_7O6LRQ$a|r-=`q{7y`sewjs9mwBaTUA zWVgvQUOqQ6wh?FF)e+poGW$URjfDp@$T)ROj(a05tjW$ZKzEwo&!&ZTbE(APOIEX^ z+x7zg`#;snYw?mEso*-#=QHsU5fM{D{+FRNH#Ob0cf_-FU8F*!#`3YKr}I6!ZK4%w z6&b+(_D{Jj95?#9_1S-8r~qy>9$pdU6lGp!a-aH30UvBsq^>RHTbbkJZ_s9itc8tq zY9a%1a%+ig=e4%G)kh%JHA$rY_kXfW@yw$v!B>qgN997~6p0>#xL+F$pl12p;Np=t zOQkoZgrrw1ermTzY{^i>IV7;@+-1qdTS)_zX2Vr#X{jg+by4{CuwjX;uO*e$$C|c{ z%>jK1*^d!&SeX3IM=gRrOqg=*P+e>Ip=B8-=H+^C#Tv-%k{BYd2pX9%Dns;6BJ#vfYZElUsy`-;gnZv zaMSkoB}?~{)6d}o^r_&RS@7P73O=@hYGsT~)Xtu;g?n0~-}*y!v=9jfyvL4%-Z6~J z#*Qz%L1-*YFMXB_k$Wv2;y>6WGzgqtRI5x=mfzoS$>3^%TiQt_{Z}z+oA1{+&Rpg> zQoN$dqy7MT;{Lrwyh$BQHMzn5gLx>zucv&p&)ak34Jd^|2GKQ5^d!}B4GZKMSz z%X(rpE2sN|tE%(@(l0wezcWnKJ$B>#V)I?+2q|=mb&uU2P*dgK{t6HFMT`N)T)mCU z58NhO4-8V6-K8(u{F*VP*6_tc>1oBZ)QxAZJD4?juWH%fGY6V2l67M=zsfC2JLCA| zYQ68kdilPFUzIe=Z?#Fb2-iW6CpJHXtWe(>&v`p0G<anc9LF-uF7387hRKqJMAs*%=FGRgfZi~{SHk{n>T3iD$g2<1Okr#qyNwxwm3 zZ62KkJ-$V9fmt{Yokyd)GC9b*@knRo3JGM;)mVtdv#_v0!_6Vx%iE>*5N~8(*PS@a z!6vwmA3T^f4>pkoG)54+IYg01_{q~Y2bvV}IwmR}F0X;LG3m-mIoJ~j0r-oi9L229lU1{RDp8rikL6@v%C~TD zo&`AopJT0SkCy1{`5h0BqbXn^E~)H8-mNnMs@IH=Hp$08s;C2S{M`KHp?JyKuZ_gF-hxdOS8@;R%b5%&q&g49Ppu26Uj6Nis<9CwvH%+wf&N>kM zjKEvZALKnRY%Je}HwcyVxJFq9Z;lh{gMghvNyeYt6KK57hw|T^$g-!}W)3ZZBc`f-A}pRC?9}ja@iGly6-#|wCZ+Y<`eG91 zoMqSaW~*FA+XL)XYQ^%|WI_lLI&Mm7sor@*{_Deeg;?-fM5+MA)CIn8scA_Vvt40r zpuX^6BA~Cde$db4EsIXe1;2V2-^IoF>wRNQ6LPqKb0eh5JErI{)-zRO*1!c@0TCHY zk%BO`NUvJ1*hU>SxEoueJp(6~9jpnQWvkO{q@cc;D}|7C?<$bL=5}3WW?}^>AM(F7 zPL*fZ9~T{hz4F08kL|s@zCDr1875QIXwEz{a_H)M6t8?u0Dlebd*}H4 z^mvvhZ>7(&wyDZt{2N2{ndev=7!8(emZiE5b$k9SF#E_HK)!LU_QopbIGyP3M| z&RtAaOE7V=X>@|#kV{A^e_c2@qE<+kWr+0762iDD6zt6WMsb=Twt+h~6V=kH4$>K* znHZ1ux`p2jWrvI&GQJX9fk%yy!ctB22{Y~&?9VsE+98NbC-}HmzU$ziiZ<*pAt4|$ zPGv$ncc`61>5-X}DzdMgIKK zZjMcM9o{16d^Adj_K1m_t9dgw!S!))^6?Xg{;VODvKyhkp~)wwn~2LhVRBpB3)+VT zO$}y@_rb9e5BNFAdC=A0(O z)Ez2;jxOPAzu%u<;u$(O1)p-A@S7@z%;5=6K|xL-;{ze90lKfuT#)$c7t_dC{PwuV zqKZ<0R)IkcuzjCD{ESn^I0XA)!g+QOHt3z?e-Q5S*_eRq-EaCHe@{I+J+k)N{ubJ- zIbOck9!bA7UJq@0w6&>H@hY0QUqW)X>vB*7s#nBqzb%i`$t7X%zs;PA?4R`^b^Q_5Oy%{e2|-HZd+-4+_=%Vs-Xp5R63lF)uD#V$j? zI|u}N|69+*BsDGI_jF^y-=wq>2*cgl)%p2HZWpVEWAYBAQxgk^gUwSHJ6}3vEUHow zpF-WvWCu-mC@hsB#L;2Yu71{G4TTdGF>Ry8pi1VWx&-TXv@GR=;|00(5JcZcZpL>?Cpx zE^zx#nM&FxMF5XTB=Gw*&?QiPvT8YvT5h9m!FvXdV#XcwKxLPwlTfvTQF5!sgiv5k zs`riL5f=U>c&)9v+Cd;&8V^o=_w%>>M+gP882J=Liuu`tPAz%o%l`oFxu9jA-_b;2 zr@tYoY=0vp6(H}JSvVMpmp5m>!|cth5r=DhXh6=d_ILGRM2ldSLgztMOt|i?q2^{t z8?zMvBduJbB)HpW{-_0MP%&Svp*()wmrcqWkI9?im;CWvJ-b=S_ZYB?HLF{Bt#eCI#G;c(2W0T!e1CtFEpt1XY7` z>MX3Sv(rL;=I6hhp{1jvlSE86ytw21ge5ExheY^zdpoyis;mF4^IG~Y;TGI>q?IN} zLa8!5Jl%tXyS3>st!Uo%Fn|A%b}k3TrX!3{S8b4zhu)zQ5JrkgO3DjT0Rv6nfiykt zdj@qW2IZrwLfqW<(xAlZBaC%(=%k|<13iOASc~}FFoMauzR9fG{)(R(UNzLb=5(Vl ztQO26B(&Sb2JlxK@TPD=c*Mp1h?fL#=zd4N&l-vLKUkzDAvD-dbmS7zs%2!5W!(EKDKpi0IE1rnqeujDmN(+XVNCjh<49ubn#p^9xGzP za4n5z1^F=h`PQy*V&hM7>wov4DZrotoo)FGop}~p$k#9#+ zl4OlSrf;;8u4H6l)|QVbA;KO8fYG^1znwj#vZg85();Ydj(k4b5k+EU+kb16>;27q zi>MW}qn=?*78qKe(Vo2G`0{&l+HCL|FE&C;Ge+A!kF=tYlq1O(WOZEmSNN-W1qDt1 zrVI=ePu+V&8mIQZab~1(zV0j$P{pfJD%W&$;@#cdFCLTaVH85o0 zey%3e+sDVp*Y{rB%b=k8VaMdT`sir2rCB~h_%B78iW(l$mYY=g#ce_6AH`}j!-h(< zPf2k!%1?cVm7ksiTF5++*G)+(^hA3YBCHmEFzwJmy7Tq8UoNpDeKrWxWGyHgt&FN` z?xg9p0kK}N&a1#+=>g4nvrBo_sr^tF4=>$y(VU#dkh0&84-)iU&RvqxgZ$bAj!mSk zqO7>Z#dxdY+05B`-ggAVXD>QB)qbVe!Y!EZ%@5TXFkokA7w5QqNRuBh_i4bw{R@-n zq)FED{Mf4zgvC&-{<~Rml#u6Hw;M6U(Xe^H$5mStw{y93C(E2>V={NPR)>0|`#n$2 zwoEmbagKq(Pfrv0A&ym{Vkvf3E_w0!$iGJ~3qWtGNLNCrJ;pgcI)>oH*X>SBEK z56ej7N2}O6+UNaNDY)6qfAC=Q_)~3%liiSm>e5@i%ISb;P*Jnk zetUZRUFpw*s^LsOgZ4z8ZD*gg3Y|&ITe(pd3);P9;jVujzA*0B2%boRwTL{%T|{Z4 zAm>l`X$$BcZjDr&#B1hA06;ZF{3$Q_B*f!scQ!#y`E$5 zQy7Ct?nL*bk+v1uFv`e4INJF91e!3or?i&YCpyB=QC6wirPZydcozPLkxTPJ_Uxr& z-)AnAwdsEzZoO1L|1(hgs_^t|CC=f9w>~$Yd#CHe&Db|;9)0vo4t8cvmVM1Z=hPip ze2UdRn04*R&m4a+7{CgWc=Shc(3Dbl&K(Cj>&`mobnVgM@!G?I_@G!bnmqG;NT#ZQOG3Afb=mnJ?jl6y>&M# zYm`(}qTFJB+tdXc|0LDjP$(2B|BN+OXTBHEp+B|c_;NTq@1ud%Z~Gl-Au$DOw9aSr z+U~Fh@xjs%GJ4lf!x+kP$62GhzGxB=Qg>ponTUqSa4B9p98U4LgoJa2lXpT0T%JI~ zoJ(5vOr?O}5}LA2OLP&AmFoVzYu+GaXHn^}G(he{JYU};V#PML$cN8V9dL}DenktK z-kNbCe7zijJ;%WtV_E0%H-O)R2VD|R1zh$)inQ5?4kEPwu0*zi8UJ>ou-zG?Y?>|` zzq#Iwwa^;lN^#qnlMWN8b>nF>0D4`E>gWolHYIn6oVU{J`S_eV_L>Jh2BEGV>>ac3 zDe1Ch0|rivG@GL7*mN{B?u@fIT3XHswOk~9`&I`K!+F*u`E?3AN4(8CV}3vg#`IX|C5E8p8xyJTfM42ER!J_5q9Q95Jq~-Oa0QRQ6;|=1mPy`ETKts@1b$l-xgqz;78G@N z4ql+`p964ep=5fun9Kccpdh<`N%3A>y3y3fe0Jf3T|UfC9;Wt9w}04l7n_HRT-}+C zwUg6ovj^nf;{=?Cp;>XiTIdn(XLAhvt|ZoM9HTyI($?LrQEXAZUCHI1ZLT~qjgODt+1WA3FfB9D zlC^Qd@Y~s>zv7HCbzwaGTt=Fe?R_L=Z@i3-H#0vb)g<-Bk+C_r(Y|+O3O}Dm5TDNPX5411%_H$0q z1g(dx?3AE>NEa}u)xR>{G7!&{;-Cla^*_?!L3`j zl4(^m&c-`BI{N!bM4BP5Y2Gk53nFP#-`N`BHf>VuKFy1|H@!*fz8Q5C+Xwdd4G5ao zww9I*ak#NMMY|B}jvW*qOG%sktwmTs!X9^Z(xZiS!5T{i#pjBq;vV6~EeSXOPWw@t zO$fZ)Y*&CJ-enG3uMJf06zY<&JJt5EO<>&CuVInd+27L%Qf`xPkx#MH`x4p&Ow(_* zX#d@|p9$Ce@G88i?8U>2F~B_8tu}wQ#K_km3x9T|p!m(n^S}>L~m66PK5jj=7 z@`u4N|3PO@dXQ{dGY;0b*TSZw*mRQM<{>#BLQ4=+m|ksF3lm^jQOy&$s^O$NDh_R_ z0bM>i>Usc#hp6c|4aB2~a!Xy9CbSZ+3pLDL^dD(s)RN-rQOM;*P|*heF|EciHxyiy z2@~WoMz}db<3>kQso-JfCk74&V|VXt^$`Rupq+Uh#62^4tNboSE_-_;4B(>qMG?YH zfK^MNy3Fo@XQ~xfaxhs624~7ihy&dD$okOZR0PP|0F2IBj*BWYrAG}5Zmql%H(1lR zXd4CuFqa`dNjDyhV|G_no==)6%lP_DY08Ljq%8L{Kza;K17MP`(&E*$)PBkOZ*y;c zl=}q%ef=d>p~zAG^20~`weDgu38S4v1=L6k#l9I=iHTmNyKSyts2X#QKkrXHvuNeC z6xLy@=`O3D@vItF^8>W$)J^E56Rb=D^7t)~_%v9~C5$cWR&5w z97P-gE7oNuTlO6NN#IR0u+R$AUK_}QaB6lHLtEku>{Ida`PUIO zO`{Ng?X&_ZDXAGkUFp_e%NJq%z)h|Gcxu50_t5?0t;LzUDXY*u3)PrBC-eaQQ61{$_Pm`~|(h55F|aR2HGi61ZphH?E7 z1HzQdyTNSv5YqB*M5Nuz7|fJ5)Yt#1H+uZ-{dGM!v>~&sJJnqbi0i5UuAkMxh$ue~ z_w{W)+PXU`%Kd`x`1+dQrNc!HEIhM9W<~RQ>eRmUxPOz6EDhs!rT#}b1+n%DpALN3 zlef!pG)_f-w0w?Ld*Hza8pTGuPGFvE^R2B)(=Uqxp|d0`yaJ_zQW`vivqYrgqoF+T zk=XqAy{Py3`RqIZLG#>BU-DrF{`A<5^N2C#=*1)w(%>{k(<_!pLAZdn%sEA8TOJ*f zkbzbQheMK~gW$!&$RW!0cu$QVNAAA48O9ml71wRL z$IMV~P~qlNY2evdtzw08*@3XU$ftMdI#>xoe?+Xl4ee?)eKja}c$hh;#HJlkHj(Ny z*Iyz*(C*?`_NP?^-}z#eBC!>OychsPN7T&swZ&bh_9(EK#8b zh+5Ij(4DWjbP9QMV7R#Sba4s!y$ESn03ijAn`b|V7A}1)j14{>0ZrIwK=xN)s41J4 zGT!{GNC3MAcm(-ZoW7aH@JweU`X@8Rt!{q0#X}$c@#Ez|uMkR@f5S03FE0H;x7J+?Kd|ZK_7vX8YNRxQx^8uap&_AJwk%XRJAx8z~OPZtiW&C zn%>B0U)ym09(k`feIZ=MeTgcxyTbkcjNmxT(a&ZtVo#5hmuqXyTOo%;i#Ls5Yw=ND zufvQN4HhdqxcEE1?Q4au`|KMdc8Pk#I>lN?UcFrsevH!(yEfnGRn6&_WeDJ-OT$LO zv|k;3e_z2EN6%-w{>kBrBAk`M1YyM^>Qt0)v1^1_CZNq2-u(a7ob9_C?sh+fN6o&u*KKI889K$t$=MsNaL< zT=?lf_9a{TeN98T44sEmVPKZ4SV>-@!T03OptY;0J!|D(s#&L3VZ;PS@ zN0(VX6A30tnw$W6Jte$tT>`Nzh*zVMPB6K(rN-E|Cne95%cfkWfb~76R7T_!(lXI| z&VM+>Oz#KoYjh;|%ic+OsD2P;I8pWrL}Aj;e)@Cn4E0A#F0-#WAWZZh`{R~|FD!c3 zwWs`pla61Xj{PyBHTPdWO1UPZJ!xWA0AGQP?fy+sQ?*XtQJJ(>+x$aw^X8p#uOhf; zAk?-8_5AH?`5zZU%2(+o-Mb(#2`vtguGLrn*L1sky4fv)K`yHLV(^(7Vigp0GO z%z&nn@_yZm2V&ln?-GxJulGsBWCY7ET!|9J7zsBOpJ%ks@u6f}f_K@-jKwEV1+MQh ze!7xR&|j8{U74GGq7!!KF)P1!{fwj7l#Y>$Z+?Jv7n+?CV7*7Gobg!9+y6gmOA}f( zQS5b0p|v}H0*B&+$SyP~_}zLKem(fd&J0m}IdA*@`*&MgUQJESj~_ouOJ9lor=z2T z8g|^s(%J=+ou>SMn6SrWOU;QV&b)l&^W-m_DB@^IGQwxv$W{w(DCH?nUZMJThfFEU z#^xsE-IXjrXHhUYEiEl2#n{NmvN_a@?AKH6?_yq_o}MHlN%WjwT-CKrihs=Fu{ntq zES05eMO{uficyjIX*(~aTJYS9Y4}IlDarqIeWzM@*~6fu?7yb`<9|$NSn(lmp6ffj z>g1I;TI1^zDYCod<-dO2CfhX30+Fm6m3;D#*8C;XT0Rp*w)%?wNAp-v3W=o*BaKpx z=B3!C0=)SI}Z*IK}6g(egwMK z^C6=|B-f*)9yvQoDgm3$EV0^9N|tH;IGFMoff`s9k(M!F@N2rft;*)2Vd@bd4>$j8 zGok$y=I78)8t^H2om_%#4ssIw>Ur>(llH7)#zX-O$XNL~)pcHbNn$6g-~LBN_G4ff z>dQ*i>H-}%ap1L57&dYYB@>w-7K`oe(`-g`ocr( zk$*F}AftNA_53-wx5B~Jdf*FvIws9JUiOF9)*@!1=cXDw4EpKQghY>_;WVQZZu5e$ zl@Zmc7~f z0X+>(J+nSsl5Is=YQ@tZ|4chrQbrvs)#eqXkMEug-Y%bckuJPpIxs-^99-LlR+dk` zqBQH}K^*Nn)Av^NsDEa+W6>B|=4!BOL1{yF{Ft~HNt3dH8-D&A*upx?ZkFsF-G2aN z5(qy<^i988^UBQh(@Ty{@j#xa_RL(o%{>Yor_4yAZwn()_~c}cHan9l6}$)W4ho3J zLX%Y?{!B-W{=ioGe?g3S)ejqq#lN>1M^{tspxGc2%lyR6ze!J{f^=dO7Fgz3S%)+@ zw8fzp$x@;+F1sC6x*jl%w#HZ6>)t>c!_kIX_Qf;t-4{jAZ`kca`-vKsNuK-3W|Le` zmI*(b!#UOp1~9}hQR3@?29MsU(y&T_uEN*52RMPu3-?IOr{_C2rvnOOBglpNGiNN? z2htC`%-3r;c3%d^{#jlTwRaV!!Efcf0uQ7GM=;7eSc`?F*v)h;I&iUTh5ZHInGLfE zSyc-WlH`71PP>Ivt~F|Ixti8__Wuq|ix{$zUVC!IuXJ&HqlqO7^`3L~=@qbZ@IqNF zWA1f4&7SXV`@?#z6?oLWv7J4dae~dE1Z2iLm5u+N00EOewBnVh@cQ|i7kX(dkSiB& z3qHgt-kLKO_6n`=8hKts894n3K!Ft1rMb(_0gOs!D*o%N4pvS~R_5I1bEySl9;a5D z;y;8>h8Pn4E-c>LA|91hy&@wU@|?+twK2|=4_~eK1EF^BrXH14u%?ISmUJGbrdOXX z9;_(#OLO9H-LjhK74RYcya~2j`L43Fplo|7^i&1g==pXi?*(q|fKURAz}PITLY;QQ ztqQ)@(s&!j9wZZ@3p%ZgKKKPTragHL`cvX{4T=i6{bbkIKhmd_nWEM@AFT8jD#NWg zlg%A+T11Xj!N(_nu)R21EF(Xkrj~kdTDP`FP9ox!Kguz64!x>Z)T{#&yiwhskz|-;yc~S4E+P zoq-azCk6b8t|NFJbnF z!QqDf)>{(P(Fh|}-S13Ug+c>o^I#1O(@dwzHM*pYyPBlqMl@aW>*Vl!49}Jzy9L;N z;x2a8AKBq2rPI+-n@|#3>c~>%=D2|$p%0(USD0pCsz&_9hp+C7-sITnB-E$te2>a& zkXzc4DmB}m(;X-W6b+(;STXGsLP<_9EdEjD-DRD}AbacGtRx4u2wDDp%<#MQLp=t!}r z^=r1c-RxPUpqq6ywoj|SK}6*PY~*BFWaNyRFKIRp73+ucg-&Zx$eWLQensc4Ft^D@ z#WwXN*U>W`*V|(hUNiaibYz)9!$#NOYoFlAQ02^C$!Uhv`kG^7-j_eqU=mH~L5HA* zS6o=Nycd9~1mCfy^!depsqN$V5Fx6T?8hE*t7Y|%wA7{R3`xGOHyS`zE|u|3!AZIK zxXSe4weHn^>}F`M@ZY-@{}=O?=mq=V2x@8Rl(=gC)Bjk6{lN!4Nkem!Wa+>n7L`h1{ZMfJ_1XT9xnN@8P2iMH^!GkezWN=!1<)wO&uX?E~sFvu(SySR4L z*_i>I$Ks+xj;U(~N{pCfZNlx=JKLba2nt~QZA1Mpp!#5@JTH}shBo`$XJ@Yf;SFB} zHPLL`W^*kad4(d)LVUV|VlEjyvzhIG3$Li*M{62Ezh*~Mt9*}=PCnYLs4h&v-+OQs zwtuk28#-GVq&r)FYgAn?HXE@d<=PB(4Mjdg(J_gR{=jl|`$?A)yKy8O6)VqA_TzC8 znk+O7AI9tG{>#U0=l2h%)wx1osn#b#Yb3>BxAeEoO@yWs*o8aI8`i1KnLq27DvhYK z{KXQ-(Gdg+Ko}!#=ilL}A1qw|PtaP-{gpW|>@sPQn2<5j#joDibP|a>wg0QsW-_bd zmVb3d$aAdt!-Q#CP0xh|R?5D9X7)c%lIO`+^+2(NBTRtf3683 zr8Q!=kJAZMM{FK26b=XxCon7zS{(UwsT74!IoCdbB6k0d)26HG2%c@soYdvh7xGQ{ zJC3PgQH6zRV6)4Z^`l+79JBwjvNo0#L@aGXKKCV$(n(w%>~w`F4F20FGLzyKnWOrqC|RS^ zrCfzmgu&&JAvz&ckPoeKzWS#s(!5hQrK?T@IY%o3BeoFk!q*8;8p)c{dTHO z=q{}bA)TdCH67c86D=g?H6wqk2R>DxZ5gC5dV`)4I24_o!Q3DFnV>3K+L8d)*vSMq zu&xXT`noCm+Z%MWsj1XtwU2Q$yI2<|br1xYRi>obT1{y@UrIm}*2~GcowV;=V0Q3v1$#qB51}I2i9WxIh(-ew_vvWo4Bna2o1ldq;jmZJ ziBMq8!Bwcj`nHyQIiy%3uiX95a8if>oe`mJ)}szo0a9wMqmAi%|G7Hg!RUfjDh+yd zN0A#F3jz;)+1|yD^@a5O`f;h#fHPq|MU`TAANzqa{sjqT$U#-Fcwh53*obrO*Z`?L zqTJrO+5I4C1QYALOA#vDOIBe}WHhD&pf`M3cgE1GZlv}C89$+(am%_lDhG>)snnLF zzOv5X7>~*QFsDH`NmJdi6h-+4LKAI3B0w(dLup6-BeB5&M}D1*%}-E z6^T%gXJXmj^e>t}KZNUR>%7l)l#M+iK@-1C88X?MQ8nGDNDu?@LbG3sHv`~S$B;76 zo6)V9n#*TG*y9{6s+W`RmbE|yvNU+B#uh*0I{-P^FB7XAitU02ljyRJvNWII8dyMp zB;@xQL`LzUj;UEfGuHN;ii}Ke z@Sz+o=JBtKLeDP3s{SxCz@A}1%G~E0j@B)#5S5+gu%;Jh82bmb_|AfOy4KwruL1Ym95C-6x1ZomF?NH54<#j}_(k0o$iz7P zqo;u|&OO~3S>=|$Q|C%51-(vuUSxC-M?v$UCYE17z|T*gnhc;zCBf2_l@*Zgqh!{% zZ{G$62jlVhf9I$_w!am5aO?U8^#Kl7=rs08-OhMT`3cYelSpd&UJ;4%73=Bm*Cul$ zqoSg^=M6Q=xYGK5r93zSrjRO=m~UTWQbO+-nD1(P?wk+P*fjjlQEoG|RK#xDR1Y49 zW=R9e3^rW3>)2UNzluCllaDx8mr3G)f;YZa#>P+>v{I}O43d{OB&5-rmyF%I<1~~n zq>lf7l_@2drZw5EO>I&_HNX;Xux{Ka?&rApEhh(TVDLsFqh3eWQ%IwOZ!F6w%z#ES zg?sF2bZ!JCDho#jniXb_Q~jtX;fZ2w56TAObh0D?l2K7rZeMl^T%qG|&6Ov7kc=-3 z#)D>LdYJqxzBMzW)59Gd+NPI9jZ!Cp~F|M_M zj}E%l*sSV;t3t1%pUr*D?W}YIX1eD zf+E17`+WwxP?-DpiREL|+Lu?%EpLY(8EzjKGly&T(KpXt*ZwXi@hoT|xr4I*Mdrl8 zC8kOyh5cczyfwFir3lZr-D3SbS7wEte|doCNf2#CU!I!<`Y?J?l!|(gO~!Y)*3E)$ z`kEwlLYa95a0(QDSG+`N-8oR+V&F%L%%eKJNA4f)@3u(#J=hO)2wEM0#y0mqyE#f- z530zCRmU6*WU4TSOC|AKVT+I1W?5&J@sN5VS6Pb$WqR4 zj{TxO#X0Qjxr$DPlX@ln@9?|dckdhb-Z#ekFN2eivv>C1Yp%8CoM%^u z`Q7MHI>LzNqO8^_tx@5j4{6Y~hQ<)tREI=!-I=HufT7XMY~tIKVUZ!>MKQ2-^y?22 zW#&XP@}16N_Bu$FAWHjGIm$S6xK795u-(A7i`zp!KCD5A2wW@(%)5*GkB=Z1|K_eI z77sQnw(hdII_#R*M0FcxUl{SlZ^{)2y6)|pRBDqy$iY{2FbEVGH2U_gAV2-CoHf>O zi$atkOciW^R01$N0lXg5ULpo(#T_KR5m|5UoU#wOMnEEJD1#|N!y`NnelQd!*=|4L zNrs*h@-O^S*-qrlpNPO(a(^|mdU~?S;cPm0JBm8|fA40zxgSRDZNIN13)5kdBO(`82NrIZfEnYite5{-JHUs zx<8f}`a?4+VGwF&cScM6l@k<>!gJlT`mXmaYZ5z7nknd z-q9_0_ZR$cMq;1A`A4Xq!xgW5mutTEp{Irs+<)A_;nL}$jHbjD&hqB0Yg7tJiM9zKooma!MzwY*>8tW5d&NZFmxi!t|As-2ZIzvGhiod}g{0%OYwOhOC}~T>s}_Z8VSd z1dRSfX(e;$61{wlg#Puy0CwUz=GnV)`3$mSv|wP>$6QX`o8-Izv+)tg;_z^JQ&Ur0 z2n)Y6S=P0xF}S&%^kM+LUJq5BFQ)EtlIIH(f9sKJU3s(m7F;q!zZQn@q?a&)ba`Tf zh#Fzl&hgoK3j#&S=(MuX4?+*+@NgoK2JL68JmhI}NtJ@$%?K=WPN zB{3_{z%g6pMb|Iz!W;O9>wGGmSuMsc)Vr>*%l8V7KJxi^2P~06o%x#fYVOg?xg_>U zCC2XgRX_Kd9jkfEL!9lvKKWmnGN3U>LP<%v0+~aiFj4i^1lDqO^#bp96uF^?!cCRb zb7Xf!Wjm`>%c3d-rDaIay({Q{wK~x*HN2Qbs(NcQ%-;(v){`mDUtK!d7z~}AZ1Q$f zT{N$#0b3QOr~A(cD@OSQ@79xYAN08Hbi*0v6H4cKVwQN7IvY`ol^QbOv$1ljzj>QB zvQz;*BXd&dJ>V$GU^m*S4V&Gn)zcQ2u#x?}(5|b0$|@G`YJ=twqu0Czj#BhJ{Xe&l z$mF(J*nJ|@w@iubn-qt;Sp}90^Q23zk}=|y3Yr9k_}NUtc0om<|J6O2c9Nj8^Oygi z*sNPQGUKp$mpkB%KRa}7jwRF=1v#q)qJj(aJsyY=H%*{zuI?*81+ zI}#HDc}QBO_G|o}oQhE4b%e&Nvb~v3&Q(Tv?xc9^@ARzj`BwVuX?=_9RpQ%ykzA~` zSr095O1=N+VW2U^`xZ9(>FS)E>d0a1KxlU()?l1~Y;DE%gW7408Sgg<#CoEj_1}o9kGwQgSEhGi-NJqT+k(2dmwM(LZ1n z*70qNdJq|fE#SYcQ266qsC#T6S~87`cG2AxXOoF^Qj*7XGTicIp6hph?Z4lHKS$8} zx0)dr@4`bYnmlu%;&|1%(8~oFF!td}S^Wn>4~biaLFb*@i6ecCg3M-HF(lF_-xX!q zrdzNF>B;?i+`g5PxjgfSrQ~9*8K(1N`{Kmtg|A%z9UY>IxoEI!eZ6_OTST*^H>hU+ zzSN|afO)^J|BK&^{j=&M!r$=yuVnY&KhwOkCtnU6w>K}1_)PU4(eubhDAXU&YW?~8 zRJjpl)Fo1BB&uc#|re7 zfT)WC_~EbT#V5Ho!>HsouUDSko(Y`{TLR2ohD`3-wFW-oa1`se8}wYp zX92a^-yC7?ZPo$*un{dGX0n5&eRoZWOYy(kd;PX%>&Egq=F!Jx&OY5X4jL&!3<8nv1+cDyTKsGRcZo3o>^Db4Z$tzy-nKpQs@zG28jg9|r;Csdr%>#qJk${4(uPTt+*C5>KGX8tgStd?Uk341I>O4b=B7e z+)XdUnR!|*CsgjPTfSecJdZPC*v-hVI8%4YUyP}1eZ{^ryskDohKW}F;|qOVZ-aM! zo7&>IOd{DyH;elXR7gBKW_aTANQkk+^*rTlrU#qUlzGh}Rn>uv^u3q>M4iQ&VUS%* z7~$^{QRh{C>)?J&$6)i*kNGk>pY}41e&=3W z1G{M2{2((>k&UWfuew+vCHyVW+y+I#EVSAVvR&$LP?w%FyYzFiQS-yEx>;&1U~c5H za&`f}wy9Q4^2*4#z*?)X*qOy7$NmmfQk!U{)%!Z9+&c9{^^j|UjZy1Kv%ae1z?Vj8 z@EAy2F2FGkUCJ_`k!URlm>|~3&&YAvf0sriC!;sL5cHF`bW0%s^tgEDB2%_G%NoTD z;ksA~W)_5)3&e4RSs}1W@&&@|CKVsb$;XSt4bS`A6O0R!(n4(N3g~C@h^aajwwyiojq1%ni3XS^1 z1(lFl{Mp=OO!#myvR6U&UG1^_mzm6-zZN{)tYjvN!*Y8uO!}$#r*C6vS$f4H6StOm zi%j5!;9S(H(vf}0$8}9l>)I;F8_JHTJ2^Scx<|_~BYSUuBa%0G~_36 z`>|ysyJq=;hHPM+%gb~HE;kh~oIl^(?fDfHTqDYsL3jvB${UAPbrwq+bOdl z*vvB=0G-X*=DC6|vSii4iPD>t8P6tF3L66tnSN+A_zKcfb#4_dv$T`$Viqz5^f1P9rD$& zm*vaxEAzha?#A>|8Q^?w{Y#U9O#qL#ib|oN3@OGFqS(X6MfpoC5)c+gMi#){hhBrF zXEn0V>Zvsb`o4Y?SfSp@@rO3+;Kbv zQUD^yz0T0Iw6w8pDI&Z<`EbZM+qjh%c0^j6ZsPbv9@HpWFVXa9rj7TD;@_RtiVTvg z*-7=}Q+Uuw>Iv`gKU|Yj?6Z^aZj`Fpa(fNfoN7Dny*sPn8g*Lq#s@G_B8coR0cowivtN(h)X zmS!+^*f-+mZ;H@6@&eGP3z2ht&xov8bx6`N#R|knDzLyJJch|MD0KG00Ndv|Cw~Vv zi`sKyc=+??22sY^R*jhkN`0PitjB>mhkUbzcjxFN!{}{0ttLX_no}~rztSJ?Ye&T( zc555RI=MFKlIe#xmxI02w^`kT1JNk{f@~`-ELo!3X-^fy$(Y9Zyh>xl&Qo7k?V1M3 zSeg11(Mw=4sdA-kr1qpum6SI#;vu)W0O)9%a`vO}+ z$+0I?PLBO&;8p8fh3oMTpAL#8y<~lRJ8`HaB0GNP(HO7!h_Y{tz3@B$nD!QK`@n7+ z3RL)^aynQsta9jsA5T*SSx6&puOx}h@gBwmEb58qh+5yQuqx?lamlEhteB)n0qFWn zV=qkU_~TwrmWXc?8$AZ?BLBE?lEFQn(c{~8FjQn5?_SA!O8VV^AdGjmwmO?h%^jz4 zR*20XEWwvy>*#G|VoM7!Qk#5iWpd(~tK~G4%4UEI_SDDt_RdG+rN6Wi#(y$%ctC0w zwEcAJOgFS~#)jqU(2UM98u8Bv&W_3L@39gry2_nHS9Jth{H?G%q$7(@mbcJHr+Gu^ z{iT+M-m?RGt*_1Ab91-S?3RF4)sI2xp!5<+V`Zh zrtrn$0cs^B&3-SWo)3BaC!ljA7H@u=!Ist+%yT{lm89SPbdCNI7!bfvu%aYec#F@E zxq%{vVM@*X+4j+UOvJMU*Gu2IkJ9OmL2pRvsMRoYd!C&xVDt~C+nkz^V% zQQh7q@ikQ3L*wkb`u{25s^ZFrK;FzxtbcM+k}bmj(!6et_{vKa%#&hpyx^CAsl0B~_K6KFx0`_aMZPznXb(K0$u@~Wu8SFPM}R1{1Mh}d+=eo|Xi1I^ zfw>tQPj02g$6o!2&4pqPjVA+32iS@&wbqZgOMR`AOEl*0xh?;dx;XU}Jj<%j$(BepLa=(13!uJf@7fa227D4;E`Fkc2O)Hj5KibDj!`T?1 z&IaF21ki*u-1v2xrco-AQMyk}WcxPf@jo5y%MtNCzr#kfJ;;T%!mngXg{&L3lU?&H z6+Rv|cvR`K*!0@aR5nl=eV^tDeqwWJm!>yKKEHeP+}nKn%=O|;D|M!yeCgs6YvBWN zSw3^H>B&EO4A1KQ+^Of)+oSAH{eW^6KcNx}DC&=#8ocC4TJ3mk&}V%`g?IF z-0keRI5=2G&?w(w`;;rZSBNbsTlW^bRlL&fg@wPuX-ZXw0V~q!v%Vq&oj`{S1f0YVoiu$yzt-En z7p|^nH}oY49CvORwktg!5Yf@|v6z?u#>>q-Vx+@p<0{-YYwqd6{n|Fi^R4<~OuCO^ zm^*s(is4Q=$FEZn!@&Z{rFnB{;#RvE4C|J8R{c*B%Ky~@6qMzOI;8DY|J`=>k1IRM za7g@nYh%4Liu_{KDFQ-Y^?Itw(h#2$c1W{eI6Cx|4gn`5&uuinVs`^rwy5h0o-rLv z<;u`qi`Z;FRernB-D$MowHt)kj~*$1E;#@NekvyNa9SKVQ3uDA>JnC|^I6z3>CYT7 zmBYe{&ilE8V#hX7HSQOK+<049FI7*70J>*O{Mq5gA4$*KFzACyrlZ zo&!1w@b%D+!$r}FlW7(0Y-c(VVRz-j-Rc_Mh9c!t>gsI4%3koDrQnQHd<|C4NR6U zQm9%RBgd@wokQQ2HPvJRa994du-9urG(;8wB7JP&o}$? zJxBG-T2O5zkIz>}x6>qIy@G)Pk9h3sUo*oBw!uLYt7tOX2hZW`CV{WUPJJFOKd zWYjoTxs%hYk?%<66t8i(K4MCkuz)J`I;RRcF3qT5vCF z+r64qRRt8e62tA!Tol}8*Y+1ge0+j!kV0gu*EoBr!4+NR1bgx^d%XgbtB=LSG(=|Q zE-Wn6Y{_M-p=3}~<(b3QMIKW5utH9b)(IE$TeUU1JoT`NYI;4kxfo$t-AS6rYz1Ej zE<{UR1%s?jvSv1G0Y0+oZL|TSV{rZ4i;rY;09`EF;pME{RDwpoW&V*?dL&z@Tdjr0 zm(z>>P_bf?I4Rli7C9l~+_}6~EOlB%3_pKTh!Z4CevE^pvE?K#6=v^IZ={{a4H5x~ z%G_Xn_c#M37^}0gFSNuEDl5y&%P5qse%cIWG>s=W>*&whlE}c)kRvl*b}|S%yy_fK z$|egpif5KnqVJz9LI}x?kX%VYYqGA8F_l2fy zHCiL%np}0j!$kSgFX$wD$pP5+b=Pg^(kItW3w_^gi=eu(9#c*(fuu2QFFV6xTG&ut zY1mBHfDys~j;FL(XJS3%;10Kd$aVt)Z2Y!+G^JA7wn9ZLqZ%cV4791G|CxKwJ4p5+ zIfm4G=PMgrIHTEkH|f|)%lY&vQxiLPj_MZfQ+J_yUX$JPP@$0`VAqearOL22?fUmj zPv`CH8yU(Mk1?_t=L*s&{P!3U%IT_`cj&jR^eTl-6m6H|$HwaASEy380doJ2+P}A6 zi}--5TRC^*ok>HUL?wE>g;CY6ZKf{jE0slH`9Zv|+AVp~kF%!X^L022dDymqgKRi| zVKBzosX#5*mYsY@_+Fx_7tgD+Y9Qx2Kpj~Bytd)NAust~Xd~q0t5U0#)e39;v#Q_- z;7&EC8~Mr4jhvh!*(NU*ZKfjx@YhMR9w!o?MQ?c-%tazo_B2s#9=h$}V7EZp6eyiN|U1(0s)EugK_){y}fWHIc zsg)^!(aTt!a-k5Lm4;|s9_Hc(9*%8I7vT$$s|+VYxvLVLwlMBK!Xj%t_>=0}K3JXQItVLQ4yIAV2Y*#eZnaH5$OdFEB!cNO4qy+(oeJ zFFn6_?Z!tq$KVvh#hNyCSifHLc)unacBFe)x5Z0h7MD%q}gg>Tz$vU{!cpInSCPSRo5+6DN+!x``UYT?oqifiSd$`1U zxvSo^s|phT`(H4)P8n5XKkr8se)D=k0?a~UIp?5Ah(I&Yj6INTRfXqXb*{TC!(+Mv z#z<~2Ex2jqX)M28NY<#Wj(NdvAZnYp|KQT(EKUWOI(Iw77ch{S7%5-;bhNjG4WQMPwY-7aFWE;M2Qer0B z_sHTWo#bX*(+%_>n5pz(4qn#)iCTigP|A&Sl$i_*elcF5l4xitjvHR@deOI9@eT1T zqG=qHJn=_9X3zMiaxoHkE+#RcmDL5 z8V{Ub-b}MLW&`A?ynau3uNJE7V*px$fJ_k+v|J?3gtxbMcsRe&f#!Nz-k}0xqsy{d z<+L@GY~#wzUW20#kb2)O|0xlP=O(15CMfhnG_4$a7<0qM#`(rs0b*Y6#Nsp2ZE#cg zmWGp*jTv}&c*M|*s%b|akIl}`3K-^V$PwOyl6XFv?<Iu0jSH*x#o~arTMt3c7I)Dy$N}dP zJl3i?Wticy+bRiIRSxzOtDf(Ieo56!oxVAi0Y&8|-yt-4V=-5I`%!#<|tnfI# z+K4}U(dXY~;$@vjqd-v>m>HWoVH}HqJJUa$uJlDN=T0zn;W*a*8=fOFodtoSp+hUr z^NQ2-Puy7T(F->={h;?Sy^T zFVOGZ*S8mJC~7$pN;5N1d=A?d7p2w5t=SDx!*0O97WAdhml{{ja`B_HdKa<=G5m?- z#$V2!@JDo<9?ZpxpoXRK9U$$lE1FTwA_V#0(wzo1H z!%hU@70%msG2v*2fE2Ogw&UPNfZEOB`f+Kj)2hLd%#U^Y>3^-iT_C9~C;NA|%c4fY zj58J#ZBBA8?Mwn+2<;o<`!?O6)V;t1n%4y2-UfFJood)Wbi+A~Jo(~9FFtNZ%toqS zsb}$OZGyP4{nv;&0e0V%>$*d1fU3Jv;c#oU!2KL!q-`&~f*92}?qPg-a=OOz<6i|ICI@|4mrf{3AdR z^C6u`Wy8E=zOjL0Fg0#}(Acy>UamAXe+(ObCp!0uXtIuh5HstEf5ybuW z8Ls@5pI=j{Ddu0b5zH0vO@u&2NhS}4(-TkERLtMJzWBGr@9rS&XDVGb;*zD%&)QnO zb_LD&g-W@w%Lw}oYAf=Djg6(nlXSx`%Y~d~))95B zQji@DYKchwIv|+6wmrae0yagXEJPNjn*`n$g^*GS029$8JA#&yiUaWS+(PH1I^-%bPHaDmH68 zZ*G10B%$?aYF{v1c94+hdx!p!fLPmv?Dmrbm0P6&y0pA)4P^2sfR5`Lb@D>)xHC}S zRaUe^Nh81^!9khhIhgi)c*At`cI>l~J@Vr8Bv`!h4)<-i{gRwM#m6*t$hVyX!12P`N5PAP!xHn11ZvB7@_jXl9J-u!N--Yc!=sg3L` z84yb2t~Jd4WvwL+h?I1u`t9yKw*nW zUtg~#-;j~fHaS_FquBMuvlde6LD;M2k~Iqe9{9i->Yp>uKKE;C=Zh|u&eobW@zn&gXc+F=oQ7N9B%|BlC5`}mfAdLi4@xjN_1@rJ$*eVlv&JW4!i6?t!fuy=K+ zxSNGzH}I42Ez~nv#QC=$QZk=6#G$=7P@=FI>j@s+L>RSsiccQS&Ofj}vmi`cE}$dR zSQc1jf1Ymw-x^`InJ5-y9KB6{?_pFjkKk^`IqIF8luh|i-rA(nIHJ4Bf_z0Tu_AK! zxQh9}c(eK_=eF#bebI8|+gtd$$yd&|JPm8Yf#S~rR7&3X&Q@sh>w5SXPT=5g6~dBH zV`iD6e*3}Tb5t+4MUv154+dZKf<*Yu>0*hc{@!UF10&R0-p_FX=?T-bM87YIJlp*e zVDeJx{*XhnB%y~XB!@}g|4AjA%+dQjx;?1HKU4djHLY_^ashUW0h$syaCFYlF&7Hp ze}<--YgM(iwGItx`BB)P|LJ^86mZwrBretZqT_gM6=HJH_z~5QAh1W}@ zm-D?TRqFdmGkpy?1%*8}5veb!J2rO-tZPnWCq6}jaSkZHhspv*hyn&*ja&>x_|Ss%pw%5@k%|y|Z_mm4p`IgZy>}9S?{kxr z&YXci(uxrwQB+=+F=j7Tsf{XvK%&T}bQhBAUqVz%Z|`6y%={;IcU_xHRE$|JN4Gfc zvX>{3{zGqM1Sm|AeQ~hA?+k-gbE!0P33)Qm2){EQjOZ=}cCN+hvMjNY@_qC;hb z5L7_i81!T&a=zd%ntiI7Jyw%K70vUnaOZYIl|AS7BY%{{p207l4wuq9z3jb z#oQ=We66IYB1YPFJ*24kl~s^+(>vEgd|adoH25{p%qWAJ1X&r8Be~;MU#nQnS{RCM zrJVjaDNtR{n2KWxRsQ;Q*+IeqUcfWiLg78ApHL$^Z>zpv>~xm-qgzVX#NN*mq(tdS z3faMpcj84ESsXtLncK5kDEY0dygS%=W0n2lr?6#q$!alKG7f9p=p1{<(ks~fN5+}+ zWZ26*I_ccB6>|6rGuM%IHr&9WI#KUSQS9lrzG7{>Co^~Q?VB4#jP^NKq);%n%k6>s z#PbGrMUuEj3;}~@FioLXtywk_G6&)?a)o^PRZ1t4Gx@9Ld}gc)12O!xTr}4 zr#Ay->;=md<_}cLeUi1gY-j3Yea@z!FXDr@2Jr-<+WRH3UFEtr^a^lM9UR1enRi$} zM6nR1LII<>mi7L`TSOSyOzsiG{i55PZJgS+Fj{LHE&ujK==NS* zq5WTZ$mfH06Qc@}}K_6{L2dKGj=0 z87P%_0^6ll?sv4OSb=$w`8g@IqK&xuc%4}rq-FQt8bA8@ywce=k9wX zJC=JT`+X_k22-AoL50MmAK(-5%=$`>vTS`1Lw*pU>+;I1K7$@KK}kqjWk;oYud=kZ z(RR4X#SiUgqFjc;L2l~M*Kv>Og-3pz|9;ik4XEQpM~jYen;qFQ5SFz^ft7Zt`!!B@ z@iYVq#SzC7k!(PNXd$@g=VTAAshSL4ox6CO@WxEb{qn8; zVO%DI-dy;2_Zojp5dR#_#>}`CkX-MpOuZq*)<7!DagD+j(pm#jU(U!hjofW7JU_2p zg6BJG0bs_(Xg6>uxp*_RHdovO_+UHras!WPc|YZsZeVLrV(k54;NVb+(5|Jlc`7H< znXFIVTg-QJak=c59 z^KYnC>~6!_G_Uz|2P7hNN60u?;RO}ZZj!<{mqKQjEd2Z;+#hJEI>yEWJ(l83B3(*! z-Es|T*7aMuzVaFo7wAPPWo9E>^~u!g}4J8 zLY)K;0xPGPMvJ{Kbt^SulCg@{Y4a!g&)0I1LLsv1xYps3-`qvGpV_VOT!-=W!Evrs zi-I$z_s5-)DaP?Ga%kYFhoPbL$u5KW`_zWRwc!Fl*xYfl`30y30Ey9splTS=t)Zor zqm~a6;0z25N|d-E5D!<^$X+D)sH%a1fmS2cRD|bP+7534`l)ZX=-wBD$x&8&np1kq!NmD(BP{tqL#5w-!C)i+zROGYh2L3%a=sM^JcIA_JTL zMm*)ClbmQCS4#I7)=9wz6&^1F+43)=v>)qTHrAvw!%3V?OicX!TM`o!$5LYSMud}< z67v3cmI~n{gvM#l`DAOH0|TJi;lY8p5@Ff&|4xLCZO~Ni7Je14SUtUu^PQCSAw#yS z`2w`1MVmNLmLpj_PX4@*C-I#bToF8*SGz~B^f;vmr?-lcCg1SFd7 zK3vwH=H7mO>xOHwXuB56kt@~T6+0MwyuZgd72#I)W&-+N^UO*DEr!&!JLQkn!U;Gv z;ETmSzod;|d16cxo9KLinso!2E3xNcm)Rem01O~63kV1pi+Elgm)!~W9AmkS{|Bl{ zjs;>jKmv+ZX2YM^(s##ayK9kkSvOo{CGvvE_s;zRivGYN?N|n^7W!g1%Ses=^nPp% zu-_iZUTXQRq9!=z_XxDVZ=~r}!CnD54OG*+OY)WbnF@CV1$kG69r(?+YC)DQQS zR6bUDtS@KfU&J=7K_5r7P6@n6zADPKgaZazk#A`uqoY4eDBP@^)9<2Dql;3io!RN{ zUDQ!i1wmKL`04X-Jx*h^%)X#BL)=~UnG4K(O`x3!KVpMEoS{kWGC&W#9(N&%N$3SP zgqoQiN-i?R$5;Eb{6#cKPt7;$442M4u-s<Z>>Bv{#-SBDXd?e^3i>;ft5 z`FByM3Bk>l{(|e@t|vZnY+O;YDfw;BcZ-O>F|>kf()fjdaHF>&Eyd2}Wc~cwm!cbN z)Y;;*PvgyIUoI+%s88lnhl%mQ;TrG?un5f&%PE%HC?5Fl*4zw;rMAwFH>mxf;=+3k z5Y1d zf(+-4{i?nY{1y$IQ6B{?rVdolmTiWZK)<`hjRFFn|5{=&pKtS z_M+MCrQH{aIHj%lS3Z*qtlTy6Bcnd!FWe3=jp5vi_u&4E>>U%i>~345>UIV{%l{N3 zXP(CDJE}7xzE!Lw-TCr3LKy>r}3w7nyg^X05gjDqIf6PMtYs8dk?f40FZj;o|B@ ze&kjO;&XB|U|Z{`_#H={#TnKuC(s~v;uy%B`yQCfsQCX+S%NA2O>*Vj|mjhdJ0@G zxRAE*d)miY6M;mK1=)K4K#W6w>w1E*OzNkFXB=FBuY&<91RlRlkrE;JB8YseeDhWD zdXEI8pjY-_BaBX@Wu(2IO12k*ESh)PN71~@t3P>UASH`m2x~9l`s<-7==Kvy-#ZuO z<>*`EI`nZOLaOSKiZtnXO7)IeWShjKfbi$L`aycE^5P zv_+|+8_lC-h8;bm6p8*F`-P9YrQz4IL4#c|gOvWC)PMDS$L3mb;Jm30-k&H)O|<*o z#icyBv1Ug1PO-h)1AiKP>F0EAb1^&%rYjI$cqsw;)vPKgM)^)RZ8-m;f@`pUggGl! zpDvk6*uy)A|1u&IVIE7K5RFl|9h{c>CwMosl}dJ1K&uMok)`0pk3JfLAS+|e%oBQ* z=9k!CkfuSjD*_=VMWj3G(tRG~idD(ixblWX9gO4c1|X~cqb&p!Wjj+0ksy9v5d!A0 z;=igv`P_f$=e9l_8xt=H@Y{@Z{O%bZR>hX)0ssFsbiSZ@GH6LMuSpbhN|4S}MTvt+ z$5#z4HR0%lv73PsDC7J8@l-K@Uy?rZI6V0Qb9v!)MP8abikgG&40_NtS}ecya#CT) z0g{)#K50hdop&ujroVQQ?j?iGbA!09sVQk*R0YVw795qyff|B>|I!eMK*{1%qu#&^ z|I2tKnwV(l$GwlAf zd--DL3h|}q4bcZ`lpql`y{@py{?c#dR;py13Z<@Z$%Nyj8}bnk7wqq-D@nM!ON7hL zrMEHlrqT-7ANH7UQ63@$2Wy&|&?h$$+Dh~SJM~CGz=7!V<+y$YY^NL(Q8PPE{fIM8 zWCj#yPC0&C{Az8u&!eQQ0rlT4U`Bl^z-;5(EV9gq9ZB z;B>HqyrG%c7h`#xl-=E;EJg|JLTDg8R37;*|DhpO`wo+E9)XS-Z;7RF6CEtZbTe_l z^V3`dU0kkF0v{(TUlxJo=TH4gU|gIR95Q4vH~N(R337I0WChaPsqDkfj>^yb@Uv#` zeN4B8wLqfV=!k-UGb@+g(Ox#9P(WIt-sa3Q-m@$gZ@KqwmvV;-;N8eVjzs8_m^P?_TP_4UD$rbedCnp+p^4Rq| zH{va~ud0Li^XHGo#zsB82N1}vT0q^)*1WtPVX1m4OVujeJoGj_zT=32HKG4ZH}IL) zl>Dls1#3+c6bVo$-}d)8Y}+g#;p-0^xwZy@946Lgak)u>mV3HHn9td-2huI|Pk`hP-dtsdyC<6N2sq941EnK$yW($o0BboM>l-lUes=~DESFkguy>J4D( zJayEI^6lp2Y=-WdfHdJg)|#U43$gp{LHtm|$m)o&`y`Q#4$rlU=`23jDpzM<~Ay6VppiR7H5Dkhox zh|#Qt{EVar-(FhVJod#z$}R(%QmJaoD2NvD$EyFHoMCn?ed9SDp0qZX z@dEm@#$vgMOSk4RnRc_U%7p()2ID2O|+HAv@9NxLH6&qq6BlJ^Q@#{^u*jwuBL0f~R z>@<8p_u9+Jp6_cN11S}+x$ynjyzRHR+(t`%Z!D%WK;j?T&*!{Q&^ew+9M=*oZ z^_phpEyWgrjrVJxJu{jdcyC2;rXIMQ|0Ct~O*A$3b#%$7MG+KQQ+#SSh!Pp%;a}rrQ`l96{PL>wJUWLhv%5(B0;4Ye{Bo#1qUCBN4!X2Ss-qjBbb4oQWRIM4dv~PQRVIlwodFIw;>7nNT=05cI)< zk5)PMhM)}(mSg>a^Ul@chuT0cC4=$dvfk)usp3RO^I=3l1m5EB{?f0YQ!}YJfgUy*Y`rB$!;gKF6rf!JUkguzu~6kuz7O&<>e$EZa0xr&Cr_WDS}zJ z@Si&D>E_7g?(?x7-U*(ULU+&2Mx-_`<^S5&uMpDAO}xpAsO2_paxTVwmi-hHF}Bw) z#p}B`5K46N9>}=?tZ>KVS+=;Z{0gdV(Zw0!^sFjZ!uDF`!D@)LuO{*^i2+pZ0Kiw$`Z6>wKwU-qba=rkean+ZyjH$gz-6!dv61dR^Va z$M(|;aUbMXAR?c%|JlqWkG!_B^gb9V>ZnmdMAS%NBeBUhFc>Rq*r@iJPQcB^sWP;7 zF6wdPDVf_^pCIehVcvE-!m0s=D)oiN&ZP?r!;Pbdil44n=b09QTI)M3jEbX~(i_Ysa(Zge2gs?Yz$RJ^_l{U*<=cxu4{#nZ7`$>fU*u;^_c`ZL% z8r;V6Cy3yDg^<%^E7Uk8i}$7`&fhEty6~1mA(z5lr-kX@%kLr;G77*atO{G-%+Oq+ zKQ0>$=i_Zm)2%(2xA4WVr1E|BAUPM^I{@s2PHici8?z#ergKrxd&Todsk`u<8gL5i zYVV}|Y%B!gr-zUIq^8Fu-T*s4Z0?>e5RgpqvXlnX_?pe*h3cbPmhCUjw;qYw?PO|; zlm{xzLf&PH#QT`MDWsA}^=f-Eligom6?V&Vdlcd0@Sc`IclaAai@|ZLMlY(r5%>;Z z^JNmK^?l%ht*_%>FdUA2<)Gzwk6XlR&MIC1UQ-{@^sXxAN)tlib@$qd_*1aA`)han zNa)utnt{A;vCQ53xaG@QpC7^*hN*eCjDLW0oomODYHfXoQH0(092AO-aq@oVMuA2r zS94DvzC&Foc45$(!0IQidtQ0Hz;0kEm*O!k^mM_!oofBbxB0utY?u?b>{YTm@mmHy zD>fSf%l(F5&gOttylX5*J(YlN*Hp$mFEVVDXSJwz*shpSNI4iNm^|lc@J4xVt^8yR zzYXFOnfiEQ{cP-D%jzuxfpZ zl*+I+0cwMxU~$6CjG(bsme)nW^9#08E}b(4=hKC~`zPa$(|(NVlRjNxnog|*pEO4_ zxqL!#*49h^_q86xgpHPccWv$bMFFPaCkM5y@Wa&dnJ-SB^juV=GJ<`xdZKIGM}p1# zW?tQ%N3CL-&JLA_RKyOz+yHATXN|iH>!Ye>-{6|MA3A3mxu`KEJK+YCbMooUtr1iu zYyJZ$-ZSZhK%F}9Q2E^AJTkbMBVvg%b>?_)FO0-UA9uQ=%eX#@?HPUcFh=RaISm+f z#wvYwU4OJ8`)Vx;W1MuW`M5YH=c)*4<%qvBqzN}e6-taClhwfK8pLS#S^bdteYF6U zbvl~e7AH?v|GoXTjxQNYU2jUcGKOl>*f2|-gXHJ`P$4Z$pbY}!zX>iGb?m7wQ>`%^ zHL^WE$Q~@v+nn8G=>C$oPCKnOub6f*=&mAe`g}48FddI#)iO-paZ}JQ44?oO7E#Yl~ZuHo{r|)o6agUePBJv^LliujP z6!My+&6$>qy#&H)@Uc96jNRpYDW~~20$X*5?xnbf4prfwQ`imG&{>Mj$Lz530*T;Y zKf#NQu+InZi_;72%zCZuUgqm~E~K&`8`&7|VD` zQ?FAZMARd|Y+{RU`$qMdOhzoksCsCv*}AAOwCQE-X2WS={)<|b-Cg!t#d32sOn+m9 zxeqm(++EuYyPc)EG zjC*iS+ca84N@$n-w3)hXFsJyzZ9E+Rrs2+p(my00H6VWrSYgDgmA|Mxvg0WHn zQ@~<0^O#s==$~p{U;cA=LgHj{pLlT()q+@}O;vi!3R&;yZS|vbG~arrPi2NTQa`$o z&(WgcO69|)z{I1I4Gh)xtuH$(1c@+HoHdNBg3|~xg#^rT*_<4{h5I_jS*{&GS`f5eB!|j`TGxpUKfh%zjCh_ zzDvksjrrHe2*qdHtTsQO8q}?1Vf1qK5@S`(H}+H5n+miuBO@Ih485kf4m_TL$BFVD zoRH*`Di+dZxfJNvC%ZdlBL*zn(Mf;p5)-|1@>(!E9z>7!Rtgc9yDDEjpcETQ}A7vqM z$g5Cw4wCn(V|wOQt8M;lzvS}Hc8rrCE=})U7=>vH*PS2-Xe>tdF8GSy@GB_3cS6^! zrya4k8=B9X;S%e5%^Ez(6ffpFaiO5q`0vN=#VCU=Jxr+*2S0@MgCL3gw^gR5r1_`! zyn1ZnMM&Og>hdY-hX*hL%r4cA{~D4?wa*hMQ42j)B6{6WGs~OHB*Kr1$Nlg>1o)5J zbG&PjPrQkN5g&~%u6P@W`9fDLI-55qiczhdU2mxut7QA+YuZ-U4R|k35@jA2`hA+# zuYGdHC5n!=uIL7hNATT8&1NQ3qK2tsI@V`0bJcB1l}sADc&(dbc50T;8SM?{Lcm7A z?>O!K)-ut-_|A3N;zM(-7c!De8dfQNZ8}q#tX(uRnQ2dLOy15E`wvPFU?#(4P4{T} zynI{okX;7mP2d1oY86$ATaZEho9Ou*`0BCk{$QJUW#dPU z5fTnEZ;eRM(W+iqn&F6NhhLJi>O$8lfc2&+e2Al#P1eHLOSbhe##yf0o1qv&hT1Z{ zE@6bo#gB8PM?@2(_w7lkJ2F=_gmwBSxs*0suRn_jEs89@Wgb`|z*m)cVzDN$Var1H zCgs_e0+Pdwx)OUE+zOZ}0qW@&O>}^JQQo|TF>s);I|ju7-4BepDS~<-)2K>(uuX}< z2krYm{!bsP%hGpIU?AK>LH{XaPmp{9+9=LV1-6!DBnLk6R_7Y?^EJvCl+DwET~5il z`^hdl>ah9j^hU6mgA&8%oB#j-u8etKV1xwaX-2hbb1|#CxvVT0_)zZ%X8VeO0shQvK;`IYf{3`K#tENh zELRyu8bSQ{8*m*O7Owd-7WSNwgRWVc)ju%BBFB(`je*foMKh=FQcZ9XHGhWeTSRHV zjrYME%1GJ6Mr%$(We2US(4HePB8C4Z?rfsf(~ci6;q&=>(lQ*`E|u0q>mm@g$9N>y zEGBfg``b|sEJ}tG+oggAaam{m7z*rNxu-QY8^&=nL?V&LP$2RiZSMleXLFwe{pP50 z#c%PRpDHDxpzmwoGXt4_Zf;VVFv*_%#L)qAu3 z0Pn{B9e`K-)=vWrwvszY4+IK;0}$8!AZ~8?R-&`>v)-t9V6v^7MpN7EK`O+_#?o>J zKQ#IjdBN7M3h$8ywCWRJTm=Y2n_gA0s9?Ay?WgW{Sr!o$DDL5yfolt4PIuGGu*`z< zz0r~WfD2;=m|=h*v(aZC*=D4Ahk(6!u-q32UURiHax+rKba>;X{dzxN9R@v@ zI$ZhOB;Yk-hW#4u(J8@pP^rR{Pp90eegfxMVsvD;U8};YUJu zEjwtsfB@8f_&A>Sf&e~2P*+i&A*eHNHsmw&z47>nQ$I32P)n)uF124=xxIcy<76OI z`CYW)L(^=-y4kUNN!RBAk9}T${`1D+L>b#wip-Nm0EI)>MiiysMmwe2@#hDT{&q7C zPit2I6Pe}UD&d?k=Ms%$n%=)7RymbC0Y^K)7UcYFRQ3vO#6rG6ga26{FLV8J>Q23h ziSy~e8QgK?TxuKABjxi%sP+}-a9TjBY>@xDT6G14f_znfrz~ zIh8x+XFX%kM;B>D--ae6FLbr(Uv zP>zsmK+#|iTchf;#Yf;)afC|u;}x2ZgVZ0F);1-Zq0^RWLdJ&>Po37Y*r;Tk2j*I? z-ax#+_r;1@Ufw>8@EmiKut}dcYL)sfO8U7@)1PS>LCKco`Lw)V28kC!YvYP1%1OG0 zKOZ$T2)Do=!;8kmnUfa+jZJ-jm;ctXxAi!e-;6f4PGx20L+D2q%x?4xalt*2AmRKxpgIDQUWz~7T82*q@wRFlRvsO{zVAfD2 zZZ=tZdu-+;z3Tj|S1Qyjz<#C>cLUySf;&G&c|P>-_=E4U$|v03d?esKR{ZA-8gdMn zrZ_8&i66`Fqa=Q#@e*Z8xK+Ky88MVz)p48{RPSO7{UP)YJ^#+k-`~3Rw_N2+b(316 z16buv?ET!GWgDIsFkcUj-k2P;$6Li!2uEyfGOo?It^f2ztJ$D5pCh@%Q<2otQT|YH z1#gFFn&ELfHh~auuutmwKzOrxs{v?8&fbD?Xe}l#w5zS7pKLR`y8L#U+5IOlQ7XXB z*0*8;f8Zvfp6)US^84;-1OoMYA~mm6R#bq&;GT|-sLlq3NT#^8D$Sd^FQ_!XZjO~? zdKz&o`}+DSeXG*SQKPMlo_Dsk&K?$h`c#(VhB7ytUUNjxQ1ku!$5xgDr9Xh|Iwc$s zxp~;@pnzVqLiuIx6n3BZH4msq{$tKZbuN(x3#m+Saw%Ao!aI|w861%U%4QzEdBRCt z?FN-R5u-$LP=!UIZe0@>nM&}9n?_}vL6K1`hj&X0iw1=H$Jf27v?QcXIO7BQI`=ce zmjb3^Crv)c#82}$(Y;V4u#X@K=oz)ZjcE@hN>QvOp8!hYm8s)#Wx5qqbGp^n) z*HudKlRUe19SB%O_-vm;drca8p=1Fg2m1)%xDYu} zb%NeX4GU8OPbi_^EUwJXZ!H$qJNlJr=*7ZdX7)2dLGlZW3vj@>;!1xiTTwysb>)P_ zhX?pIYWkRZBSG0!!rcA}r_1lI9`5+_Ozm34w?^)+wl;Cd#Nw5G4q8>s+$_(O1UGN9 zq@%Rd`iW;rExFwNYYzBFp}^nbDLv}AxZ5V-sSfQCraTe$GMM3vc&6z9vj0x-4pN$| zTzdnL!^JoQ?|k%0OEkqW9UTZ1YGQKoq&ra{K`1_+3RFGwOU)!U}5rE_oe^HCe$U_Y6~Iex(s+&p6Qb=E)pS67z6c_q#hd(`Qo$X z=jrQ)vB*611W#t}DxD5#-2c|DmA|Ji0W$h*sC2?2KiVu_Z0eH1^ z#2N@uZEPjE@1SVPTTxZA*3ZjIyKJcOqUTy=eqQ8x9`{{{t(kr`U(eW1K!mBAOqIZi zv#h+Q5pJs!|HjkkV{Zc<@uglI>-UjqYMG}GV0#xlFMUKZ<6~3X73*{1p;x?wy}f?$ zY`;bX4E?N&6~ESoBpKrQPEhCpQikH~8&Dfr%7aC&JL_)hU!khK1J#y^_=Mzfgm%So zS7@@hw-)=>Kz}|J@_E!w&cs8uv7%`d8<#|k6nsyr(Rr0B7FvLjK?c&DHm7gJ zzV%44)6vPv9(=<_DJxRRNfn7uTwZt~m_}DCFfsKcwN_e&m9>v&r%-K^(Xlu7BaGec zU|=bJ`0MCVAw1mc(ll(E#&1s)x#zyJGHU$0ry36p9;|x;g?hPjsykYzY z?RPmh#-{bF1<gTtG0Wfz(h*b(*AdvKP8rCNq$8@ z0uygTfccVW$90=# zS}!I(DiszTYv6#H;XR$XCj)`5njGBT?>J;V*`cTbwyrP=d5K#hUH3QsEqIEaB%rMr zWl=ZRBCHr>q8X=RfpAAg39s+NOcDX7q0>zrLk$jk>Na4fs-GE8+1XD3(aqIW+oy(3 zzm(}WE=~E!(ErxHP;q>O3+N=!*}3+qAbw5dH!SnavJmy&ICy<=^X^FIVz8B24%nSLHdtR|o&uPYMYy4P{i* z9#Ewob4y^`w_7c;DXP+t^sKq>Bbk7Mde&Ws?>}-#RVhPS>kN;&a>M0(7nn&dOi;`h zY98%h;btklRM|!WkIVfN*szGCl$+srU;x`EQoUZ|0sw`kC*Nq3!cD-Q z8%K+#MMYu$=<|Tg=KN%yg?tv2^B=@ZZ=e5zwiC+qJ8o?B5kuCq=$LxgHw(Z%aM@9^ji= zV>q?PYL0uR??byS9xN^CG?B%E@2YK!E+~J1yBiEy{=1^krtghLC5^ackVQW&+)H*XdP}Tkl%LH~pL8{J0_`SS8PG>y6aE`wS@j})z3lwZ|_Bod{ zBlCx)Zc-FEAPK8pMe0?)k@o9!z_5q8gP#H^2;{7=sUmb&l}E=|b7gLB;8hTrmK63a zQj6JHb}ym@Z{j6xHe|Pu%opU+;FD5RSX>+xiBtzToe9jp=yrPM{*hQrZ6%)_{{1FxF8mo8k z&P~W{L>AgHL$$_Nn|Iqu_l4C0qC% zr+-D_AR235>igUH*+azE-{R3TDsmh3Qv~*BJS5zPcX?dMd!jr7YZkb zWMLr>FK-b7ao;I0H8oZHZFE}P{#46m&**?ev8BC+mkv(2Y~T>=zRZsx?s2(={C``7 zfPM(8ikpMW?^Vxj_&+(pVs}-XKdE8AP|Eb&cpcZ4W2pdXH_GP!x|FGW6%=SRfq!&! zcJlne+rSj|Vbj#lF8$z|Do)@9pUY{*1S`Sq z$Aj!p-2F<1MUzC?G@hHXzu`}!LH$XFbqNDbpGM_*uYrDZ*Ahrwot%*W-?wQ%-M7EI za&Xu+m9M&CNRPe)3atEL@H-~`6Ol)Q8O=deBL0dUNiOcA7pDH%@}l{hmd9Y<1yh@F z5b@7h@wz!kFS|$lWCE2kjY8EfqSl-y1G+?^?IaY?LyqgjHLhJ2w*&(@U;O>+=d5FL zjNfr%dNfaEdxYX*-Q7_t`+-IoO$aTr6jCJ{xrM8fvA{DfpZWBtArY%b z-H?c_seMaSp`wwLmjx$?Tb>h+1(uofqMRq%?$mp9l|jz^->f76cxH26ZZTR&?o0IA z;N2h8B=r|QWBJMc+5U^Trcnz{HKzWgw`I0{-QM_owe74l{v@@{qx7M2q(C%0!o=Ua znL^6!C!uD$;hO>ppmt(E8!~TCJUWnZW+mVC34E_ik012cAl8Wej)4r)q(ql*apvUn z@YTj}J;RY+q$5740JBt;}#tHQ$nHnv*m((`+BY0}AQg>z@l(9TVf13Z#Q;opt5){@u^-9Y z(g$9mE`biiNmr`><;V@uJUfhhw3bxt*H3Z0Ct0pg6e{KtXh?M zorLe4O`6?-q0t!dUUW{la&}Sg&q|Zyf0XPlz)S8I(Dgkl*hQ>H-kl8@yNO{77JIwo z3m(J$BOvMl(dFEOYk+JuD#RLSH~1qPZ7~ARZS7AoL@+dW={IEhhvXlI+bFHCq4Ini z#PZ6tu!_0b(*ui>HruE!4MX#HV>=7E%mKjia$|*tRUemRbU(bkkUh07i*9?81XBx{ zJo3Zvv<<47F`qn67ag(1vSm-s-w!yaJ+SEnl-@B^l(=uizPNCqDBy~ZPf4w5S`qD7 z%v2w2IXm!|Xj7%KYQSAY6p87uPbnQizx^*CmwX1B*EU)>x524iKww2&o6DA>r$_uJge4lu(KX2~uCPxw;% z{MoxB$oq@OIXFJuRYt0Rc~nZ6-#_oUEJSiXP@K0X9H|KS+Q4e@ZJipmBLopC% zQF*sS9?-uwa$5o-4#zBFIU_7}IZS%4U>sV$tM7YNFpO}RO#hG=(G=ui=X-a+!F6R^ z2UIQHcF1T`Y0!IecXj@uXXt`{!+h}ga_^~WlI8-C9YtCzo?djn9&&=F+!`xtwz@ww zx=vov@IoTZI37FM(N&tuRV11(AC_s)8)_IQRyw*Co`KSYS*1!$=%ehKck!*J%xE#& zuY8tGO_l~3kFt!BQT!eUJ92!zOG#x-@(bCzcEq>_>d#GfV>E|D4xmAA2{R@QkI)&% zW`Oi~nI_^M_4w`E3S}v8jzg|tl_%V7aSl{8{m*s z{!*rB7IT{PT-qS63j5A1`E+BRD-*$WvQIL|ly@2R`l&>of|NtYH4cswDYA-w0w&F& z5gT)H4UnTfr&YBBv?$bFyQ8wzgNAF`;DMmy+t_^ZwG!I)FPsqtrggS4ET^UbV&>yZ zehL~_6ML1#_`}r!(?v(cY7V`sRm#upy36(D$SHo7cR(7 z7XdSp!-{KNdkk#nHOv2A!CgI*`3t}MjO2a6H#uY_Yo80<3hw$lMt-hyEY>FH^0}^^hN~3dC+4GG0Jpa?2LuiEZr`g@y;k)q{1dq%D`pNst##*r56`A zr>P#YMM*&4cGeRX7Apd6q5>81q6|W_YLTFSYjh}XqFdqv9I?Lysy>bAjKt}kgigI% zq_*`ZZH>zTM`siSHOHM;m(?PXsSe>@vUvmAmWR8p7N-W&h5iQLALMfzj61Jnnkv`d2h*sps8Gd^hz_#EOVegj=7lq)E)6+y9LF z)h@kPTD9LYUibc3n@#~aJDH9Mrv`Xk!x$OG28=$QrIoq&jTdC6jgS$Kdg}3=Pd6vZ z>G`gs)SO<+|6w~Jg`Am!<;QLw+osXc?Yy8Jxsepf(hmZa8z2KNA=NGVzE|6NaGC#* zj}+f^x|mOHG=S^om1>h(udA;d?Eh~xwn4;v;de(Ye}gN$c{3-kBEwB@f?gSUZCTnAfSP?f;RqY{e@ymduT6px4=d;SnN@MxUn_zpF`(9wU ze5TMDDF~yq_WC&)LS%e=oSlmF5-Yh^a4$^tPND%fTd0OVZYK+*U- zX0^$u0T>ML?p9G(SC^5Iforn=>oI?6TVc3*VZZR-uN11X%>SDb@Ed`{C34txKf79PZdNLWNpW@!D)DbqI3=$H+N(AU>1GjOl4un z_kfQ|<+c*BSNJTmTZX6ksA$)}xRTNfSapI#SemlG+`begU3kVYdmOqXo~o8PaBCQN zihexU^(1h;-|)&9yYDd+=2vRnlVBvwLpN<;_>%_q%i-s|ne*v{fqJ;_V_{*!Ck;w7 z{X=kRFTb_V{L0Y@=NCS^fkTqC>7RB#Y5dVU<8IA8J#A98AE9|iLC)_?c4Iv+g75CS zaav0Woqi%|Ll=Lnf^Wi;Vebru)$DD6@yMEal>hjTobFm*^I@&B(Y9om+%?Y*dTUid znXR21YotD(EK11U)VSoujFd7;%x`q-gF~hjC9m`wx6=t9UKPO$m1eljNB_cv7ZJ%K zN`_*VQ0FZIZClTb))RjS*!Fy7EN67%q-vkCRn0icaa=y320BhQ%IrI=h2sKv!{He` zn?Cc=ce|{A&`Ud8)b;Ms^+LU-u7P>yLRvmtGP=t7iEFNB>rAV7UwLUWdEeKfjC2^p zND)uAC)sy$9L-W^&Y$-TRXf3noCi6peou}GcW5;2yjOn&PkIEa?>{X$U-~pwc%LG| z=b1`sjm0RLa)Yvtf_j>`v^`N0*=t$pgrD|jxMDsnkFsF(QEs@8B9_bGenNho zqX))U7IhclK+7}XohxeocesOZt^17ArsqT)zjnV`G+?}L@uZA{>RjsSNTQjGs5T3i z6!H^uvG+lAFz3Ou?<eGW)A_r`#hDjFuN^6 zFmE^Z*Rv<>>Zy{AY>>XeM`iWBg2PhYqgx}j9@jD~pG<#=?YBYx5O}MWCiI>Wj(r{M15#+3a>aMPEfGjJr&IP^{F*#lHUd_H(X=PUXuKj&#x-2cJLFRnD zdj5)K$er7h#cax*h!`OIj+?Sc?X!*-r|s%6X%-bE86`ps)4Hw36HyZ3s(W4Cu1Eo0qfD^q#Ke{T2g6Ys{uUD>7($p@6bJ(Sf_8e|0cv_ziIcJ@_@ zf~$^h`^wbKqE`o;Q7x?M=tEW0W|`lAen&9zi#OT?id8GnKVSojRFqYDgj=djN-C%V z*(4t{oV-tC@%|gjer-6>fp>#VBmnC7&DG!ac%Oa1ImFg#NvkUc!nQ5O^+Vw6nO$pQ%}ouNKdbIqJ*>k8U@c}-h=ql7Vc`~)S=B5Ex1p<4WzNhN zW!1l$^?6H2x!fLR&fH8GA!9Z()u?)F@zNN1)v;eO@`=>=>|b+{u1bq5VQp872TwgK zUChp!Q1E58bAIEq`-Q!~ySU=L-tSF!4`5C7eJ zR$QoN?rYv*digjBbcg7`t?vb1c~q+M8BV3d{z<<5&cm0F2Ne*?&ZA6q%zkbYKLc?? z)(C&U*in6-fVb{iYTx=<3)6%E%XkMY0tZiWo1b7^kEZL(US|IN=`qwzb!#iQES{O) zlSv8}XA1_lwycyJx+pQPeY1y{Z|h>t9F>??m;1`6#2endxW;6#^KBC2&=8^A)2(vs zoVuTb`xnQoc58|1{-s^cj^1tznJThTF;4nOl^&y4ZzGl>_|e&W4zbAgBkXIU!%Xd9 zt3lWTt+a$kmC-c}Jz8p|G~jr9tq=12V=P^2-4<}C0n(Cn`{2mT>J2vf3+vGG1~~Qf zPgB%6zt}U8f2@wCXGf!7uzQ>-byv54&=JP6ELaA+GL`(5I= z>IT5h_i(D|$yc@z-Z%Hk9*xzR$7@(W(RQlYnd7K3+>AiMxna%g;5j4?slN;Yy|( zsI~CGqy0L`yY_}}Ziu!JLsYQpud@C7R*jqfD+bZUA9_EVWVC-}2T)px7r5*`5ngUL zyxC#SWAf@APj*-ztc*p*Z{-VZ^9bq-(xHmmjN^1Bb#(gI&QaJ1D?qxWP@-YHDJ~KBT_wL!)p=!&iAPbDSLRryy%s?UeK^)T*HjZp8t+on~@q# zU^c9DO|%G9Kb?p>0pHic8Zr2dSFxe~jqs|NB&=S{65Y$yx6a0;u|UhT-_)?D{N-() zo3Qy*FP2hgB4=H<*z}~e!wu0iGKp|5fU{uycH=ZCTBKjDjR%i9q*AdJr5?230-y9ks|#}KN&Ao0)n|JIE?5H>pLu7BSmsk>9HC&^wS2$x#O-?`q4O|p z<_V{?^ayZIaw+O78Ku%mi%K%VH8+2*MWjpQpS+rPi=Q1^(4XH#e`oQvp~?HhLdFrj z=QUGKq9qni#?HaEOz^&+dNavqu3yCQ$#7+i_034w#oT8;fB{nwU++o$pm?ix zvCO771-+lFQkAxlqaOCpewG*;oZd=ksmfvu0Cpbs{hgia`Ml1~PO>Uu2xO$A<1mZ^ z-|}?+XlC`ny^)i-_nV68;c(M%@w?{pkFZ1-SAA_PTY!aTJloMH_B9T@B?JQWlk~6Z}hzPJSYUX zi{j;w{5#^V&2wXR*>r-dt?uLxCCd|sAN0pa+luIWxDI> z;yhA$sX%gGe5Vxwtj(QG4lc(txvc>*tLml-GFaDcaCcKM;C{T>puFtz?tp%GKK8`# z2Z?lHt(0J1?M1k%Ktx1@p0TOE{>qZ?V*U85Ds<{QGh)@j@MtzesOW9XOE+cP-;nwj^B!hlxheVKX||p;mUwO~0k^a`$UOHC12lct zk`Fn&;UjT7SgSvk<=k26;^+c+^wG{_KCXE4Z^`}!DgO6kWo=!OV9$o3+Ghu+PCzt~ zxDr$AsKwqZx+E=ck2fN|PjW|trTO@-JQ+Y4CmiETtsEAj_X=d`sr7z6)?Hn)tdagc z;r=FV&g;=N?$|<>=4@ViVUv~8h^^_mW1LfMJohez;llttH2zN=WUAVVvtF5y zxIYfTB9o^vihmUpfhHiK+iV}3$*MVs+m?3hERXusq#tdnnJx%pw#$7<;xDV{rFgd5 zM9c?KFSVkg9|XM@ui=PW`)yIC=U;K239(UG+f0Rg99o)O)YdcU%(lWU7ac1ezaE)k z3CdQ17KFZu{kMpbxH0_m02ek=t69h9w?Co>>s{f_q3A;bJ(6pdeQCUpE{Iqs@OdrX z`jak7QOLZ?rM?5lbdS>2;!YVAuKQb|s89g(bmEZIf=f+J4Q)hD(x#^NM8aab(9(eY ztQN`%Hndafk9dH2K(95JyLRBotC0VRE%e$ysf`E(qvax@zac(a=Gk{k35hhVfQbQWFKh9^( zcA9dJPS@^eCpL?1L*>xr^Zp#WqN3t9*5vZRSEHwVsm)oYK4&%?2RrC{?gT3qT(ZHC zLwfas31}LlEfqb7lfUp5_Ay zPJGADtF2dxib%+|AWrjpid0be%M( zu_cmtlu^l5;-L}YO4x~Qz)2!8nX6QS z^ZzOm`TjkN_N}kMbyvnU;DG<~8<^G0^h-~x(};bAZa#Icg753B1UV2UJ%CtOBU)gp z;d79Lm>4w`6%`GQCJ9aaMA5$HJKnGRrMG6qi2#`>gjkbX22GBSj|>l|NZ8c>aIN*) zyn6L22M0%KSs5`w@>3*EiFG6ZPWxpyznW=qSz*nJm>2>;ugGc$%?_(8#_8{kUmPhx zMreqslAp)4*z`-qxK~g&^_3RcLu{`iU#}U&0+*uV!Dxjs0)Zf(x!a^~3&M1W?-_7h z5X;cS^?5gxR0g9^#FApi$GnQix36Jdb)q##Fi8QA^e-P$c}V;tOFK)J%f%qu{HyPf zG54>~0Ksj2R|*RXs6ehlZDDxkEx&VZr^r7C{$fo%^)pFpQ^U8(A{p;7G52hV45FPa z47>=(QaM#H4#gM3c_||rCgLi7kG*rTN1I{%ZM-Vo+hA;!<=S?qr+r_2sPK1;+15cd z1fNX}O%t;?ZN|Mql|S&28SR0yQ)Cuz3!pFwixu;4t_#N(VZ9yE z17b>+oW#8Y^PhsQRR>h2&Ghn2)H#WT^HQAkG`{e*e$A2G5L04ZO; zqh+;oFh-0(Pfz*MTy6@NOo_qX7l13`jf{Ai)p=oLkh={5zz3re`whxD+3DMjmk;pP zm4`ozrlyPs{G_F&0b|=Dw@u50GPd-M8lJS#H_l*FLiQ6K*vr!xs~g4+p?!673iUu15g<%5>HfS1GGUY|D<^yK5us_!n%KPe<^pVlk-vdMKg9 zgaH>L5Q$NxGgngm+c)SWznwK-9P zLXGN+5>14fx~8@^e`GBLGC#j5(sFVjBtyF#3f5k!(YZVECd`mWZ>x>&{25t#KUB?M;Pye{~^#yV4;tQezfzLnO5(Lcw zb8{AG79C$HDJf)CP*9MZz<4b*a$n-;&mR>HL>j}A-)jHIliUDC6ywoZYR|YokLgWC zr80Q3NH)Vg9^41x?h4~@@lo}XC2g-a8lhwfLL6OxjlHzDu~Lsa{R)d#hx@*jMUF-s zUOZ_(cALH|C<$J>^6*uchA3fmP7(_Er&nhhF>iMbA(RvPkAk|MZ;J94h;A?HH}H^G zj_6n=H^`JoEAV~v{P$L7T`n;7_)dLh`$WQwR?yjiwG(>t&!@n-*w)##2i_Reaw_)d_^^}ln**2fXSlFs ztpQon@%;QSM|x4GUx3w;6_g_4+mTlaTh4W&@1C`vNVM-2Dn?aj^$$dOYy=ADl$H+m zj4XuZuT;L89Da4#aUlYn_K0_h?<10(>d;jxs?PlK<-5Kf;JkO=EfqvFjQUzA{a0;hPdFCCy z^Fih$ulJ8R^R|1Rm$)0nr|yo@vWc9TBB;Y=dFqQIflcY*_Db;u%x&iEZ-354rDv^O z>I+s@m$8bHOry9iHy#q*jYJLVy-nO76RN?=9GNjccO1J({ChCj{x8vjlLeEF%XB^H z)y;`+vBtJNd_H-Pm<5Wn@+6PVw~oQO)&`ee6`^Z9s-#pY5YOiPz?8X%&UZiVFH2jB zjqY<9rhd|s#=@d@(F@eV;gWI8@LJ<&tW-n*PTq4ruc1U3+8frgnbBOg%q+U^cMwI+ z>f)bNjQIQPQYMJMKW6Lm6QH^&o^<(sjOB?o`zbPEcVnxdXRJ!PrhuyxF(apX2jONn znQv^yjPVbQMBWSFjm($a>FuCaT=YK{Q@BeG`{g&AT2xls8jJQAw%(wezG<6f?C-Wv zTKCzkg5ckFgW_&%UcFkM)EwV41wlmJ|C0aO!I?k0ms$XzkH3Sj6|3cNva`E+dBuMy zrV1n@BZCJsF)?Yr?CtAIxO&+f1A}3yt45X=i^h^rXAl!zo#_Ya;TmQQ!5T2vJY(gp6J=;$bcgBp{u z@rd(5mBZB;*q~8ZwrPfEtAtE|tIyNSQT_Zrv6=1G1$=@pO0g^W`G)urVUD3}w78ezL_eehv zqzoaB*C4wX85yZb<@EJ`nHDw7ha8QMD|G5uUQ9VB#U@U{&G0AQu= z3oN|bCrhCkB$qfWaMFxS{WF|c3j%SSnOs~q|CXGbY>2EBu3l^NA`O?F#&yVmebq}A zb$Y~bD6P*H?r&t16Dma%^fwbB_0suatGfe~)5o>~Hrp>=)OsFR z)z}ELQvFkw&?dfG6?8CuR{+T3ck9;v>*E1cpH;*e{1)1BK7Ui?uden+!>6gQL9#&y z+k=rW;_hq6iYrx6S(c7VENgft_0uR7mU=MWaB$by+f}vl_1CrO6u%`-pghUQPsl`G?(HlVPGYX0pm61PID&{TxnFly zKUy`oVTgW@kU9&JI5K{*t4o_I>h}^^PKaJQCXOtjCyJra>oqAZRn8r>>KFE?!Fs0; zZGhCFRZ$r2%vh~1)XgF=(m@6LbF~EGS#fI5t|}(#>b8c!<)f!epk7|v5DX&)esAk- z#Ur8u++n0I9~(V48I1~3^w9xBl)vwlszXB$)&>-vIP-Ao&kYBQQnM|I&3OJ(I&btm z#ql5IP32TyyKCk-VBhN*S#T*z6>OLTGF|wTpHEzoc9XovRC*UymO*I8FYm`to~|Xd z)PsfStvgVcUsc~<#!=I3{g633YCDq{QaypKZkW)zIeoaP(BPX8bT6c?j5Rbs?5r~f zp-fN+I5Mu<^1C3~N?^P!=;pt?%a&N7vk9@9+Oc?QJBPPAGaWHCGg5wXc9notT##Ah z$~#`DGE@)S&s4bf6dJQMBLsUoADb0yj9-!QPiI}Sf6)v_G&(_EXI@XZP6AAWA8Lrc3+!jIyrCG zFncCl@&}B0yMF0fUy+&90Jg8Pe^AR=`K~s2%|H$!(FZf#|c3 z^cd#~Hkjz~YpKFHjPudfa_JD(fDxmKf>_2?=#LmyY zV6CZ%5zEG`6B+4=fzBL{PJDmiF*X_M8Z_*WjdgJ-`NCppJf1inma92vgh?atcHoeE8I{uQ63X%{x z0q1{Xnykbdcbp-RC^u?FemSN2E5;5g;}R;6_}`qS2EN$z@NZU^SinF1PhuDL;>T5b zw~XZ4e>Mt`429Wqkd|_OdHJh3FWj;{kN_l5I7`dij?Wd=O*!7|jt@E^v5xl>JKIVN z?{#Z^+fNj1D|X%dRptNxTp&--$89Et!IIeo0UaSZyWQHM4Q-Be490|FjQ#Pm{t?Xu zo$8PoXoLD_M-0LyY@bv_526#SG&D0uA)CIg`k58Dd9cFIa=at^U5#7pVL8v}B1d13 zwywU8bUTh5_JL|R^&d{m0#!!mL!Z2)vwGNSYTsOBI?>%hdPmu8SdVk4ke+S%=A#s`D$&YJ$CB=1tGHR5j##iX{N zMY!%S4v$D?$rPuWq~e#uR4Z~|MN`Bs`L?o_yMcx2R0(cmrZc)vB!|Ic*KDL~(GMiN z2w&dx7&bg`=aN3!JY&t1c#5T8viPs}ljhPLbYyj@p`M+Qk~A~b>7;m(LpxLJ6{Xu&`o$5M$TONC)~ZO9ubUP_{bduKyW^H>7WcyuAI>o6UE=T zZ6Hy9VjfAxZNK1kdfHFE{*=AxTAi7n_;H6R)8=Ia>5nGH4?4OM{r`G?SU}}`!NI}K zg?d}bs%w>P89*i!=q%vxJ7J)iLB=Go7AA3cL+~Be$vaHu75mF`19AwQ`{;N3e&K)KY$7S`CR;ataQ`|Z)Cr!sB z=C=}?nTdH2Zf?rJp`jr;+>IMIz8SqUAXeogNK_ak(E_3PYCOXDR2)UmnQ|4)V_cq# z+E)QSiJedQgkmYTjA+BCBMMCiVO=76)t+J1?fNw`@N(T`u>54l$cW~3-CT*AV6Gni z%I(~xtMx=twjQD+)rh<<(#ZIco3~~w%@gOwtIi*2sanC0-kSc`gkN(x^_P>m^wG`^ zX{u*OH41VhZBt)9rjfhqmDlHeS;iGF(bK4gzH4Ln7>)nz|6G&{@0ZnKIhHg)s>KKrZA7=<>Z6ARlr7_I4;40 zObvY8RSb{##;2@qL+W;jy-@Bdm&BiRbzH+JG3 zjtr;3CX_;uU>yrWCno&j;F0mBZn~2+h+VJx#zsG0O|OV! zv*eAIfv#L)PfDhLeN966LisV#IN2c3OW;`U&kc|l6DJ(B&nwcXZTS;>Qw7XyF4@S9 zxzC?J=ck(H771!kj-y`m7U_(kQeYtpE_I%9_XrV{geGlk!9=b6H>>UzuSz{9OLztW zJ+n%svC0H5Tfvn+EV4ls^Z*L`dwu|sj4}E>r0ic+GP=}TFnH*>v9k5fjCiz--04I% z80*f+z>syvSWD~aG@d}HkAm>I=O6lbVC~rxg z;7NN4_I1NIrLlIr&Q>q-3y9T>8K87+o;(<#J&~TN$(qz`J4p6Qp31&R?T_i@HL7N; z*tus*Oz_??U)?@t11V2UO%c1)_uAkL(y8zt7Z)yszRU76omf|-uTKu|BYao}$f zoWVkzlh8w{$*$FZX9 z??nhOcmTO70W}~>Js>^wmOyBNf&x+vgx(3gC!zCA@Sbz;Z>`_=2Ygv8Yh}%3-kG<| ze)oQ!{cQ4m?0y-!V3lZr@_OZ7L}9JC+L$t)eDHc_#iVbxwG=1wvB2;NQAlC(HqbzJ zJO{vZyAyS^Q4=Bf^a?85&~oo6V_Uf;FS06!SxM2v#6dDaVXb8_FU*$Qdq2!h@AJUL zoKEeq-OB#m8%U8?7W|Epq3T_OYgV9W$YSIMv($D4JijB08 ztC0;{Q9`|HSK1cX%}Z8Nn7{Q1*;;Qo_cB?1=k52XM(^C=B8k!21F8k$94uG6b{%u1 zY#A!qZ}oL?)33g=TM$j3N{E}IJ*F`D(w%CL5vRwvV{Rc*9bgrUI&`Nv#`>)7VMyeR zY_U3ivJQ?gH5H;?g3S4uaP&79;rIvU?h!L!f!kS+esWY;I*+v0sy7kSL)y3)IMNT| z_Nl~}#OGkZC5I?w!&p8_riwc(I-4> zHa9?(%ecPrF7o4Bgy}<@iP`CZUfxSKd?zl>X3`NV{7uPA!3=*f6h&=piPNAmmYPyq{u3TrX(@gi~UO--5Ea5M)~xd70%U$OGsFR#&*cSm`0 z+@!todG=59qOr*ggKrwmj*3Ib@J1h$Y-6|fm1gnC$n9HVbMJJv@xS1*_r$E0e_X9( z;kYPK^L^03X=7t?Wexwm>1aH+#v(6!4mQu=P89EuGcEfnYP{{KHyf3+j3}j&UYIxX zm49K$!u2p$7?A$RcuHC1_BAKPJ3$(zD}}J|eV85PXj_vEU%*pc`?AtTlbRr6imc!R z-)}xv6t$?>1}B;mY@?@>*&Z!hU_2|m_+7$P3QJQ{A5LHcptThq-;-^kYPvk1z=zFw zBmgPtU3|vwLRGsobmXQ&#y5YwWJkvk$|*}L**qWz&^p1?o8o(2pG`oa;y^ zqdscKxRmFwH(RZGenLc9uJ8EypB&@k+465(dNwW|Nvo7^?)3XQNrD+M1HLW0`a_9j z7k7FDV`J21O;45Y52*^=D~&Cl|IQV~Q5(zH^ipZ~+kN2~orS5YAl(FPt`a_ zhq8OwDvmqhOjRJ@o7MAyPqS^f#(g9!A!)wR+i5iPNlR6S_t8fSQo{yG8%b;A*P)@M zQcS1L7kfSp`Y6#YZ@sv#cU1E4)ed>&>RLc_kPsJ#LZK1&KC}CR6oQwW1z=1W#`$P!L=+Dgc$hxQH%osnS{As42OFM0T;1>25V!@A0Kvy}WSEMcxw*(OIv81Iwm3a4U=$3ZfbsD`{K8B;s1&X> z%}MrJ|1JHL6`JvMa`T7R4Rk>838!{`?ypQ^;_D0f#r^(%@+e{g{5$qS5aND;x?jA` zjFd%HNP4(5ciOF758q0zat@uq$107NBFvL5EUmrP5x@!XIR@uIWT-Xz0woqH{YPbm zp^M8G)~)(4=^CUhECa&$36ZoT|2p8&C33EN77r=`nA=Etob4bIs#gj%2(t96dHB^K z|2-1TF(94kl<$!MofzX+>*>7OU>w7e7%(#aFMs4*6dhAbDwDakVamJn%Ww6oZH>v?6RQS(Os{W-V9`?pK54nTL%+!T z!#&+E_f!e6-l@8T7{dB8TO!xAoh$4e-Wu5JF^F#=Vo(Gr=hM>QSoF(*rqTGZlC@W@ zw{HTng#55IM=K^?J9%jg`_fxHil0ib>BO&nGLM2uT6KQb4i^HJE~YDP?dBM;-INTv z-AFa#%cs_{Y24d;=-bo{=OtpBb{gcoD@>}0d8U9Hdg?>-m)kjSmUr5Hc{`_o-D~ZU zE(QWkn@#B;8MeC1wtZw?xm;6fzq&n_cf5!3O z+6umS6h0bHVp^ z{>bwH&v#ps!@HATSFz&jgirw3p{493o#?p67dU>9*yiw~CH!!2cTv3w4Q4s6YHOSB z^*J>)b>G82rBtg@&&Y^aH_g4Q1M)LF1YA_L(yiuvW3Sn54_6s6U)+_wsz1?{p$eF( zxx_xxVTLyvzLnZGBm6hK_HW_lCQF_D9t0eMuy&fKn5+|Ze5t@f-|p^iak2QUOG;QF zOtFMbfN1G7=U02b71usG)y>JbT<`p98? zKVbKZ=i4gZ_|op!`>DX32x7hE?}j+Q{-;OJkB(lp9gU0Qp3MjSVebl%9njA{ed<*A zJY`%?Gv-l@3ZpMua__*_<6$F`-C)8ix`GfAe7w{RVw`OlJ5=c5=}8!0d)j?RqoNPW zN%al$Lz%{MVM|KuyDf4!Jh?&p1Aazx`de+^#%Yd;uQ4oB4q$QZY%Jcr}Xxfi@`htzDabPso$J#O!IzxtCA?r1;`U&J2UrEcD7X zpalNGv5(gev3k1+mkLm+!>w_Q%Pu61xe&ZeCI$_0L(w(al>Y(z<` zT7NDcTzZ3sjMk$*Hja*1!z@tn0_l*Bj*Z1eQ}stc=WR6O56Ds66%;BQoRU0aZC);X zMH=inMGf;qZHp5G0D{-w1rIy~6G|l87O^?PV4VbTyIHvL@x=xFBL_#v^bV0gHX|dW zbi=HKgv8lkF!nmeXe~WTy~gV-FDEDD5PiJ*lh+L$DK7k@G*&y2q9Sh(4`Y%Lh?Cm! zoT#f?d?2?rJ<0=)Lg6?Rb47rYLuG;t0k33+I6nYi74QV418Ru*>&4}N3)-&$rJo>9 zzXEIQ5~qJ0L_~>T^Kp2&_07U;o@7~L;%H+AX2gY(T!~Ump02ume={`Wuof1R;22h}Yo;gaFuID~LqW*}G>2Ii%K zpbs+GmatjI5nxb%L2>E1)ZoTsl2s3tch@O+k&h=D#660aHgU5=Tb0glBQ~3bSqM}G zDLz~oka5HAb;&SAte#0-Xbqo_bk!76$jzg8`0~Lvmk>79)f|Tg;_@?R=W{pW^Fs)_ zZbDmb>&uzw*aB>u!v5s@&^t|U%id@t`p*wHL4i}TK~=Ox$p(IOgl#gwPHVnxK>I?= z4XmVL$I9hpzE-=d2_AN6t*4%WWPQuf*jP&jgem95VlQZ6(|C-GSahH9FYwCi@OA1z z<;yqLUKQj}7d86?!#N0v%3605l^OJp;nMcpQ^2tE`h}G`p{ciE7igp$y z%BoF&RJiB{*{tcXM<4Pb+CsfwzT9oD>lvJ1Ty(Z@adj1o0f2`3`i*S?;^P5dR=<+o zSv~XfzW(^0oBAY@{OjUo|1#v~+wCS;4?U8|*RU|ZPnm4?i+nrUlONA8t?xC@VPeWs z{Wy&dyD<3D3@?}So2Ib+yI`y zPtv-F?LEo6nat-npg6rG7?=j|c=L}?6A6KGCCeqE&n*3H))iac(}Z>}z&w{{SYr_$ zd!i5sYdpPf9a5A8`>O?YKBTIfl`X)T-1_|XnAq)8OGRa-GCyj8*QLh>*!8l{MN+llmxZwvp^L12ouYY9)D|(UY5s?|IViq*L4&s(tcG%2I|E4I1!NqbLK=UfI#z2mlJ>VPiAvR^*sOfHBa$t(Z?s5#_yO=P`N4 z-KULH@VxME23Nogf5hn)mxF@?l$TdTSU4deLG(sJZf%H)BVLlzqIOy{~THd<`W=@hw znp0LnGg>&fKsP8w4NX6CV+zCxkC+btSVN=~FS#1pP2R!qedPuISi+x)yn2s@gw9Xv zM=RQZGX}5QG4R*UCTU0KKPNY_%_+voHk-M|F=-ztNDNF--1m&bD>voi&ef14gts0W z#5_EdZ$p$b%k6YGH_=VWPj4aYl9!zp8HlWS3C`gGpB^%zbyjFc}lL% z5_mMmhn7;TT_t6OG^Gi<;Y4{Ylh28lzv%*LEj#2^Yn}#QT)|9ddPB4lEut$aAc&Y9 zeu29-p=eYtlfiu0*ukPtKi;QS>aC)DIxG4aSrR$8}y%lp&doY5W1rXIZRQop@VK? z{{%Di9w>WC>NB|X<_{gpqs!IiVh;T+2qf;U)g^`i{tvL{- z{{Q-Opr1$g=OA@bcKVQV@g6P~|LW}WdvX^txla$?(jP2~A(4cQsLb+V5D1v<;0BNT zcP=#ETPle4&|d;!IgH+ssNf?h0`IS7jo4b)x@E-%Dpl51!Ss9_}2BTjp#Y zri_@5$Oo9Z$cNX@fE_$IaPN2yR&0eFr|*16A?d9Rk2z1;hk{2S_tkaO@>Q(={2%i1 Bph^G$ delta 22615 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�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

v-4&A*Ix47!o4c=5_mq&h-Kf>u3J~_>o;v