diff --git a/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx b/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx index 27993c3312..30cf5b8ed1 100644 --- a/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx +++ b/app/features/tournament-bracket/components/Bracket/PlacementsTable.tsx @@ -116,28 +116,26 @@ export function PlacementsTable({ TB ) : null} - - W/L (M) - - {bracket.type === "round_robin" ? ( - - Scr - - ) : null} {bracket.type === "swiss" ? ( <> - - Buch. - + OW% - - Buch. (M) + + OW% (M) ) : null} + + W/L (M) + + {bracket.type === "round_robin" ? ( + + Scr + + ) : null} Seed {canEditDestination ? : null} @@ -199,6 +197,16 @@ export function PlacementsTable({ {(stats.lossesAgainstTied ?? 0) * -1} ) : null} + {bracket.type === "swiss" ? ( + <> + + {stats.opponentSetWinPercentage?.toFixed(2)} + + + {stats.opponentMapWinPercentage?.toFixed(2)} + + + ) : null} {stats.mapWins}/{stats.mapLosses} @@ -209,16 +217,6 @@ export function PlacementsTable({ {stats.points} ) : null} - {bracket.type === "swiss" ? ( - <> - - {stats.buchholzSets} - - - {stats.buchholzMaps} - - - ) : null} {team?.seed} { expect(standing.stats?.lossesAgainstTied).toBe(0); // they lost against "Tidy Tidings" but that team dropped out before final round }); }); + +describe("round robin standings", () => { + it("should sort teams primarily by set wins (per group) in paddling pool 255", () => { + const tournamentPP255 = new Tournament(PADDLING_POOL_255()); + + const standings = tournamentPP255.bracketByIdx(0)!.standings; + + const groupIds = removeDuplicates( + standings.map((standing) => standing.groupId), + ); + expect( + groupIds.length, + "Paddling Pool 255 should have groups from Group A to Group I", + ).toBe(9); + + for (const groupId of groupIds) { + const groupStandings = standings.filter( + (standing) => standing.groupId === groupId, + ); + + for (let i = 0; i < groupStandings.length; i++) { + const current = groupStandings[i]; + const next = groupStandings[i + 1]; + + if (!next) { + break; + } + + expect( + current.stats!.setWins, + `Team with ID ${current.team.id} in wrong spot relative to ${next.team.id}`, + ).toBeGreaterThanOrEqual(next.stats!.setWins); + } + } + }); + + it("has ascending order from lower group id to higher group id for same placements", () => { + const tournamentPP255 = new Tournament(PADDLING_POOL_255()); + + const standings = tournamentPP255.bracketByIdx(0)!.standings; + + const placements = removeDuplicates( + standings.map((standing) => standing.placement), + ).sort((a, b) => a - b); + + for (const placement of placements) { + const placementStandings = standings.filter( + (standing) => standing.placement === placement, + ); + + for (let i = 0; i < placementStandings.length; i++) { + const current = placementStandings[i]; + const next = placementStandings[i + 1]; + + if (!next) { + break; + } + + expect( + current.groupId, + `Team with ID ${current.team.id} in wrong spot relative to ${next.team.id}`, + ).toBeLessThan(next.groupId!); + } + } + }); +}); diff --git a/app/features/tournament-bracket/core/Bracket.ts b/app/features/tournament-bracket/core/Bracket.ts index 9cf943ee00..0afa75de77 100644 --- a/app/features/tournament-bracket/core/Bracket.ts +++ b/app/features/tournament-bracket/core/Bracket.ts @@ -7,6 +7,7 @@ import { removeDuplicates } from "~/utils/arrays"; import invariant from "~/utils/invariant"; import { logger } from "~/utils/logger"; import { assertUnreachable } from "~/utils/types"; +import { cutToNDecimalPlaces } from "../../../utils/number"; import { fillWithNullTillPowerOfTwo } from "../tournament-bracket-utils"; import * as Progression from "./Progression"; import type { OptionalIdObject, Tournament } from "./Tournament"; @@ -50,11 +51,16 @@ export interface Standing { winsAgainstTied: number; // first tiebreaker in swiss lossesAgainstTied?: number; - buchholzSets?: number; - buchholzMaps?: number; + opponentSetWinPercentage?: number; + opponentMapWinPercentage?: number; }; } +interface TeamTrackRecord { + wins: number; + losses: number; +} + export abstract class Bracket { id; idx; @@ -1059,6 +1065,9 @@ class RoundRobinBracket extends Bracket { if (a.mapWins > b.mapWins) return -1; if (a.mapWins < b.mapWins) return 1; + if (a.mapLosses < b.mapLosses) return -1; + if (a.mapLosses > b.mapLosses) return 1; + if (a.points > b.points) return -1; if (a.points < b.points) return 1; @@ -1223,8 +1232,8 @@ class SwissBracket extends Bracket { mapLosses: number; winsAgainstTied: number; lossesAgainstTied: number; - buchholzSets: number; - buchholzMaps: number; + opponentSets: TeamTrackRecord; + opponentMaps: TeamTrackRecord; }[] = []; const updateTeam = ({ @@ -1233,16 +1242,16 @@ class SwissBracket extends Bracket { setLosses = 0, mapWins = 0, mapLosses = 0, - buchholzSets = 0, - buchholzMaps = 0, + opponentSets = { wins: 0, losses: 0 }, + opponentMaps = { wins: 0, losses: 0 }, }: { teamId: number; setWins?: number; setLosses?: number; mapWins?: number; mapLosses?: number; - buchholzSets?: number; - buchholzMaps?: number; + opponentSets?: TeamTrackRecord; + opponentMaps?: TeamTrackRecord; }) => { const team = teams.find((team) => team.id === teamId); if (team) { @@ -1250,8 +1259,11 @@ class SwissBracket extends Bracket { team.setLosses += setLosses; team.mapWins += mapWins; team.mapLosses += mapLosses; - team.buchholzSets += buchholzSets; - team.buchholzMaps += buchholzMaps; + + team.opponentSets.wins += opponentSets.wins; + team.opponentSets.losses += opponentSets.losses; + team.opponentMaps.wins += opponentMaps.wins; + team.opponentMaps.losses += opponentMaps.losses; } else { teams.push({ id: teamId, @@ -1261,8 +1273,8 @@ class SwissBracket extends Bracket { mapLosses, winsAgainstTied: 0, lossesAgainstTied: 0, - buchholzMaps, - buchholzSets, + opponentMaps, + opponentSets, }); } }; @@ -1357,12 +1369,18 @@ class SwissBracket extends Bracket { }); } - // buchholz + // opponent win % for (const team of teams) { const teamsWhoPlayedAgainst = matchUps.get(team.id) ?? []; - let buchholzSets = 0; - let buchholzMaps = 0; + const opponentSets = { + wins: 0, + losses: 0, + }; + const opponentMaps = { + wins: 0, + losses: 0, + }; for (const teamId of teamsWhoPlayedAgainst) { const opponent = teams.find((t) => t.id === teamId); @@ -1373,14 +1391,17 @@ class SwissBracket extends Bracket { continue; } - buchholzSets += opponent.setWins; - buchholzMaps += opponent.mapWins; + opponentSets.wins += opponent.setWins; + opponentSets.losses += opponent.setLosses; + + opponentMaps.wins += opponent.mapWins; + opponentMaps.losses += opponent.mapLosses; } updateTeam({ teamId: team.id, - buchholzSets, - buchholzMaps, + opponentSets, + opponentMaps, }); } @@ -1443,14 +1464,32 @@ class SwissBracket extends Bracket { if (a.lossesAgainstTied > b.lossesAgainstTied) return 1; if (a.lossesAgainstTied < b.lossesAgainstTied) return -1; - if (a.mapWins > b.mapWins) return -1; - if (a.mapWins < b.mapWins) return 1; + const aOpponentSetWinPercentage = this.trackRecordToWinPercentage( + a.opponentSets, + ); + const bOpponentSetWinPercentage = this.trackRecordToWinPercentage( + b.opponentSets, + ); - if (a.buchholzSets > b.buchholzSets) return -1; - if (a.buchholzSets < b.buchholzSets) return 1; + if (aOpponentSetWinPercentage > bOpponentSetWinPercentage) { + return -1; + } + if (aOpponentSetWinPercentage < bOpponentSetWinPercentage) return 1; + + const aOpponentMapWinPercentage = this.trackRecordToWinPercentage( + a.opponentMaps, + ); + const bOpponentMapWinPercentage = this.trackRecordToWinPercentage( + b.opponentMaps, + ); - if (a.buchholzMaps > b.buchholzMaps) return -1; - if (a.buchholzMaps < b.buchholzMaps) return 1; + if (aOpponentMapWinPercentage > bOpponentMapWinPercentage) { + return -1; + } + if (aOpponentMapWinPercentage < bOpponentMapWinPercentage) return 1; + + if (a.mapWins > b.mapWins) return -1; + if (a.mapWins < b.mapWins) return 1; const aSeed = Number(this.tournament.teamById(a.id)?.seed); const bSeed = Number(this.tournament.teamById(b.id)?.seed); @@ -1472,8 +1511,12 @@ class SwissBracket extends Bracket { mapLosses: team.mapLosses, winsAgainstTied: team.winsAgainstTied, lossesAgainstTied: team.lossesAgainstTied, - buchholzSets: team.buchholzSets, - buchholzMaps: team.buchholzMaps, + opponentSetWinPercentage: this.trackRecordToWinPercentage( + team.opponentSets, + ), + opponentMapWinPercentage: this.trackRecordToWinPercentage( + team.opponentMaps, + ), points: 0, }, }; @@ -1510,6 +1553,13 @@ class SwissBracket extends Bracket { ); } + private trackRecordToWinPercentage(trackRecord: TeamTrackRecord) { + return cutToNDecimalPlaces( + (trackRecord.wins / (trackRecord.wins + trackRecord.losses)) * 100, + 2, + ); + } + get type(): Tables["TournamentStage"]["type"] { return "swiss"; } diff --git a/app/features/tournament-bracket/core/tests/mocks.ts b/app/features/tournament-bracket/core/tests/mocks.ts index 51effda352..a69f77ad54 100644 --- a/app/features/tournament-bracket/core/tests/mocks.ts +++ b/app/features/tournament-bracket/core/tests/mocks.ts @@ -6529,6 +6529,7 @@ export const PADDLING_POOL_255 = () => }, tournament_id: 18, type: "round_robin", + createdAt: 1708538411, }, ], group: [ @@ -6584,162 +6585,189 @@ export const PADDLING_POOL_255 = () => group_id: 56, number: 1, stage_id: 20, + maps: null, }, { id: 286, group_id: 56, number: 2, stage_id: 20, + maps: null, }, { id: 287, group_id: 56, number: 3, stage_id: 20, + maps: null, }, { id: 288, group_id: 57, number: 1, stage_id: 20, + maps: null, }, { id: 289, group_id: 57, number: 2, stage_id: 20, + maps: null, }, { id: 290, group_id: 57, number: 3, stage_id: 20, + maps: null, }, { id: 291, group_id: 58, number: 1, stage_id: 20, + maps: null, }, { id: 292, group_id: 58, number: 2, stage_id: 20, + maps: null, }, { id: 293, group_id: 58, number: 3, stage_id: 20, + maps: null, }, { id: 294, group_id: 59, number: 1, stage_id: 20, + maps: null, }, { id: 295, group_id: 59, number: 2, stage_id: 20, + maps: null, }, { id: 296, group_id: 59, number: 3, stage_id: 20, + maps: null, }, { id: 297, group_id: 60, number: 1, stage_id: 20, + maps: null, }, { id: 298, group_id: 60, number: 2, stage_id: 20, + maps: null, }, { id: 299, group_id: 60, number: 3, stage_id: 20, + maps: null, }, { id: 300, group_id: 61, number: 1, stage_id: 20, + maps: null, }, { id: 301, group_id: 61, number: 2, stage_id: 20, + maps: null, }, { id: 302, group_id: 61, number: 3, stage_id: 20, + maps: null, }, { id: 303, group_id: 62, number: 1, stage_id: 20, + maps: null, }, { id: 304, group_id: 62, number: 2, stage_id: 20, + maps: null, }, { id: 305, group_id: 62, number: 3, stage_id: 20, + maps: null, }, { id: 306, group_id: 63, number: 1, stage_id: 20, + maps: null, }, { id: 307, group_id: 63, number: 2, stage_id: 20, + maps: null, }, { id: 308, group_id: 63, number: 3, stage_id: 20, + maps: null, }, { id: 309, group_id: 64, number: 1, stage_id: 20, + maps: null, }, { id: 310, group_id: 64, number: 2, stage_id: 20, + maps: null, }, { id: 311, group_id: 64, number: 3, stage_id: 20, + maps: null, }, ], match: [ @@ -6756,6 +6784,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 2, lastGameFinishedAt: null, + createdAt: null, }, { id: 1427, @@ -6779,6 +6808,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539630, + createdAt: null, }, { id: 1428, @@ -6793,6 +6823,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 2, lastGameFinishedAt: null, + createdAt: null, }, { id: 1429, @@ -6816,6 +6847,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540764, + createdAt: null, }, { id: 1430, @@ -6830,6 +6862,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 2, lastGameFinishedAt: null, + createdAt: null, }, { id: 1431, @@ -6853,6 +6886,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541779, + createdAt: null, }, { id: 1432, @@ -6876,6 +6910,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539432, + createdAt: null, }, { id: 1433, @@ -6899,6 +6934,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540260, + createdAt: null, }, { id: 1434, @@ -6922,6 +6958,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541534, + createdAt: null, }, { id: 1435, @@ -6945,6 +6982,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541061, + createdAt: null, }, { id: 1436, @@ -6968,6 +7006,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708543160, + createdAt: null, }, { id: 1437, @@ -6991,6 +7030,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708542086, + createdAt: null, }, { id: 1438, @@ -7014,6 +7054,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540004, + createdAt: null, }, { id: 1439, @@ -7037,6 +7078,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539745, + createdAt: null, }, { id: 1440, @@ -7060,6 +7102,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541376, + createdAt: null, }, { id: 1441, @@ -7083,6 +7126,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541456, + createdAt: null, }, { id: 1442, @@ -7106,6 +7150,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708543165, + createdAt: null, }, { id: 1443, @@ -7129,6 +7174,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708543022, + createdAt: null, }, { id: 1444, @@ -7152,6 +7198,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539666, + createdAt: null, }, { id: 1445, @@ -7175,6 +7222,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539674, + createdAt: null, }, { id: 1446, @@ -7198,6 +7246,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540981, + createdAt: null, }, { id: 1447, @@ -7221,6 +7270,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540741, + createdAt: null, }, { id: 1448, @@ -7244,6 +7294,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708542080, + createdAt: null, }, { id: 1449, @@ -7267,6 +7318,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708542786, + createdAt: null, }, { id: 1450, @@ -7290,6 +7342,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539616, + createdAt: null, }, { id: 1451, @@ -7313,6 +7366,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539686, + createdAt: null, }, { id: 1452, @@ -7336,6 +7390,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541068, + createdAt: null, }, { id: 1453, @@ -7359,6 +7414,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540768, + createdAt: null, }, { id: 1454, @@ -7382,6 +7438,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541871, + createdAt: null, }, { id: 1455, @@ -7405,6 +7462,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708542578, + createdAt: null, }, { id: 1456, @@ -7428,6 +7486,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539276, + createdAt: null, }, { id: 1457, @@ -7451,6 +7510,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539414, + createdAt: null, }, { id: 1458, @@ -7474,6 +7534,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540235, + createdAt: null, }, { id: 1459, @@ -7497,6 +7558,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541059, + createdAt: null, }, { id: 1460, @@ -7520,6 +7582,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708542478, + createdAt: null, }, { id: 1461, @@ -7543,6 +7606,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708543244, + createdAt: null, }, { id: 1462, @@ -7566,6 +7630,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540410, + createdAt: null, }, { id: 1463, @@ -7589,6 +7654,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539690, + createdAt: null, }, { id: 1464, @@ -7612,6 +7678,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540751, + createdAt: null, }, { id: 1465, @@ -7635,6 +7702,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541418, + createdAt: null, }, { id: 1466, @@ -7658,6 +7726,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708543162, + createdAt: null, }, { id: 1467, @@ -7681,6 +7750,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708542607, + createdAt: null, }, { id: 1468, @@ -7704,6 +7774,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540075, + createdAt: null, }, { id: 1469, @@ -7727,6 +7798,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539852, + createdAt: null, }, { id: 1470, @@ -7750,6 +7822,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541400, + createdAt: null, }, { id: 1471, @@ -7773,6 +7846,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541516, + createdAt: null, }, { id: 1472, @@ -7796,6 +7870,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708543015, + createdAt: null, }, { id: 1473, @@ -7819,6 +7894,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541932, + createdAt: null, }, { id: 1474, @@ -7842,6 +7918,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708540286, + createdAt: null, }, { id: 1475, @@ -7865,6 +7942,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708539762, + createdAt: null, }, { id: 1476, @@ -7888,6 +7966,7 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541235, + createdAt: null, }, { id: 1477, @@ -7911,6 +7990,55 @@ export const PADDLING_POOL_255 = () => stage_id: 20, status: 4, lastGameFinishedAt: 1708541417, + createdAt: null, + }, + { + id: 1478, + group_id: 64, + number: 1, + opponent1: { + id: 723, + position: 27, + score: 1, + result: "loss", + totalPoints: 110, + }, + opponent2: { + id: 725, + position: 28, + score: 2, + result: "win", + totalPoints: 187, + }, + round_id: 311, + stage_id: 20, + status: 4, + lastGameFinishedAt: 1708543181, + createdAt: null, + }, + { + id: 1479, + group_id: 64, + number: 2, + opponent1: { + id: 709, + position: 10, + score: 2, + result: "win", + totalPoints: 188, + }, + opponent2: { + id: 701, + position: 9, + score: 0, + result: "loss", + totalPoints: 155, + }, + round_id: 311, + stage_id: 20, + status: 4, + lastGameFinishedAt: 1708542582, + createdAt: null, }, ], }, @@ -12478,7 +12606,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 698, position: 1 }, + opponent1: { + id: 698, + position: 1, + }, opponent2: null, }, { @@ -12488,8 +12619,14 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 2, - opponent1: { id: 674, position: 16 }, - opponent2: { id: 706, position: 17 }, + opponent1: { + id: 674, + position: 16, + }, + opponent2: { + id: 706, + position: 17, + }, }, { id: 2, @@ -12498,7 +12635,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 697, position: 8 }, + opponent1: { + id: 697, + position: 8, + }, opponent2: null, }, { @@ -12508,7 +12648,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 701, position: 9 }, + opponent1: { + id: 709, + position: 9, + }, opponent2: null, }, { @@ -12518,7 +12661,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 724, position: 4 }, + opponent1: { + id: 724, + position: 4, + }, opponent2: null, }, { @@ -12528,7 +12674,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 719, position: 13 }, + opponent1: { + id: 719, + position: 13, + }, opponent2: null, }, { @@ -12538,7 +12687,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 713, position: 5 }, + opponent1: { + id: 713, + position: 5, + }, opponent2: null, }, { @@ -12548,7 +12700,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 702, position: 12 }, + opponent1: { + id: 702, + position: 12, + }, opponent2: null, }, { @@ -12558,7 +12713,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 718, position: 2 }, + opponent1: { + id: 718, + position: 2, + }, opponent2: null, }, { @@ -12568,8 +12726,14 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 2, - opponent1: { id: 720, position: 15 }, - opponent2: { id: 709, position: 18 }, + opponent1: { + id: 720, + position: 15, + }, + opponent2: { + id: 701, + position: 18, + }, }, { id: 10, @@ -12578,7 +12742,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 722, position: 7 }, + opponent1: { + id: 722, + position: 7, + }, opponent2: null, }, { @@ -12588,7 +12755,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 673, position: 10 }, + opponent1: { + id: 673, + position: 10, + }, opponent2: null, }, { @@ -12598,7 +12768,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 716, position: 3 }, + opponent1: { + id: 716, + position: 3, + }, opponent2: null, }, { @@ -12608,7 +12781,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 715, position: 14 }, + opponent1: { + id: 715, + position: 14, + }, opponent2: null, }, { @@ -12618,7 +12794,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 677, position: 6 }, + opponent1: { + id: 677, + position: 6, + }, opponent2: null, }, { @@ -12628,7 +12807,10 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 0, status: 0, - opponent1: { id: 678, position: 11 }, + opponent1: { + id: 678, + position: 11, + }, opponent2: null, }, { @@ -12638,8 +12820,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 1, - opponent1: { id: 698, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: 698, + }, + opponent2: { + id: null, + }, }, { id: 17, @@ -12648,8 +12834,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 2, - opponent1: { id: 697, position: undefined }, - opponent2: { id: 701, position: undefined }, + opponent1: { + id: 697, + }, + opponent2: { + id: 709, + }, }, { id: 18, @@ -12658,8 +12848,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 2, - opponent1: { id: 724, position: undefined }, - opponent2: { id: 719, position: undefined }, + opponent1: { + id: 724, + }, + opponent2: { + id: 719, + }, }, { id: 19, @@ -12668,8 +12862,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 2, - opponent1: { id: 713, position: undefined }, - opponent2: { id: 702, position: undefined }, + opponent1: { + id: 713, + }, + opponent2: { + id: 702, + }, }, { id: 20, @@ -12678,8 +12876,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 1, - opponent1: { id: 718, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: 718, + }, + opponent2: { + id: null, + }, }, { id: 21, @@ -12688,8 +12890,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 2, - opponent1: { id: 722, position: undefined }, - opponent2: { id: 673, position: undefined }, + opponent1: { + id: 722, + }, + opponent2: { + id: 673, + }, }, { id: 22, @@ -12698,8 +12904,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 2, - opponent1: { id: 716, position: undefined }, - opponent2: { id: 715, position: undefined }, + opponent1: { + id: 716, + }, + opponent2: { + id: 715, + }, }, { id: 23, @@ -12708,8 +12918,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 1, status: 2, - opponent1: { id: 677, position: undefined }, - opponent2: { id: 678, position: undefined }, + opponent1: { + id: 677, + }, + opponent2: { + id: 678, + }, }, { id: 24, @@ -12718,8 +12932,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 2, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 25, @@ -12728,8 +12946,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 2, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 26, @@ -12738,8 +12960,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 2, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 27, @@ -12748,8 +12974,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 2, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 28, @@ -12758,8 +12988,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 3, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 29, @@ -12768,8 +13002,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 3, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 30, @@ -12778,8 +13016,12 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 0, round_id: 4, status: 0, - opponent1: { id: null, position: undefined }, - opponent2: { id: null, position: undefined }, + opponent1: { + id: null, + }, + opponent2: { + id: null, + }, }, { id: 31, @@ -12788,8 +13030,14 @@ export const PADDLING_POOL_255_TOP_CUT_INITIAL_MATCHES = () => [ group_id: 1, round_id: 5, status: 0, - opponent1: { id: null, position: 1 }, - opponent2: { id: null, position: 2 }, + opponent1: { + id: null, + position: 1, + }, + opponent2: { + id: null, + position: 2, + }, }, ];