diff --git a/docs/APP_YOUTUBE_LIVE.md b/docs/APP_YOUTUBE_LIVE.md
index a89c092..0c4dcc4 100644
--- a/docs/APP_YOUTUBE_LIVE.md
+++ b/docs/APP_YOUTUBE_LIVE.md
@@ -38,10 +38,10 @@ Solo se la società vuole il **proprio** canale invece di Match Live TV:
Nella home app (**Partite**):
-- **Partita programmata** — scegli dal calendario una gara già inserita (sito o app)
- **Nuova partita** — programma data/ora oppure **Avvia subito** senza orario
+- Oppure tocca una gara già in calendario (sito o app)
-Poi tocca la card o conferma dal foglio: si apre il wizard (Partita → Trasmissione → …).
+Poi conferma dal foglio o tocca la card: si apre il wizard (Partita → Trasmissione → …).
## 4. Avvia diretta
diff --git a/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt b/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt
index 4565d59..ad845ef 100644
--- a/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt
+++ b/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt
@@ -57,7 +57,6 @@ import com.matchlivetv.match_live_tv.ui.components.LanguagePickerDialog
import com.matchlivetv.match_live_tv.ui.components.MatchLiveWordmark
import com.matchlivetv.match_live_tv.ui.components.MatchPrimaryButton
import com.matchlivetv.match_live_tv.ui.components.MatchScreenScaffold
-import com.matchlivetv.match_live_tv.ui.components.MatchSecondaryButton
import com.matchlivetv.match_live_tv.ui.theme.MatchColors
import kotlinx.coroutines.launch
@@ -237,18 +236,11 @@ fun MatchesScreen(
style = MaterialTheme.typography.bodyMedium,
)
Spacer(Modifier.height(16.dp))
- Row(horizontalArrangement = Arrangement.spacedBy(12.dp)) {
- MatchSecondaryButton(
- label = stringResource(R.string.matches_schedule).uppercase(),
- onClick = { showScheduleSheet = true },
- modifier = Modifier.weight(1f),
- )
- MatchPrimaryButton(
- label = stringResource(R.string.matches_new).uppercase(),
- onClick = { showNewMatchSheet = true },
- modifier = Modifier.weight(1f),
- )
- }
+ MatchPrimaryButton(
+ label = stringResource(R.string.matches_new).uppercase(),
+ onClick = { showNewMatchSheet = true },
+ modifier = Modifier.fillMaxWidth(),
+ )
Spacer(Modifier.height(8.dp))
activeTeam?.let { team ->
TeamPickerBar(
diff --git a/native/android/app/src/main/res/values-de/strings.xml b/native/android/app/src/main/res/values-de/strings.xml
index 34dba73..250597d 100644
--- a/native/android/app/src/main/res/values-de/strings.xml
+++ b/native/android/app/src/main/res/values-de/strings.xml
@@ -21,13 +21,12 @@
Anmeldung fehlgeschlagen
Spiele
Hallo, %1$s
- Nimm einen laufenden Livestream wieder auf oder starte ein geplantes Spiel.
- Geplantes Spiel
+ Nimm einen laufenden Livestream wieder auf oder starte ein neues Spiel.
Neues Spiel
Keine Spiele im Kalender
Geplante Spiele
Bereit zum Start
- Plane ein Spiel oder starte ein neues mit «Neues Spiel».
+ Tippe auf «Neues Spiel», um im Voraus zu planen oder sofort zu starten.
Aktives Team: %1$s.
Du hast mehrere Teams: prüfe die oben ausgewählte.
Keine weiteren Spiele im Kalender.
diff --git a/native/android/app/src/main/res/values-en/strings.xml b/native/android/app/src/main/res/values-en/strings.xml
index 7612762..4e2faa4 100644
--- a/native/android/app/src/main/res/values-en/strings.xml
+++ b/native/android/app/src/main/res/values-en/strings.xml
@@ -21,13 +21,12 @@
Login failed
Matches
Hi, %1$s
- Resume a live stream or start a scheduled match.
- Scheduled match
+ Resume a live stream or start a new match.
New match
No matches on the calendar
Scheduled matches
Ready to start
- Schedule a match or start a new one with «New match».
+ Tap «New match» to schedule ahead or start right away.
Active team: %1$s.
You have multiple teams: check the one selected above.
No other matches on the calendar.
diff --git a/native/android/app/src/main/res/values-es/strings.xml b/native/android/app/src/main/res/values-es/strings.xml
index 70f3564..5371de8 100644
--- a/native/android/app/src/main/res/values-es/strings.xml
+++ b/native/android/app/src/main/res/values-es/strings.xml
@@ -21,13 +21,12 @@
Error de acceso
Partidos
Hola, %1$s
- Reanuda un directo en curso o inicia un partido programado.
- Partido programado
+ Reanuda un directo en curso o inicia un nuevo partido.
Nuevo partido
Ningún partido en el calendario
Partidos programados
Listos para empezar
- Programa un partido o inicia uno nuevo con «Nuevo partido».
+ Toca «Nuevo partido» para programar con antelación o empezar ya.
Equipo activo: %1$s.
Tienes varios equipos: comprueba el seleccionado arriba.
Ningún otro partido en el calendario.
diff --git a/native/android/app/src/main/res/values-fr/strings.xml b/native/android/app/src/main/res/values-fr/strings.xml
index 6a4a6fd..fad9546 100644
--- a/native/android/app/src/main/res/values-fr/strings.xml
+++ b/native/android/app/src/main/res/values-fr/strings.xml
@@ -21,13 +21,12 @@
Échec de la connexion
Matchs
Bonjour, %1$s
- Reprenez un direct en cours ou démarrez un match programmé.
- Match programmé
+ Reprenez un direct en cours ou démarrez un nouveau match.
Nouveau match
Aucun match au calendrier
Matchs programmés
Prêts à démarrer
- Programmez un match ou démarrez-en un avec « Nouveau match ».
+ Touchez « Nouveau match » pour planifier à l\'avance ou démarrer tout de suite.
Équipe active : %1$s.
Vous avez plusieurs équipes : vérifiez celle sélectionnée ci-dessus.
Aucun autre match au calendrier.
diff --git a/native/android/app/src/main/res/values/strings.xml b/native/android/app/src/main/res/values/strings.xml
index 15842f1..d726872 100644
--- a/native/android/app/src/main/res/values/strings.xml
+++ b/native/android/app/src/main/res/values/strings.xml
@@ -21,13 +21,12 @@
Login fallito
Partite
Ciao, %1$s
- Riprendi una diretta in corso o avvia una partita programmata.
- Partita programmata
+ Riprendi una diretta in corso o avvia una nuova partita.
Nuova partita
Nessuna partita in calendario
Partite programmate
Pronte da avviare
- Programma una partita o avviane una nuova con «Nuova partita».
+ Tocca «Nuova partita» per programmare in anticipo o avviare subito.
Squadra attiva: %1$s.
Hai più squadre: verifica quella selezionata sopra.
Nessuna altra partita in calendario.
diff --git a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj
index e8b3f66..33aa63a 100644
--- a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj
+++ b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj
@@ -4,191 +4,191 @@
classes = {};
objectVersion = 60;
objects = {
- 25930AAB8F8A4E43A9FBE5EE /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; };
- 7B67B2CEBA2D4765892F5D35 /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; };
- DE94E33A56BB4272B4125448 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; };
- FFCEF74E04524E6E829E98A7 /* AppLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppLanguage.swift; path = MatchLiveTv/Core/AppLanguage.swift; sourceTree = ""; };
- 4E743B662F034CE780350C20 /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; };
- C5B70A5291FD45159FE4C19B /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; };
- C3A078B723E14413890CAFAB /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; };
- 7068311D5BB3421BAFF79C58 /* ThermalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalState.swift; path = MatchLiveTv/Core/Thermal/ThermalState.swift; sourceTree = ""; };
- 5DB45642BEBB4F6F9003A8AC /* ThermalStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalStateManager.swift; path = MatchLiveTv/Core/Thermal/ThermalStateManager.swift; sourceTree = ""; };
- 4780AA60D2F543B396474E9D /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; };
- 92302BD18B5F46F79A9363C0 /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; };
- AF13DB6CEA76489580B2A2C3 /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; };
- A5E463597BE34D2AB7263AC4 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; };
- 275CAE44E4CD48B580CF07A8 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; };
- D2A5061AAEB049DFB1B1C7F7 /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; };
- 836E47CBA9E64A6988F7B73B /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; };
- F9840E5C5FF141288900A98F /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; };
- BCE66B016A2445B8A131CCC1 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; };
- DCA182391E944AE5A2597AC3 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; };
- 4445135A67D44E73901769BB /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; };
- 5A7A837C2DC94B3293762A7F /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; };
- DDD70F309E2B4520859A2C2C /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; };
- 7C33D42852814E1DBB3A08E1 /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; };
- F8EC5F4C8C614E0DB4B12C70 /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; };
- 4613F07CA9354AAA92BC5DBB /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; };
- 93698CDE6B6A4E9C9AE95963 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; };
- D5227DDCD86440DB80A47C8C /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; };
- BEEF93149EDE4FDFA08B3688 /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; };
- D081E0B54929401CBD18B09B /* BroadcastOrientationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicy.swift; path = MatchLiveTv/Streaming/BroadcastOrientationPolicy.swift; sourceTree = ""; };
- 942B3BBFFF4940C4BB3C8BC9 /* BroadcastVideoOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastVideoOrientation.swift; path = MatchLiveTv/Streaming/BroadcastVideoOrientation.swift; sourceTree = ""; };
- 51F581CC803B4A05AB15ABFA /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; };
- 079AC7A791404EEC85BFA269 /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; };
- 30119FBFE90B49E7911D9737 /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; };
- 33CB77EE9F4B495B8C307CA5 /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; };
- EFFC303AD7734A02ACD4325B /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; };
- F08A6AE984BE4B67B4D276E9 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; };
- D810F5CF78494774A6D64E88 /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; };
- CD9D26A5CFAC47D3B3A00A54 /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; };
- F84797151F98436F92A43801 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; };
- 6C6C729574BA484FBB714BE6 /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; };
- 8C6CCCA5DA7747C98FE8ACB1 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; };
- BA5FFA3368E34F0AAE4851D9 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; };
- A41A4566F556459F993D61B9 /* StreamVideoPreset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StreamVideoPreset.swift; path = MatchLiveTv/Streaming/StreamVideoPreset.swift; sourceTree = ""; };
- 7D5C91D62B6343D0972A72AF /* AccountScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AccountScreen.swift; path = MatchLiveTv/UI/Account/AccountScreen.swift; sourceTree = ""; };
- 18E52B37E419404CB99B28DE /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; };
- 2988D9C0BC3F434FBCC49005 /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; };
- 6C447F04ECB943BC9AD0CC95 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; };
- 663B320566A34BC7A697DFE0 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; };
- 66297B25A76040998427B00A /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; };
- 0509277A18804D73AC889EBF /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; };
- 862C65E351B04B7E9A26D895 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; };
- 8DC0D1A989A54BB8B0A6FF0D /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; };
- 0013266D6FB3498EBA78F131 /* ForgotPasswordScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ForgotPasswordScreen.swift; path = MatchLiveTv/UI/Login/ForgotPasswordScreen.swift; sourceTree = ""; };
- 01D7C441CF43473787AB1720 /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; };
- 3AA170A67A524F7B9563F81A /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; };
- 2D57A402BE894D8FA625269F /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; };
- 1469CB388C764A01895C0E56 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; };
- DA2ACAEFFF3E44BD95FA28F3 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; };
- 341078754C184DC5A4CCB56D /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; };
- 05E248B7A47B4B549FD5F6B0 /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; };
- A8F12B26A63C439DB7E37629 /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; };
- 01F16E96445F4E4F8744155E /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; };
- 82B05DFC0D2F4B33BCEC2DF9 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShareSheet.swift; path = MatchLiveTv/UI/System/ShareSheet.swift; sourceTree = ""; };
- 8AC1A90E227C4027B14CA899 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; };
- 143E3FD4FE3944BB89986819 /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; };
- E4085602D215442FABF7D56B /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; };
- 9910E7A0009E4A5A994D1784 /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; };
- D796A667DA364E06AD80F8F8 /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; };
- 178F643E4BE04E86A40992E0 /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; };
- BD032228BAEE44238BCBACAB /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; };
- 074933275EC440FCAEAA71B3 /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; };
- C56969F21CC744729FBE7ED9 /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; };
- 458846739B99444AA8933F36 /* BroadcastOrientationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicyTests.swift; path = MatchLiveTvTests/BroadcastOrientationPolicyTests.swift; sourceTree = ""; };
- 7DCEB3554AA14496B1D42AB3 /* LiveBroadcastCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinatorTests.swift; path = MatchLiveTvTests/LiveBroadcastCoordinatorTests.swift; sourceTree = ""; };
- C775B052F37144CB9DFD8739 /* LiveScoreDialogHostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreDialogHostTests.swift; path = MatchLiveTvTests/LiveScoreDialogHostTests.swift; sourceTree = ""; };
- 34DA4AF7CB6341D086039463 /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; };
- 5ACD231AB9D14C9F820B31E1 /* ScoreActionDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreActionDecodeTests.swift; path = MatchLiveTvTests/ScoreActionDecodeTests.swift; sourceTree = ""; };
- 6F114B436A2743ECB16C9A41 /* ScoreControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreControllerTests.swift; path = MatchLiveTvTests/ScoreControllerTests.swift; sourceTree = ""; };
- 5ABDD09123574C94AE35CF4C /* ThermalAdaptationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalAdaptationTests.swift; path = MatchLiveTvTests/ThermalAdaptationTests.swift; sourceTree = ""; };
- A54257E581AD43BDBD468313 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; };
- E25FA8689C814A8A820B8CF2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; };
- 9FF4CCB1FBBA4C1B91A344C8 /* it.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/it.lproj; sourceTree = ""; };
- 3DD2152FD3474235B91FE542 /* en.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/en.lproj; sourceTree = ""; };
- 1FB08DA4A2B140008EBA2F86 /* fr.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/fr.lproj; sourceTree = ""; };
- B40D03FC806E4F13A866ACB4 /* de.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/de.lproj; sourceTree = ""; };
- 3176CFCA2D624B67BCD3D85D /* es.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/es.lproj; sourceTree = ""; };
- 90A99EA318D646F9BC464205 /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; };
- CD9E5C058EC34B4983CC457C /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 9ED2582C45E943B99BDE1280 /* HaishinKit */ = {isa = XCSwiftPackageProductDependency; package = D5732E009B7E4D378A1F71DB; productName = HaishinKit; };
- 39E98F78A87F42EEB820737D /* RTMPHaishinKit */ = {isa = XCSwiftPackageProductDependency; package = D5732E009B7E4D378A1F71DB; productName = RTMPHaishinKit; };
- ACDEEF4A785241FF87295B4B /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25930AAB8F8A4E43A9FBE5EE /* MatchLiveTvApp.swift */; };
- 9765D71AFD884B20920396F4 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B67B2CEBA2D4765892F5D35 /* ApiInstant.swift */; };
- 9177576D5E59450781F7F300 /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94E33A56BB4272B4125448 /* AppConfig.swift */; };
- 7CE6D945C55D4C0A8CB28FDC /* AppLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFCEF74E04524E6E829E98A7 /* AppLanguage.swift */; };
- C123E8D4F09748CA9422F68D /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E743B662F034CE780350C20 /* ColorHex.swift */; };
- F430E29862EE48DBA6C5479A /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B70A5291FD45159FE4C19B /* DeviceTelemetry.swift */; };
- 5A2235553DE54319B8E2AD1C /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A078B723E14413890CAFAB /* MediaUrl.swift */; };
- C3DFB4D42B8344E2A5048A02 /* ThermalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7068311D5BB3421BAFF79C58 /* ThermalState.swift */; };
- D3E0FDF059ED40D8B3438FC1 /* ThermalStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DB45642BEBB4F6F9003A8AC /* ThermalStateManager.swift */; };
- 417111487CD2457090E18647 /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4780AA60D2F543B396474E9D /* TokenStore.swift */; };
- 54C9F052B9AD4314AA06EC47 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92302BD18B5F46F79A9363C0 /* UserFacingError.swift */; };
- 90DD8717E849465C894797C7 /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF13DB6CEA76489580B2A2C3 /* ApiDtos.swift */; };
- 973A35E12FA443479B3AC6AD /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5E463597BE34D2AB7263AC4 /* MatchLiveAPI.swift */; };
- 3F7BEB03B5174D01B094ADC6 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275CAE44E4CD48B580CF07A8 /* AppContainer.swift */; };
- 4C86E02CAF9E40CAAA6FA44F /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A5061AAEB049DFB1B1C7F7 /* ActionCableClient.swift */; };
- 95D3AADB1FB7416EA92939B7 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836E47CBA9E64A6988F7B73B /* SessionCableService.swift */; };
- EA7523924BFE4737AB0268E5 /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9840E5C5FF141288900A98F /* AuthRepository.swift */; };
- D8F35B67C6E74052BFE3608C /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCE66B016A2445B8A131CCC1 /* MatchRepository.swift */; };
- 1E28B9D42D1F4CE2A1177B10 /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA182391E944AE5A2597AC3 /* MatchSessionLauncher.swift */; };
- 8769CB1C058248D5B09D67CF /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4445135A67D44E73901769BB /* ScoreRepository.swift */; };
- 8767A7BF3B9149688C6A87DC /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A7A837C2DC94B3293762A7F /* SessionRepository.swift */; };
- 14CF66D5D0434401B65F19B6 /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDD70F309E2B4520859A2C2C /* ScoreController.swift */; };
- A3A73D4B094C4F2585ED4D5C /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C33D42852814E1DBB3A08E1 /* WizardSessionHolder.swift */; };
- 9C9F0CF9600341C896D9AFAD /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8EC5F4C8C614E0DB4B12C70 /* MatchHubFilter.swift */; };
- 877A03C3533D4A3CAF58E545 /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4613F07CA9354AAA92BC5DBB /* MatchScoringRules.swift */; };
- 4A762F216E62456283EFCB95 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93698CDE6B6A4E9C9AE95963 /* Models.swift */; };
- DD2EF3BEFCC34239B7097D6C /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5227DDCD86440DB80A47C8C /* ScoreState.swift */; };
- 6C82050CCABC42C4BCDEDB56 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEEF93149EDE4FDFA08B3688 /* BroadcastModels.swift */; };
- 030ED957A3C14B258457A5F6 /* BroadcastOrientationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E0B54929401CBD18B09B /* BroadcastOrientationPolicy.swift */; };
- F44EEE26569D4FCF9EAB1781 /* BroadcastVideoOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 942B3BBFFF4940C4BB3C8BC9 /* BroadcastVideoOrientation.swift */; };
- E853839BE7014FDB979BC8E2 /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F581CC803B4A05AB15ABFA /* LiveBroadcastCoordinator.swift */; };
- B27F0A51FF544BF7BBF2E132 /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 079AC7A791404EEC85BFA269 /* LiveBroadcastEngine.swift */; };
- E45C4A889E3F4174AE4FCA25 /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30119FBFE90B49E7911D9737 /* CompactScoreboardElement.swift */; };
- DF8C998C016042258F40D3FE /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CB77EE9F4B495B8C307CA5 /* OverlayCanvasRenderer.swift */; };
- 0127E05661D24F1DAA768A39 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFFC303AD7734A02ACD4325B /* OverlayLogoCache.swift */; };
- 7089DB15FC694FB3A7083D96 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08A6AE984BE4B67B4D276E9 /* OverlayMappings.swift */; };
- 0B72360FBC4749FD94E6BAAB /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D810F5CF78494774A6D64E88 /* OverlayRenderer.swift */; };
- 0823F27AA8B944A3B62B3333 /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD9D26A5CFAC47D3B3A00A54 /* OverlayState.swift */; };
- 730BF729664343E18A784EA7 /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = F84797151F98436F92A43801 /* ScoreboardElement.swift */; };
- 0A800720080043F99B2D432B /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C6C729574BA484FBB714BE6 /* SponsorElement.swift */; };
- F643CA5B06064E839BD4AE52 /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C6CCCA5DA7747C98FE8ACB1 /* WatermarkElement.swift */; };
- 2F793DD9D2DD47A28517AD47 /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA5FFA3368E34F0AAE4851D9 /* LivePreviewView.swift */; };
- 1706660774B2480B8849D596 /* StreamVideoPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = A41A4566F556459F993D61B9 /* StreamVideoPreset.swift */; };
- 518293D2E3B148869F40831D /* AccountScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D5C91D62B6343D0972A72AF /* AccountScreen.swift */; };
- 44401578BE2D4143AAA73092 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E52B37E419404CB99B28DE /* BroadcastControlsOverlay.swift */; };
- 5DDABE391DE44D738B027CDF /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2988D9C0BC3F434FBCC49005 /* BroadcastScreen.swift */; };
- 25266B72797C4D6C9C678E9C /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C447F04ECB943BC9AD0CC95 /* LiveScoreActions.swift */; };
- 4D044E89FA42456DB0D681C3 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663B320566A34BC7A697DFE0 /* MatchLiveWordmark.swift */; };
- 34F29FBD99A3444D952FA8DB /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66297B25A76040998427B00A /* MatchPrimaryButton.swift */; };
- B8C6C70CA6ED4BB1AC97B4B6 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0509277A18804D73AC889EBF /* MatchScreenScaffold.swift */; };
- F5C61F3B323F47F1B19D8FD9 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 862C65E351B04B7E9A26D895 /* MatchSecondaryButton.swift */; };
- 4E34FC80685D43B7BD581D91 /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DC0D1A989A54BB8B0A6FF0D /* MatchStatusBadge.swift */; };
- 3FB9A0B71AD14DF2B2166DEE /* ForgotPasswordScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0013266D6FB3498EBA78F131 /* ForgotPasswordScreen.swift */; };
- ECA5F96A38CF4E868A11E973 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D7C441CF43473787AB1720 /* LoginScreen.swift */; };
- 4B627CF96CD44918A67F3FB3 /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA170A67A524F7B9563F81A /* MatchesScreen.swift */; };
- 29D481B5AC824559B9E7C3DD /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D57A402BE894D8FA625269F /* AppNavHost.swift */; };
- 3B45AABC76A94873B815B78C /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1469CB388C764A01895C0E56 /* ModalRoutes.swift */; };
- 7E4443CD7DDD4A6982CE59BE /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA2ACAEFFF3E44BD95FA28F3 /* Routes.swift */; };
- CAFFE6603F904FF3AE52B024 /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341078754C184DC5A4CCB56D /* BroadcastPermissions.swift */; };
- F9EC9F338E354428B4DDD123 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05E248B7A47B4B549FD5F6B0 /* SplashScreen.swift */; };
- 3A28378EEA014E0E919FC85A /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F12B26A63C439DB7E37629 /* KeepScreenOn.swift */; };
- 0EFFD0F8D14744409490A888 /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F16E96445F4E4F8744155E /* ScreenOrientation.swift */; };
- 3033B001A2B04F9EA5C0AFEA /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B05DFC0D2F4B33BCEC2DF9 /* ShareSheet.swift */; };
- FA9FC8585CB34F6FB051ADAE /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AC1A90E227C4027B14CA899 /* MatchColors.swift */; };
- DE419560D0934C0E80396624 /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 143E3FD4FE3944BB89986819 /* StepMatchScreen.swift */; };
- 968C0C21153646D49BF42000 /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4085602D215442FABF7D56B /* StepNetworkTestScreen.swift */; };
- AF8AFF8D78F94A47B0F53815 /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9910E7A0009E4A5A994D1784 /* StepTransmissionScreen.swift */; };
- 3E2B348427E844A5929927A3 /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D796A667DA364E06AD80F8F8 /* TeamBrandingEditor.swift */; };
- 0DF31674F9C74BE9AB0D0006 /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178F643E4BE04E86A40992E0 /* TeamColorPicker.swift */; };
- B3E8BC40BD7140A2B4CBB550 /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD032228BAEE44238BCBACAB /* WizardComponents.swift */; };
- 78349D6E899240F5A277235C /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 074933275EC440FCAEAA71B3 /* WizardShellScreen.swift */; };
- CDE0D7B5AB7D492AB95786B7 /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56969F21CC744729FBE7ED9 /* ApiInstantTests.swift */; };
- 3BD17C77BE2541C187E923CA /* BroadcastOrientationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 458846739B99444AA8933F36 /* BroadcastOrientationPolicyTests.swift */; };
- 752487F9A18F451C92BF95E8 /* LiveBroadcastCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCEB3554AA14496B1D42AB3 /* LiveBroadcastCoordinatorTests.swift */; };
- 57C059515D66492EA5A5B936 /* LiveScoreDialogHostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C775B052F37144CB9DFD8739 /* LiveScoreDialogHostTests.swift */; };
- 86D617A624DA4C43BE20E834 /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34DA4AF7CB6341D086039463 /* MatchScoringRulesTests.swift */; };
- 1882BB3E58F44F8CAEB5516A /* ScoreActionDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ACD231AB9D14C9F820B31E1 /* ScoreActionDecodeTests.swift */; };
- 27268016D43546FEADD5EA90 /* ScoreControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F114B436A2743ECB16C9A41 /* ScoreControllerTests.swift */; };
- BEF6C46E10F94F76A5DCED53 /* ThermalAdaptationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ABDD09123574C94AE35CF4C /* ThermalAdaptationTests.swift */; };
- EE7051AE56B944269FE9FEB5 /* Assets in Resources */ = {isa = PBXBuildFile; fileRef = A54257E581AD43BDBD468313; };
- C24FC4D76FBE4403AD081F31 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 9FF4CCB1FBBA4C1B91A344C8; };
- CADFFEFDDE204D8983D5726E /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3DD2152FD3474235B91FE542; };
- 9CD61D14D20B4D79B760FF3A /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 1FB08DA4A2B140008EBA2F86; };
- 635046DE1EF64F57BCF4D7BA /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = B40D03FC806E4F13A866ACB4; };
- CCCBF87CA3E749368500DDBE /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3176CFCA2D624B67BCD3D85D; };
- 65634C6C829A41E1950996E5 = {isa = PBXGroup; children = (44DF7DFD6DB3478A978A9AE3, 9A0B188E5E8E4125B732D8B5, CFAA62945B53429C8791D791); sourceTree = ""; };
- 44DF7DFD6DB3478A978A9AE3 = {isa = PBXGroup; children = (25930AAB8F8A4E43A9FBE5EE, 7B67B2CEBA2D4765892F5D35, DE94E33A56BB4272B4125448, FFCEF74E04524E6E829E98A7, 4E743B662F034CE780350C20, C5B70A5291FD45159FE4C19B, C3A078B723E14413890CAFAB, 7068311D5BB3421BAFF79C58, 5DB45642BEBB4F6F9003A8AC, 4780AA60D2F543B396474E9D, 92302BD18B5F46F79A9363C0, AF13DB6CEA76489580B2A2C3, A5E463597BE34D2AB7263AC4, 275CAE44E4CD48B580CF07A8, D2A5061AAEB049DFB1B1C7F7, 836E47CBA9E64A6988F7B73B, F9840E5C5FF141288900A98F, BCE66B016A2445B8A131CCC1, DCA182391E944AE5A2597AC3, 4445135A67D44E73901769BB, 5A7A837C2DC94B3293762A7F, DDD70F309E2B4520859A2C2C, 7C33D42852814E1DBB3A08E1, F8EC5F4C8C614E0DB4B12C70, 4613F07CA9354AAA92BC5DBB, 93698CDE6B6A4E9C9AE95963, D5227DDCD86440DB80A47C8C, BEEF93149EDE4FDFA08B3688, D081E0B54929401CBD18B09B, 942B3BBFFF4940C4BB3C8BC9, 51F581CC803B4A05AB15ABFA, 079AC7A791404EEC85BFA269, 30119FBFE90B49E7911D9737, 33CB77EE9F4B495B8C307CA5, EFFC303AD7734A02ACD4325B, F08A6AE984BE4B67B4D276E9, D810F5CF78494774A6D64E88, CD9D26A5CFAC47D3B3A00A54, F84797151F98436F92A43801, 6C6C729574BA484FBB714BE6, 8C6CCCA5DA7747C98FE8ACB1, BA5FFA3368E34F0AAE4851D9, A41A4566F556459F993D61B9, 7D5C91D62B6343D0972A72AF, 18E52B37E419404CB99B28DE, 2988D9C0BC3F434FBCC49005, 6C447F04ECB943BC9AD0CC95, 663B320566A34BC7A697DFE0, 66297B25A76040998427B00A, 0509277A18804D73AC889EBF, 862C65E351B04B7E9A26D895, 8DC0D1A989A54BB8B0A6FF0D, 0013266D6FB3498EBA78F131, 01D7C441CF43473787AB1720, 3AA170A67A524F7B9563F81A, 2D57A402BE894D8FA625269F, 1469CB388C764A01895C0E56, DA2ACAEFFF3E44BD95FA28F3, 341078754C184DC5A4CCB56D, 05E248B7A47B4B549FD5F6B0, A8F12B26A63C439DB7E37629, 01F16E96445F4E4F8744155E, 82B05DFC0D2F4B33BCEC2DF9, 8AC1A90E227C4027B14CA899, 143E3FD4FE3944BB89986819, E4085602D215442FABF7D56B, 9910E7A0009E4A5A994D1784, D796A667DA364E06AD80F8F8, 178F643E4BE04E86A40992E0, BD032228BAEE44238BCBACAB, 074933275EC440FCAEAA71B3, A54257E581AD43BDBD468313, E25FA8689C814A8A820B8CF2, 9FF4CCB1FBBA4C1B91A344C8, 3DD2152FD3474235B91FE542, 1FB08DA4A2B140008EBA2F86, B40D03FC806E4F13A866ACB4, 3176CFCA2D624B67BCD3D85D); name = MatchLiveTv; sourceTree = ""; };
- 9A0B188E5E8E4125B732D8B5 = {isa = PBXGroup; children = (C56969F21CC744729FBE7ED9, 458846739B99444AA8933F36, 7DCEB3554AA14496B1D42AB3, C775B052F37144CB9DFD8739, 34DA4AF7CB6341D086039463, 5ACD231AB9D14C9F820B31E1, 6F114B436A2743ECB16C9A41, 5ABDD09123574C94AE35CF4C); name = MatchLiveTvTests; sourceTree = ""; };
- CFAA62945B53429C8791D791 = {isa = PBXGroup; children = (90A99EA318D646F9BC464205, CD9E5C058EC34B4983CC457C); name = Products; sourceTree = ""; };
- C690D9F363C04AB29B993DE3 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (ACDEEF4A785241FF87295B4B, 9765D71AFD884B20920396F4, 9177576D5E59450781F7F300, 7CE6D945C55D4C0A8CB28FDC, C123E8D4F09748CA9422F68D, F430E29862EE48DBA6C5479A, 5A2235553DE54319B8E2AD1C, C3DFB4D42B8344E2A5048A02, D3E0FDF059ED40D8B3438FC1, 417111487CD2457090E18647, 54C9F052B9AD4314AA06EC47, 90DD8717E849465C894797C7, 973A35E12FA443479B3AC6AD, 3F7BEB03B5174D01B094ADC6, 4C86E02CAF9E40CAAA6FA44F, 95D3AADB1FB7416EA92939B7, EA7523924BFE4737AB0268E5, D8F35B67C6E74052BFE3608C, 1E28B9D42D1F4CE2A1177B10, 8769CB1C058248D5B09D67CF, 8767A7BF3B9149688C6A87DC, 14CF66D5D0434401B65F19B6, A3A73D4B094C4F2585ED4D5C, 9C9F0CF9600341C896D9AFAD, 877A03C3533D4A3CAF58E545, 4A762F216E62456283EFCB95, DD2EF3BEFCC34239B7097D6C, 6C82050CCABC42C4BCDEDB56, 030ED957A3C14B258457A5F6, F44EEE26569D4FCF9EAB1781, E853839BE7014FDB979BC8E2, B27F0A51FF544BF7BBF2E132, E45C4A889E3F4174AE4FCA25, DF8C998C016042258F40D3FE, 0127E05661D24F1DAA768A39, 7089DB15FC694FB3A7083D96, 0B72360FBC4749FD94E6BAAB, 0823F27AA8B944A3B62B3333, 730BF729664343E18A784EA7, 0A800720080043F99B2D432B, F643CA5B06064E839BD4AE52, 2F793DD9D2DD47A28517AD47, 1706660774B2480B8849D596, 518293D2E3B148869F40831D, 44401578BE2D4143AAA73092, 5DDABE391DE44D738B027CDF, 25266B72797C4D6C9C678E9C, 4D044E89FA42456DB0D681C3, 34F29FBD99A3444D952FA8DB, B8C6C70CA6ED4BB1AC97B4B6, F5C61F3B323F47F1B19D8FD9, 4E34FC80685D43B7BD581D91, 3FB9A0B71AD14DF2B2166DEE, ECA5F96A38CF4E868A11E973, 4B627CF96CD44918A67F3FB3, 29D481B5AC824559B9E7C3DD, 3B45AABC76A94873B815B78C, 7E4443CD7DDD4A6982CE59BE, CAFFE6603F904FF3AE52B024, F9EC9F338E354428B4DDD123, 3A28378EEA014E0E919FC85A, 0EFFD0F8D14744409490A888, 3033B001A2B04F9EA5C0AFEA, FA9FC8585CB34F6FB051ADAE, DE419560D0934C0E80396624, 968C0C21153646D49BF42000, AF8AFF8D78F94A47B0F53815, 3E2B348427E844A5929927A3, 0DF31674F9C74BE9AB0D0006, B3E8BC40BD7140A2B4CBB550, 78349D6E899240F5A277235C); runOnlyForDeploymentPostprocessing = 0; };
- 7DDAE95F35C042E0AA8D648F = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (CDE0D7B5AB7D492AB95786B7, 3BD17C77BE2541C187E923CA, 752487F9A18F451C92BF95E8, 57C059515D66492EA5A5B936, 86D617A624DA4C43BE20E834, 1882BB3E58F44F8CAEB5516A, 27268016D43546FEADD5EA90, BEF6C46E10F94F76A5DCED53); runOnlyForDeploymentPostprocessing = 0; };
- 4D8ACE6346594EA5BBB78946 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (EE7051AE56B944269FE9FEB5, C24FC4D76FBE4403AD081F31, CADFFEFDDE204D8983D5726E, 9CD61D14D20B4D79B760FF3A, 635046DE1EF64F57BCF4D7BA, CCCBF87CA3E749368500DDBE); runOnlyForDeploymentPostprocessing = 0; };
- 3C4F572853FD429FB2D21C70 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
- 485CFBE0F9E54222B64C8B83 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
- 20099FD8FB20437EBAC22528 = {isa = XCBuildConfiguration; buildSettings = {
+ 5F5FC005B683447B82372E36 /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; };
+ C7D22FF2CF3D4230A7BAA60C /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; };
+ 9F180A1FA5DD4DB3BA7E3B41 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; };
+ 123A61DD4A6442728811488E /* AppLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppLanguage.swift; path = MatchLiveTv/Core/AppLanguage.swift; sourceTree = ""; };
+ CDDF270D449A43F18399966D /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; };
+ 902831E3D87C46359F0D0A21 /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; };
+ ADBBD9C8DF9F4A47ACEFE7B1 /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; };
+ AAC2A198868F4B4E9010F862 /* ThermalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalState.swift; path = MatchLiveTv/Core/Thermal/ThermalState.swift; sourceTree = ""; };
+ C9D84DE8EFA34B4CBDFF43F1 /* ThermalStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalStateManager.swift; path = MatchLiveTv/Core/Thermal/ThermalStateManager.swift; sourceTree = ""; };
+ 31251A1297F24C70A14D8702 /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; };
+ 1BEBDFA6B21041729156ADFA /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; };
+ 17E7568BD3D94B34A361F470 /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; };
+ 99D52E8096064A359AAE3D47 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; };
+ 7FC98372F1BD474BB0365488 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; };
+ 98526C26B2584F55AADF0FFF /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; };
+ 50C70C614F3C45B9B824E465 /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; };
+ EE0A49E8D59947448DAA7851 /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; };
+ 537FC2C063D341DF97A391B9 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; };
+ 813463F3E17D453EAA801739 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; };
+ CCC8ECFD24A14054BDD984C3 /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; };
+ 87C01CC031C34343B3EBFF08 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; };
+ B0B243B2A21344558626DF7F /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; };
+ 81CA0BDC6EE44C4290D7E483 /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; };
+ 951A7265EF5C41A9A12DD86A /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; };
+ 18445F0E4070424F86D55556 /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; };
+ 61FCDE0B00FB485CB9B09110 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; };
+ EA08E23008964D02AB59377E /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; };
+ C9975D8D02CF4FA0A47696DD /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; };
+ B2432C46DFBA4322887D8C59 /* BroadcastOrientationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicy.swift; path = MatchLiveTv/Streaming/BroadcastOrientationPolicy.swift; sourceTree = ""; };
+ A43B670D8BE94F66B38885C8 /* BroadcastVideoOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastVideoOrientation.swift; path = MatchLiveTv/Streaming/BroadcastVideoOrientation.swift; sourceTree = ""; };
+ F438E7E164F44C7B856C4808 /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; };
+ C6D684B88BEB440F8D331D3D /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; };
+ 78104BD8D9044B659F33B02F /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; };
+ A8048B96407947C7BA4222E8 /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; };
+ B5BF3429BFBA4DB3BDBD721D /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; };
+ 509414F2274844F4B9A956C3 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; };
+ 59E96B1417004CD3BC247C0F /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; };
+ 2DDC7305F3B549D0B7646B14 /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; };
+ 9D645FD397CD40DDA859F160 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; };
+ 18B95E0D21B0407FA6723720 /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; };
+ 31750F1B9E294337BDBD5B56 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; };
+ 46CE696CAB994E2C8E399776 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; };
+ 8C2A2F7BAC2B4AC69E8BEAF7 /* StreamVideoPreset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StreamVideoPreset.swift; path = MatchLiveTv/Streaming/StreamVideoPreset.swift; sourceTree = ""; };
+ 4419E10415414556B7C58458 /* AccountScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AccountScreen.swift; path = MatchLiveTv/UI/Account/AccountScreen.swift; sourceTree = ""; };
+ E860A0E35362427DA84F8972 /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; };
+ 71816F0D99E44551839474CE /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; };
+ 4637B286559F4BC294018AC5 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; };
+ 2FF23D4B51AE4DA5B99D4021 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; };
+ 6F04C9EAB5984F938EC60BF4 /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; };
+ 39F3C00B63534E6AA6D8A90A /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; };
+ C7403EB9DBD8459A93D9E2D8 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; };
+ 34BB2251A67E401A9F1E789E /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; };
+ AF8C38306C6F420DBC42DA2A /* ForgotPasswordScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ForgotPasswordScreen.swift; path = MatchLiveTv/UI/Login/ForgotPasswordScreen.swift; sourceTree = ""; };
+ E124B3B49FC34520805CCC97 /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; };
+ 56A95962EF2A4B8F821343D9 /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; };
+ 866A83237E6943E89A165B9D /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; };
+ 464CF87BEA644025B2D14644 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; };
+ B214C9B30C794F00A31B0D83 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; };
+ 3BFB2F18615747B1A1C9E9B2 /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; };
+ D7C29F5731A142C3A12B6DCA /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; };
+ 004F86D8E8BE47E589B923FA /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; };
+ FF10FF45004F41AD82397DC9 /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; };
+ 2B5C00419D09442FA8ED60F3 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShareSheet.swift; path = MatchLiveTv/UI/System/ShareSheet.swift; sourceTree = ""; };
+ D2996990D08341ABA52BE287 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; };
+ EAB037B1369B454D84F6850D /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; };
+ 1079231B9A4E446AA9AD6C0A /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; };
+ 7EC0179FE6BC4323B1F9E1D3 /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; };
+ 6FBBE0F1399840FFA0E7EF2E /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; };
+ 7001BB5D65B34280B306ECCF /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; };
+ 5B75DC6D0B2248B2A6C9AA66 /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; };
+ 3170F3149C614EC38B417905 /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; };
+ 75FEB862C3A34BF8AC24052E /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; };
+ E5CA1FE59BA14F76BA94C995 /* BroadcastOrientationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicyTests.swift; path = MatchLiveTvTests/BroadcastOrientationPolicyTests.swift; sourceTree = ""; };
+ 1830F9A925334BA4B65D490E /* LiveBroadcastCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinatorTests.swift; path = MatchLiveTvTests/LiveBroadcastCoordinatorTests.swift; sourceTree = ""; };
+ F4F8BF2514BB4F5185827B95 /* LiveScoreDialogHostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreDialogHostTests.swift; path = MatchLiveTvTests/LiveScoreDialogHostTests.swift; sourceTree = ""; };
+ 8964CE287E2C4C2DB701497B /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; };
+ 10AD0F18190542818572CAEF /* ScoreActionDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreActionDecodeTests.swift; path = MatchLiveTvTests/ScoreActionDecodeTests.swift; sourceTree = ""; };
+ 6DF142EBF33B45739BA8E42C /* ScoreControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreControllerTests.swift; path = MatchLiveTvTests/ScoreControllerTests.swift; sourceTree = ""; };
+ 377A2D2B2DA440AFB0CE2298 /* ThermalAdaptationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalAdaptationTests.swift; path = MatchLiveTvTests/ThermalAdaptationTests.swift; sourceTree = ""; };
+ 2146FBAC1D7F4FF7B47D360F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; };
+ 8588711837244B19B84BA0B3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; };
+ 857C036B5B5C43368506DD8B /* it.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/it.lproj; sourceTree = ""; };
+ 3A6F9AAB5A1249BBB4FC02E6 /* en.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/en.lproj; sourceTree = ""; };
+ 30B07E7585A7408EA47C8633 /* fr.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/fr.lproj; sourceTree = ""; };
+ EEFE07D4B6FD44199A5B9C25 /* de.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/de.lproj; sourceTree = ""; };
+ 2ACAF5B8A617427C8CBF56AD /* es.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/es.lproj; sourceTree = ""; };
+ CE0F9D7D5EE749E8AAE6AB43 /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3FC0CC8155BE469ABB420DC5 /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 74B2BB60EC504F4E9CAFDDC8 /* HaishinKit */ = {isa = XCSwiftPackageProductDependency; package = 294A8F0AC0E54F1EB302705C; productName = HaishinKit; };
+ 8D1C04B6B7DF4271AC84A016 /* RTMPHaishinKit */ = {isa = XCSwiftPackageProductDependency; package = 294A8F0AC0E54F1EB302705C; productName = RTMPHaishinKit; };
+ 65D33C32CF91408B91AFF5D4 /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5FC005B683447B82372E36 /* MatchLiveTvApp.swift */; };
+ F4C4427723C34532AFA1F798 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7D22FF2CF3D4230A7BAA60C /* ApiInstant.swift */; };
+ E75C942B73594F1484927866 /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F180A1FA5DD4DB3BA7E3B41 /* AppConfig.swift */; };
+ 38BACC0DAAA147EB8955A60C /* AppLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123A61DD4A6442728811488E /* AppLanguage.swift */; };
+ 99B3D05A3D704DA1A513689F /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDF270D449A43F18399966D /* ColorHex.swift */; };
+ 65EB1857F331469BAC9A18D7 /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902831E3D87C46359F0D0A21 /* DeviceTelemetry.swift */; };
+ 2F393B5FCD244E65B13C97A3 /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBBD9C8DF9F4A47ACEFE7B1 /* MediaUrl.swift */; };
+ 5620C77D9A5B47F3BA0741E4 /* ThermalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAC2A198868F4B4E9010F862 /* ThermalState.swift */; };
+ D75CBE430CF947B1B8B0225B /* ThermalStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D84DE8EFA34B4CBDFF43F1 /* ThermalStateManager.swift */; };
+ A74ACBA3E07740E59502306F /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31251A1297F24C70A14D8702 /* TokenStore.swift */; };
+ AA18CC40AAB249ECB8C88B85 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BEBDFA6B21041729156ADFA /* UserFacingError.swift */; };
+ 162DC182A26243599EEA862A /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E7568BD3D94B34A361F470 /* ApiDtos.swift */; };
+ 2A0825BF1DCC4DC2B1FBC236 /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99D52E8096064A359AAE3D47 /* MatchLiveAPI.swift */; };
+ 70D5E80900C14B0897F02BF8 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FC98372F1BD474BB0365488 /* AppContainer.swift */; };
+ 9391C9EA0B834DC8956483DF /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98526C26B2584F55AADF0FFF /* ActionCableClient.swift */; };
+ 359A4FD093C84543AD4DA3B1 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C70C614F3C45B9B824E465 /* SessionCableService.swift */; };
+ 59B045E87F2946B8BC8EA65A /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0A49E8D59947448DAA7851 /* AuthRepository.swift */; };
+ AECC36D80A0C411AB47D581A /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 537FC2C063D341DF97A391B9 /* MatchRepository.swift */; };
+ 39335ED5DE5847E5904222AB /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 813463F3E17D453EAA801739 /* MatchSessionLauncher.swift */; };
+ 470957DE79A84D9889F0663C /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC8ECFD24A14054BDD984C3 /* ScoreRepository.swift */; };
+ 66815B27A71244F791DE3C2F /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C01CC031C34343B3EBFF08 /* SessionRepository.swift */; };
+ 244F331A033D4A32A0DC46CB /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B243B2A21344558626DF7F /* ScoreController.swift */; };
+ 6EB9973427144A28B857B49E /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81CA0BDC6EE44C4290D7E483 /* WizardSessionHolder.swift */; };
+ 454725D14B224276B06BCC67 /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 951A7265EF5C41A9A12DD86A /* MatchHubFilter.swift */; };
+ C19C5E8152C44669AE5D8874 /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18445F0E4070424F86D55556 /* MatchScoringRules.swift */; };
+ 20A6FAB1CB7F47C085B75A22 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FCDE0B00FB485CB9B09110 /* Models.swift */; };
+ 8723E1F8443A46B3AF49E8A3 /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA08E23008964D02AB59377E /* ScoreState.swift */; };
+ 6A26C9639E5342ACA259DB67 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9975D8D02CF4FA0A47696DD /* BroadcastModels.swift */; };
+ FF08A44E3B5C4C709095F08C /* BroadcastOrientationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2432C46DFBA4322887D8C59 /* BroadcastOrientationPolicy.swift */; };
+ C3873D7719AA419AA0134B65 /* BroadcastVideoOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A43B670D8BE94F66B38885C8 /* BroadcastVideoOrientation.swift */; };
+ 56896861A77F4036B3763B59 /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F438E7E164F44C7B856C4808 /* LiveBroadcastCoordinator.swift */; };
+ E16207FC581A4182B171119C /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6D684B88BEB440F8D331D3D /* LiveBroadcastEngine.swift */; };
+ 1ABCBB3241B54AE3B8DC175F /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78104BD8D9044B659F33B02F /* CompactScoreboardElement.swift */; };
+ 69707A2BF3574451AFE893F5 /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8048B96407947C7BA4222E8 /* OverlayCanvasRenderer.swift */; };
+ 972B0F53517C4AC2A062FD68 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BF3429BFBA4DB3BDBD721D /* OverlayLogoCache.swift */; };
+ 9455267569924A4485199B85 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509414F2274844F4B9A956C3 /* OverlayMappings.swift */; };
+ FCBDDBB72AD142A39944DA39 /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59E96B1417004CD3BC247C0F /* OverlayRenderer.swift */; };
+ ABC5853FEC554FA4AFBDCD2E /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DDC7305F3B549D0B7646B14 /* OverlayState.swift */; };
+ 53A64EA59067426FA7BCEF2E /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D645FD397CD40DDA859F160 /* ScoreboardElement.swift */; };
+ C4A9BD596C4A4ACD88F7557F /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B95E0D21B0407FA6723720 /* SponsorElement.swift */; };
+ 6AD0B3220B154EA2936C634A /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31750F1B9E294337BDBD5B56 /* WatermarkElement.swift */; };
+ 713E0129656649FC8630FDC6 /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CE696CAB994E2C8E399776 /* LivePreviewView.swift */; };
+ 451211FDF3214D2098798DB6 /* StreamVideoPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C2A2F7BAC2B4AC69E8BEAF7 /* StreamVideoPreset.swift */; };
+ E5E21D088782469D8EB23543 /* AccountScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4419E10415414556B7C58458 /* AccountScreen.swift */; };
+ 5B51805239FA4D4D90919D86 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = E860A0E35362427DA84F8972 /* BroadcastControlsOverlay.swift */; };
+ EE568EA02C404102B4DFD651 /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71816F0D99E44551839474CE /* BroadcastScreen.swift */; };
+ 64EBCA992CD147BB8518DE60 /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4637B286559F4BC294018AC5 /* LiveScoreActions.swift */; };
+ FE883346930E41C790474211 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF23D4B51AE4DA5B99D4021 /* MatchLiveWordmark.swift */; };
+ 57EC4C4193D4412892219315 /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F04C9EAB5984F938EC60BF4 /* MatchPrimaryButton.swift */; };
+ C6A88BEC28824928A0F7ED08 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F3C00B63534E6AA6D8A90A /* MatchScreenScaffold.swift */; };
+ D74C538E4B754047B328E6F9 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7403EB9DBD8459A93D9E2D8 /* MatchSecondaryButton.swift */; };
+ 0CB8933AC2B34D4099BBA881 /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BB2251A67E401A9F1E789E /* MatchStatusBadge.swift */; };
+ CA87B95E856947AC9304E423 /* ForgotPasswordScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8C38306C6F420DBC42DA2A /* ForgotPasswordScreen.swift */; };
+ 2C7E484A83584887A412E71E /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E124B3B49FC34520805CCC97 /* LoginScreen.swift */; };
+ E0352EDB139740DBB11DBD51 /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A95962EF2A4B8F821343D9 /* MatchesScreen.swift */; };
+ A2BB5F7A9BEA4F45AC9523C5 /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 866A83237E6943E89A165B9D /* AppNavHost.swift */; };
+ 30CF022083914A188A9E30A0 /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 464CF87BEA644025B2D14644 /* ModalRoutes.swift */; };
+ BF6BFF14A642487CA8DE29C6 /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B214C9B30C794F00A31B0D83 /* Routes.swift */; };
+ 06FE9996B295456D8B8C7E96 /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BFB2F18615747B1A1C9E9B2 /* BroadcastPermissions.swift */; };
+ 142FA0805F1E40C69CAD3433 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C29F5731A142C3A12B6DCA /* SplashScreen.swift */; };
+ B92A8F0A41CC4ECE8BFCE0D9 /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004F86D8E8BE47E589B923FA /* KeepScreenOn.swift */; };
+ 1C4B54C40F4E4D1090A6BDA5 /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF10FF45004F41AD82397DC9 /* ScreenOrientation.swift */; };
+ 1A82C6F343F54284AFA8FECE /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B5C00419D09442FA8ED60F3 /* ShareSheet.swift */; };
+ 7575030B9AEB4DEBAD986A23 /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2996990D08341ABA52BE287 /* MatchColors.swift */; };
+ 777B73E69F8A4DC6A8E7C1DF /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB037B1369B454D84F6850D /* StepMatchScreen.swift */; };
+ F67C0C88237F41DE8EDF6CB8 /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1079231B9A4E446AA9AD6C0A /* StepNetworkTestScreen.swift */; };
+ 2B8E5D9945364094B74165DE /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EC0179FE6BC4323B1F9E1D3 /* StepTransmissionScreen.swift */; };
+ 45776A6A76D04EF5A0C0D187 /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FBBE0F1399840FFA0E7EF2E /* TeamBrandingEditor.swift */; };
+ 39F7D49D44244F51907E803D /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7001BB5D65B34280B306ECCF /* TeamColorPicker.swift */; };
+ E417F20C78464CA78B28E3DE /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B75DC6D0B2248B2A6C9AA66 /* WizardComponents.swift */; };
+ D1CF09F02F8844C4A22922F4 /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3170F3149C614EC38B417905 /* WizardShellScreen.swift */; };
+ ACC54AA19C5747CFA118C70B /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FEB862C3A34BF8AC24052E /* ApiInstantTests.swift */; };
+ 592DF4BAC5624417A7123422 /* BroadcastOrientationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5CA1FE59BA14F76BA94C995 /* BroadcastOrientationPolicyTests.swift */; };
+ C9174111ED4A42E887578BF0 /* LiveBroadcastCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1830F9A925334BA4B65D490E /* LiveBroadcastCoordinatorTests.swift */; };
+ 095654DAAF6C4EA4B73BAB61 /* LiveScoreDialogHostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F8BF2514BB4F5185827B95 /* LiveScoreDialogHostTests.swift */; };
+ AA18DECE8D08461B9197EB71 /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8964CE287E2C4C2DB701497B /* MatchScoringRulesTests.swift */; };
+ 5D91C53D2E8A4952937F816B /* ScoreActionDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10AD0F18190542818572CAEF /* ScoreActionDecodeTests.swift */; };
+ FB66DD0422E14C54AC5B3EDB /* ScoreControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF142EBF33B45739BA8E42C /* ScoreControllerTests.swift */; };
+ AB6FF1A930EB459091B77922 /* ThermalAdaptationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377A2D2B2DA440AFB0CE2298 /* ThermalAdaptationTests.swift */; };
+ 30D3EC3BE61744868019114F /* Assets in Resources */ = {isa = PBXBuildFile; fileRef = 2146FBAC1D7F4FF7B47D360F; };
+ AA3A68B2C1784294ADB89605 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 857C036B5B5C43368506DD8B; };
+ 6D6C2C09593B4EADBF082FB5 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3A6F9AAB5A1249BBB4FC02E6; };
+ 4F520F571EC647CB9A7B5465 /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 30B07E7585A7408EA47C8633; };
+ 8C8FEABCD83C422BA5A5DEA3 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = EEFE07D4B6FD44199A5B9C25; };
+ 4AE99343B3A442D6AEBF7032 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 2ACAF5B8A617427C8CBF56AD; };
+ 7E992B84100649D8BE8507F7 = {isa = PBXGroup; children = (DDEF729FE3334F8998C4A31C, 6987D3982FAD44A6869B9FD6, 0ADC6126267C410F9B60B426); sourceTree = ""; };
+ DDEF729FE3334F8998C4A31C = {isa = PBXGroup; children = (5F5FC005B683447B82372E36, C7D22FF2CF3D4230A7BAA60C, 9F180A1FA5DD4DB3BA7E3B41, 123A61DD4A6442728811488E, CDDF270D449A43F18399966D, 902831E3D87C46359F0D0A21, ADBBD9C8DF9F4A47ACEFE7B1, AAC2A198868F4B4E9010F862, C9D84DE8EFA34B4CBDFF43F1, 31251A1297F24C70A14D8702, 1BEBDFA6B21041729156ADFA, 17E7568BD3D94B34A361F470, 99D52E8096064A359AAE3D47, 7FC98372F1BD474BB0365488, 98526C26B2584F55AADF0FFF, 50C70C614F3C45B9B824E465, EE0A49E8D59947448DAA7851, 537FC2C063D341DF97A391B9, 813463F3E17D453EAA801739, CCC8ECFD24A14054BDD984C3, 87C01CC031C34343B3EBFF08, B0B243B2A21344558626DF7F, 81CA0BDC6EE44C4290D7E483, 951A7265EF5C41A9A12DD86A, 18445F0E4070424F86D55556, 61FCDE0B00FB485CB9B09110, EA08E23008964D02AB59377E, C9975D8D02CF4FA0A47696DD, B2432C46DFBA4322887D8C59, A43B670D8BE94F66B38885C8, F438E7E164F44C7B856C4808, C6D684B88BEB440F8D331D3D, 78104BD8D9044B659F33B02F, A8048B96407947C7BA4222E8, B5BF3429BFBA4DB3BDBD721D, 509414F2274844F4B9A956C3, 59E96B1417004CD3BC247C0F, 2DDC7305F3B549D0B7646B14, 9D645FD397CD40DDA859F160, 18B95E0D21B0407FA6723720, 31750F1B9E294337BDBD5B56, 46CE696CAB994E2C8E399776, 8C2A2F7BAC2B4AC69E8BEAF7, 4419E10415414556B7C58458, E860A0E35362427DA84F8972, 71816F0D99E44551839474CE, 4637B286559F4BC294018AC5, 2FF23D4B51AE4DA5B99D4021, 6F04C9EAB5984F938EC60BF4, 39F3C00B63534E6AA6D8A90A, C7403EB9DBD8459A93D9E2D8, 34BB2251A67E401A9F1E789E, AF8C38306C6F420DBC42DA2A, E124B3B49FC34520805CCC97, 56A95962EF2A4B8F821343D9, 866A83237E6943E89A165B9D, 464CF87BEA644025B2D14644, B214C9B30C794F00A31B0D83, 3BFB2F18615747B1A1C9E9B2, D7C29F5731A142C3A12B6DCA, 004F86D8E8BE47E589B923FA, FF10FF45004F41AD82397DC9, 2B5C00419D09442FA8ED60F3, D2996990D08341ABA52BE287, EAB037B1369B454D84F6850D, 1079231B9A4E446AA9AD6C0A, 7EC0179FE6BC4323B1F9E1D3, 6FBBE0F1399840FFA0E7EF2E, 7001BB5D65B34280B306ECCF, 5B75DC6D0B2248B2A6C9AA66, 3170F3149C614EC38B417905, 2146FBAC1D7F4FF7B47D360F, 8588711837244B19B84BA0B3, 857C036B5B5C43368506DD8B, 3A6F9AAB5A1249BBB4FC02E6, 30B07E7585A7408EA47C8633, EEFE07D4B6FD44199A5B9C25, 2ACAF5B8A617427C8CBF56AD); name = MatchLiveTv; sourceTree = ""; };
+ 6987D3982FAD44A6869B9FD6 = {isa = PBXGroup; children = (75FEB862C3A34BF8AC24052E, E5CA1FE59BA14F76BA94C995, 1830F9A925334BA4B65D490E, F4F8BF2514BB4F5185827B95, 8964CE287E2C4C2DB701497B, 10AD0F18190542818572CAEF, 6DF142EBF33B45739BA8E42C, 377A2D2B2DA440AFB0CE2298); name = MatchLiveTvTests; sourceTree = ""; };
+ 0ADC6126267C410F9B60B426 = {isa = PBXGroup; children = (CE0F9D7D5EE749E8AAE6AB43, 3FC0CC8155BE469ABB420DC5); name = Products; sourceTree = ""; };
+ 3E146F1019B842318E38BF4D = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (65D33C32CF91408B91AFF5D4, F4C4427723C34532AFA1F798, E75C942B73594F1484927866, 38BACC0DAAA147EB8955A60C, 99B3D05A3D704DA1A513689F, 65EB1857F331469BAC9A18D7, 2F393B5FCD244E65B13C97A3, 5620C77D9A5B47F3BA0741E4, D75CBE430CF947B1B8B0225B, A74ACBA3E07740E59502306F, AA18CC40AAB249ECB8C88B85, 162DC182A26243599EEA862A, 2A0825BF1DCC4DC2B1FBC236, 70D5E80900C14B0897F02BF8, 9391C9EA0B834DC8956483DF, 359A4FD093C84543AD4DA3B1, 59B045E87F2946B8BC8EA65A, AECC36D80A0C411AB47D581A, 39335ED5DE5847E5904222AB, 470957DE79A84D9889F0663C, 66815B27A71244F791DE3C2F, 244F331A033D4A32A0DC46CB, 6EB9973427144A28B857B49E, 454725D14B224276B06BCC67, C19C5E8152C44669AE5D8874, 20A6FAB1CB7F47C085B75A22, 8723E1F8443A46B3AF49E8A3, 6A26C9639E5342ACA259DB67, FF08A44E3B5C4C709095F08C, C3873D7719AA419AA0134B65, 56896861A77F4036B3763B59, E16207FC581A4182B171119C, 1ABCBB3241B54AE3B8DC175F, 69707A2BF3574451AFE893F5, 972B0F53517C4AC2A062FD68, 9455267569924A4485199B85, FCBDDBB72AD142A39944DA39, ABC5853FEC554FA4AFBDCD2E, 53A64EA59067426FA7BCEF2E, C4A9BD596C4A4ACD88F7557F, 6AD0B3220B154EA2936C634A, 713E0129656649FC8630FDC6, 451211FDF3214D2098798DB6, E5E21D088782469D8EB23543, 5B51805239FA4D4D90919D86, EE568EA02C404102B4DFD651, 64EBCA992CD147BB8518DE60, FE883346930E41C790474211, 57EC4C4193D4412892219315, C6A88BEC28824928A0F7ED08, D74C538E4B754047B328E6F9, 0CB8933AC2B34D4099BBA881, CA87B95E856947AC9304E423, 2C7E484A83584887A412E71E, E0352EDB139740DBB11DBD51, A2BB5F7A9BEA4F45AC9523C5, 30CF022083914A188A9E30A0, BF6BFF14A642487CA8DE29C6, 06FE9996B295456D8B8C7E96, 142FA0805F1E40C69CAD3433, B92A8F0A41CC4ECE8BFCE0D9, 1C4B54C40F4E4D1090A6BDA5, 1A82C6F343F54284AFA8FECE, 7575030B9AEB4DEBAD986A23, 777B73E69F8A4DC6A8E7C1DF, F67C0C88237F41DE8EDF6CB8, 2B8E5D9945364094B74165DE, 45776A6A76D04EF5A0C0D187, 39F7D49D44244F51907E803D, E417F20C78464CA78B28E3DE, D1CF09F02F8844C4A22922F4); runOnlyForDeploymentPostprocessing = 0; };
+ FA890E18B4EB44C58C124F5C = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (ACC54AA19C5747CFA118C70B, 592DF4BAC5624417A7123422, C9174111ED4A42E887578BF0, 095654DAAF6C4EA4B73BAB61, AA18DECE8D08461B9197EB71, 5D91C53D2E8A4952937F816B, FB66DD0422E14C54AC5B3EDB, AB6FF1A930EB459091B77922); runOnlyForDeploymentPostprocessing = 0; };
+ B75DDD49798641E58FBE57D0 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (30D3EC3BE61744868019114F, AA3A68B2C1784294ADB89605, 6D6C2C09593B4EADBF082FB5, 4F520F571EC647CB9A7B5465, 8C8FEABCD83C422BA5A5DEA3, 4AE99343B3A442D6AEBF7032); runOnlyForDeploymentPostprocessing = 0; };
+ 414C9A6F8BE0437593A403A9 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
+ C16D70862B15401AA91E067A = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
+ ABC7AFD6F8DE449D90C8AD6A = {isa = XCBuildConfiguration; buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 31;
@@ -211,7 +211,7 @@
ENABLE_TESTABILITY = YES;
}; name = Debug; };
- F3F165985FD44A39B3B6FF0E = {isa = XCBuildConfiguration; buildSettings = {
+ 71636134BDC0490291EAAE3E = {isa = XCBuildConfiguration; buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 31;
@@ -232,7 +232,7 @@
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
}; name = Release; };
- 5E3A29EC3DB24266B9EF0171 = {isa = XCBuildConfiguration; buildSettings = {
+ EFB6F8A078FC44639CBDACBD = {isa = XCBuildConfiguration; buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 31;
@@ -246,7 +246,7 @@
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv";
}; name = Debug; };
- 555198A5DDDE436CBACD7E18 = {isa = XCBuildConfiguration; buildSettings = {
+ 6482CB0453A5481CBE8BA182 = {isa = XCBuildConfiguration; buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 31;
@@ -260,17 +260,17 @@
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv";
}; name = Release; };
- 0E70B7C10FDA423984E36CC9 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Debug; };
- 2C81A80AEAE244A0B39AFBD2 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Release; };
- 9C291CC401A54841BFB51C25 = {isa = XCConfigurationList; buildConfigurations = (20099FD8FB20437EBAC22528, F3F165985FD44A39B3B6FF0E); defaultConfigurationName = Release; };
- 0BF72791BF6644C993570519 = {isa = XCConfigurationList; buildConfigurations = (5E3A29EC3DB24266B9EF0171, 555198A5DDDE436CBACD7E18); defaultConfigurationName = Release; };
- DCFBCCE62D04415BBE81F2BB = {isa = XCConfigurationList; buildConfigurations = (0E70B7C10FDA423984E36CC9, 2C81A80AEAE244A0B39AFBD2); defaultConfigurationName = Release; };
- C171F3406A93463A92597094 = {isa = PBXNativeTarget; buildConfigurationList = 9C291CC401A54841BFB51C25; buildPhases = (C690D9F363C04AB29B993DE3, 3C4F572853FD429FB2D21C70, 4D8ACE6346594EA5BBB78946); buildRules = (); dependencies = (); name = MatchLiveTv; packageProductDependencies = (9ED2582C45E943B99BDE1280, 39E98F78A87F42EEB820737D); productName = MatchLiveTv; productReference = 90A99EA318D646F9BC464205; productType = "com.apple.product-type.application"; };
- 4F82BD5D410347C99B86E1C0 = {isa = PBXContainerItemProxy; containerPortal = 09A1B05AF84D4EF6862C4ACB /* Project object */; proxyType = 1; remoteGlobalIDString = C171F3406A93463A92597094; remoteInfo = MatchLiveTv; };
- 6B774D48E1FA451CB663EC25 = {isa = PBXTargetDependency; target = C171F3406A93463A92597094 /* MatchLiveTv */; targetProxy = 4F82BD5D410347C99B86E1C0 /* PBXContainerItemProxy */; };
- 59CEC7DD963A47E989D35E93 = {isa = PBXNativeTarget; buildConfigurationList = 0BF72791BF6644C993570519; buildPhases = (7DDAE95F35C042E0AA8D648F, 485CFBE0F9E54222B64C8B83); buildRules = (); dependencies = (6B774D48E1FA451CB663EC25); name = MatchLiveTvTests; productName = MatchLiveTvTests; productReference = CD9E5C058EC34B4983CC457C; productType = "com.apple.product-type.bundle.unit-test"; };
- D5732E009B7E4D378A1F71DB = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = {kind = upToNextMajorVersion; minimumVersion = 2.0.0;}; };
- 09A1B05AF84D4EF6862C4ACB = {isa = PBXProject; attributes = {BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600;}; buildConfigurationList = DCFBCCE62D04415BBE81F2BB; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; mainGroup = 65634C6C829A41E1950996E5; packageReferences = (D5732E009B7E4D378A1F71DB); productRefGroup = CFAA62945B53429C8791D791; targets = (C171F3406A93463A92597094, 59CEC7DD963A47E989D35E93); };
+ 19E8D060E51148A4B9C398B0 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Debug; };
+ 61160469A90147FA9D4C7CA9 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Release; };
+ 117DCD84E04B4B03A2BFFFEA = {isa = XCConfigurationList; buildConfigurations = (ABC7AFD6F8DE449D90C8AD6A, 71636134BDC0490291EAAE3E); defaultConfigurationName = Release; };
+ FE6CC95B39C044E1AC614098 = {isa = XCConfigurationList; buildConfigurations = (EFB6F8A078FC44639CBDACBD, 6482CB0453A5481CBE8BA182); defaultConfigurationName = Release; };
+ EDC625652E214655BDA2B2AC = {isa = XCConfigurationList; buildConfigurations = (19E8D060E51148A4B9C398B0, 61160469A90147FA9D4C7CA9); defaultConfigurationName = Release; };
+ F54F6C97361C4E8A96AEDD11 = {isa = PBXNativeTarget; buildConfigurationList = 117DCD84E04B4B03A2BFFFEA; buildPhases = (3E146F1019B842318E38BF4D, 414C9A6F8BE0437593A403A9, B75DDD49798641E58FBE57D0); buildRules = (); dependencies = (); name = MatchLiveTv; packageProductDependencies = (74B2BB60EC504F4E9CAFDDC8, 8D1C04B6B7DF4271AC84A016); productName = MatchLiveTv; productReference = CE0F9D7D5EE749E8AAE6AB43; productType = "com.apple.product-type.application"; };
+ 58E3C5EC752E497FBFD32D78 = {isa = PBXContainerItemProxy; containerPortal = AE0076753A1840A19E9F565F /* Project object */; proxyType = 1; remoteGlobalIDString = F54F6C97361C4E8A96AEDD11; remoteInfo = MatchLiveTv; };
+ E2FB115E6BB84F2EA8EA369B = {isa = PBXTargetDependency; target = F54F6C97361C4E8A96AEDD11 /* MatchLiveTv */; targetProxy = 58E3C5EC752E497FBFD32D78 /* PBXContainerItemProxy */; };
+ 20C695DBFB4042879308B0F5 = {isa = PBXNativeTarget; buildConfigurationList = FE6CC95B39C044E1AC614098; buildPhases = (FA890E18B4EB44C58C124F5C, C16D70862B15401AA91E067A); buildRules = (); dependencies = (E2FB115E6BB84F2EA8EA369B); name = MatchLiveTvTests; productName = MatchLiveTvTests; productReference = 3FC0CC8155BE469ABB420DC5; productType = "com.apple.product-type.bundle.unit-test"; };
+ 294A8F0AC0E54F1EB302705C = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = {kind = upToNextMajorVersion; minimumVersion = 2.0.0;}; };
+ AE0076753A1840A19E9F565F = {isa = PBXProject; attributes = {BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600;}; buildConfigurationList = EDC625652E214655BDA2B2AC; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; mainGroup = 7E992B84100649D8BE8507F7; packageReferences = (294A8F0AC0E54F1EB302705C); productRefGroup = 0ADC6126267C410F9B60B426; targets = (F54F6C97361C4E8A96AEDD11, 20C695DBFB4042879308B0F5); };
};
- rootObject = 09A1B05AF84D4EF6862C4ACB /* Project object */;
+ rootObject = AE0076753A1840A19E9F565F /* Project object */;
}
diff --git a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme
index 20671bd..e485ce6 100644
--- a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme
+++ b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme
@@ -3,28 +3,28 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/native/ios/MatchLiveTv/Core/AppLanguage.swift b/native/ios/MatchLiveTv/Core/AppLanguage.swift
index 3aa90c7..ad8317d 100644
--- a/native/ios/MatchLiveTv/Core/AppLanguage.swift
+++ b/native/ios/MatchLiveTv/Core/AppLanguage.swift
@@ -194,7 +194,7 @@ enum L10n {
"match.status.start": "AVVIA",
"matches.active.team": "Squadra attiva: %1$@.",
"matches.change": "Cambia",
- "matches.empty.hint": "Programma una partita o avviane una nuova con «Nuova partita».",
+ "matches.empty.hint": "Tocca «Nuova partita» per programmare in anticipo o avviare subito.",
"matches.empty.title": "Nessuna partita in calendario",
"matches.hello": "Ciao, %1$@",
"matches.load.error": "Errore caricamento",
@@ -212,9 +212,8 @@ enum L10n {
"matches.no.team.title": "Nessuna squadra assegnata",
"matches.ready.title": "Pronte da avviare",
"matches.retry": "Riprova",
- "matches.schedule": "Partita programmata",
"matches.scheduled.title": "Partite programmate",
- "matches.subtitle": "Riprendi una diretta in corso o avvia una partita programmata.",
+ "matches.subtitle": "Riprendi una diretta in corso o avvia una nuova partita.",
"matches.tap.change.team": "Tocca per cambiare squadra",
"matches.team.for.live": "Squadra per la diretta",
"matches.title": "Partite",
@@ -485,7 +484,7 @@ enum L10n {
"match.status.start": "START",
"matches.active.team": "Active team: %1$@.",
"matches.change": "Change",
- "matches.empty.hint": "Schedule a match or start a new one with «New match».",
+ "matches.empty.hint": "Tap «New match» to schedule ahead or start right away.",
"matches.empty.title": "No matches on the calendar",
"matches.hello": "Hi, %1$@",
"matches.load.error": "Loading error",
@@ -503,9 +502,8 @@ enum L10n {
"matches.no.team.title": "No team assigned",
"matches.ready.title": "Ready to start",
"matches.retry": "Retry",
- "matches.schedule": "Scheduled match",
"matches.scheduled.title": "Scheduled matches",
- "matches.subtitle": "Resume a live stream or start a scheduled match.",
+ "matches.subtitle": "Resume a live stream or start a new match.",
"matches.tap.change.team": "Tap to change team",
"matches.team.for.live": "Team for the live stream",
"matches.title": "Matches",
@@ -776,7 +774,7 @@ enum L10n {
"match.status.start": "DÉMARRER",
"matches.active.team": "Équipe active : %1$@.",
"matches.change": "Changer",
- "matches.empty.hint": "Programmez un match ou démarrez-en un avec « Nouveau match ».",
+ "matches.empty.hint": "Touchez « Nouveau match » pour planifier à l'avance ou démarrer tout de suite.",
"matches.empty.title": "Aucun match au calendrier",
"matches.hello": "Bonjour, %1$@",
"matches.load.error": "Erreur de chargement",
@@ -794,9 +792,8 @@ enum L10n {
"matches.no.team.title": "Aucune équipe assignée",
"matches.ready.title": "Prêts à démarrer",
"matches.retry": "Réessayer",
- "matches.schedule": "Match programmé",
"matches.scheduled.title": "Matchs programmés",
- "matches.subtitle": "Reprenez un direct en cours ou démarrez un match programmé.",
+ "matches.subtitle": "Reprenez un direct en cours ou démarrez un nouveau match.",
"matches.tap.change.team": "Appuyez pour changer d'équipe",
"matches.team.for.live": "Équipe pour le direct",
"matches.title": "Matchs",
@@ -1067,7 +1064,7 @@ enum L10n {
"match.status.start": "STARTEN",
"matches.active.team": "Aktives Team: %1$@.",
"matches.change": "Wechseln",
- "matches.empty.hint": "Plane ein Spiel oder starte ein neues mit «Neues Spiel».",
+ "matches.empty.hint": "Tippe auf «Neues Spiel», um im Voraus zu planen oder sofort zu starten.",
"matches.empty.title": "Keine Spiele im Kalender",
"matches.hello": "Hallo, %1$@",
"matches.load.error": "Ladefehler",
@@ -1085,9 +1082,8 @@ enum L10n {
"matches.no.team.title": "Kein Team zugewiesen",
"matches.ready.title": "Bereit zum Start",
"matches.retry": "Erneut versuchen",
- "matches.schedule": "Geplantes Spiel",
"matches.scheduled.title": "Geplante Spiele",
- "matches.subtitle": "Nimm einen laufenden Livestream wieder auf oder starte ein geplantes Spiel.",
+ "matches.subtitle": "Nimm einen laufenden Livestream wieder auf oder starte ein neues Spiel.",
"matches.tap.change.team": "Tippen zum Teamwechsel",
"matches.team.for.live": "Team für den Livestream",
"matches.title": "Spiele",
@@ -1358,7 +1354,7 @@ enum L10n {
"match.status.start": "INICIAR",
"matches.active.team": "Equipo activo: %1$@.",
"matches.change": "Cambiar",
- "matches.empty.hint": "Programa un partido o inicia uno nuevo con «Nuevo partido».",
+ "matches.empty.hint": "Toca «Nuevo partido» para programar con antelación o empezar ya.",
"matches.empty.title": "Ningún partido en el calendario",
"matches.hello": "Hola, %1$@",
"matches.load.error": "Error de carga",
@@ -1376,9 +1372,8 @@ enum L10n {
"matches.no.team.title": "Ningún equipo asignado",
"matches.ready.title": "Listos para empezar",
"matches.retry": "Reintentar",
- "matches.schedule": "Partido programado",
"matches.scheduled.title": "Partidos programados",
- "matches.subtitle": "Reanuda un directo en curso o inicia un partido programado.",
+ "matches.subtitle": "Reanuda un directo en curso o inicia un nuevo partido.",
"matches.tap.change.team": "Toca para cambiar de equipo",
"matches.team.for.live": "Equipo para el directo",
"matches.title": "Partidos",
diff --git a/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift b/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift
index 3a2b8f8..b044309 100644
--- a/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift
+++ b/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift
@@ -17,6 +17,7 @@ struct MatchPrimaryButton: View {
.font(MatchTypography.labelLarge)
.lineLimit(1)
.minimumScaleFactor(0.7)
+ .padding(.horizontal, 14)
}
}
.frame(maxWidth: .infinity)
diff --git a/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift b/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift
index 2b93d54..c4b19e8 100644
--- a/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift
+++ b/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift
@@ -21,5 +21,8 @@ struct MatchScreenScaffold: View {
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
.background(MatchColors.background)
.foregroundStyle(.white)
+ // Chrome custom: nasconde la navigation bar di sistema (evita chevron indietro spurî).
+ .toolbar(.hidden, for: .navigationBar)
+ .navigationBarBackButtonHidden(true)
}
}
diff --git a/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift b/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift
index 3158eb6..74791fd 100644
--- a/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift
+++ b/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift
@@ -11,6 +11,7 @@ struct MatchSecondaryButton: View {
.font(MatchTypography.labelLarge)
.lineLimit(1)
.minimumScaleFactor(0.7)
+ .padding(.horizontal, 14)
.frame(maxWidth: .infinity)
.frame(height: 52)
}
diff --git a/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift b/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift
index ae9916e..3fb4e90 100644
--- a/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift
+++ b/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift
@@ -77,10 +77,7 @@ struct MatchesScreen: View {
Text(L10n.t("matches.subtitle"))
.font(MatchTypography.bodyMedium)
.foregroundStyle(MatchColors.textSecondary)
- HStack(spacing: 12) {
- MatchSecondaryButton(label: L10n.t("matches.schedule").uppercased(), action: { showSchedule = true })
- MatchPrimaryButton(label: L10n.t("matches.new").uppercased(), action: { showNewMatch = true })
- }
+ MatchPrimaryButton(label: L10n.t("matches.new").uppercased(), action: { showNewMatch = true })
if let activeTeam {
TeamPickerBar(
team: activeTeam,
diff --git a/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift b/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift
index 05c8bdf..b6381d7 100644
--- a/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift
+++ b/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift
@@ -1,7 +1,15 @@
import SwiftUI
struct AppNavHost: View {
+ private enum RootScreen {
+ case splash
+ case login
+ case matches
+ }
+
@StateObject private var container = AppContainer()
+ @State private var root: RootScreen = .splash
+ /// Solo destinazioni sopra la root (account, recupero password).
@State private var path: [Routes] = []
@State private var wizardRoute: WizardRoute?
@State private var broadcastRoute: BroadcastRoute?
@@ -17,49 +25,27 @@ struct AppNavHost: View {
var body: some View {
NavigationStack(path: $path) {
- SplashScreen(
- container: container,
- onAuthenticated: { path = [.matches] },
- onUnauthenticated: { path = [.login] }
- )
- .navigationDestination(for: Routes.self) { route in
- switch route {
- case .splash:
- EmptyView()
- case .login:
- LoginScreen(
- container: container,
- onLoggedIn: { path = [.matches] },
- onForgotPassword: { path.append(.forgotPassword) }
- )
- case .forgotPassword:
- ForgotPasswordScreen(
- container: container,
- onBack: { path.removeLast() }
- )
- case .matches:
- MatchesScreen(
- container: container,
- refreshToken: matchesRefreshToken,
- onOpenSetup: { matchId in
- wizardRoute = WizardRoute(matchId: matchId, step: 1)
- },
- onOpenBroadcast: { sessionId in
- broadcastRoute = BroadcastRoute(sessionId: sessionId)
- },
- onOpenAccount: { path.append(.account) }
- )
- .lockPortraitOrientation()
- case .account:
- AccountScreen(
- container: container,
- onBack: { path.removeLast() },
- onLoggedOut: { path = [.login] }
- )
- case .setup, .broadcast:
- EmptyView()
+ rootContent
+ .navigationDestination(for: Routes.self) { route in
+ switch route {
+ case .forgotPassword:
+ ForgotPasswordScreen(
+ container: container,
+ onBack: { path.removeLast() }
+ )
+ case .account:
+ AccountScreen(
+ container: container,
+ onBack: { path.removeLast() },
+ onLoggedOut: {
+ path = []
+ root = .login
+ }
+ )
+ case .splash, .login, .matches, .setup, .broadcast:
+ EmptyView()
+ }
}
- }
}
.environment(\.locale, appLocale)
.onReceive(NotificationCenter.default.publisher(for: .appLanguageDidChange)) { _ in
@@ -98,7 +84,8 @@ struct AppNavHost: View {
AppOrientation.lockPortrait()
container.wizardSession.reset()
broadcastRoute = nil
- path = [.matches]
+ path = []
+ root = .matches
}
.keepScreenOn()
}
@@ -109,4 +96,44 @@ struct AppNavHost: View {
}
.environmentObject(container)
}
+
+ @ViewBuilder
+ private var rootContent: some View {
+ switch root {
+ case .splash:
+ SplashScreen(
+ container: container,
+ onAuthenticated: {
+ path = []
+ root = .matches
+ },
+ onUnauthenticated: {
+ path = []
+ root = .login
+ }
+ )
+ case .login:
+ LoginScreen(
+ container: container,
+ onLoggedIn: {
+ path = []
+ root = .matches
+ },
+ onForgotPassword: { path.append(.forgotPassword) }
+ )
+ case .matches:
+ MatchesScreen(
+ container: container,
+ refreshToken: matchesRefreshToken,
+ onOpenSetup: { matchId in
+ wizardRoute = WizardRoute(matchId: matchId, step: 1)
+ },
+ onOpenBroadcast: { sessionId in
+ broadcastRoute = BroadcastRoute(sessionId: sessionId)
+ },
+ onOpenAccount: { path.append(.account) }
+ )
+ .lockPortraitOrientation()
+ }
+ }
}