From d82205cd71daf508dae284dcd63e3dd0f972aa14 Mon Sep 17 00:00:00 2001 From: Millian Lamiaux Date: Tue, 21 Apr 2026 21:49:58 +0200 Subject: [PATCH] remove legacy admin panel, assessment, collection & workout routes Remove the in-app admin panel (app/admin/, src/admin/), assessment screen, collection detail routes, and workout detail/category/body-zone routes. These features have been superseded by the admin-web dashboard and the new program-based navigation. Also removes stale CLAUDE.md context files and an accidentally committed image blob. --- app/(tabs)/CLAUDE.md | 43 -- app/admin/_layout.tsx | 35 - app/admin/collections.tsx | 201 ------ app/admin/index.tsx | 212 ------ app/admin/login.tsx | 124 ---- app/admin/media.tsx | 201 ------ app/admin/trainers.tsx | 194 ----- app/admin/workouts.tsx | 190 ----- app/assessment.tsx | 445 ------------ app/collection/CLAUDE.md | 11 - app/collection/[id].tsx | 245 ------- app/workout/CLAUDE.md | 20 - app/workout/[id].tsx | 777 --------------------- app/workout/body-zone/CLAUDE.md | 16 - app/workout/body-zone/[id].tsx | 296 -------- app/workout/category/CLAUDE.md | 11 - app/workout/category/[id].tsx | 246 ------- blob_https___www.3daistudio.png | Bin 219548 -> 0 bytes src/admin/components/AdminAuthProvider.tsx | 65 -- src/admin/services/adminService.ts | 282 -------- 20 files changed, 3614 deletions(-) delete mode 100644 app/(tabs)/CLAUDE.md delete mode 100644 app/admin/_layout.tsx delete mode 100644 app/admin/collections.tsx delete mode 100644 app/admin/index.tsx delete mode 100644 app/admin/login.tsx delete mode 100644 app/admin/media.tsx delete mode 100644 app/admin/trainers.tsx delete mode 100644 app/admin/workouts.tsx delete mode 100644 app/assessment.tsx delete mode 100644 app/collection/CLAUDE.md delete mode 100644 app/collection/[id].tsx delete mode 100644 app/workout/CLAUDE.md delete mode 100644 app/workout/[id].tsx delete mode 100644 app/workout/body-zone/CLAUDE.md delete mode 100644 app/workout/body-zone/[id].tsx delete mode 100644 app/workout/category/CLAUDE.md delete mode 100644 app/workout/category/[id].tsx delete mode 100644 blob_https___www.3daistudio.png delete mode 100644 src/admin/components/AdminAuthProvider.tsx delete mode 100644 src/admin/services/adminService.ts diff --git a/app/(tabs)/CLAUDE.md b/app/(tabs)/CLAUDE.md deleted file mode 100644 index 28c610c..0000000 --- a/app/(tabs)/CLAUDE.md +++ /dev/null @@ -1,43 +0,0 @@ - -# Recent Activity - - - -### Feb 20, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #5056 | 8:24 AM | ✅ | Completed Host wrapper restoration in home screen | ~258 | -| #5055 | " | ✅ | Re-added Host wrapper to home screen JSX | ~187 | -| #5054 | " | ✅ | Re-added Host import to home screen | ~184 | -| #5043 | 8:22 AM | ✅ | Removed closing Host tag from profile screen | ~210 | -| #5042 | " | ✅ | Removed opening Host tag from profile screen | ~164 | -| #5041 | " | ✅ | Removed closing Host tag from browse screen | ~187 | -| #5040 | " | ✅ | Removed opening Host tag from browse screen | ~159 | -| #5039 | 8:21 AM | ✅ | Removed closing Host tag from activity screen | ~193 | -| #5038 | " | ✅ | Removed opening Host tag from activity screen | ~154 | - -### Apr 11, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6124 | 7:41 PM | 🔵 | Home screen uses theme-based colors properly | ~229 | - -### Apr 13, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6166 | 10:03 PM | ✅ | Updated Tab Layout Documentation | ~137 | -| #6154 | 10:01 PM | 🔵 | Explored Explore Tab Structure | ~174 | - -### Apr 17, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6349 | 9:48 AM | 🔄 | Removed usePurchases import from home screen | ~271 | -| #6348 | " | 🔄 | Removed usePurchases hook from home screen | ~277 | -| #6346 | 9:47 AM | 🔄 | Cleaned up unused imports in home screen after removing direct program navigation | ~321 | -| #6343 | 9:46 AM | 🔄 | Refactored home screen body zone sections to clickable cards | ~400 | -| #6342 | 9:44 AM | 🔄 | Removed direct program navigation handler from home screen | ~305 | -| #6336 | 9:39 AM | 🔵 | Reviewed complete home screen implementation for body-zone workout programs | ~386 | - \ No newline at end of file diff --git a/app/admin/_layout.tsx b/app/admin/_layout.tsx deleted file mode 100644 index c3da7d7..0000000 --- a/app/admin/_layout.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Stack } from 'expo-router' -import { AdminAuthProvider, useAdminAuth } from '../../src/admin/components/AdminAuthProvider' -import { View, ActivityIndicator } from 'react-native' -import { Redirect } from 'expo-router' - -function AdminLayoutContent({ children }: { children: React.ReactNode }) { - const { isAuthenticated, isAdmin, isLoading } = useAdminAuth() - - if (isLoading) { - return ( - - - - ) - } - - if (!isAuthenticated || !isAdmin) { - return - } - - return ( - <> - - {children} - - ) -} - -export default function AdminLayout({ children }: { children: React.ReactNode }) { - return ( - - {children} - - ) -} diff --git a/app/admin/collections.tsx b/app/admin/collections.tsx deleted file mode 100644 index aeeeca6..0000000 --- a/app/admin/collections.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import { useState } from 'react' -import { - View, - Text, - ScrollView, - TouchableOpacity, - StyleSheet, - ActivityIndicator, - Alert, -} from 'react-native' -import { useRouter } from 'expo-router' -import { useCollections } from '../../src/shared/hooks/useSupabaseData' -import { adminService } from '../../src/admin/services/adminService' -import type { Collection } from '../../src/shared/types' - -export default function AdminCollectionsScreen() { - const router = useRouter() - const { data: collections = [], isLoading: loading, refetch } = useCollections() - const [updatingId, setUpdatingId] = useState(null) - - const handleDelete = (collection: Collection) => { - Alert.alert( - 'Delete Collection', - `Are you sure you want to delete "${collection.title}"?`, - [ - { text: 'Cancel', style: 'cancel' }, - { - text: 'Delete', - style: 'destructive', - onPress: async () => { - Alert.alert('Info', 'Collection deletion not yet implemented') - } - }, - ] - ) - } - - if (loading) { - return ( - - - - ) - } - - return ( - - - router.back()} style={styles.backButton}> - ← Back - - Collections - - + Add - - - - - {collections.map((collection: Collection) => ( - - - {collection.icon} - - - - {collection.title} - {collection.description} - - {collection.workoutIds.length} workouts - - - - - - Edit - - handleDelete(collection)} - disabled={updatingId === collection.id} - > - - {updatingId === collection.id ? '...' : 'Delete'} - - - - - ))} - - - ) -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#000', - }, - centered: { - justifyContent: 'center', - alignItems: 'center', - }, - header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - padding: 20, - paddingTop: 60, - borderBottomWidth: 1, - borderBottomColor: '#1C1C1E', - }, - backButton: { - padding: 8, - }, - backText: { - color: '#FF6B35', - fontSize: 16, - }, - title: { - fontSize: 20, - fontWeight: 'bold', - color: '#fff', - }, - addButton: { - backgroundColor: '#FF6B35', - paddingHorizontal: 16, - paddingVertical: 8, - borderRadius: 8, - }, - addButtonText: { - color: '#000', - fontWeight: 'bold', - }, - content: { - flex: 1, - padding: 16, - }, - collectionCard: { - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 16, - marginBottom: 12, - flexDirection: 'row', - alignItems: 'center', - }, - iconContainer: { - width: 48, - height: 48, - borderRadius: 24, - backgroundColor: '#2C2C2E', - justifyContent: 'center', - alignItems: 'center', - marginRight: 12, - }, - icon: { - fontSize: 24, - }, - collectionInfo: { - flex: 1, - }, - collectionTitle: { - fontSize: 16, - fontWeight: 'bold', - color: '#fff', - marginBottom: 4, - }, - collectionDescription: { - fontSize: 14, - color: '#999', - marginBottom: 4, - }, - collectionMeta: { - fontSize: 12, - color: '#666', - }, - actions: { - flexDirection: 'row', - gap: 8, - }, - editButton: { - backgroundColor: '#2C2C2E', - paddingHorizontal: 12, - paddingVertical: 8, - borderRadius: 6, - }, - editText: { - color: '#5AC8FA', - }, - deleteButton: { - backgroundColor: '#2C2C2E', - paddingHorizontal: 12, - paddingVertical: 8, - borderRadius: 6, - }, - disabledButton: { - opacity: 0.5, - }, - deleteText: { - color: '#FF3B30', - }, -}) diff --git a/app/admin/index.tsx b/app/admin/index.tsx deleted file mode 100644 index e84c3a8..0000000 --- a/app/admin/index.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import { useState, useCallback } from 'react' -import { - View, - Text, - ScrollView, - TouchableOpacity, - StyleSheet, - RefreshControl, -} from 'react-native' -import { useRouter } from 'expo-router' -import { useAdminAuth } from '../../src/admin/components/AdminAuthProvider' -import { useWorkouts, useTrainers, useCollections } from '../../src/shared/hooks/useSupabaseData' - -export default function AdminDashboardScreen() { - const router = useRouter() - const { signOut } = useAdminAuth() - const [refreshing, setRefreshing] = useState(false) - - const { - data: workouts = [], - isLoading: workoutsLoading, - refetch: refetchWorkouts - } = useWorkouts() - - const { - data: trainers = [], - isLoading: trainersLoading, - refetch: refetchTrainers - } = useTrainers() - - const { - data: collections = [], - isLoading: collectionsLoading, - refetch: refetchCollections - } = useCollections() - - const onRefresh = useCallback(async () => { - setRefreshing(true) - await Promise.all([ - refetchWorkouts(), - refetchTrainers(), - refetchCollections(), - ]) - setRefreshing(false) - }, [refetchWorkouts, refetchTrainers, refetchCollections]) - - const handleLogout = async () => { - await signOut() - router.replace('/admin/login') - } - - const isLoading = workoutsLoading || trainersLoading || collectionsLoading - - return ( - - - Admin Dashboard - - Logout - - - - - } - > - - - {workouts.length} - Workouts - - - {trainers.length} - Trainers - - - {collections.length} - Collections - - - - Quick Actions - - - router.push('/admin/workouts')} - > - 💪 - Manage Workouts - Add, edit, or delete workouts - - - router.push('/admin/trainers')} - > - 👥 - Manage Trainers - Update trainer profiles - - - router.push('/admin/collections')} - > - 📁 - Manage Collections - Organize workout collections - - - router.push('/admin/media')} - > - 🎬 - Media Library - Upload videos and images - - - - - ) -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#000', - }, - header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - padding: 20, - paddingTop: 60, - borderBottomWidth: 1, - borderBottomColor: '#1C1C1E', - }, - title: { - fontSize: 28, - fontWeight: 'bold', - color: '#fff', - }, - logoutButton: { - padding: 8, - }, - logoutText: { - color: '#FF6B35', - fontSize: 16, - }, - content: { - flex: 1, - padding: 20, - }, - statsGrid: { - flexDirection: 'row', - gap: 12, - marginBottom: 32, - }, - statCard: { - flex: 1, - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 16, - alignItems: 'center', - }, - statNumber: { - fontSize: 32, - fontWeight: 'bold', - color: '#FF6B35', - }, - statLabel: { - fontSize: 14, - color: '#999', - marginTop: 4, - }, - sectionTitle: { - fontSize: 20, - fontWeight: 'bold', - color: '#fff', - marginBottom: 16, - }, - actionsGrid: { - flexDirection: 'row', - flexWrap: 'wrap', - gap: 12, - }, - actionCard: { - width: '47%', - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 20, - marginBottom: 12, - }, - actionIcon: { - fontSize: 32, - marginBottom: 12, - }, - actionTitle: { - fontSize: 16, - fontWeight: 'bold', - color: '#fff', - marginBottom: 4, - }, - actionDescription: { - fontSize: 14, - color: '#999', - }, -}) diff --git a/app/admin/login.tsx b/app/admin/login.tsx deleted file mode 100644 index b9ed77a..0000000 --- a/app/admin/login.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { useState } from 'react' -import { - View, - Text, - TextInput, - TouchableOpacity, - StyleSheet, - ActivityIndicator, -} from 'react-native' -import { useAdminAuth } from '../../src/admin/components/AdminAuthProvider' - -export default function AdminLoginScreen() { - const [email, setEmail] = useState('') - const [password, setPassword] = useState('') - const [error, setError] = useState('') - const { signIn, isLoading } = useAdminAuth() - - const handleLogin = async () => { - if (!email || !password) { - setError('Please enter both email and password') - return - } - - setError('') - try { - await signIn(email, password) - } catch (err) { - setError(err instanceof Error ? err.message : 'Login failed') - } - } - - return ( - - - TabataFit Admin - Sign in to manage content - - {error ? {error} : null} - - - - - - - {isLoading ? ( - - ) : ( - Sign In - )} - - - - ) -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#000', - justifyContent: 'center', - alignItems: 'center', - padding: 20, - }, - card: { - backgroundColor: '#1C1C1E', - borderRadius: 16, - padding: 32, - width: '100%', - maxWidth: 400, - }, - title: { - fontSize: 28, - fontWeight: 'bold', - color: '#fff', - marginBottom: 8, - }, - subtitle: { - fontSize: 16, - color: '#999', - marginBottom: 24, - }, - errorText: { - color: '#FF3B30', - marginBottom: 16, - }, - input: { - backgroundColor: '#2C2C2E', - borderRadius: 8, - padding: 16, - marginBottom: 16, - color: '#fff', - fontSize: 16, - }, - button: { - backgroundColor: '#FF6B35', - borderRadius: 8, - padding: 16, - alignItems: 'center', - }, - buttonText: { - color: '#000', - fontSize: 16, - fontWeight: 'bold', - }, -}) diff --git a/app/admin/media.tsx b/app/admin/media.tsx deleted file mode 100644 index dd61643..0000000 --- a/app/admin/media.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import { useState } from 'react' -import { - View, - Text, - ScrollView, - TouchableOpacity, - StyleSheet, - ActivityIndicator, - Alert, -} from 'react-native' -import { useRouter } from 'expo-router' -import { supabase } from '../../src/shared/supabase' - -export default function AdminMediaScreen() { - const router = useRouter() - const [uploading, setUploading] = useState(false) - const [activeTab, setActiveTab] = useState<'videos' | 'thumbnails' | 'avatars'>('videos') - - const handleUpload = async () => { - Alert.alert('Info', 'File upload requires file picker integration. This is a placeholder.') - } - - const handleDelete = async (path: string) => { - Alert.alert( - 'Delete File', - `Are you sure you want to delete "${path}"?`, - [ - { text: 'Cancel', style: 'cancel' }, - { - text: 'Delete', - style: 'destructive', - onPress: async () => { - try { - const { error } = await supabase.storage - .from(activeTab) - .remove([path]) - - if (error) throw error - Alert.alert('Success', 'File deleted') - } catch (err) { - Alert.alert('Error', err instanceof Error ? err.message : 'Failed to delete') - } - } - }, - ] - ) - } - - return ( - - - router.back()} style={styles.backButton}> - ← Back - - Media Library - - Upload - - - - - {(['videos', 'thumbnails', 'avatars'] as const).map((tab) => ( - setActiveTab(tab)} - > - - {tab.charAt(0).toUpperCase() + tab.slice(1)} - - - ))} - - - - - Storage Buckets - - • videos - Workout videos (MP4, MOV){'\n'} - • thumbnails - Workout thumbnails (JPG, PNG){'\n'} - • avatars - Trainer avatars (JPG, PNG) - - - - - 🎬 - Media Management - - Upload and manage media files for workouts and trainers.{'\n\n'} - This feature requires file picker integration.{'\n'} - Files will be stored in Supabase Storage. - - - - - ) -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#000', - }, - header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - padding: 20, - paddingTop: 60, - borderBottomWidth: 1, - borderBottomColor: '#1C1C1E', - }, - backButton: { - padding: 8, - }, - backText: { - color: '#FF6B35', - fontSize: 16, - }, - title: { - fontSize: 20, - fontWeight: 'bold', - color: '#fff', - }, - uploadButton: { - backgroundColor: '#FF6B35', - paddingHorizontal: 16, - paddingVertical: 8, - borderRadius: 8, - }, - uploadButtonText: { - color: '#000', - fontWeight: 'bold', - }, - tabs: { - flexDirection: 'row', - padding: 16, - gap: 8, - }, - tab: { - flex: 1, - paddingVertical: 12, - paddingHorizontal: 16, - borderRadius: 8, - backgroundColor: '#1C1C1E', - alignItems: 'center', - }, - activeTab: { - backgroundColor: '#FF6B35', - }, - tabText: { - color: '#999', - fontWeight: '600', - }, - activeTabText: { - color: '#000', - }, - content: { - flex: 1, - padding: 16, - }, - infoCard: { - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 16, - marginBottom: 16, - }, - infoTitle: { - fontSize: 16, - fontWeight: 'bold', - color: '#fff', - marginBottom: 8, - }, - infoText: { - fontSize: 14, - color: '#999', - lineHeight: 20, - }, - placeholderCard: { - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 32, - alignItems: 'center', - }, - placeholderIcon: { - fontSize: 48, - marginBottom: 16, - }, - placeholderTitle: { - fontSize: 18, - fontWeight: 'bold', - color: '#fff', - marginBottom: 8, - }, - placeholderText: { - fontSize: 14, - color: '#999', - textAlign: 'center', - lineHeight: 20, - }, -}) diff --git a/app/admin/trainers.tsx b/app/admin/trainers.tsx deleted file mode 100644 index 59a9ae6..0000000 --- a/app/admin/trainers.tsx +++ /dev/null @@ -1,194 +0,0 @@ -import { useState } from 'react' -import { - View, - Text, - ScrollView, - TouchableOpacity, - StyleSheet, - ActivityIndicator, - Alert, -} from 'react-native' -import { useRouter } from 'expo-router' -import { useTrainers } from '../../src/shared/hooks/useSupabaseData' -import { adminService } from '../../src/admin/services/adminService' -import type { Trainer } from '../../src/shared/types' - -export default function AdminTrainersScreen() { - const router = useRouter() - const { data: trainers = [], isLoading: loading, refetch } = useTrainers() - const [deletingId, setDeletingId] = useState(null) - - const handleDelete = (trainer: Trainer) => { - Alert.alert( - 'Delete Trainer', - `Are you sure you want to delete "${trainer.name}"?`, - [ - { text: 'Cancel', style: 'cancel' }, - { - text: 'Delete', - style: 'destructive', - onPress: async () => { - setDeletingId(trainer.id) - try { - await adminService.deleteTrainer(trainer.id) - await refetch() - } catch (err) { - Alert.alert('Error', err instanceof Error ? err.message : 'Failed to delete') - } finally { - setDeletingId(null) - } - } - }, - ] - ) - } - - if (loading) { - return ( - - - - ) - } - - return ( - - - router.back()} style={styles.backButton}> - ← Back - - Trainers - - + Add - - - - - {trainers.map((trainer) => ( - - - - {trainer.name} - - {trainer.specialty} • {trainer.workoutCount} workouts - - - - - - Edit - - handleDelete(trainer)} - disabled={deletingId === trainer.id} - > - - {deletingId === trainer.id ? '...' : 'Delete'} - - - - - ))} - - - ) -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#000', - }, - centered: { - justifyContent: 'center', - alignItems: 'center', - }, - header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - padding: 20, - paddingTop: 60, - borderBottomWidth: 1, - borderBottomColor: '#1C1C1E', - }, - backButton: { - padding: 8, - }, - backText: { - color: '#FF6B35', - fontSize: 16, - }, - title: { - fontSize: 20, - fontWeight: 'bold', - color: '#fff', - }, - addButton: { - backgroundColor: '#FF6B35', - paddingHorizontal: 16, - paddingVertical: 8, - borderRadius: 8, - }, - addButtonText: { - color: '#000', - fontWeight: 'bold', - }, - content: { - flex: 1, - padding: 16, - }, - trainerCard: { - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 16, - marginBottom: 12, - flexDirection: 'row', - alignItems: 'center', - }, - colorIndicator: { - width: 12, - height: 12, - borderRadius: 6, - marginRight: 12, - }, - trainerInfo: { - flex: 1, - }, - trainerName: { - fontSize: 16, - fontWeight: 'bold', - color: '#fff', - marginBottom: 4, - }, - trainerMeta: { - fontSize: 14, - color: '#999', - }, - actions: { - flexDirection: 'row', - gap: 8, - }, - editButton: { - backgroundColor: '#2C2C2E', - paddingHorizontal: 12, - paddingVertical: 8, - borderRadius: 6, - }, - editText: { - color: '#5AC8FA', - }, - deleteButton: { - backgroundColor: '#2C2C2E', - paddingHorizontal: 12, - paddingVertical: 8, - borderRadius: 6, - }, - disabledButton: { - opacity: 0.5, - }, - deleteText: { - color: '#FF3B30', - }, -}) diff --git a/app/admin/workouts.tsx b/app/admin/workouts.tsx deleted file mode 100644 index 6dcfff8..0000000 --- a/app/admin/workouts.tsx +++ /dev/null @@ -1,190 +0,0 @@ -import { useState } from 'react' -import { - View, - Text, - ScrollView, - TouchableOpacity, - StyleSheet, - ActivityIndicator, - Alert, -} from 'react-native' -import { useRouter } from 'expo-router' -import { useWorkouts } from '../../src/shared/hooks/useSupabaseData' -import { adminService } from '../../src/admin/services/adminService' -import type { Workout } from '../../src/shared/types' - -export default function AdminWorkoutsScreen() { - const router = useRouter() - const { data: workouts = [], isLoading: loading, error, refetch } = useWorkouts() - const [deletingId, setDeletingId] = useState(null) - - const handleDelete = (workout: Workout) => { - Alert.alert( - 'Delete Workout', - `Are you sure you want to delete "${workout.title}"?`, - [ - { text: 'Cancel', style: 'cancel' }, - { - text: 'Delete', - style: 'destructive', - onPress: async () => { - setDeletingId(workout.id) - try { - await adminService.deleteWorkout(workout.id) - await refetch() - } catch (err) { - Alert.alert('Error', err instanceof Error ? err.message : 'Failed to delete') - } finally { - setDeletingId(null) - } - } - }, - ] - ) - } - - if (loading) { - return ( - - - - ) - } - - return ( - - - router.back()} style={styles.backButton}> - ← Back - - Workouts - - + Add - - - - - {workouts.map((workout) => ( - - - {workout.title} - - {workout.category} • {workout.level} • {workout.duration}min - - - {workout.rounds} rounds • {workout.calories} cal - - - - - Edit - - handleDelete(workout)} - disabled={deletingId === workout.id} - > - - {deletingId === workout.id ? '...' : 'Delete'} - - - - - ))} - - - ) -} - -const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: '#000', - }, - centered: { - justifyContent: 'center', - alignItems: 'center', - }, - header: { - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - padding: 20, - paddingTop: 60, - borderBottomWidth: 1, - borderBottomColor: '#1C1C1E', - }, - backButton: { - padding: 8, - }, - backText: { - color: '#FF6B35', - fontSize: 16, - }, - title: { - fontSize: 20, - fontWeight: 'bold', - color: '#fff', - }, - addButton: { - backgroundColor: '#FF6B35', - paddingHorizontal: 16, - paddingVertical: 8, - borderRadius: 8, - }, - addButtonText: { - color: '#000', - fontWeight: 'bold', - }, - content: { - flex: 1, - padding: 16, - }, - workoutCard: { - backgroundColor: '#1C1C1E', - borderRadius: 12, - padding: 16, - marginBottom: 12, - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - }, - workoutInfo: { - flex: 1, - }, - workoutTitle: { - fontSize: 16, - fontWeight: 'bold', - color: '#fff', - marginBottom: 4, - }, - workoutMeta: { - fontSize: 14, - color: '#999', - }, - actions: { - flexDirection: 'row', - gap: 8, - }, - editButton: { - backgroundColor: '#2C2C2E', - paddingHorizontal: 12, - paddingVertical: 8, - borderRadius: 6, - }, - editText: { - color: '#5AC8FA', - }, - deleteButton: { - backgroundColor: '#2C2C2E', - paddingHorizontal: 12, - paddingVertical: 8, - borderRadius: 6, - }, - disabledButton: { - opacity: 0.5, - }, - deleteText: { - color: '#FF3B30', - }, -}) diff --git a/app/assessment.tsx b/app/assessment.tsx deleted file mode 100644 index 3d4089a..0000000 --- a/app/assessment.tsx +++ /dev/null @@ -1,445 +0,0 @@ -/** - * TabataFit Assessment Screen - * Initial movement assessment to personalize experience - */ - -import { View, StyleSheet, ScrollView, Pressable } from 'react-native' -import { useRouter } from 'expo-router' -import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { LinearGradient } from 'expo-linear-gradient' -import { Icon } from '@/src/shared/components/Icon' -import { NativeButton } from '@/src/shared/components/native' - -import { useMemo, useState } from 'react' -import { useTranslation } from 'react-i18next' -import { useHaptics } from '@/src/shared/hooks' -import { useProgramStore } from '@/src/shared/stores' -import { ASSESSMENT_WORKOUT } from '@/src/shared/data/programs' -import { StyledText } from '@/src/shared/components/StyledText' - -import { useThemeColors, BRAND } from '@/src/shared/theme' -import { withOpacity } from '@/src/shared/utils/color' -import type { ThemeColors } from '@/src/shared/theme/types' -import { SPACING, LAYOUT } from '@/src/shared/constants/spacing' -import { RADIUS } from '@/src/shared/constants/borderRadius' -import { TEXT, GRADIENTS } from '@/src/shared/constants/colors' - -const FONTS = { - LARGE_TITLE: 28, - TITLE: 24, - HEADLINE: 17, - BODY: 16, - CAPTION: 13, -} - -export default function AssessmentScreen() { - const { t } = useTranslation('screens') - const insets = useSafeAreaInsets() - const router = useRouter() - const haptics = useHaptics() - const colors = useThemeColors() - const styles = useMemo(() => createStyles(colors), [colors]) - - const [showIntro, setShowIntro] = useState(true) - const skipAssessment = useProgramStore((s) => s.skipAssessment) - const completeAssessment = useProgramStore((s) => s.completeAssessment) - - const handleSkip = () => { - haptics.buttonTap() - skipAssessment() - router.back() - } - - const handleStart = () => { - haptics.buttonTap() - setShowIntro(false) - } - - const handleComplete = () => { - haptics.workoutComplete() - completeAssessment({ - completedAt: new Date().toISOString(), - exercisesCompleted: ASSESSMENT_WORKOUT.exercises.map(e => e.name), - }) - router.back() - } - - if (!showIntro) { - // Here we'd show the actual assessment workout player - // For now, just show a completion screen - return ( - - - setShowIntro(true)}> - - - - {t('assessment.title')} - - - - - - - - {ASSESSMENT_WORKOUT.exercises.map((exercise, index) => ( - - - - {index + 1} - - - - - {exercise.name} - - - {exercise.duration}s • {exercise.purpose} - - - - ))} - - - - - {t('assessment.tips')} - - {[1, 2, 3, 4].map((index) => ( - - - - {t(`assessment.tip${index}`)} - - - ))} - - - - - - - - - ) - } - - return ( - - {/* Header */} - - - - - - - - - {/* Hero */} - - - - - - - {t('assessment.welcomeTitle')} - - - - {t('assessment.welcomeDescription')} - - - - {/* Features */} - - - - - - - - {ASSESSMENT_WORKOUT.duration} {t('assessment.minutes')} - - - {t('assessment.quickCheck')} - - - - - - - - - - - {ASSESSMENT_WORKOUT.exercises.length} {t('assessment.movements')} - - - {t('assessment.testMovements')} - - - - - - - - - - - {t('assessment.noEquipment')} - - - {t('assessment.justYourBody')} - - - - - - {/* Benefits */} - - - {t('assessment.whatWeCheck')} - - - - - - {t('assessment.mobility')} - - - - - {t('assessment.strength')} - - - - - {t('assessment.stability')} - - - - - {t('assessment.balance')} - - - - - - - {/* Bottom Actions */} - - - - - - - ) -} - -function createStyles(colors: ThemeColors) { - return StyleSheet.create({ - container: { - flex: 1, - backgroundColor: colors.bg.base, - }, - scrollView: { - flex: 1, - }, - scrollContent: { - paddingHorizontal: LAYOUT.SCREEN_PADDING, - }, - - // Header - header: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - paddingHorizontal: LAYOUT.SCREEN_PADDING, - paddingVertical: SPACING[3], - }, - backButton: { - width: 40, - height: 40, - alignItems: 'center', - justifyContent: 'center', - }, - placeholder: { - width: 40, - }, - - // Hero - heroSection: { - alignItems: 'center', - marginTop: SPACING[4], - marginBottom: SPACING[8], - }, - iconContainer: { - width: 100, - height: 100, - borderRadius: RADIUS.FULL, - backgroundColor: withOpacity(BRAND.PRIMARY, 0.08), - alignItems: 'center', - justifyContent: 'center', - marginBottom: SPACING[5], - }, - heroTitle: { - textAlign: 'center', - marginBottom: SPACING[3], - }, - heroDescription: { - textAlign: 'center', - lineHeight: 24, - paddingHorizontal: SPACING[4], - }, - - // Features - featuresSection: { - marginBottom: SPACING[8], - }, - featureItem: { - flexDirection: 'row', - alignItems: 'center', - marginBottom: SPACING[4], - backgroundColor: colors.bg.surface, - padding: SPACING[4], - borderRadius: RADIUS.LG, - }, - featureIcon: { - width: 48, - height: 48, - borderRadius: RADIUS.FULL, - backgroundColor: withOpacity(BRAND.PRIMARY, 0.08), - alignItems: 'center', - justifyContent: 'center', - marginRight: SPACING[3], - }, - featureText: { - flex: 1, - }, - - // Benefits - benefitsSection: { - marginBottom: SPACING[6], - }, - benefitsTitle: { - marginBottom: SPACING[3], - }, - benefitsList: { - flexDirection: 'row', - flexWrap: 'wrap', - gap: SPACING[2], - }, - benefitTag: { - backgroundColor: colors.bg.surface, - paddingHorizontal: SPACING[4], - paddingVertical: SPACING[2], - borderRadius: RADIUS.FULL, - borderWidth: 1, - borderColor: colors.border.dim, - }, - - // Assessment Container - assessmentContainer: { - marginTop: SPACING[2], - }, - exerciseList: { - marginBottom: SPACING[6], - }, - exerciseItem: { - flexDirection: 'row', - alignItems: 'center', - backgroundColor: colors.bg.surface, - padding: SPACING[4], - borderRadius: RADIUS.LG, - marginBottom: SPACING[2], - }, - exerciseNumber: { - width: 36, - height: 36, - borderRadius: RADIUS.FULL, - backgroundColor: withOpacity(BRAND.PRIMARY, 0.08), - alignItems: 'center', - justifyContent: 'center', - marginRight: SPACING[3], - }, - exerciseInfo: { - flex: 1, - }, - - // Tips - tipsSection: { - backgroundColor: colors.bg.surface, - borderRadius: RADIUS.LG, - padding: SPACING[5], - }, - tipsTitle: { - marginBottom: SPACING[4], - }, - tipItem: { - flexDirection: 'row', - alignItems: 'flex-start', - marginBottom: SPACING[3], - }, - tipText: { - marginLeft: SPACING[2], - flex: 1, - lineHeight: 20, - }, - - // Bottom Bar - bottomBar: { - position: 'absolute', - bottom: 0, - left: 0, - right: 0, - backgroundColor: colors.bg.base, - paddingHorizontal: LAYOUT.SCREEN_PADDING, - paddingTop: SPACING[3], - borderTopWidth: 1, - borderTopColor: colors.border.dim, - }, - ctaButton: { - borderRadius: RADIUS.LG, - overflow: 'hidden', - marginBottom: SPACING[3], - }, - ctaGradient: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - paddingVertical: SPACING[4], - }, - ctaIcon: { - marginLeft: SPACING[2], - }, - skipButton: { - alignItems: 'center', - paddingVertical: SPACING[2], - }, - }) -} diff --git a/app/collection/CLAUDE.md b/app/collection/CLAUDE.md deleted file mode 100644 index 31017cc..0000000 --- a/app/collection/CLAUDE.md +++ /dev/null @@ -1,11 +0,0 @@ - -# Recent Activity - - - -### Apr 13, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6159 | 10:02 PM | 🔵 | Examined Collection Screen Explore Reference | ~150 | - \ No newline at end of file diff --git a/app/collection/[id].tsx b/app/collection/[id].tsx deleted file mode 100644 index 0d2b83e..0000000 --- a/app/collection/[id].tsx +++ /dev/null @@ -1,245 +0,0 @@ -/** - * TabataFit Collection Detail Screen - * Shows collection info + list of workouts in that collection - */ - -import { useMemo } from 'react' -import { View, StyleSheet, ScrollView, Pressable } from 'react-native' -import { useRouter, useLocalSearchParams } from 'expo-router' -import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { Icon } from '@/src/shared/components/Icon' -import { useTranslation } from 'react-i18next' - -import { useHaptics } from '@/src/shared/hooks' -import { useCollection } from '@/src/shared/hooks/useSupabaseData' -import { getWorkoutById } from '@/src/shared/data' -import { useTranslatedWorkouts } from '@/src/shared/data/useTranslatedData' -import { StyledText } from '@/src/shared/components/StyledText' -import { track } from '@/src/shared/services/analytics' - -import { useThemeColors, BRAND } from '@/src/shared/theme' -import type { ThemeColors } from '@/src/shared/theme/types' -import { SPACING, LAYOUT } from '@/src/shared/constants/spacing' -import { RADIUS } from '@/src/shared/constants/borderRadius' -import { TEXT, NAVY } from '@/src/shared/constants/colors' - -export default function CollectionDetailScreen() { - const insets = useSafeAreaInsets() - const router = useRouter() - const haptics = useHaptics() - const { t } = useTranslation() - const { id } = useLocalSearchParams<{ id: string }>() - - const colors = useThemeColors() - const styles = useMemo(() => createStyles(colors), [colors]) - - const { data: collection, isLoading } = useCollection(id) - - // Resolve workouts from collection's workoutIds - const rawWorkouts = useMemo(() => { - if (!collection) return [] - return collection.workoutIds - .map((wId) => getWorkoutById(wId)) - .filter(Boolean) as NonNullable>[] - }, [collection]) - - const workouts = useTranslatedWorkouts(rawWorkouts) - - const handleBack = () => { - haptics.selection() - router.back() - } - - const handleWorkoutPress = (workoutId: string) => { - haptics.buttonTap() - track('collection_workout_tapped', { - collection_id: id, - workout_id: workoutId, - }) - router.push(`/workout/${workoutId}`) - } - - if (isLoading) { - return ( - - Loading... - - ) - } - - if (!collection) { - return ( - - - - Collection not found - - - ) - } - - return ( - - {/* Header */} - - - - - - {collection.title} - - - - - - {/* Hero Card */} - - - - - {collection.icon} - - - {collection.title} - - - {collection.description} - - - {t('plurals.workout', { count: workouts.length })} - - - - - {/* Workout List */} - - {t('screens:explore.workouts')} - - - {workouts.map((workout) => ( - handleWorkoutPress(workout.id)} - > - - - - - - {workout.title} - - - {t('durationLevel', { - duration: workout.duration, - level: t(`levels.${(workout.level ?? 'Beginner').toLowerCase()}`), - })} - - - - - {t('units.calUnit', { count: workout.calories })} - - - - - ))} - - {workouts.length === 0 && ( - - - - No workouts in this collection - - - )} - - - ) -} - -function createStyles(colors: ThemeColors) { - return StyleSheet.create({ - container: { - flex: 1, - backgroundColor: colors.bg.base, - }, - centered: { - alignItems: 'center', - justifyContent: 'center', - }, - header: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - paddingHorizontal: LAYOUT.SCREEN_PADDING, - paddingVertical: SPACING[3], - }, - backButton: { - width: 44, - height: 44, - alignItems: 'center', - justifyContent: 'center', - }, - heroCard: { - height: 200, - borderRadius: RADIUS.XL, - overflow: 'hidden', - backgroundColor: NAVY[700], - }, - heroContent: { - flex: 1, - padding: SPACING[5], - justifyContent: 'flex-end', - }, - heroIcon: { - marginBottom: SPACING[2], - }, - scrollView: { - flex: 1, - }, - scrollContent: { - paddingHorizontal: LAYOUT.SCREEN_PADDING, - }, - workoutCard: { - flexDirection: 'row', - alignItems: 'center', - paddingVertical: SPACING[3], - paddingHorizontal: SPACING[4], - backgroundColor: colors.bg.surface, - borderRadius: RADIUS.LG, - marginBottom: SPACING[2], - gap: SPACING[3], - }, - workoutAvatar: { - width: 44, - height: 44, - borderRadius: RADIUS.FULL, - alignItems: 'center', - justifyContent: 'center', - }, - workoutInfo: { - flex: 1, - gap: 2, - }, - workoutMeta: { - alignItems: 'flex-end', - gap: 4, - }, - emptyState: { - alignItems: 'center', - justifyContent: 'center', - paddingVertical: SPACING[12], - }, - }) -} diff --git a/app/workout/CLAUDE.md b/app/workout/CLAUDE.md deleted file mode 100644 index 42d3fc8..0000000 --- a/app/workout/CLAUDE.md +++ /dev/null @@ -1,20 +0,0 @@ - -# Recent Activity - - - -### Feb 20, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #5045 | 8:22 AM | ✅ | Removed closing Host tag from workout detail screen | ~188 | -| #5044 | " | ✅ | Removed opening Host tag from workout detail screen | ~158 | -| #5032 | 8:19 AM | ✅ | Removed Host import from workout detail screen | ~194 | -| #5025 | 8:18 AM | 🔵 | Workout detail screen properly wraps content with Host component | ~244 | - -### Apr 17, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6366 | 10:21 AM | 🔵 | Verified workout program player integration in workout/[id].tsx | ~348 | - \ No newline at end of file diff --git a/app/workout/[id].tsx b/app/workout/[id].tsx deleted file mode 100644 index 0049502..0000000 --- a/app/workout/[id].tsx +++ /dev/null @@ -1,777 +0,0 @@ -/** - * TabataFit Pre-Workout Detail Screen - * Clean scrollable layout — native header, no hero - */ - -import React, { useEffect, useRef, useState } from 'react' -import { - View, - Text as RNText, - StyleSheet, - ScrollView, - Pressable, - Animated, -} from 'react-native' -import { Stack } from 'expo-router' -import { useRouter, useLocalSearchParams } from 'expo-router' -import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { Icon } from '@/src/shared/components/Icon' -import { VideoPlayer } from '@/src/shared/components/VideoPlayer' -import { Image } from 'expo-image' -import { useTranslation } from 'react-i18next' - -import { useHaptics } from '@/src/shared/hooks' -import { usePurchases } from '@/src/shared/hooks/usePurchases' -import { useUserStore } from '@/src/shared/stores' -import { track } from '@/src/shared/services/analytics' -import { canAccessWorkout, canAccessSession } from '@/src/shared/services/access' -import { getTabataSessionById, isTabataSession } from '@/src/shared/data/tabata' -import { isWorkoutProgramId, parseWorkoutProgramId, fetchProgramById, workoutProgramToTabataSession } from '@/src/shared/data/workoutPrograms' -import { BODY_ZONE_META } from '@/src/shared/types/workoutProgram' -import type { TabataSession } from '@/src/shared/types/program' -import { getWorkoutById, getTrainerById, getWorkoutAccentColor } from '@/src/shared/data' -import { useTranslatedWorkout, useMusicVibeLabel } from '@/src/shared/data/useTranslatedData' - -import { useThemeColors } from '@/src/shared/theme' -import type { ThemeColors } from '@/src/shared/theme/types' -import { TYPOGRAPHY } from '@/src/shared/constants/typography' -import { SPACING, LAYOUT } from '@/src/shared/constants/spacing' -import { RADIUS } from '@/src/shared/constants/borderRadius' -import { SPRING } from '@/src/shared/constants/animations' -import { TEXT, NAVY, BRAND, GREEN, AMBER, RED, DARK, BORDER_COLORS } from '@/src/shared/constants/colors' -import { NativeButton } from '@/src/shared/components/native' - -// ─── Save Button (headerRight) ─────────────────────────────────────────────── - -function SaveButton({ - isSaved, - onPress, - colors, -}: { - isSaved: boolean - onPress: () => void - colors: ThemeColors -}) { - return ( - [ - { width: 32, height: 32, alignItems: 'center', justifyContent: 'center' }, - pressed && { opacity: 0.6 }, - ]} - > - - - ) -} - -// ─── Main Screen ───────────────────────────────────────────────────────────── - -export default function WorkoutDetailScreen() { - const insets = useSafeAreaInsets() - const router = useRouter() - const haptics = useHaptics() - const { t } = useTranslation() - const { id } = useLocalSearchParams<{ id: string }>() - - // ─── Dispatch: Workout Program → Tabata session → Legacy workout ─ - if (isWorkoutProgramId(id ?? '')) { - return - } - - if (isTabataSession(id ?? '')) { - return - } - - return -} - -/** - * Workout Program Detail — loads a program tabata and delegates to TabataSessionDetailScreen - */ -function WorkoutProgramDetailScreen({ compositeId }: { compositeId: string }) { - const [session, setSession] = React.useState(undefined) - const [accent, setAccent] = React.useState(GREEN[500]) - const [isFree, setIsFree] = React.useState(false) - - React.useEffect(() => { - let cancelled = false - async function load() { - const parsed = parseWorkoutProgramId(compositeId) - if (!parsed) { if (!cancelled) setSession(null); return } - const program = await fetchProgramById(parsed.programId) - if (cancelled) return - if (!program) { setSession(null); return } - const tabataSession = workoutProgramToTabataSession(program) - setSession(tabataSession) - setIsFree(program.isFree === true) - const zoneMeta = BODY_ZONE_META[program.bodyZone] - setAccent(program.accentColor ?? zoneMeta.color) - } - load() - return () => { cancelled = true } - }, [compositeId]) - - if (session === undefined) { - return ( - - - Chargement... - - ) - } - - if (session === null) { - return ( - - - Programme non trouvé - - ) - } - - return -} - -/** - * Tabata Session Detail — shows warmup, blocks, cooldown, tabata tips - */ -function TabataSessionDetailScreen({ - sessionId, - sessionOverride, - accentOverride, - isFreeOverride, -}: { - sessionId: string - sessionOverride?: TabataSession - accentOverride?: string - isFreeOverride?: boolean -}) { - const router = useRouter() - const insets = useSafeAreaInsets() - const haptics = useHaptics() - const session = sessionOverride ?? getTabataSessionById(sessionId) - const { isPremium } = usePurchases() - const canAccess = isFreeOverride !== undefined - ? (isPremium || isFreeOverride) - : canAccessSession(sessionId, isPremium) - - if (!session) { - return ( - - - Séance non trouvée - - ) - } - - const programId = sessionId.startsWith('deb-') ? 'debutant' : sessionId.startsWith('int-') ? 'intermediaire' : sessionId.startsWith('avc-') ? 'avance' : 'bureau' - const accentMap: Record = { debutant: GREEN[500], intermediaire: BRAND.INFO, avance: RED[500], bureau: AMBER[500] } - const accent = accentOverride ?? accentMap[programId] ?? GREEN[500] - - const handleStart = () => { - haptics.buttonTap() - track('tabata_session_start_pressed', { session_id: sessionId }) - router.push(`/player/${sessionId}`) - } - - return ( - - - - {/* Session info */} - - {session.title} - {session.description} - - {session.blocks.length} bloc{session.blocks.length > 1 ? 's' : ''} - · - {session.totalDuration} min - · - {session.calories} cal - - {/* Focus tags */} - - {session.focus.map((f, i) => ( - - {f} - - ))} - - - - {/* Warmup */} - {session.warmup.movements.length > 0 && ( - - Échauffement · {Math.floor(session.warmup.totalDuration / 60)} min - {session.warmup.movements.map((m, i) => ( - - - {m.name} - {m.duration}s - - ))} - - )} - - {/* Blocks */} - {session.blocks.map((block, bi) => ( - - Bloc {bi + 1} · {block.rounds} rounds · {block.workTime}/{block.restTime}s - - - Rounds impairs - {block.oddExercise.name} - {block.oddExercise.conseil ? 📋 {block.oddExercise.conseil} : null} - - - Rounds pairs - {block.evenExercise.name} - {block.evenExercise.conseil ? 📋 {block.evenExercise.conseil} : null} - - - - ))} - - {/* Cooldown */} - {session.cooldown.movements.length > 0 && ( - - Retour au calme · {Math.floor(session.cooldown.totalDuration / 60)} min - {session.cooldown.movements.map((m, i) => ( - - - {m.name} - {m.duration}s - - ))} - - )} - - {/* Equipment */} - {session.equipment.length > 0 && ( - - Matériel - {session.equipment.map((eq, i) => ( - • {eq} - ))} - - )} - - - {/* CTA */} - - {canAccess ? ( - - Commencer la séance - - ) : ( - router.push('/paywall')}> - Débloquer avec Premium - - )} - - - ) -} - -/** - * Legacy workout detail — original format - */ -function LegacyWorkoutDetailScreen({ id }: { id: string }) { - const insets = useSafeAreaInsets() - const router = useRouter() - const haptics = useHaptics() - const { t } = useTranslation() - const savedWorkouts = useUserStore((s) => s.savedWorkouts) - const toggleSavedWorkout = useUserStore((s) => s.toggleSavedWorkout) - const { isPremium } = usePurchases() - - const colors = useThemeColors() - const isDark = colors.colorScheme === 'dark' - - const rawWorkout = getWorkoutById(id ?? '1') - const workout = useTranslatedWorkout(rawWorkout) - const musicVibeLabel = useMusicVibeLabel(rawWorkout?.musicVibe ?? '') - const trainer = rawWorkout ? getTrainerById(rawWorkout.trainerId) : undefined - const accentColor = GREEN[500] - - // CTA entrance - const ctaAnim = useRef(new Animated.Value(0)).current - useEffect(() => { - Animated.sequence([ - Animated.delay(300), - Animated.spring(ctaAnim, { - toValue: 1, - ...SPRING.GENTLE, - useNativeDriver: true, - }), - ]).start() - }, []) - - useEffect(() => { - if (workout) { - track('workout_detail_viewed', { - workout_id: workout.id, - workout_title: workout.title, - level: workout.level, - duration: workout.duration, - }) - } - }, [workout?.id]) - - const isSaved = savedWorkouts.includes(workout?.id?.toString() ?? '') - const toggleSave = () => { - if (!workout) return - haptics.selection() - toggleSavedWorkout(workout.id.toString()) - } - - if (!workout) { - return ( - <> - - - - {t('screens:workout.notFound')} - - - - ) - } - - const isLocked = !canAccessWorkout(workout.id, isPremium) - const exerciseCount = workout.exercises?.length || 1 - const repeatCount = Math.max(1, Math.floor((workout.rounds || exerciseCount) / exerciseCount)) - - const handleStartWorkout = () => { - if (isLocked) { - haptics.buttonTap() - track('paywall_triggered', { source: 'workout_detail', workout_id: workout.id }) - router.push('/paywall') - return - } - haptics.phaseChange() - router.push(`/player/${workout.id}`) - } - - const ctaBg = isDark ? TEXT.PRIMARY : NAVY[900] - const ctaText = isDark ? NAVY[900] : TEXT.PRIMARY - const ctaLockedBg = isDark ? 'rgba(255,255,255,0.12)' : 'rgba(0,0,0,0.08)' - const ctaLockedText = colors.text.primary - - const equipmentText = workout.equipment.length > 0 - ? workout.equipment.join(' · ') - : t('screens:workout.noEquipment', { defaultValue: 'No equipment needed' }) - - return ( - <> - ( - - ), - }} - /> - - - - {/* Thumbnail / Video Preview */} - {rawWorkout?.thumbnailUrl ? ( - - - - ) : rawWorkout?.videoUrl ? ( - - - - ) : null} - - {/* Title */} - - {workout.title} - - - {/* Trainer */} - {trainer && ( - - with {trainer.name} - - )} - - {/* Inline metadata */} - - - - - {t('units.minUnit', { count: workout.duration })} - - - · - - - - {t('units.calUnit', { count: workout.calories })} - - - · - - {t(`levels.${(workout.level ?? 'Beginner').toLowerCase()}`)} - - - - {/* Equipment */} - - {equipmentText} - - - {/* Separator */} - - - {/* Timing Card */} - - - - - {workout.prepTime}s - - - {t('screens:workout.prep', { defaultValue: 'Prep' })} - - - - - - {workout.workTime}s - - - {t('screens:workout.work', { defaultValue: 'Work' })} - - - - - - {workout.restTime}s - - - {t('screens:workout.rest', { defaultValue: 'Rest' })} - - - - - - {workout.rounds} - - - {t('screens:workout.rounds', { defaultValue: 'Rounds' })} - - - - - - {/* Exercises Card */} - - {t('screens:workout.exercises', { count: workout.rounds })} - - - - {workout.exercises.map((exercise, index) => ( - - - - {index + 1} - - - {exercise.name} - - - {exercise.duration}s - - - {index < workout.exercises.length - 1 && ( - - )} - - ))} - - - {repeatCount > 1 && ( - - - - {t('screens:workout.repeatRounds', { count: repeatCount })} - - - )} - - {/* Music */} - - - - {t('screens:workout.musicMix', { vibe: musicVibeLabel })} - - - - - {/* CTA */} - - - - - - ) -} - -// ─── Styles ────────────────────────────────────────────────────────────────── - -const styles = StyleSheet.create({ - container: { flex: 1, backgroundColor: NAVY[900] }, - heroSection: { padding: SPACING[5], alignItems: 'center' }, - sessionTitle: { ...TYPOGRAPHY.LARGE_TITLE, color: TEXT.PRIMARY, textAlign: 'center' }, - sessionDesc: { ...TYPOGRAPHY.BODY, color: TEXT.SECONDARY, textAlign: 'center', marginTop: SPACING[2], lineHeight: 22 }, - metaRow: { flexDirection: 'row', marginTop: SPACING[4], gap: SPACING[2], justifyContent: 'center' }, - metaText: { ...TYPOGRAPHY.SUBHEADLINE, color: TEXT.SECONDARY }, - focusRow: { flexDirection: 'row', flexWrap: 'wrap', gap: SPACING[2], marginTop: SPACING[3], justifyContent: 'center' }, - focusTag: { paddingHorizontal: 10, paddingVertical: 3, borderRadius: 12, borderWidth: 1 }, - focusTagText: { fontSize: 12, fontWeight: '600' }, - section: { paddingHorizontal: SPACING[5], marginTop: SPACING[6] }, - sectionTitle: { ...TYPOGRAPHY.HEADLINE, color: TEXT.PRIMARY, marginBottom: SPACING[3] }, - movementRow: { flexDirection: 'row', alignItems: 'center', gap: SPACING[2], marginBottom: SPACING[2] }, - movementDot: { fontSize: 8, color: TEXT.TERTIARY }, - movementName: { ...TYPOGRAPHY.BODY, color: TEXT.PRIMARY, flex: 1 }, - movementDuration: { ...TYPOGRAPHY.CAPTION_1, color: TEXT.TERTIARY }, - exercisePair: { gap: SPACING[3] }, - exerciseCard: { backgroundColor: NAVY[800], borderRadius: RADIUS.MD, padding: SPACING[3], borderLeftWidth: 3 }, - exerciseLabel: { ...TYPOGRAPHY.CAPTION_2, color: TEXT.TERTIARY, textTransform: 'uppercase', letterSpacing: 0.5, marginBottom: 4 }, - exerciseName: { ...TYPOGRAPHY.TITLE_3, color: TEXT.PRIMARY }, - exerciseTip: { ...TYPOGRAPHY.CAPTION_1, color: TEXT.SECONDARY, marginTop: SPACING[1], lineHeight: 18 }, - equipText: { ...TYPOGRAPHY.SUBHEADLINE, color: TEXT.SECONDARY, marginBottom: SPACING[1] }, - ctaContainer: { position: 'absolute', bottom: 0, left: 0, right: 0, paddingHorizontal: SPACING[5], paddingTop: SPACING[3], backgroundColor: DARK.SCRIM, borderTopWidth: 1, borderTopColor: BORDER_COLORS.DIM }, - ctaButton: { height: 52, borderRadius: RADIUS.MD, borderCurve: 'continuous', alignItems: 'center', justifyContent: 'center' }, - ctaText: { ...TYPOGRAPHY.BUTTON_MEDIUM, color: NAVY[900], letterSpacing: 0.5 }, -}) - -const s = StyleSheet.create({ - container: { - flex: 1, - }, - centered: { - alignItems: 'center', - justifyContent: 'center', - }, - scrollContent: { - paddingHorizontal: LAYOUT.SCREEN_PADDING, - paddingTop: SPACING[2], - }, - - // Media - mediaContainer: { - height: 200, - borderRadius: RADIUS.LG, - borderCurve: 'continuous', - overflow: 'hidden', - marginBottom: SPACING[4], - }, - thumbnail: { - width: '100%', - height: '100%', - }, - - // Title - title: { - ...TYPOGRAPHY.TITLE_1, - marginBottom: SPACING[2], - }, - - // Trainer - trainerName: { - ...TYPOGRAPHY.SUBHEADLINE, - marginBottom: SPACING[3], - }, - - // Metadata - metaRow: { - flexDirection: 'row', - alignItems: 'center', - flexWrap: 'wrap', - gap: SPACING[2], - marginBottom: SPACING[2], - }, - metaItem: { - flexDirection: 'row', - alignItems: 'center', - gap: 4, - }, - metaText: { - ...TYPOGRAPHY.SUBHEADLINE, - }, - metaDot: { - ...TYPOGRAPHY.SUBHEADLINE, - }, - - // Equipment - equipmentText: { - ...TYPOGRAPHY.FOOTNOTE, - marginBottom: SPACING[4], - }, - - // Separator - separator: { - height: StyleSheet.hairlineWidth, - marginBottom: SPACING[4], - }, - - // Card - card: { - borderRadius: RADIUS.LG, - borderCurve: 'continuous', - overflow: 'hidden', - marginBottom: SPACING[4], - }, - - // Timing - timingRow: { - flexDirection: 'row', - paddingVertical: SPACING[4], - }, - timingItem: { - flex: 1, - alignItems: 'center', - gap: 2, - }, - timingDivider: { - width: StyleSheet.hairlineWidth, - alignSelf: 'stretch', - }, - timingValue: { - ...TYPOGRAPHY.HEADLINE, - fontVariant: ['tabular-nums'], - }, - timingLabel: { - ...TYPOGRAPHY.CAPTION_2, - textTransform: 'uppercase' as const, - letterSpacing: 0.5, - }, - - // Section - sectionTitle: { - ...TYPOGRAPHY.HEADLINE, - marginBottom: SPACING[3], - }, - - // Exercise - exerciseRow: { - flexDirection: 'row', - alignItems: 'center', - paddingVertical: SPACING[3], - paddingHorizontal: SPACING[4], - }, - exerciseIndex: { - ...TYPOGRAPHY.FOOTNOTE, - fontVariant: ['tabular-nums'], - width: 24, - }, - exerciseName: { - ...TYPOGRAPHY.BODY, - flex: 1, - }, - exerciseDuration: { - ...TYPOGRAPHY.SUBHEADLINE, - fontVariant: ['tabular-nums'], - marginLeft: SPACING[3], - }, - exerciseSep: { - height: StyleSheet.hairlineWidth, - marginLeft: SPACING[4] + 24, - marginRight: SPACING[4], - }, - repeatRow: { - flexDirection: 'row', - alignItems: 'center', - gap: SPACING[2], - marginTop: SPACING[2], - paddingLeft: 24, - }, - repeatText: { - ...TYPOGRAPHY.FOOTNOTE, - }, - - // Music - musicRow: { - flexDirection: 'row', - alignItems: 'center', - gap: SPACING[2], - marginTop: SPACING[5], - }, - musicText: { - ...TYPOGRAPHY.FOOTNOTE, - }, - - // Bottom bar - bottomBar: { - position: 'absolute', - bottom: 0, - left: 0, - right: 0, - paddingHorizontal: LAYOUT.SCREEN_PADDING, - paddingTop: SPACING[3], - }, - ctaButton: { - height: 54, - borderRadius: RADIUS.MD, - borderCurve: 'continuous', - alignItems: 'center', - justifyContent: 'center', - flexDirection: 'row', - }, - ctaText: { - ...TYPOGRAPHY.BUTTON_LARGE, - }, -}) diff --git a/app/workout/body-zone/CLAUDE.md b/app/workout/body-zone/CLAUDE.md deleted file mode 100644 index b82cf83..0000000 --- a/app/workout/body-zone/CLAUDE.md +++ /dev/null @@ -1,16 +0,0 @@ - -# Recent Activity - - - -### Apr 17, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6377 | 10:28 AM | 🔴 | Fixed duplicate ScrollView opening tag in body zone detail screen | ~223 | -| #6374 | 10:26 AM | 🔄 | Removed header section from body zone detail screen | ~260 | -| #6363 | 10:20 AM | 🔄 | Changed program navigation to exclude explicit tabata position | ~319 | -| #6353 | 10:02 AM | 🔄 | Simplified difficulty pill styling in body-zone detail screen | ~281 | -| #6352 | 10:01 AM | 🔄 | Removed program count badges from difficulty filter pills | ~319 | -| #6351 | " | 🔵 | Discovered body zone detail page with difficulty level filtering | ~364 | - \ No newline at end of file diff --git a/app/workout/body-zone/[id].tsx b/app/workout/body-zone/[id].tsx deleted file mode 100644 index ea5e50b..0000000 --- a/app/workout/body-zone/[id].tsx +++ /dev/null @@ -1,296 +0,0 @@ -/** - * Body Zone Detail Screen - * Shows workout programs filtered by body zone with difficulty pills - */ - -import { useState, useMemo, useEffect, useCallback } from 'react' -import { View, StyleSheet, ScrollView, Pressable } from 'react-native' -import { useRouter, useLocalSearchParams } from 'expo-router' -import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { Icon } from '@/src/shared/components/Icon' - -import { useTranslation } from 'react-i18next' -import { useHaptics } from '@/src/shared/hooks' -import { usePurchases } from '@/src/shared/hooks/usePurchases' -import { StyledText } from '@/src/shared/components/StyledText' -import { useThemeColors } from '@/src/shared/theme' -import type { ThemeColors } from '@/src/shared/theme/types' -import { BRAND, GREEN, TEXT, NAVY, BORDER_COLORS } from '@/src/shared/constants/colors' -import { SPACING, LAYOUT } from '@/src/shared/constants/spacing' -import { RADIUS } from '@/src/shared/constants/borderRadius' -import { canAccessWorkoutProgram } from '@/src/shared/services/access' -import { useWorkoutProgramStore } from '@/src/shared/stores/workoutProgramStore' -import { fetchProgramsByBodyZone, buildWorkoutProgramId } from '@/src/shared/data/workoutPrograms' -import type { WorkoutProgram, BodyZone, ProgramLevel } from '@/src/shared/types/workoutProgram' -import { BODY_ZONE_META, LEVEL_META } from '@/src/shared/types/workoutProgram' - -const LEVELS: ProgramLevel[] = ['Beginner', 'Intermediate', 'Advanced'] - -export default function BodyZoneDetailScreen() { - const insets = useSafeAreaInsets() - const router = useRouter() - const haptics = useHaptics() - const { t } = useTranslation('screens') - const { id } = useLocalSearchParams<{ id: string }>() - const colors = useThemeColors() - const { isPremium } = usePurchases() - const isProgramCompleted = useWorkoutProgramStore(s => s.isProgramCompleted) - - const bodyZone = (id ?? 'full-body') as BodyZone - const meta = BODY_ZONE_META[bodyZone] - - const [programs, setPrograms] = useState([]) - const [selectedLevel, setSelectedLevel] = useState('Beginner') - - useEffect(() => { - fetchProgramsByBodyZone(bodyZone).then((data) => { - setPrograms(data) - // Default to first level that has programs - const firstAvailable = LEVELS.find(l => data.some(p => p.level === l)) - if (firstAvailable) setSelectedLevel(firstAvailable) - }) - }, [bodyZone]) - - const filteredPrograms = useMemo( - () => programs.filter(p => p.level === selectedLevel), - [programs, selectedLevel], - ) - - const handleProgramPress = (program: WorkoutProgram) => { - haptics.buttonTap() - const isLocked = !canAccessWorkoutProgram(program, isPremium) - if (isLocked) { - router.push('/paywall') - return - } - router.push(`/workout/${buildWorkoutProgramId(program.id)}` as any) - } - - const handleLevelPress = (level: ProgramLevel) => { - haptics.buttonTap() - setSelectedLevel(level) - } - - const accentColor = meta.color - - const styles = useMemo(() => createStyles(colors, accentColor), [colors, accentColor]) - - return ( - - - {/* Difficulty Pills */} - - {LEVELS.map((level) => { - const levelMeta = LEVEL_META[level] - const isActive = selectedLevel === level - - return ( - handleLevelPress(level)} - style={[ - styles.pill, - { - backgroundColor: isActive ? accentColor + '20' : NAVY[800], - borderColor: isActive ? accentColor : BORDER_COLORS.DIM, - }, - ]} - > - - {levelMeta.label} - - - ) - })} - - - {/* Program Count */} - - {filteredPrograms.length} programme{filteredPrograms.length !== 1 ? 's' : ''} {LEVEL_META[selectedLevel].label.toLowerCase()} - - - {/* Program List */} - {filteredPrograms.map((program) => ( - handleProgramPress(program)} - isPremium={isPremium} - isCompleted={isProgramCompleted(program.id)} - /> - ))} - - {filteredPrograms.length === 0 && ( - - - - Aucun programme disponible pour ce niveau - - - )} - - - ) -} - -// ═══════════════════════════════════════════════════════════════════════════ -// PROGRAM CARD (full-width) -// ═══════════════════════════════════════════════════════════════════════════ - -function ProgramCard({ - program, - accentColor, - onPress, - isPremium, - isCompleted, -}: { - program: WorkoutProgram - accentColor: string - onPress: () => void - isPremium: boolean - isCompleted: boolean -}) { - const { t } = useTranslation('screens') - const colors = useThemeColors() - const isLocked = !canAccessWorkoutProgram(program, isPremium) - const levelMeta = LEVEL_META[program.level] - const color = program.accentColor ?? accentColor - - return ( - [ - { - borderRadius: RADIUS.XL, - overflow: 'hidden', - borderWidth: 1, - borderCurve: 'continuous' as const, - borderColor: colors.border.dim, - backgroundColor: colors.surface.default.backgroundColor, - marginBottom: SPACING[3], - opacity: pressed ? 0.85 : 1, - }, - ]} - > - {/* Accent line */} - - - - {/* Title row */} - - - {program.title} - - - {isCompleted ? ( - - - - Complété - - - ) : isLocked ? ( - - - - {t('home.premiumBadge')} - - - ) : ( - - - {t('home.freeBadge')} - - - )} - - - {/* Description */} - {program.description ? ( - - {program.description} - - ) : null} - - {/* Meta row */} - - - - {program.estimatedDuration} min - - - - {program.estimatedCalories} kcal - - - - {program.tabatas.length} tabatas - - - - {/* CTA */} - - - - {isLocked ? t('home.unlockPremium') : t('home.startProgram')} - - - - - ) -} - -// ═══════════════════════════════════════════════════════════════════════════ -// STYLES -// ═══════════════════════════════════════════════════════════════════════════ - -const createStyles = (colors: ThemeColors, accentColor: string) => - StyleSheet.create({ - container: { - flex: 1, - backgroundColor: NAVY[900], - }, - scrollView: { - flex: 1, - }, - scrollContent: { - paddingHorizontal: LAYOUT.SCREEN_PADDING, - }, - - // Difficulty pills - pillsRow: { - flexDirection: 'row', - gap: SPACING[2], - marginBottom: SPACING[5], - }, - pill: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - paddingVertical: SPACING[3], - borderRadius: RADIUS.PILL, - borderWidth: 1, - borderCurve: 'continuous', - }, - - // Results - resultCount: { - marginBottom: SPACING[4], - }, - - // Empty state - emptyState: { - alignItems: 'center', - justifyContent: 'center', - paddingVertical: SPACING[10], - }, - }) diff --git a/app/workout/category/CLAUDE.md b/app/workout/category/CLAUDE.md deleted file mode 100644 index 6c41707..0000000 --- a/app/workout/category/CLAUDE.md +++ /dev/null @@ -1,11 +0,0 @@ - -# Recent Activity - - - -### Apr 11, 2026 - -| ID | Time | T | Title | Read | -|----|------|---|-------|------| -| #6114 | 7:39 PM | 🔵 | Category detail screen imports reviewed | ~298 | - \ No newline at end of file diff --git a/app/workout/category/[id].tsx b/app/workout/category/[id].tsx deleted file mode 100644 index 553e05f..0000000 --- a/app/workout/category/[id].tsx +++ /dev/null @@ -1,246 +0,0 @@ -/** - * TabataFit Category Detail Screen - * Filtered workout list for a specific category with level sub-filter - */ - -import { useState, useMemo } from 'react' -import { View, StyleSheet, ScrollView, Pressable, Text as RNText } from 'react-native' -import { useRouter, useLocalSearchParams } from 'expo-router' -import { useSafeAreaInsets } from 'react-native-safe-area-context' -import { Icon } from '@/src/shared/components/Icon' - -import { useTranslation } from 'react-i18next' - -import { useHaptics } from '@/src/shared/hooks' -import { getWorkoutsByCategory, CATEGORIES } from '@/src/shared/data' -import type { ProgramWorkout } from '@/src/shared/types/program' -import { useTranslatedCategories, useTranslatedWorkouts } from '@/src/shared/data/useTranslatedData' -import { StyledText } from '@/src/shared/components/StyledText' -import type { WorkoutCategory, WorkoutLevel } from '@/src/shared/types' - -import { useThemeColors, BRAND } from '@/src/shared/theme' -import type { ThemeColors } from '@/src/shared/theme/types' -import { SPACING, LAYOUT } from '@/src/shared/constants/spacing' -import { RADIUS } from '@/src/shared/constants/borderRadius' -import { TEXT, GREEN } from '@/src/shared/constants/colors' -import { TYPOGRAPHY } from '@/src/shared/constants/typography' - -const LEVEL_IDS: (WorkoutLevel | 'all')[] = ['all', 'Beginner', 'Intermediate', 'Advanced'] - -export default function CategoryDetailScreen() { - const insets = useSafeAreaInsets() - const router = useRouter() - const haptics = useHaptics() - const { t } = useTranslation() - const { id } = useLocalSearchParams<{ id: string }>() - - const colors = useThemeColors() - const styles = useMemo(() => createStyles(colors), [colors]) - - const [selectedLevelIndex, setSelectedLevelIndex] = useState(0) - - const translatedCategories = useTranslatedCategories() - - const levelLabels = [ - t('screens:category.allLevels'), - t('levels.beginner'), - t('levels.intermediate'), - t('levels.advanced'), - ] - - const selectedLevel = LEVEL_IDS[selectedLevelIndex] - const category = translatedCategories.find(c => c.id === id) - const categoryLabel = category?.label ?? id ?? 'Category' - - const allWorkouts = useMemo( - () => (id && id !== 'all') ? getWorkoutsByCategory(id as WorkoutCategory) : [], - [id] - ) - - const filteredWorkouts = useMemo(() => { - if (selectedLevel === 'all') return allWorkouts - return allWorkouts.filter((w: ProgramWorkout) => w.focus?.[0] === selectedLevel) - }, [allWorkouts, selectedLevel]) - - const translatedWorkouts = useTranslatedWorkouts(filteredWorkouts) - - const handleBack = () => { - haptics.selection() - router.back() - } - - const handleWorkoutPress = (workoutId: string) => { - haptics.buttonTap() - router.push(`/workout/${workoutId}`) - } - - return ( - - {/* Header */} - - - - - {categoryLabel} - - - - {/* Level Filter — segmented pills */} - - - {levelLabels.map((label, idx) => ( - { - haptics.selection() - setSelectedLevelIndex(idx) - }} - > - - {label} - - - ))} - - - - - {t('plurals.workout', { count: translatedWorkouts.length })} - - - - {translatedWorkouts.map((workout: ProgramWorkout & { title: string }) => ( - handleWorkoutPress(workout.id)} - > - - - - - {workout.title} - - {workout.duration}min • {workout.focus?.[0] ?? 'Full Body'} - - - - - - - ))} - - {translatedWorkouts.length === 0 && ( - - - - No workouts found - - - )} - - - ) -} - -function createStyles(colors: ThemeColors) { - return StyleSheet.create({ - container: { - flex: 1, - backgroundColor: colors.bg.base, - }, - header: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - paddingHorizontal: LAYOUT.SCREEN_PADDING, - paddingVertical: SPACING[3], - }, - backButton: { - width: 44, - height: 44, - alignItems: 'center', - justifyContent: 'center', - }, - filterContainer: { - paddingHorizontal: LAYOUT.SCREEN_PADDING, - marginBottom: SPACING[4], - }, - segmentedRow: { - flexDirection: 'row', - gap: SPACING[2], - }, - segment: { - flex: 1, - paddingVertical: SPACING[2], - paddingHorizontal: SPACING[3], - borderRadius: RADIUS.MD, - backgroundColor: colors.bg.surface, - borderWidth: 1, - borderColor: colors.border.dim, - alignItems: 'center', - }, - segmentActive: { - backgroundColor: GREEN.DIM, - borderColor: GREEN.BORDER, - }, - segmentText: { - fontSize: 13, - fontWeight: '500', - color: TEXT.TERTIARY, - }, - segmentTextActive: { - color: BRAND.PRIMARY, - fontWeight: '600', - }, - scrollView: { - flex: 1, - }, - scrollContent: { - paddingHorizontal: LAYOUT.SCREEN_PADDING, - }, - workoutCard: { - flexDirection: 'row', - alignItems: 'center', - paddingVertical: SPACING[3], - paddingHorizontal: SPACING[4], - backgroundColor: colors.bg.surface, - borderRadius: RADIUS.LG, - marginBottom: SPACING[2], - gap: SPACING[3], - }, - workoutAvatar: { - width: 44, - height: 44, - borderRadius: RADIUS.FULL, - alignItems: 'center', - justifyContent: 'center', - }, - workoutInitial: { - ...TYPOGRAPHY.HEADING_2, - color: colors.text.primary, - }, - workoutInfo: { - flex: 1, - gap: 2, - }, - workoutMeta: { - alignItems: 'flex-end', - gap: 4, - }, - emptyState: { - alignItems: 'center', - justifyContent: 'center', - paddingVertical: SPACING[12], - }, - }) -} diff --git a/blob_https___www.3daistudio.png b/blob_https___www.3daistudio.png deleted file mode 100644 index 32df87433c9de5150ce981a5bb711fb0c2791dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219548 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

3eNCrLa> z1)}gcMByS{Zgf_;A!8=%+BHTxqEDbr1)oe^%GT;@Fi6+~Ri!Rv2kWp=0g6UM1dR~} zAgUffVQsF>assepv{4bZd~u=U9v0we96&y?O-lMI{C`_O-*u3`LsWJXn~uH+JsIz?j(B zKKZl3GN=`H!UbN&1>SOu8<;Ow$QXlhFW7K`11Z=jZzdbEFJSC1=pc@@8Jgjr?Mn3o zq@4}Hod3MhG{kxi`W1-Tz9xMV6d;2@*)Qx#K@)J(w?Wjs)Hl7%#Qs#2kxdvK#4{^) z0eJ^D$u`-mf60LVbL{`@RzeH__Zm(V9Zb#WMQNO%OZuBMqFl3c23*7R`SGHG+sM9cW(QJ zH9hN*fVVxcQrI4p3Fu%&;ttoS)LL_p)@Axdx%cb7eT;_Nbc=fFKmk!=tC#WygMQsv~-+o{kZBRp}|c=+AeWdi#!g-epha5xY}57sHFZ zd?)VTNFJ)OS-!N_lT(%FgFVK}=pDqZuPv7BKiSMjyH_Nzj)|4y1z8dY*xhcioc_inL6EXrHA(iW9tc7?h zkF+ezDO8+(l(H>(WHi;%MN4?Y%I8o*$F+x}l8nJ$WpBK;^w2G}q&g>2_cvyeBDSI& zxYjpLvOOhozt5ZtwY;9G9Qd^PO4j|~nqRavymL5>%T!q0e-4GOi!{jdtNB7@r_D3x zKz^7mggLS?@v``w$QYko#bcOO5?vU`&{U84B; zWY_e&_@?d7txB~91e zE#9a6elRm(@eWy(|LpdYSJ8Y3F_pu`A$u_Lqyd(tO=1-4*U&;1Y{j771A~EPKg85J z94$`{2d6tD)wqEj9O)uqxMY(K4XUx_7DvWR9zht1xQOEYpNNVuIv}wAg_YR{H!We1 zAHpUO_{AWMk}wz#`ss*2DHrn9RwQ>=(Pjm4p?=#_)z>wGENm*wg}eQI0uga^3*n#r z<@CuA6D9m{;puKw*3q(qHY%Y6avz#z=FJ%EobxHEOjj-CK5<=C|7BW|hwirdD;dVv z^{O)_)$zsVnomzKlFfKTMQOS?a~Bz$hD9$n%2I?Ev5_EQ8yO;s*hYxh$;SFN;K6O8 zT$e>QVNV)hf@p1MfIY)S@gpLqIw4ph`JUH3mSG1T_&WEf)IKFh_(Yd z*IK_;&CR!JZmmYobGUy~wESq4ua&Rmv#l3e><3Xll915+cV0nc2SOAxXxsx6gG3q- z`cKq8&_Xd}P_uzXaGLld?qAflL!$x9cR~%uycXm*6(9G!c=fI~_Nj~k-6mchdo*-Z zg!&`Czp^E14WmePqNWqnd5sd8^MKZgi@U+kroyRXir&?MUWQ$Baj2Nl^}Ep^Qu`OB zpb&&gj|)LPuZzsuA*w^+3}FvIj3O!s>eX|?Dc-f^5idI|nWE(`#$Jxta=_+al#7+- zLaOHN-PDts1V6N8XEC9(q{wS-mzO?P;iTW#jSK!q&P=?1W!up_cs48}@!R$12@Un` z5*PUDTrJUG_4TfjcD5YGxE7fo1BDQzkFZ5TIn>e!-T`P5QdmQ*rT{x0*m{3|2-pS( zTmTSb6i$%HGGQI&89F0$km~7cuKs4Y*ufM_Shkp5ne>wtm#Q{Kunk136D&D^$`SUT zUS$*L_#^DFxl;hkjBHXMf3LTSpW}g*?4&J)vJA>}Ie>QvqdyyCf_)uULOgc1n?Lq0&6m%8>r*;ZFVV=kQ#n5HVE*U3(o1$j zCPqrC%T+!{9cEJQ96XmnAhT-SKUKh0{HpG{Fg0(Bib#u_1=%29&2u}}@))0|FR{vE z&Qj6f7PoPwLU-+>cT0LNUC!VxoNw!J$J!8c_=rxMPJtjErv>71AcVwCnn|kO$E=X9 z%3goYuenm(_&juj$}V?zot}Y?0o(lqVe#EVk$o^qhcR?QKpDKTy;tzEx+!a5*lm z;V8&XlN4TT7TX9QrGsym3oPXXz!Qa7kr##S!z}z3O6sY$PkHg!!MgC|vpaWEo^>&y zX`kO+H~!LtU4C!kHG8J$`n&n#!9&^Hn@4Z)z`)fTrud0J_W~$4B3T4#86q4FbKrqM zvXgQ15KJ3&I{cLHN?_|h?twd>9&cxAj^oZb^H9kBt=@!HlzP1k!R)NA@B16Swi&ml zn4&b_ii%E#qIWiRx8kQ7JGHgO9vWTFPpgh*ovj@ikT-amGW8(sY+S;xi}d~Xes#Sb zO6oXupT+FJ+F)LE<2rLDPk#`~=Mv*EbBWF)I(29LNrNqZChzxozg5zuxOaKHO(c8* zy@91&*Ioy8YxK?v5IihR4!wSV@8T}csXFGBP9>{%3+_*8=kxwib`uk>7|z>aqlwFX z>bOH{MfIFzVycD4>BU?z8A;ClavXlu+q|<;Rc1UPmBH%1U%l>6*Y!7kJelPev}&My z)?H?{%d|e`Nd1>J#`DI2nNalfSV|gMyX{KK)awCD74{MH4^|hnW_x1FnF|x?!I!v4 z7TP-nG8aPnw++p=Jt@8PWAAQ;ZM3`jDW)|=G4{>Se~ljk{Ug&pA%SBwD3$&kwfgP; zNZSg&&8@@XusKn{5ox*%i9(8*okxW+GIWr)to#~~KETc!R15!#7yf;CPjU)F2!22X zK@3okIvdy(_7b^53Ph$x>{U^hP;jG67k_8T2l@b zZyU}IQ=JZ?oY?QxvN`FT0TCL3yiYM`=pXvqImh1Eqa>%wkixfLUL{z`xts-!FVOUI z*XBb|*G7-Ejd@U z#7wq=Up-Ky32I3s>efxKT~SdIaLND`y~i2i?a0X#u+)gMTh%1ZF|*zp9D&h+i$ ziA**0^`=6H$G5)KL}XMbc{t6g8aQ7Im^g%6wv2H$>F_5{Jo4I-BJcaU#p$(M^?_5b zWm=v$RzrI3o3+&JJx3yU3%#LwN|PP2uwV&e5NK#92(uBLjr2l5GH!>pHo#Hjk=k9t zja3-mi7y#B=WbI%{GzfQJD{TIRMGn)BX^sia%cmsWyM3b%8h2OQ&JO|2B~1vX1qQO z>?i)Hwj-kyMAif9Qe;ONcs|-COr|9rYFS`*r$EG_tQg^dfEvD2tY1@PFNv9GDEwu( zku~!$@}S=BOC4mIy=$&aj$hS}l4pUnC2?l)=cs``L8FH>MiO2qpL~tEr^G#p%cncO z`t^CQM*gYwVtk8-=HUD}T#AP+@!6b3&r73&TChvCj`Hn}5q@jioYUm=j-p+^ zTuY3`L&nO8uEiRb$(Q%ibQi^jeUDc~ap_ZnUz;0lEh~#$eN=j#iS8vp5TJN#w zH!*5xjW?%|$c`v@so_a{#w7${hMhyds6wmd%kTOBqAX=%QqAr#32pECSm&9SbA`C} znRsNFckl0KrRn+4zn<7C{kG%KJ2!ewSQPTdp?P z?)|}D^4i(E`Ib2)rV{!Sy;EBbj7~+^kJgUQb*Pi>`U)+MrLNMSaZEA7cA83$YZSJn zk;u_1D-wFaSNwKwJfI}6(OVqO#&ewM6R~bx+_Tta_Ec{zCxJgZL`(C^ZohK2qYYBE zDr-EOG=I#|1a#9TmI-+Pa0useUlZ^^@Tcf7h9b2Qs$?<1;>-sS)kp-D=}M+X#qnFT z4)gocz*oo#gyQ~VaRqh$|78gI#{rTI%C}-tJu2uI5{4T&`8pQjxpNwMnpnE`VJC{` zM%1t6La`hgR>>;;n&&jl7(fx1SR*5v@c;^9!XLH|vJnY$uTAV4USG5 zfrSKs1I$bCBr;DFI7Nd$JAQ~_f*)Wqg1@RA4RPd8RgVOh{}s)V>K?Jr1e6y>{uBiH z^>kyffabUhvu^1_BApg2V`U*acDHTxVx@lQ*+X*FYTe@@=C>$V-(;Hf2eSyIHbbD7 z{|Arxi_4@S!uaqTyVBh!LSmc+(|)JhhM$;`|I|*txOiJle*F4$1ukidZ=7!4A5?z9 zH;nsV6pOWW9wGS9K@Re^BQ~`LlRtYU4rSo@KZRD-;S>(cl#+PPm=dfs6^`xtJbuSi zJxuL6@5oc#99V5;RT!yHJAO<6&=?&NK(*V#5djfE!@U?(+pWm%#x#POBS^UvR9d=F zC~xs93P(ab5hP^b3qa^_2$B99oVZZ%)^ehXFEa@K^t5xSBbRFY7l!PtU*cv5o;w@U zwycO^MIv@C+3FVC(R3>l5}m0XJk{GiDB9`Eu)n?i*pgYg5Wj9fqEr^vr!55OWo7#rQNA?^-k7&jhP@{IYe=U{VzOx0-=cOVv zDqb+v=Q)xldO`bDQAX7wCl(g!5FiGi8YEhv8w;GsWgW7xmJj|N%b-?**ouOX7K~WJ z0I4AjBSh8Wf}UcpmWbk?m+c-nYRP{*Zl-#!Vr{*m^FgBAlcw`lcmCP;BVU#VwCiF$ z&)Q${>|-_kHnzoT4L$FKDcaisR`Q`i<$sDMl{DOhV6;QXic$HL$`WQkljlc!GQ|x!MokGSGnfyuY&cExh~rd8OsI#EY?mFDYI$txVis{tV{w*e(x|yE?6GmS*q}i$wo9UdPay?*Wg-Q={aQ7i zdIQ~7zrs@3(sb+mC*srBs81fZ2Ny@y_j7xzaAvo5S=ETbdllfbpn7pG-jL0j?&T~} zebH~a%zl~b>gs$>e~YTB?# z@ap;-3Ij3+(^f_*kx~M~SvbVUw7KXEn8$A>5#*LedI=#;7>3yumY->_S)7-sYLDjD z<4!`cU~I0=>>C+nbU&``jrkZv-8jWh|3!Ro?T0D0`j?t?-|yJ<+a5gra6}b>YM@VZ%A@R)B0vS=y{$G9VjWDVqOQV0sf*&0aO2{ zJn4c@A-OGmzfukD`XaZ7d8t2F7haZb`sDud5X~h)hFE1ezOMC;`$DHlTjX7G@iq+Z z$)X7X&G+NWOW{mf--Y$Q_3FdR9{4ZPfuFNw%z+N zr<-I;P)v?gDb=lfmuoqtEZ_Nv^S#x7ZsIH}o?J2$4XUe@K24iB`$76y$V)A&$K}pfHm`!x9v@0I`NhOx&TEYv^1~$p*2|g+Hu+4umS>Rl))b0!+{; zYLN0kB0U@oob<8nzD87Sz=sf<_|4YguT^kShWYM|eBv&J_Gn&7jHySF>7LSR1F>r1 zxz#0ezJ}fV`AkhW>G`9(H@rzR$K^Qwa24R_3S?^&}0H*2bel*)R> zwG8SG@es$=2ne~Gp>?ytMVegX6M2#Fx{)uN?%M>EILdr1BP*J@dcv$OLgCG*4ymnq z-cq2?*J+7dsc&9hHyl|_ig$aGu`tt#oz`YtrT2wi>>pI#2mJDEDEo~=;Id@P_{rk= z><0`XJxbv@A4kjLNef9a=_NQU4~blOine+0V62|d#e;R1GZu#pdArbG>;8cQS_dhnI|OmUP~ zZg)?M<0I#3W3Z=;_)5=s1KSd%P6|KCe>Hgi=iw)qwMvz$cm6M=G%HODD|dg}Pepj1 zQHRnvZIA!yIbrq=V7MF>{HG!6A7`SP>%-O*V3X*26sYha8`#GX&#8_>agTjbt!MO6kRSqwcq!BASRrc@YbhF=W7++L^C#C z|E`*zdMy{r&auLjEoXV-rdy=dWR2?XnCAysre`kfXbM_vaV>A8eJSV4VAqSlH5)8h z54};Fe&A>lpcmZp!>aDavg_=4zcdx+f2y6#X}RLMCPHVWdfT3nvrG6YVbsi*dqRGu zoSgpTQaPpQt{k^XhqAdlv-GHzq( zB{IkrC>BfZyLjoy#WTJZt2w_Yimm-ZcX>GR-o^*nRuUh2=zqQKmdawna#!>(z3!!HCsl>xKdWRfoYz-YFN71>nKZ_s{TMNf6A9x(ILYDKFirZy zF>Obfqiry9WhS3q87@!!W^znURJ1EQU)yYn%+Tg}_o^U9{Ix*l1~unEUc*;@EiQY} z)a8Fs-QPpS%KKu?-#@gH&^H~7TpEk8E98;9Yd^GtJ1oV!j(>$>UDJFwc_jGs*UTDq zZ?kO)rtBe01nf;waeg_Mmo%ue zbV^})m+>P}CzIpx$K($%s!nq^7(Ae4RAzDrNL!Y8x~}^x{yM4HL6`B!SI9Y!n&qkC zU-2~6;#&@O4%t?3Rne5rH8Z~S!M@hB;e$i*Q$k>#m7M+P>7?O=@AM5$lJ+~JeBwLR z7*4As0&Bu$Yzc<#i_>%0Kp&3vn&2~LXQFd{O87ZQ{XBP4?LsBt1UuR?y-bvcxk@(F zCvn83hYduaG%R@)+H#=@Xa#Zy_D_KgCtsFjZyGFH@@cD(|KLPaFZ?5-6tgykAkXK8 zM{O7%$Bty}K#+eBI@lZtL{Pq-F|eiB%k3eG+V5D^BCL~w$hG(%3}urh3Bl<&OF8gzTKyo(C2>J--~}8B zsA#u?uUloAay^C zpof?eOwdv4_<~_iy7z|rr1REmJeF=zKK?@7f#||W@9a~@w^H01tJINPKu1SAzJciu)=j)fo8oH@$(hZ` z7&K)bm9pr_?xeFLbDuqqBk)IZVU%amC(Ddb4!q^ZNDv=UI(bNKMWYFy z4Q7G^ERX1Y@{o^M$`z26DHcNpUnU;Io`mVs@2tX~x?14ppvs;qC&uN)s3_EuA z4cwo{C8|EKZxZ~QZr;EiqCrz@=n_!sluJNXkuw3>V`a`n!@Gtg3It_@EeSUeUOk2| zDK}9+c(Gp$O%S+``+o48g&5y$nlmb}w&3Y)13zMIPrh>YJm<3pLE6745oTP*8FKX5tAE3BONwyY|+JWyNr}Yyrm^Qc{^+|u?bmMcLnq}%$%>H)oEm&8zm<8* zMeM63u4a8QQ8~UhZ*PeMn+7NIaNAHLH?hfh!_o=&iyF)TuFPqr90G2srfg#};r#UE zX?;A^6T3k3c%qqnHEB2=(*4jNvTM9a$=MXwW=E%)8=^)$14>6oITp8O#6%aJR3Bkf zHNS6I_`eA>P<`r~?;d(64;--H-^#!BXgD$b_djOOl-wUY7a*PT|5=ab_ig=3=Y3PQ zIIM|P_j{&3P%O#8!=Dr&(VVE^_00EmQ>l-NBz{2kjdz}E>8zkFs}Qe)f>~NZl=nNs z{GjB?nEBAtwtJ@s1_y*2L!4d|m^`vulu==62|B)HZxHceao_F!yL;yk{`3K$nEzZsX!<%?ueS7siU3Y!I7_$@u{fnrS zeKqQ1)o#ftL6ft;YyvSI@68|A#W}?It$48HeXra%q$mD9-XmWuKhtZWQebK%l>I?O z8d|6*ac@b}!koYcr~0stYG-eVi3&?jih}Jf70dl&QyP?iUR_bU-$47gFx5R3KB2|A z8W2${fzb(JT>ho3H{mQ`P;Wi6Cay!4)o;M9)y5f286~2pP0-6l98eCs?OKK*3y70U z*lHu?u=Y0C!2+zG1yOon4?6%M58IZs6ZjtJX>H_zJ&ljuh{}cPDd3J9wV9tJ))I~E zO~#Epw@#}ZXs`#D$m-p7EGEcKviu)8R#39u0on;dAZTrZ1G+3*pWI{X>T`LX+Lg10 zK57&z2OJOJ0aE=?XCTl=P_{DU0n=wktU8AF=rCv~sggc%`Ms%lungaaj~W7i z0R_Uz$WU?HAG2!Iui?y8TB5Q@ayMNIgf=Ka_hev+cf381kqZ5)p0_mv5w;cw!2<)Q>DE=lV9tj}wdoynIfv%Ie2|ybn zahqfn<3WM~2P7;PPHicAWfJ99kC4q>ZO#wDE~+^3hO=eQmJw``6st2Vs9zgN^3JjDcKtzZ2iv9T)3HZ}C7vGOJ1|xX3k|Hs z_eY)%6`PYdSIsDOZ;(vZ$BIl)p`l@mS;$moydwy`2Snau*DW=+bjw}0Fz~YzAAZLx}&hikS z8{$pLnR!a#!-Cycw8$sXpHgVe{;JDPqWjL2FIk_$4Sz5_;KHHFG-)uxl^%bveaqF4 zxC#B=D~7xq8`kVh_&4dJ`~u1kO7V3{m)-mi&i=T0LpEIVv~1!jj-~!3ixmy;3ZggH zxV0+J{={L)#G$6vqTFz+n`@c6Aq@s26Nw%7Zq+%fD@bbOFIm4?eN`;D(LI|KYWWo2 z-L@OWCM!`DJqN-mtIRLPWk)N!eh&$Z4xV^N^DN?cQB&-y)n>YL&ZEnS=biaS9F*k( zTdL?0Q4jVxjR{u|uFT}@2;7@GD?m2()Aw(REY0|p-@0CFe*6Bj5NfTFm;H*PjU@n#RpmK4~g{|$*9|dhYU=>68 zIZs)oXpMro74)hg&_66iR3aS8;sQFl1HK-p|E_R|x%v=jbhAq9x_WrIC|PzkZf^TO z?!^B?)?0@~xwY-XLn9I*pn!CTATda{ba!{iP?A!jgo2E82_urj&?O)spma#LARwI* zk`n4~4f;Iq`+naa?%7+8eaM0Lz1DS|$vKxzBSMajF90}OBK$9Zb)}O6Oc(I10Nhgs zz00C+=EAFg0uLFu0OiplR{)fLN54FdAZzvCE{rDO*+Q=;D8rDW5fwqa{X5PEnQy5M z(=+vgCbMg|KJ|b!6pV(t+Ml!a zm_`ox+_t>c_|j4OZLosffQ{$%6sJKY2_ti^HZwtlcCw#>m$TCyCuUmMf_|SOP0fu}3N;@Jv9G|$Z&4G7lWd2fp$>hcEuv>$ zahonuuD!3Qg9n*4C&V?Q@@r;CG2LDI`PirG?B6>|lOt9}4@o4e^Bb%5T1vew-$}(9`cUqu zMMrCEJ@MJLLbBv0T9ACs$Uv@~hrJ+5-N2RCskwQLjxa4{K0~ zT<5ocZYYW7^D(vMDwdN1A61xP@^b~&I0%7DyE zUe*UelgE9}skV)T@V+{0Kcm9Ter}`iB#v}qtwRp6@kwx}-ZGAj+Sh94S%TR3E1fb` z?iQ&RvE(&jsp-sxV39%Fec))m17r-KxeXqWvLT|4)yaW^g9{s6fM{f`6~Jm}Hf9OU zzHwl%x>aR5=LiY4N)S(A6hElChGYxZfOY`&X+DVb#@Ap3UE%mJB2LsW#93L^X=wgCPNex z3ECPrJV#T^nQ9j_XzZ7cCDsmlb8YcU8<@EQjRFd%OTs(7>L&9kqm3j*YtBr*%Q++6 zqrEt}l+3AP>%fi48G^pslmC+!l4O>9mdVX&3oA##pMR52ZaqTI0^jd~--nsgKgIPLFxH*i;?Lg>oDoZ#ejB@#eu!FZI~!a6 z|#oegtG9h_~gxw@yr-RS2XiGQJ2PNypGmSvWNRq5PoNgJ#K82(s<39o)cH_1mb+7Ot((9ctqJM@IXPp(`ohBT zGY{<3+d|I}rp-5;Y8^6`isqg9zS^kFt}N;VuuKUCFGbngrY_qCo)(k!D`)bjJM@@P zmPF7TKnD5arS|byJU5#>_I4=MZhY*0e?Ig5aEK^=q^JkmK1_?|=zGuwsqvKXyhGg^ zmKYjM{sR%57Uqz8pievQ)(-Mkg)P>`xrDMbV0VYeC1e(SDi;e}d$*QpmQI-1;3zrZ ztCw4+B&0gP%^%yEmXPr7uyFB_jySzHdQwcLZo@+7-^=)fP?yFW!>YCjpe~}1X z!D#cH_D}exhOxnc`%H->(>pJ1l^T8MBVb*;W~5>XksU+)(JIg|k-PxfdIGqLbVzxH z`p-v8Zkqhu)2}#`2QTuf|3GNB&y7C7GU-QsMAQQvp5IzV9h*0tSFPnoVSB#A2+hQC zFDx%$sdBsIIM}v&p6YSy_sDp`+i{Y_IZWrF@s0I&H=hgRE)hEIM-%T{sOReL_cGUcHvSII zT?zE4o%9dorz$tZ>B!qQPcqF+5%%$+7K%x4R52Z#$iRrW!62PYQBEhYc3TVo zW$&6-)s6R~9M_e?w}tUT`0&Ipded>Aw6L${RdMWm0~b9#Lphs2ZKD<#d2GL5zb&#? zG>KafQTSa#HpjVw=63I|lmK=D`89TtA-uX}_}GWx-Lk3vII_-hfxuvHIO=ApQ0+(! zzdq{w(NhP$@damM{e>_h5h3q8H5v%>aoM72)YTy7Et73Xs|lptXjtrj1wH-)&Ho1tLIChQdIa<@ppE)yKM|T~etD%Py3!bd z?F5L}|L!OR8f>s@$N@}Dn4q!-`0b4^B0{W20~&W60xEJo^Sk|CvSMDVZn~+qedFv8 zB&{AU$_WOHyDI9qqk2UkWexRiEep=CY%kIYEmJpwwsB(IQZBHk)&+FC=2GQz zU}vC#tB+wINws1=Blt6uUGul@$+h@CYr>n%e}I=qjU!&!_ITF2yfuS+(z%8a&AVJaBf8&i>&G+^p-A_SimyFcYdkpz2X$b0`+y z!RdIvP=d+rN^sbGTR%y&9;?*;fO|M6S%aXbnbO|q^-JX9J?7yY15M_0tghgaTT6p# zC6UkWLbN>1e9}sDglS_OD0n_UHYA;iX(5`g^+Bj|-v8Q2t-{TK=JSOZzzPdyZT^Xl zpVb;S%wKg}yvusCZGm!;Hm&?UJZ2vqe0-L)Z9G*lgd3Yd`^dpS>aEs&CIsv|J_}tg z!Uc%UZT{Jv|Isk$5Erygi=QJmF$tTQhQO^}1YsULOdhQA2LgeyNa*cMkzxjAOywu( zp49i8x%_%EBq&k#-9uoHN9qscCwBPmFHRL^x@58;=v(3->WlEhk!L-Uh1jup%d(WM zJ2S5E>*O^`SLdxKPo z!Z$RPLa}U52VXtD-`<{CY$OKqaw;+;N01AKzI|(^&EVSXPpA_W$`>l@-;%t3D}?IW z5nW2Bf3ZWby8(Zt0f8{*MK{GvQS2S|0DICLyn7k8O_Pi9bIK!{dx!Mt=ZGT@(q<*8 z?pp$eVR2qqjP$-)^g9GtyBjT_VIbe2|b`he*qEE1KZQz z4_!FKwS{~r-%!X|SK^(ZK@3#wijiUCxY2&4QP;*Ig2IzPJvK%f5@^=tWe7V(iHR7I zv`$!s`>P|d3%ve9v)t~Gsn^DXHtEK65zW^%8gJj)l3l0p4>%a;JeHVkOWDz(hCcU{ z5zR0EHL{Y-n+x3Z{m!Y`K)!DA{8fT6B3gouyRTDk^~uIDpMmR{N$YHPZH&H9RbhMW z5Jh4;!oyFgghc?(QNr>c5ijTDrV7nz)zzb{woDD3o)?#O*yslRf)t5J;Amf;jd&x=}lya;d45i zCNHUx07AR^7&ZDSirKa3N!>1kr;4wLG-&2Ng&u93A%ddf8gc0Jts>jSpp>0({^R)6 z-;T9Tr54VKa|kXEGbYN?(w#q$@flhAi-b@;AkG>*y=x8-CS~m0RFFm`uDb+>SQmdl zb`jkVz{BRnI2Cd-WREIWH;jTv^aOw`!Kee>HTWjKKj}e9hc~g^3d)kw%O>d*@swD^~E24#%4$G3= z9~baqEFe~|RmhVla2!e%q{GW+8;sp61u#SVy(j9mAGR0-|X|v*J1-RFwPD4^Cy)kT&<=HPE(G`xY`xp znQ4ek^DI~`S|ZOA1K4NBckqeoby;#6x+J-@rzx5f+Wi{I3X8wjvz0F8ddiIGD)gf0 z$l-50K~Oo~}OgST)T$yw}v@nIt1_h~!tvs{fXv z*mBhAzBIXJ-uwOYC_7>{IvlibJtFZB*Be=dbHgOQ+O`Na6|6$QIdp6}KkHK}vedh2 zX6l;|pnXoN!H|L&KkAGaGObpNsB?PT<=t(5oQ>wH87S z1mNglgBI~bBOLw;np5eLcirgAWb}pLo7+lXwNs=vsu6-ZyGt?0r<`*Z^jXccX@@Gx zG}NZnXaFC)LU4#XTE&ru#0I8eXJC6dHQ;ix7d~@A}C1fYtjEoW-F)uQ2 zU}TGNgxblzCyE?%kuhxex`D8c5yXzLcU{ls-29gHyVgkyRNDCUY(1M{c&57SQ)X!) zws7B%U5?1l^l5&<){n)Ly(6J@qXLn>^voAjZK^%1yl(N0T$t?=G`^*$;keB_u5L-W z5$A^n?lorOrKvA*CA-OU;O`eDr0;iU$=^DYE9_;j4U~FICU19BSevU1^}@mFVnkpb zRdY@NKmLV!>Em=EX{@6_@!6df@Xgm$fDgJ8;A?=aDnt&DW2|Q~)ZYJ4)9y|&xZ3GJ zy(?j4J#|aXlX^8*V&QQ)%~agWNLIzT{MLz+nxw6oD@dHk+Ls8dm6ZR3XtQDw$g8Q_ zh3bBWGbZu2k~^d=7!>|qo2&oYDeLI{c=SXzBzVBoz1eI2t)P`jyiM?1c9Xq(z4UiF z>OTgKw0Apg{j$0w>6Z_0l{i5Txj*+j&KKEfk*XQRScoQ_Z$4amL32|YKm@B%XCKbT zBFP~&i*3JP;Yqsmst|V!hKE!Y`c*N^)vp}e2ndrm{L9JOPTH2u;(RcT$8Sz=G>BHYMD{YAaAqoxtM;3 z(o%F?o2juPO`MkAl~a&u zM%e`^n*1cDv^mNGq>!=6i~5dW{LoPcoH5AlxXL#HLNR%?S`4D|w_ftiQB0q#5Cm zAd8C{@S1VYTT{e%lxA3L<#sX0jY@euSrBDJu*}V@GDMLQ6ox9hUO)Hr*lx?{j$pXS zRMD+cL+Xr%QNCK19=1vcbLzSJWaWq|wu`QYO{dbJ7$>9L$E$dV?d;n_8b}!2I`H-lXbQE(54+Igc^pHO<{l&g@_T_ z0?2eZz^z1vs}k{1Ydc}eIFGy48}Kg*LBY39Fv)-TXDtH1u}BXm2WqB-Oz>ui0hhYgv=5%z6XzeGTd5K%W6( z-s|Jb1^5 z5&7s+5_y+0k$_xrep(2gF6^CZW!I=^TVZcGv++dvJ){GnAr(h_t+n`HHg2J+tv1)6`c)OOPMSlYN6N|Euj1!E0)5_({+ozh%I_dPz|vu+6@@; zVJ9Si%fy9~olhTAR$=L|i)qi(4eHNjr7)F`ZrCp3PuBY=9H&!f!wNYm^~l#6Xhl9o zYSkjPd=T!XD=A<2P47K9;IzngY?z~86Ub6Gtn3w`$ykQ3mS_ss#%vB6HutPoUMLNH z!p#l)%<54pOg;AeMhI#6tX@;{p|Bg(ak=qgVUf4j+j|ry-LK!seVCC4_*bXu-38EI zYg<47jE-Z|@@G0(wMCcx&rMpG5aVWYiFrUng3;<~TL7S=BbI=t z<-a9J|JMifS2&`hj-EwBuc>GPuyYKpenNk+Wq`g*Y$#BwfCrNiT-@lljI8MMD7Ert z*T=DYWjh`}9*ylvkqPE}_Y{CnZ=Xg(S5sbBFoi2?A8u}26ku@pO8z)5(1+-SGB;y* znVLFTgOrmRUB}dTTp*oRU_i?cbb)L?$xRGg<1-dDH8qgAnxAt^9vhv?qS!jJ1$nbd zZi{~)H||zJ1;gxh62cR|X$4M=?#*265E`eD9AHA)PAJxNdiHy0DNBf-(~w&1J%4CY zilpzjgE*`b@o(dG+H0TmcD}p8uL5j-hp{cdotZ5Q0#kt^2lNmE6(E4OLGFwbB;l6v z%>7kk>nVh@VT?oYT^4I@&!Y-;iqAj0zOII?8fBz_V3N+UwMb#Rkv``GgO!cJ2Umw` zz{8KMSG5~xlM-5@m$RPj#l?B-;E(6(df%`bAxcjkvxlkPS6jeBSsnC`_s*Bzz28 zccrMOds$ZJH0cLLQGD3jSdNA0QxI=Yp(vWaExQay%#5yW{(+1v1n?<7E|)nU@u{_O zJW{e+=(AVjEDsGHz28QnDIPcYAuwX}9@`{zrdVc$qh%-%@zJYU3#QX^TG&3_`hbhw zRX?Ic^FkZZ%U!M5e-@X{FXUhkAN{Pd7Mu{8*j-s%d|jG$z~~3h(#&QV_M;T z9R@*aG^O`vJ|*$2yXJ#TcIoy`tgtE1t{-6vG6Pf#kx|VGVv2^MkeuIp>bhtBij>?W zC#lUxrT%5JP69qA?Lia;+@d`m7<6wp8_ZV}D5bJ>!@o-t;7SHgT6{gLD{anep`WZJ ze}NN4iN%uT+!=oFwR@?T%lgmQ>KG0k3*U=4)Z!Dd6qBi7ir4+`!tzaH6jZrahALe> z3J7FXxuR$RvVz|BK_}Riu^;I6!ApWiprcVhfD6`pKD}xgV)FbdbsqT3T1=XQq?W>7 z)LN3zgR1E(qjg#&0M5`cJ3?Gi{s5c;O0G&65!3y}AydyH3_udBA)F||>$9xvgi(W* zl*th7=`!2qL9>T(Hh8J;6BgjUck`85xceN-eC9ouL1KQlS&k|{Vti}HQUF!`XvM9e zx7fp~$s^>`6>Q5%zcV8v~ojQf_e;wVR zkVFTJi8$b$Cx7gxz{O|N&0~j@GSTP4c=TL8Co})Viffk1PF(1&n$UK2IWiEXfMS%*$9)5gPaZ(O1+Ha*xu*Ivv;7ho`vpVib!J)@=h2&0 z5%EvD>+;#SZyik|$7cKJB-;3sX5Q!g&^S_(<~(1kEF2&$68YZ0s+e({*sw8!2iMbm z{e6mnIqlas#q#8-S1d7iA{Dt>K<8o9V%$yMyc@M2JnFdkkXaw4yBha@WjMV>J*Rps1C>p`e(Xy>+X?+iQ_Ywzphyx$8iU&rICG z`0zAelqDF)MKgNq2}jg;v=rN8licE&IiU`-!Ff$Zk)=}H(izy7+QPD#hCTA`H^%u` ztY+BfhL@2m#ilV0AI8>RDE0Rp{Boh*Uq>zZ*f@25)Sn&-PG z+=uxvY7-2*q)tgG(hlW0PlikGNl!)Y`4b%}izP0pf{ZUuIL6#oZ)!lxmFz5}5*9V? zDSo)Hs9_$O(HDip6AR!KsLlh?Vs2`eSBa>5&zDh--keD2Dvd$omHJW$F~hWTVLn8 z47)60I=S}bBeQpS+y|F;$ti;Y-EuGUhbW+iw_`nc9REN*a;;d>O|Vj4@SDe$ekq$% z=9z{+&+Hk*gZn;`U%cLBt|kHdy)od_x_I4(VMrp8UiJXqWn8RQRO+N3Of2Yu9p^k( z6LXoY{UVL#MzIRLxseubDC+C7Tk%ctI-%?Y7CZbLrEH1;qg(k%omvU;*s_c!Q-hVC zbcU^&Y8jq8@Pj_a;`*yj5sfKawRwt0>370EPMx z3gkXy${MnjSHd9VFaui>I)Milw7>$xGcFJ|<$?`5goTz9mY2@~jS&0q;17I;V5LRd zME*}AB03cjy+~hqxlowsI^>8^YF{8|O8{-j3XIwKpT`}X?UWTTx#M9tn&3sYW>`WJ zA!3t_EXk(WFh4&yO3x;q%1tzXmTS5h14NF;CDK zuwx-CdY5-bl$IFe$x#JwhSb#3vlpmh*o+}?yi^4>h`L3{^CJthZP%hleQ9)*<<{U} zp??Jovp}$6%qtZSHu~$@SW)FAtpe3nVuU;Renu=gNROBKY5Nc=wr2XaKyg^=y}R2{ zYog2_;#7g_L@|qd%f}{nb~k2nTcd!kX68qnGAH`SpbCsYXy`!ouPlHA97X&JhU3|4 zZ|^S&Yq#VuOXZfrV>c2W@?){vEbr&D`t0i8(bb?c27L;18qle*V2?2sRoLHLB2d=@ z0a^LbbY(>m@-Na;0WX9(mg$bB&9Jb_OyJV2m}FDsk}i|IeDhPJgD0_{q#|QFC_mXe zKXD1zJlOti#oy7;PC6DHsI8@bxF>U$SQA%_K;8Z#HuLx-vh`Z@4g9mgbQ3-_JH|!znc+6DGN9F3imY|}zx&*Y6<wGw;((ry_ z+KfQMA?c&sM48a|VBUs?Yu*6%k)_H}xp>D|*&`^GbxDH~70X_)sM z6L*UFj(3R6_K?sTGXDEkqx?-pF#@n*H_cu+c`UO!arn`$RW6ItMGI;;V*i1Z$R73l zu6gt2RPUJl){yb?rQmO&%}oC%&9CXB3UE)5*z4H^n6NTqVUW%opI<)gVK4rS_*j*- zEmZ4MyoP_Fm?HnrtOE{NtLquIk{<;OXT+Xa2_C5@5gk7v)SEZ`ly!*-0C^$UQq$PT zRgI1qx-bJEN@!jSsMc!!#_#~RNrvDrMSm*{hCD$IFkm_hz>LSPp`N#+qdBOGS+4l3 zzd0TQ=p4WrkeeAoL(HZBWIu463PgJtgMGLnlSpJd8q^wqtr%Q-V*~erV2~5g`)JdU z8#xA7T~U$5B{A1Wr-54-gR8L`d?N^Xb!>Es+cmU<{=XA*K6&!uf4(Jf+XCnf;{`hQ zFb&;6q=!+HR-gmN6$Umobv@;5`~f!36(A?4RNxy&>buDhGNmb~psVBs!3YetsFo`b z%QhaLbK#~3jxa?P%EXP%r(|e9T%{_us_LL6QTFhJF2#Rr01AH<(ylQe0*7T|L4U3| zA&nHdK6~Ns=&ZpZM^?oCMfY^v9^G+kSrFa$_A7A9rIR$BQXr9%CQRJOZ!wGfSI%hH zX%q=*@Ah|>k@lrWyZt}->xs?A3+nWJk90>t+wK)xfQIq_Dv=u$Qc-2ZLUS|7^L$Ko zK|__RsEOl?(hHE?|x>$i|dJYP=^DpWA;$7)|yZMCkPH#a2kgnqJqrN>&q_apm^ zFI0eVje&f5IOFgqyw!i1JrsV-H>QJ1Xtm_kbKQf&p7e1HJu!Ui^^|VnCflud8TOZ` z53oD%g|b_y$GRy?BA-haG3aV8C!my1CQ_VxOKy37WO#od#O^?8bXLMmG3uYCGmIk=>x2n_2?YVA89uQw4Avy48La`E?}er&Uq$=a5$Ho0GD8E>%S2CEg&cLK;aNMwm6H~SAu|OflsCf)8t*>qxtj~ zrmBqI_*ZCM;Fb>Noq9i6-kz`bOx{f%*|r8d zD3;7kpsH$bSlXE9!qM{M;5|wdTpWk3l9ff{n`hj`z;UD2Z@)* zW@J-@f+e>!1O(9QN2`Lr1F$pxwQqxi2C9t(12;Qh z=QuHv!-u2wKt#%r(8SKu-eN8MjXTU60mZl_7jVgb zWiiKQ&PcLMhCnce4R1$4zg10_F2V3Kh3v?zUr1$NOz!v_Z_SV9r}mui`806O?Y5zn zS5u_ph980pos(5nAihF8Uw1uflwOXkarIXf*%k|ERZ@)5GTHIid;jM9P{&P_#yghX z%QcI!5m2rzsB|iianw^(d#$Y8_gXnagz{2C9b`_aVhmAH|Ey2+<%z^pqg+-sDmQ?l z*n6OdFeK}ZjnpMIdCu1DeP=zEdaNf(+X*s`c7GsutG;`iQbAfa;Q`hO)pZ!M?E9$0 zFTV|pw3FN_U;28V6LeEp*z6w`pWo}w83}8bFk~Y)GO8%h&9HBT#%xK17ba|?msX9T?M0nB}bW4gW-;{1}BQY zB^$R2`|Dr*?BQR@>?IIiqce5>6AhMPWlfz z1R%)SJ#PO{wTiUY2eoD`;1@hQIleI%L{s}Cxo~5?ASNNU=4W=QV~0+4)`_Caw{i*L zJPX{LoBMD3Y8E}a7xlh4eR!OH`!&pk#%}77^jp_T_w(wQwaWJi<3I4B;%`hS_H3LQ zU)Y4XC^pj5w7+_ZJf=TU90!*P36B#2m)E3Y8@1gLFpN+`+(G&-7$_w4 zQs8_JEPSHadKmfHN`?Mb#?+aaHx=ognDY&>1Ws;N(2x0EtNGed|DsZMB@lk>CaqmJ zzH@77?v!&&yy!@1Yq7+;J7qU6v)d*(`7E!R2M|A_9ykE5CV<5HIlSDt=nma6AYZ1j zqi~l^fQO*Ca@qLGt%UBSl|)w-A4+wwRqe8Z?xP9$wAb7eO(s#M)61gP9XBNL*Ut#n zG5NO5lCqP%1eCO#bNB6PeaBAiK6?*%i>DZI$>L%Am3J$TKb>={9oo|i-!o5;<9^tV zd{sb~i+ZOU)Aq($Nev#Dp=+CLL^^Kk((Y6Bi<@W+u^|+iPPS=0m@yRvkK3a>{+upooM;Dw%6M7sCRt=jB_JzD8|A@i`o$` zkz);Gy84*E`@sR)Z*@9cWQX8b*da%Fh=mBRa`W*fL{8ELOs)BwARAtX8xOgdpwLlA!`FsuPW=PLh)=igoj zFxe}nAi3s>D8Rg#`Y(s>KbOFbWL+Tb0@ZZMkmO|GBTq&nq*oEMpjF3HliU{gq2YlD z@CR(QEfqv&L7zV46}(1hAf7H;|EKeKzM^}^sXQ=tJ>}## zbPN;fgU{Dk6mnBzT(p{160&+vIUX72$L1EiH|HzVHz>qos-N#xogI$LH-<}om&7r8 z=@3#Tq+Jqf{{4$(ax$5EF9m~CD&h`w3+!cpy7`~o6l7xpE(h)70^6Fz*k)uII_*?F zKikpoB@>xb9VG69Fu`H*u}Ypvj(=8)wQL3SQ%w+eF9SLPd#UNtm3BPtAy;9814+96 z6{_k%SFa0vEs$%--1t#DOlNE>sfCBT;hO0$&52P3p_q!Kkt{1&AazHelzy^`Q*AM} z;xbNLq&rxP;Or@<)2E>ojkhb-(d!~8x}R8?_|Ubk*}Bi)CJ`zklFHjwK2IOVr!#u? zT0I^AzFr{}k#td7zGBMjb!W&UR93-PpKgUOQ`E7e0P5Ll>cil`IhJXKM)_ zgRw^?{0C=)hkISH($0E&C1_J1eak565O!8s5MC;VQI7gkwv78nl$V<&Q-zl}A{oRQ zn69@|TT1)VB`)4~&uOJNA03?C5Ikje{-xpAR<8rrUgI*mh`5qpBo&KKXp^gSkF1Kg z;AsT5@OYzvye<1~bUbfvIwr_;0qO1v;06PBY0&cqltzI1hZGRFiGU~8lRWIT&|Tc6 z+*DMd!`gGg5O7HisF&g2LR*y3HyFTDLC*bO&qp{qhEXi~$~g7!I=jhiJzi@jbk}Vr z0xO0w9~u$gb%ktZ{&F2yswiT0yFxC)OczPMn)@(4Y7nOT zrhwvctgynqG?!6o6h73zk_ru(XN)TRf%R`pT4Nj>nN%_}mb zm8E1#w+#3m!&(dfz8TfHAv zuxscolT=^qIVr8SNS=(iIcq~fhH`$QOKN&k+rLCfPTi6|U#=I?n8(H&byAeo*2b;> z=qkaLJ9In>JCo>~In9YB+lwUXNf5%>ouxqe0#|tUv_x8lF3u_D+@QY|B z5L}PrU$%9+ppM0Kj0YrknWo18Xi0GUo5i8?e;2U-y^P_of@KUWWSG>d00acN*TA!o zMogZl_^$0o{cL%@@-c2QPz(4sf2VhBM%?7D`aEH0aXY%q@T+A)O6Z}!C|0dEs>w8A zHA!h=G)q#5cUc4dHf0aHbJn*OkSQxFKtwf^i5}E4AO&Q#fG3kYB>qbNh{XcTn5O9h?!cIv|?$N#p4YtA32Wiq5dFeUQ3* z8dk?h&r#}xw};~v_%6JcZsjwhxn>LST!riob%09BsfX>V!3uqqvH9yfBV8vj)>MGDUO6Vm2&Bvt#!R z--qe@MIkXJ0+%nj#}?`$W*EsyOP$2H;BEV5DV=XikUt(oe+lk8tyEI{1CiX$tstYf zn$b#ejWfejN~9TjOdgSnaC!cnx*M~a)$NeFQG7=ZgG!QHGT_mhINcz_@z;9PaXGkE z9;xSdmwkAc%fIn_#SZVL`vX}tzhzbv>33lzbYt8wA9__+ zK<8P8&}Qf$z_8=3EZ?Wk>#fNSk4D_M&o>6^dSj>z=C~`cknd{5^FaF~5i)-*kLq~; zcC-Nw5h%bYKU<6D0&;+WYK$DTpmzVeg|G!!1f`hs#9mn_@!f6 z?)VKJbA`erUi`0PH2IZu$7Mvlmd8vL^+$nIDUAr>W6NA4Ff z?dY`(Jp7e)oPJT>zg>W6V&M_;@kHw34>+k|TdxpU8_>Qmkceo?`o!{j-o@x;GBmqIzw6_i`#YVTvwrM9O?eC7E!fXEn036$q$-uiFPTwYTKUD5 z$r)}^H@ez)x%=$7p+NzqY=fYx{;IAsztKYzc;BRNnopX5$D#0?`X7i`TjP%+zLfXj zE}7BY`CfIm1ufJa()${AU3$u1!3`tUt0MXwI4#RxX71^JXii5W3|SkoT8csHV)PW^ ztNZs;I|>SW@vEF`Xap-T45O66Kn8MWvHv}{M4ztD=chJc^>{=-PCBkI>|th3uw;n5 z$$2F7{X>xZ*v_DLTK7TuB~6W|#FN2mBK_6MPDr7d04DU&3dk*VBhlaM>+ceTLaz|W zY#j6khvs?y^Xm$Q0HFauq%MNiz2)z7V1@oT5*OlN`+aVAP%eS^-W2$xyEd7xEv$aP z^TAY7lwt7@vZW94T!~Br&A}PdT5E^`exOf=05Dr)B&J>nc~Ng=V7ug?G1+he)(z#)qRGyxsB4wT9KWyxD1o zw9Ic&lkKN3oQw!0G`z}HyV8cJ%65c1CZ`_uWt|Ebt47|+xUQx5>+kv(d?wI)4R|7T*EWhYu%1jD{`_X zIZwr1^*qf*ew6M1fu!=&!S;X7uSoChB)pbx^KkN4Ey+%0%JP0+h)m{Kfp@;@yd~`U zB-YMDK&M+evP|d0WS-4|DzP)OoL{xVhlJWOexWx$@5k-+r5VK|mrXh*`p$lja6DN# zDpqW|Yr(Es{Yt6?$HXv)YE~YMAm;tsH%2?@tb(v&L(cU)Oe(o1Ck@WhivvIH-{N1iPxzi5ePWby_?j7H?*mQe@+hF9_Zf>%Rh;qg{ETql6~&13p8weK z(`ojkmP`ie((y=3et4RM6ij27i3kvL^G4#k_ozO~N`dTlgylNEg&VQdMX zo>eaBxYpOevdK2Lxacs#Iq@=L@2ZC|4u%#$jk6b_OqYAwP z8}QqJ8(8NJKt<6jB_RH;@_+sVj{;LH+LElJ%&CPLN`y|{h(};!j}dVqLFN#k-n1EO zfDRLlp?pDhqEDP;fNDB{d}p9=dj%xuD3IF(j;La1M-Qz;`JnsDn&U4B`WFk85w*-D(p3p4Avh~Fg{mXc+LDF135$eS zDY7yq9a>wBp{6ge&5t#z83bI@CBlL4Yp;Yi;5P8MGZc-j@cxR^Dg zxjz@rU2Cn7otepW{v=<&e|+h8!qNCC=mti2zH3fDKye;A4J%+1R+-@|KHXpUKQ06J z^OWS19lzW6m#g-4b+ygErsD80Y^s^BwSqw%U*0&rfYxQe7pAtQo9N{|5XdvvW@@VD z@dxr)h<)4A!q3C8G2lt%^+eBMqoUN-22r}FHmsi$uG3`bE0x{({N6-Ud>NtpxjQs5 zxMcDnBE&xSm{i2AAbeBr##yfnWKTU+BN{0{?BVxJRoyn0OIABo^eJV+H%bbDgeuKI zIJOwto#=!S9grVu!sIs6$VuDU$(QL=I_(5}#72cCm*s8tM^AGH_u;s%VV$4NXvd3GOOqLD?R+IQ+-`JJ z;p&|m@$HU^`ia_&BUm0M^fj=?>B3SD(=yacKJVFWRi-K1EINELB%~ZL+*Yb`SMfEznJISJ@JYrV@`450mO4-bWB>%g_(DyJph#bA0fr3}?c%wHV1`M?c{w_@pWWEJmhnx_bE7R=>h1`ir+)#hBK~h* z%R!5%HH!gPUE6oBJ59N1u8-4eE10}88(secF$%hNG6$y>MB=D`NBE}(*RTLcs(Gm&2J|>TK+uq~-T0xdzFZ~|W6n}4h^41QuY_og zAbRue{D&z2i^>NpEPAj7f(Z`{Wp9sXaFqRQ2hKFmRNHz5m_CORV`ccpw#^EEQFw!1p z7~APjtfvFeTuD)T{tWaTP2GNlx1~dov!7VT>Z*5L<&K5O6Y;{`6aEqtc}-MA!IJ16 zi$f&WTfuGPepC6^w%zjyhFS1q8%;h#r7X?{cR@D})5pMn=*~$nR){v}EF{dwkHQs* zal=(+!d%t_2e_4n&-=r6pEo~~LGgETLKQPzbG*CtEEUAO%7irURDUhfCAZ!h4`g!E zbABXoQ$Q-Y*o1~pr)PN>ZsbTqdT?@*gIsu0dOLiVq_AR`uij~~uvlmFEDK@B@6|b# z0`t8LNtrjm;tl!(QI%76B@2&TiqQQ75jdDTIg&c!v=%)JJuVN=z{Ac6mO-)z51-~= zdTOkTKvqt&@vzzPs4SNtMC{_UR1-yJ3_F}ht?gfI%kAD{e$;j@IWaLS zmiRKJ$t%TeV9;}%q?~&g(o!5~nf@sM3u|+|>qGBb64fAceQIc_(v@)X$zJnM34>Qr_oInX#i4-Q${X*>`}l&#boKjDQGTo_)ypqbxQ`$H z{6w%+&dd72^X@mn9mu=5<~=jhlYDXWw6gMqGWZVn9qXiTQnf?w+K&^px;lN;>% zPbEq_-{$pFi`r4i3hgB5g-tfn%XOWsmGS!$cHW{L zFUsS&2_J^BV5omG^iIhAtInpEKo=vyBf-iY+hGQ~Kap??HZOaWmv&c=3E@1}9;z*{ zgs`prtm@0kccqcLTAIP+PB;pDmewNF>1G~l>yugbc|Kx^crcqUWwD)MmlPuDc{KDiPud!lHYJLM*wD|eRbKZ+ z9l53krMrVdCgPFM5WIr|GmBbeOvpP<=1e6B`19%u@88l@s!)B%urM)g+NIGeWmj1J zDdNDIY(-p!YsE88e!gsgA=-%Uc}WCz7_k?Tsmpd0zJO|fpgp2ZU+DjFb=`qb|NsB& zlF>MYgshyES@!%`XWpG1WrZU$B9tN-UA7~8AI?mjkd$PWd1k2WJt`!rzQ5P|)aU#A z{rSm0u(4Q${&%6dXv3^U%m zU-z4nX(v1|y6!OaJs(?aHF!F0%FHpV!s)8NpcOKB)N>SO-`a{3eYXKm&!Rp; z(|32I>2|HI<8$x91XFx7=L>$;<;j^~306H()RQVvUQr@4+2c{_H;MvH@% zeAG?4TYmwpglHP`agIv;&>@pYIW2`Z(CX#_#7!dgD*xP=D9rNf*caUgC9m`MKxvX(j>7>jT!z zCGmTk5!^q*y0kD@(l3}bR-~npuS!H+v^U!zr%4ehY>K$FkwM40%WS0L^01t6K?{-t z74n!+4Se$G=^GAnzp(L|`G6!H7l9h(WXsGA9)hV?@k=K)3%vM3h%1W+$EQxu3wW|+ zZ>}L2jpBqIWC!#T2eJ(u;({~;LE5n53>)S{^r#F(ajE7)<#O=-43|RYAy>SYZs~@| z1NVy#}165`XBY`7dES}M1Oc_eEV|ESXB z{gC(C1)PmYH>KbO+X#$2K!%p^HK2S9unTRK`PwH7*hJOhn(N9AB@=Vn>1j762Dd8t zjs3o(q_dnF6`4uiiWyT9Kd**d_(!;g_3}=v5ApJc+)uU&zeLN}IbJ;&Yq2V=j5lZ) zk=<9`8$EPr{bS9>3(u=3Ee?IuTJ5)_)lg2(kg_}0{Q5dErUrfMjCe=vW)XWN`(U+- zhxFa!?t?jA>32WOJOzB}z<$D+#N^70L$~X0V(wNpq`a(fKa;+iYyxZo&<4(0o*Odu z+lBVqB?E?90jwJOkAuyC^J3}Oj(7=6TVKgBVy5ZKz@H6X&WSPuaXzS-7_)lqZG?Uy zdSD=5@RIzB60XGWf^AqoXZ72xdm7)0vv!GQYa17p%8xY4adj=|=-wFueEgvj&IIq& z?i(w}tfATG(kAptC5=W&i(H%)9y1>38)fpUQJ+l9$}zFpLrO#8VW^u#svc)|JywQg zO|tMp3YIC|T>~YqCrk|-)dq~=krXL{C>wP>2&3eS0FG(@g-!rJ>tDF=PwGO6bpHoi z0Y8AuBEVoSXo*vxMgWRHNPL8fuIy`*GYClmAn+E$dB46Hb@hZqY8OVYuX%rl;T>*wb*KRq|D-|(<8 z`=D=q4DHUipxRj0MZ7Gv)D)FhQF~c#fL`ckno`p z*Z4RdeUkuRJ9RPxJCpn51=Apd$Z)bWL<+x4evAL)OhfRD;_VcYU zo}S#wkiO`f#k!G`vXQHJhFv=A*yK&(X^u&$?-;!fO@+->Jr=TQoDVq+hqavdM$YY{ zk20_?lJVOMVYa6il($yxa_`IH_2!x~J}q1el0LceVv+jsjS!9S&+HMz#&3QVrAUI+wy5Gi_l)xv2_X(prY->5DX@<86gA=v# zT)UV}J=ki3Nu@ADC5%I`rY_#5XXxtWDs>Kg{$*3dl~nV(2XlASd2$Jk9gkcRUv8ag zf5G)17{}VOnDXT(pZb4zalXEVtUe)E6aa)GLyZe@iP(o|#yxoalVomS|B5#Uo`WPj z1_+G;)(13Q3mIM)f&R1$CD{NbPc4vSVR43c5fD-bwyqMwM}cEZpiOXxc5{rlypX&9 z{o&~Kt#LwUfJntZ--t<*83VZPEFVk$Cmkqj#n5pb=YaHeOvob|f_pTZF4C!VyL9nd zic;FsiK!bE?;YE&_ZHGWkUVR7e>SxeMhQ(g1(}#_aykQz&ygcodS}h+1e( zn9u=F5d_7CA&8|=JUt*&fV>0(;{Z7@4}}CR2Pijz2*;oy2lLg@6p^{H+HbZXrT;`~ zr0%&wMfW>m#?008F=26s^L6MHw{^~|1x!TJ-!ZM1|MvUF$Ke;AZ{x66(xZ(8;ifPa zW+obxwh+!FFVr3#N5Z3gZ7%*)y8c|JzR$2qv_N6IqKDaBOr7f@W?O|B>m4i?a_5SX z7AxE2_wM#WVsvtdEZ1Qgg1+bJ4|amjk8<=t`eEJ|7~>OXIs|$51OKm!i7)w45DFq;`}+v{(<{dS}3@MP(#abyjX0|A)9v5){!K z-Jz0{UN?HNv2O6@`^7t(X<-8%y-ehw`)eHM&P|RMet+1d=ylHig!fc~(Z}~}i!xm& z>@KDj$o~*#&K+s0sGADD-FJ?=X?yc4JEwhXbkMnpJ+h3!@F;ilpypB7Yh~bY1Q9UL%;E2*bz#>xj)>7(r83ttG+VPgsKyq zq9&;$ds&SAG{)iV-^#c{=wR{Un$9h)2y7horz=pzodEnqNla zw|eYgqlxiE_Xk1TBX-8ynOmUMeqk`Q1Sog=-1_I{{@JuPErIl@8zsH_>ZqaNYojIM zh5qY;UzM}`Z>e47Njm`Uw^_w3)DUIjL&I-&jm$v$;2Nzee7mn=x^83WayV2G%8vHt z8q1P7F-Ee7m@oVlv*o`aqOw<{l!|&nYAEIRrdl8{DB})u2@8d36w?^#v=_DbY4t%`ytkPf7A6+^IVp>XyxVhzF(d#G|L%V`+djVFQ(Jm;ckgvm654&b!^=gdOjU`eb!a^ zi^p1FZR3|0NaTci-|s;mE6W_=p{lR6_XJgvYHD;upRn7QF8Lvw^!-ojJEuJ5f6C*R z;e{A0cs6j&1-ODhb^M<${5{H+MA{BgPE`<3!XD}YgfJ8fr!r8_W8AIT2*2rL9r;Xx z-t*J4HLYd0t0bzb=y~Dl6GVdpP@TpEES z0n!-!wFx}byX3qLU{-1gfY3#Xgs_JL+yOKdph4b$*L3ps24 zQDen(!V=6IMfV?aTvVU;8!|s@On-m;rY7DjCH;fj$Fl}AXX{&xCI-rVU(^V=eXwKU zFxFrjT)u-4jjnFsX!cgi4wk=db7x(vqiud&HQ2zo!y=G3uAo?&PrE4&#!=YP@eUUcv;9I_e&+6qE{@%5~ueVFR>MD7jlDuic+daZF{Tf_WJnr1Yo_)jZ z!58?gGB_=;RFprGl!XgLlgXCW-B1e#=(rE|Aw6M&Kt2)142+hJ77!RjQMkll49;l9 zaE{!smEm=%_;8=$7A|4X8o=uoi;`p$k?z3d49u2kT6BR`aUXHOU&j{<~w}+b<9ve)w6v= zY(-@SKbO>G2TlCl#l7LX%vd48t@+KtWjk57i|IYp!@hgFiwpb6)C=tTZ+#PkD1Qx2j8ik;F7ay|5-7cDugF^ISVxfee*bv za6T;X0->6{8u#w@z+QyLTwHs$-2SAk;nxMdIp5c39!zYjl+p0^d8;UnR%^yTi9#%l zl&=f==yn>L+oVn0yj}KIwSjP)X)EkII`T|(rD5yD@BW|KRK_}zSif!A^<_Fz-SLni zE>_H#*$|P_)L-z4L<+*9l=vp#s{0^Ay7;5)Tp6Cb$S`^l0j6H(JJxaf#MD>Htuunr zl_F18?qo;2={TY(>(HO*u3-rOV$E3tEMW|QHxYrt3xlUafI%_2pPCGLt}8+cT|*?G zAP$gtPlX`9Pyrg?ML5KQ1;gVz@v`%5j>5ZKjHzo%$BGo>u;TjbHYZ0EV6|7Qj_FcA z@jrwo%bcw_S6V(`UG}Y91U7~F&X$?doi#QbYj%Uc%jluU5FD{U6cp;RiZREsGYvYY z!F)YbZ&lUHp&q(C4y}`p3#!PBq8(hw%GoiRkQ+EOHk|lM?u-gCg$OV~3=}7hLfwK^ zs3mAW;dEqfAE#bZK-{tM68Hq zh-RmsyihIQQKjwSyl*)+1LZc{9uL&QjLB#+T_ub{m=T=Ty^(?8jel-_4d;*rJhyvAu5YVp!D=Wpe)cuI{m^ z8y&9ns?w$8Bx%IydDA1e%ah(KEE~;6n)cL(W!WFSL*nI%IUy4LF#H~SlHNMbLR~91 zREJ(mijn3PBMX1Z5x%E67f*5pn+{aG{mLe`8tP;|m(z;ja5Y}Qny6d;7>Qy_$Nqkz zLAu94Wb?it+SY+VS4@0WnS5CoOZzBY4c;Yitm@Xc;?1(&`HAtuBN683syZt!i<2WW zYtFor63Wcb8cCL0FG_l%Oh0iG5Gue#x)e*Y6X{zZqh zZIaHuuDg}p7b?N`?A7zhJ6~BBFW-9}+sGA!Q!Resp_5|}Z->Ld$T+r+~gX~FuWY_YcB3h ze-5Jjc7-#go6nK)^c zF>R8Vwm*EHv+?j1H(;>{x)2aAA&(mDSr|02_5bVof3GRDAm~s2!9UYLEkTi&OA9@a z0Whe;IoLcoF%OSWDOZXKGaYJC75OKwM%giD^?XCB{hoag9zkItdT$*jDl4&OoM%UwQd5aRF}CdCe|9 zl^f>dE9qN7apof2zr>yPm_b9O$*G;up=9tp0EjLCICVPup zj_E(i#ff65Rn4Op9^DI^8i>Q{<@N^pZ-u7mRJDPt;1;3WEZ8AH>tf4YysHBz;Yq{ACm@&vcQLEAyU;AvDa$noY2d=Ds810tH4e1Uusji`fuvbDOR5lFRZKnNh^O`X{dCz3HW174S!8l z?Iaa(N9Ks+tfUCaFNB>0x;fFvl4|&8jU{a88gK(JfcQHNkV6mb^MR{019(0O9j6Nv z@qWN%s|Q@totBPf@y!U&%DP6gge35pyw5WkmahSeg7FV@(!YmK1onH0u zW?4K!W#vLrflH;?H6>hMMl?{ED=tlKmBo`Vz#oi+0hkm8jt6Bg)(1%kQvmN5cQ6-=>INwu=fzr;P?zZ4tbBlKt2EvGN|)bkR?o$E$vu z@bXC2QXl5R&)&|6nIr5@k&6rGIDTuERez`y*Wj|*P%d@&8GALq-6PoRi$Yns9tKj2 z>F=f_)KHJq|A&C1DA#OK(CfavRhvurZ$H~C9!sSaIeRvD>Z?2r`wwiS{4R1|S=J1z zBmCXgENc~MQu^Vo+AniILk<4`ajoc|pB@FB5vg-e{U~d{=4|f&+O#9QPmc8Rq{Eqk zNjDRt$IgBb(vz!qx(>o zM=p8kUM0>sZT41e^9B5x5;+?1=Ju;f(MT@~Nfx!H#J#~H!A}9hSC!X0Y~1!(n65qC znX=6DWma_%(Klz`i$Wu;s8wB5o1e+-VaB*suO0ObERM1NIq^I(nOsCGa!*ER*h1~Y z9GNHM0&0uPX>mQ*#`ot-*HQjw*!*YolQ+4W{W{zoso|GOO;4zOpb0nLv%6p2*h5Qy z`4G)h3`$Swo?7Z9AMs|M2&LnChp=oKQ}@rje2H%tJJ#*xe9hrdANR|YYxHc!pL*k5 zkDS~1th%dE?l8eMnj9PMe`#B#f+?xsQK{Y-d!JANeWCQ`?S(AnVEN$7y%}~UqHLGO zhp*=qC(9OLM0K12g`{ceXaTS6TV)D(ZwMy-$E2))_t?O!(5aq;SXwcuf?|0zeXUZAVVIie6POtCWhD1)Yw&W`p2BwE!Sb`tEeHff`XWD#0bDGWxqW%t;G@>ta?1k)%7`~f!Zb!FcHMo( z??qOM1*)r*e*LQ6<~MnhgGqrO_v|c{yVcp|W%TnYvkR_>RVSevugkndb*6mXWA2e2 z%3Xp_n*C$8X#9KoAVJSqTDXL*kb&HYohcoP zmvyf29%`{Hk+9a7MB12=rV1KX76RSxy8n(c;wopebekCR68UFYU&kZDbpT@#8I|`v z*qCK&C`6Ddti-YD2RqJxy3gnX&&B9B=5P9v%ATIa!FnV_^hU+#uK6X6zj=PObJOm3 z>fM1M%QM)MT$T=mFGsm|7G|>tK80JjqzEeFzM2?bmHJ^8S&(^O4e5cBNgsLXsIa_j zyZwfv@|XHXa7&hdb>ZtZq6Xy|rpn~F9sd|E%Wp2$Bn zs9sWSqsJl6o`3sF6;AXA=^C=xxrrm_GU0gV4!FK@gk{^C$q^3%rwBi4fuKL zYg3;BClZ+X33N9d<_1a&)OOoJDJQWq$Ttm$UJ)m-u@CVfqg_A`gtw2Kr zj;UZU#SoKlyCnwG4`yA#Ko8(C=7U}NFEaxSB7k}dR2PuW7dTy@AAv;%gpts=|8+*d zT0i33BQa#si?S={#~;b>FY! zULSHiW@F87wB%~HWl<4>Y%SS00t`h!=~n`Vre?t8$5Ea3DYnNdhi3OI;*Ezf26h?F zurDb+wjG6*@28W^3UZyMrHprqM!m}~Tp0LpSr`7aLfAyYy}pExzq6cw4XrL7-?(|n zz>_29=CJMddYJeyd=3VaQ@$-sPn_Vz^$Nd9Wz6&1DSy~++1=;&=>admrSfX9+JeG) zjCCV5cI`yzRMTK;?I3^hq0JJ#^c3?k7MXUBA%9Vq#+oGBdXE5~FuonO`A5fsPNDxf z_o+7e;|tf1O<6VjPb~MiE$nNJKS{;D;*c=;Nz15h|5gLDnGvkh9n-Eelh*hw!C1E` z_}tN$dG*(ZA#O@H>E3vH>AnlgtrY$t{0n=8iCTjv(nyHBp@?wO}N%Q8KCM5fA&j&_kHh#*!^`)r462j&=?AW794O8;7=>xZfN zu?q!R=Xdv34G(+5#D1M782Ei{3ssPPc5dEhLn#Eii#&w6qLyZ1w%QO-v%TlZV98YY z@jtM1e4sqBKw-8?V7ZwuEsB^EPCL_MZMa$RvPV&W!)|1<<2-K*ObhF` zUn<;I^o!LacDP(f%GTC^hAhFJl01zwg~py}!P+yGLP!C->amv) z9XPT8E{KPAPj0Yg3!v*dIOz&yhXzdRY-;EOA6mMuLRpkLy>P)J*-#|pFbNZeqrZSM z055TiJPUkp5k5LH;PMe1-%RIvg<7c3Q4~pZXY{UMpnfqq!Zqfy?;iYK+}O~@q;lXN zf8xpfJ~_UOJ^r=#4u`mQi6dnQ;_Nm5W%Uy{7RH_8s2Pd-%gpfIf#c^n>{XU% zO7&g^ywX6{Ty3+7Q>iK4hG9}v-Dj>Xd<%ULQ3@2VvV2Sp$l>yhPo;fEp3buoR9p={ zk{(Q)!Nr@_8txpiSTc+zbNUnyNB^CtpmO^|Hvjv=-%5%K;RjVa3z>j__`XnfT!u17 zKac^s>MP$@Q9%BCNQzC^ASd&w!WVXTt7uJ^hNWX~;*cn{wslN|9bS)S+O!{IrvUX9uqG5?eWW@z9 z(orTEY4m^~5x;PAD6Jy%$_eZvMj81BHAy@%cjOA`J~WZ(?>Q&%Y-IGx@r$RGAd6H5 z`nOC?epkLsQQ-Z`;@;Hp32nm5&Vr3k>GwB&15tk z^&^5HFC!ADQ5+;PNLmP6hw5(1$Q8Jt^u54&4Mps~Co~Doj_yYc!BT|T;lo^mv9Pnn zpb-pg8!3eQKe3%sn;t}cN(Es`jfoJ1Rw7^rw}jyidS%-4IMh+1kH$>H#$0=JU!9@11K3faYC5(B7)}anfRnpbwCAE`<;vevL*j93UPsl4U25lEI$-FIHU)6uzdHzS3x@p@br6`jW zzaK+2QOxw#yFs2=1NHKWs^8`(VFbIfwNRGq-n&S*YitVgT*r2`dFlI74=b_KE++p# zZ}iEZyLtPrqI;z6{rFsmnBPL#jjUVJv&EB1er9}aVb?l2{08YO4P{OtOPqw`uy|^} zd#Wk^MU(d(UtX6(r(gx1--#M_{u<-fZnSeZ9jX2Hm^lLjoA*N5+Y7Z<6CHy@6s2#i zG#LdxJkn<@H}mogPrj^YLr9zQSCK=REGpm2*%w|`e4oZ=Bf1f_g7hI&vc6b1V6X~? z8JP|@^A1Kx@@H$<{xH90p56;*th{n6+xM5}#1qw3zJ(td3ma=f2*mrMYJqS65Zd5P zrBt9Z1aGCRQ2%fxD!Rt@`m*yJ3mNoA`j?)9Eun;_5-t)`LOW*!P#HKT3k=|F0*>}0 z0tU2|BEsS50p#rQRH*Dt#i{>ycc3WR>%iI)3%0|6j$59C-rFMRxqA zj#)pubB9-ZqPDxD*uzLR9X&(OxDT%%wXA zi1LyLKt8l7uwK>!Vzw0N6da_^C&vz4%#Qvfha2_)7R*y)eGV3LT&}4PY9TfB{P@b~ zv!v^BH+O00I47TdaY#hkb=~sBoc@+C~n;$VO*L4Vmm=AZuzA8lOUrt#x_!vK9;ec{1@j*E@EfTlB zSO62;Y@8GtL}h45-Q5~BSv*^5<}*@NziQ6qUme#`X;S|#=e|4vXx=-%NWG$Qcj@cVxH{z~4~gYn1ls^o zF>BbB5HsnggBV+gvBb7OI%#Cb(9^i37b;GnUXy+Uq9;e*S9u+m;|ZK;3@o&AwCabI zNzw)HS)9(fGji#C_ZPny%cmu4g)d&6ZBGI`xq(~>#iFozee>zQG}d=@l{zAqu!g6k z-u1n0{-QN@axvd}ufw?RB5ZF$XYI$xy&G)C9|Jemk6S%p{6O{F+*6Tp?|CLbVJ=t* z5{lp!I$_4}aeo*CZcF9P_zxAN^~O-bnx?8ee{HaJHDYMGF&>?{{($dow@KfmYt44G ziI_=tV_|PM&+}9QXf>)O6keCDZ(hQ(eBA4~#gG*?=Uc zUKKY>yAN=t01gG>RoKLWsIcSR_qL2j95UxkgTHkB7}OUl30UC%c~|82{m-ouhZZwn zIs(s$v`LCJv)jc#2NLvSeSN8cb@E;qm2DPxs3-jWu^_4hRRcPjb00H~xybOO^)$xV zo4p>bDN7X5Ki^&1JU5(wJnr6$pGLw8A11dyrxX*%FZ|NWB$i&~0Cvj{PSF=45_@jP z{;rH(xNuyLk8Z3i#|(HHAu~S(&2mhZ9bG zg`4Xpn??@dN!}vwGfpHA?hp>C#mwE>E)L3kIo0>dJ)q^zm%ci8EpF$_IQbtwMxTt8 z0@gd+BQs7o33>LQ%#xVobg$6FFZ}4 zJW3mIfkBf4+WPbvKm-4cdNa45Me?G$d$#p6dwfNaowBe5NVZ@}m6P zOk%E_Qn9)>9m%yya?}^y9|<@e)AlDY4}EmF~5p)f=29^!X*BS@{9Im>xDnH5z!`t#A3#_A1oR3@aoF#^z3 z{=ujeG|m6_-#U1507*e#0|J`($FPGtAZmsfiUeAVU{DM6Ok&Xeyzn)kyG_+hhVFrt zJiy1E0-M@Aicd7vbo8bPgB*Ja<3`JZ+~>Z@n|A4oGhe$^5x2fP-KgU+z`4mzc`SWy z=wTc;+r2Wqn|uCYXARuHWb=H-#?e7$J#2B4#h|5bLb7ppDHK61x%|s|Md!Y}!>m2o z&1a!Z*}e$!x|KNQg=j|MOht~s8NIm%Q;u*^VJdiiCo^ENW;w&Wwr2Q2!$guxxDjOX z2!=HNxTk@4T#zgaRbv2P`!{Jt9oR-w&<1UwPYf30-?>-H;3y=HLZ%uj$OI_$jxst! zn;^>sG$>;)P&gcvLI|pxAV3>h!W8%!I=Bv^C_=a=^&KeW*=m#A%{UeaZ6ucocQI2>ZDa_zq~xZZ%i%_X@`D~Pw!pN#C#7u35?xra+30w6&P`gg-`%}D3!pbb7L$N_subkL&3i-w7{Pg*sDoXgKFVZ)O)pTTk^6Tp$ z`ifq=>dJN3kbG=Ojll6uHel|zOH*->n@k5Uql?K~ts81Bii3EXv5;W$^HfaN>@#<( zR?qj!{yVZdjWTB`dA`JU?@PH}L#@h=gcU{0mwj1U zH+`B5lcbFihbH<~-1_V0Mq8nUo zA$e;^Owxqy>)vmkRG*6HOMO+--Ij6+rXg}yr0^s(poal^Ihfjpggq!zPS9#^1)+js zi`t&%M#XBAO09*9YO<>1I$_svjq8h)UG09nnrvzQ{oI_~AO(e)B%IAY|1=1kfXDT)Wcvb9pqm#*bZ| zrV?G9*}Zj2XlZbQxT9cUk(UzOxNY|UzJ)$7cRVH|T{|$UUjUh6?<+z_Os*87X#*rm zZxBlXQZcO#kP0yDMHxjWf!Hn%N5cp}9UdBvqXRLP8a)7}Q<_IV1FG6W z0Hgp48#}lH11kEI#1;a55I#`W19H&Q+7iNfnvDGeLuZi6Iib1aQj1hv$@)Z1GX|p; zk*pSxEdf+IT{3!Xqd2t$yhQLl76R@iq8MFmS#$ibzDR3ixytnuz9&n2ph$a6%u`S? zsq{~6>zOnCw9^Dj0^ z30go5>0iIw7GQg;%}ap8R&;n$KzP}Fy};((JNn`lcYu;O0T;WDy@`-tHP15NbKp-T z6XmP2w5^8YWsMEx5Cf0IqV)>dcy*kbdrZze=6W@M8H`G%sW85cSq#f~3SOxbDq%d8 z*TzQw=mhKrST}i^oRB6xczb^yWHi89I^ZkPs{vS;1~e=oV?{vnLI2CyJqU|w_W(pj z5oY-}g$0-bWyL@?7e_!&W@E1sOwMp8XJ~11BB2-xNoG)19<=%nZnS?Z5*UCB081E* z07A&{L8;?9kby)xKLi7pz^#hnb7xO!p8`@`pu9r4`)fQWAtUvpN$&N^;5}8*_ZHu- zWAC^=$g%%b%j$7vcF$i7`geb9&Cn4TXnC|UkUGmoyeh1EuR^p8tS=wqW*G?2nr(7# z_bsT|KCQP-k{?&FF_B?;uS~PV;64(Cug<9|?A;4!*dY7P+fIz70c}Wszf54Phc5_) zk7j>=(md||GT?K|)b(~n%YuOFi(fp(RiE;P_naWMzE?xY&$2DeS6v=80-`ESsl^w_ zx>v}Vq(z#Wi(x;|-1I*2A?-jqH9_}rwPy~J`96!?D@N4u$FC>vR2uCyit_Bn!@o4% zv=^~zFDM=ieZl38@V#@H_3|P-)H8rtc(EXk6w1rN*zGqtlK?yGay?svKW|k(Mp8{) z;MgN&P7C|k+(ezAaRq`vazeI3pPwOpn*z>$b&ET;4I6cB%eqQ`jHao>HeAUoyEU;O&_s8FIg zU$d?7_L*g^ldmUYwuM4rVZk*5yK-D_^4SDJL)q)*QBrR+rn;B*ZN-v4c0vrHz#=(Lup!C5J5Po(r z&jxJ|%4!F(6X{))_qjN7?Xcb0+vgnhcPlmG+%3BtO>Ddrs_&Oe1U1}rT_QPj8B47t z%(IE$9C7K|8hJZxd^^R$#FGh8l-Q`}2tBM&v`4YP{~G|g6n8fp1ePLX+>(m3Q3p{7 zq&W2;c%J}~54^t^iUAUu3~Z1nl7&#PgaV@wgoC%iAYv^XHiJ zGql#N{fR}+L9yS>%)aa8wp`mN{jl7)axQqG=Dwpqyt#mT%6Pd#x!w})te^SEVn0(k zHypnlM@a@2ijQ!TV;baK(+1-29|{48hEgCWl>j?f_y7$s{DVnQ0w)wENkH=%h6D*d zXbt^0w+G2HVE&Szo%R>^_+O@<>cE7{4MfQ==JR1kT-j9Jg%lLZ&>jv*#D=6WDpZ&t zJFX6o#3AYF6M)w)km>?W(?KJ}B#`tLX91rXpiThd9t@xjXC&OH4ap0IfRqbUlO^@L z0S7#7K@fkTnT0=JZZswP0|Qq74h{VKt>eJg;k#49>Aq8vLG^#E-5^l?|C|nBzIQ+! zsPIvGUU<`gNfK1)U?@WFpTmIUBco@3DF^S8Fz9FK^b}}4xyQ@8gbI90G>)y|%MFg^ z^e(%f9AG6Ui&~}gMt$Y3S zEa^pr=LN;1HV*%RiOY=b(q_~$X6EHNwbHWQ6PKeteBQaJleJtoGAAKl zCR1%Q;L~Q7ervSPuB|wp5L=XW1#>Z9_OrB<0pIk~IKiJQU1E~3XvSs zH8Mp%R8$mMZ4={15~}Er*xy3Oo#rA>`2$M;SviK=PLn$X&%C*u;7}vE;j!6(Q)7O{ zrZsuJ3=Nxl*D(8S{IsA3pE{;~?%7>V8*zUJyOJB04)?SL4McWJ%crF9XBfYh><04` zO-UU&78PqE9ugb@N7N1=kVs|(y{&57Dkp)QRVb63x(>2 zKM}tw%-*%Wd=I599^8QgTm>2^kWr!<6wIihLm8sDfnqz4uIO*_2LX4`I!FE~h#2)* z_^uPgFE}a}_YtnzjpK8ZFTAO8@4xJ^C8Jk7n~_i{^w9$Z-Zm7P$_U)_7^u*t#ib=- z`k~Xt6hR)4D+w1#VYPv97o!bC3jl5kK=cOC>QYk^4g;NboDED$8-QliI9v1#h-pw4 zqex0h2Q=-?+HzDXV@Z4X9&TD7jP zJbmmLUx?8^--IrmdT3@ibh0$P9R46ir_oFTyXGz==QhkIRGL9>j~UM6gM=wFaYY8F zLDJbK1(G}VVqlI%8LjjZE^!1=)vW|vg9i8`cp8Wc5Uxs@eNF&TO2Z2#TJ+qbk7oeU>N^vce#w8F>Ov{*vXV9+WO{&PW3bv+BC8$52;&|lRsvoS|v{lsMbfx{|wK;h1Al>P&vNm}K($R@D zw`CL53qLJ5>D5F`Hsa#yVY%d&i5r0)4zqC=rG8`_R(<$=$a8@;1s*=(3+xN^WJq4C zAB*hY3wuw5G#BsC@YVszSzk$PSm5h(aVfm8Sp{AnBbvpoNsZM;g0e6}oGN}}sM&35 z&YosTnDzlpc&9QtOa~F>!XXd@cU2x~C{y%*d8)@@G|X~!T4wDZ5l1$8PoD1m$$R&g zr+*QQ=J$@tmyzQ{2F;E$eoo((bh*~Ny>1$gtCij|_qnGX62&xg-q`Gl(VeZ?`f6tP zgsSJuyC<^P7?QV(9FN`fRQ+BQTi@=3^Kl@*B;@i&CwDvQ?^#azVl_(zh+R7+&h~R( zKBkjg<9s&T^bG^Mwtouq6Lb?g$|bkYh#32{BpMykq~aQ)wI2>c>8ZN!P5uYQlI3I_ zEVKOG@AwcwV`unI(GB##6^RfxN*@~985FBky0f6N1v)}-V3&2gZMV%@&O+^_w0lp8 zgx-H({(=j)t3pm&JpB4gGc^fs`6N&SLV2K22;J}`{J%981($=cxq}-(fBx(}P+87| z9?!48KFt$r+~L+^=A|z;>+-z{dFQRttIl0%!*e9!dJ!pp;U8_tGK8waUw)_D@_DZQw{Ez776O; z8c-**6AID};|%}S&ww=~1R;~)eh3eoP@t3zs`Ef<2k1W_z(M?9LFxlZL<%+rof;sy z19CYBpF9c7F4^`gvCwBB8VK|WRutc|ERm%8Og+$g2*re!n@!00AEz;r{fa2gs{!V0 zd5sC^)Cq#v7!8B8JD>B-5qToqS#(uUK)m2S{Llz~J6A?J_ z121`40&c|19>taWt*N|G<3aPb+}l8_y;DpRW~sEtb@`X=?DzK@N8@9$Lj&AZ$K;G` z>lM-D^Rg>jaRUf2mrKLgJCb(ys%^<`fAxasKM4#%Pvo#kmjWW#j|WZ->l7inkY1hW z5{0%>(WmbQn6AgAZI_EwId#!i`6S6#MUHAjaJ}dVI(JqVIb>jP!|37hi0w9i$M4Ck zhsTo^w%&7%+2URl2FK%PeAW%@!k1IM2!V`Vl38u z5dX%-FAby_Lk$B}_WW*JR2#KARss=kJ7bD~tbgfDsikF!K;MNb?#grSiEdGFQa$l( zSV;n3JaN0yRlY^SH$boVD1I)VEuga{Rh~wOIzxZ2g_7#TZol_K zP0FedUs?Xv9lQFT2{B&GZ#hx$ADC1<%$|u6NbY3pbr827YQ&n#6UXy|ldYcMSKH94 zuX0C7&Rpha@*1l`R)@NLSR%y(g1I<8o?4Z^@VwG=2$qq|!1ddly2g_DHUIh7Tb4_i zgoNGrTPM6Laqv$=CE! z|B}8-pp9e+D(+OZ9n9qCT1e(#m+OnkUtdDz`hU;1;?f=da+LV~_ZdB50)Gbb=da@I z^dCrUc^)8XGa;A(K@OOk0PMd=7Hn&5aSjQ}F7l>u^$IAnvYC+A+tq&j$qQK~Iek+N z4(Cx=EW%?cJ{>B9)xll@)g5~9Uu^I%MhHDpa6+(iK`$LtsaTNEfgOUDYVI*yWY>Os ziEnu@MPFDqKpU~hc9;z@2P~i-w2u0(JdY>trr8`})sY?50k1|K zN+=DWmOTi!unVbBYIu-Q{)-#}X&c~M{{JqEX#kH5i1n)-LA7C45WndNR2&yma0m#* z)dmsO1~CbJ6$LZLL1PqM4=PoZ_hUQ?{Omy0zfjgTfDv)HNKD18eoY+S@*Dr=Y|p79 ze759;0@I$cp|V=0N-;839)+5b|LDI@lj+8PugC@o1;vVl1vq-RZ- z%DRqg$R(!#10ocUMya#XXQRS}3yR&exagt<3Tz zY=Bkp@7D^BR!}0Wp>SHq@lbgI=@T6A3ysM=uCR*V^6;f>$A zu^9dqV`B^VU+MY3%503v!Z|8c#8e3v@i>}WqavVNaNC)tvudLGtpHZy&}NvWmP~7d zU1tYdii3lR-q^~G9>#?Utk}yEw)&dqvwRi2B6-Kc^^9(q98-+@s@ypc!&V?-cCUbe zEqn&ZK(oH*7jT%zPx}UP@8FA*8s#DsjFD0otGx0^FrlyB$%Pr$$k)@$ zBi|BnhGoDU|3bFHS2MJ1 zR?zZWm4VCJuS=?Vk9Aavg^Omy$+XK{Axw$xyNl?~2SxIXS^5a@r6;h^-(~dSF2P|} zJ9r{)JWXT_C|e9u4{T;oIMsS#+t z{KQ7%%-@8#E9RiuLqr(A+mhp-wCUdn{AU zQ0N8s&@pE#1~OOKMC~^Fq9So4aqX5jL?H4cn<1gZ+6iRLi(T-yCmFF9)*g6@w}~5l z(5y}eW%T~Y+<8BYTxPpofO&_h3354-^%!O<{4Re+u@bAnY{nI7=JtfS;rOTP$#hSo z#?TR8-?33eddpmn;ELkF%pg@Owmf`JvgEc*HXXCGPiZ%2k0*$EKUJ_et+$%-WLLVp zP@8WN_T)sU1~2PKlD=7|fmpN&o!;E7ecX=Q=NkS5@%S3X2406lp^>NMiE z7Hgpw-8)`i@=H7m7+ykSvC!-gT{>R0b?rwg3WtsRiJ9iR3h9 z2{#URrMSMm;ZQB6aO3mPqWS}A({(B5}B#m5dQyf`gD=mH3p7A1!u!NzTD zY+wM>1xWS(Fm>L6R7d~+zqT$CF4>!0t8iuSy}9;CR=AXm>}0EM*Ph*kxb{j2N!csc zUP-cdWToBjTzx*D@9z(;ZbrS|*E#3)dOe?yr{uX3EXXB#mIFo$lZ3sK(5guQ8#^l@ zH`Uze3NtFvM4AmrM_m+a?|5-~uIEj^FNw1C8h={Eee+o>spE?Najjrj%F7umW(D-0 zqWr-IU~6HqipdoniL7g75buQCAc+dMObe~CH)^%k%wU(|CXM|t-bnVIB(^6kb@ux} zpSd;P^y~Y}CJ)5+PlRrMwhw6TuQ#tg_)9A9GW8bdFYt4k?)T4vB{KtH_RQOJsa zpb|jFoVOZW?mDygnI++wryZlp&eEzY%Yb9y>pydUw#TB;R-Esbo2p(LpQE~y^B02h z#)gFI6pxLu9%TLCILUiO+TWc}uPm*#hVC@HolR_FNq9ryu`$&t3&6uY2BS~jm#Q4`qdr74gtD~3k#Rt(1D zSlE*tr}*9C=Zr&2UG3@Db0!O8HCTE4EHANJt}|LWYr5k36WLo_-rF2Tu|A|2vYswc z&ZN3qoqF9beeli<|JTjCOyR770-t%_B8{JFA!0FZ(VwS5h9bvST-Zr%XufO?8Ztb! zF`d{aD^Bs^w1|aE$|;OQwf$#QenAgUlH+-Gu1eNmrGsxs`uFV7-^^RxbK>}fwJdq7 z(Y3rwiFel{wYM3qpPjJFI1Yp8zd@nGH%>p=3B9|sLYaopDuGO#h3K>!T0B4C1{ogb z*;zl(itE>9yJIA-Y!u0!8a4o#Al7@2cBB(b_)`e&$8-OoB!C0^e>LI%Z3hxM8KAid zI(ypi!T2Odc}5W<{*s%8EBuX3<#Q70wxW>GecKx?gBmj&a}`@(w9_iDP`}^5R*Z@2 z73r(S!r$ntgzj{SWFkuK_b&H|Y}+Qr$+ zQevqW-c8oJI!J$g8dz%R((*7R>33o{>s0s-TZH=if@X|l>NoUY4U^Qgyi`eo@}1+n zvV&aY@~djsj`}$fBR9jb^X0!(Bkk55WfIY^GMy*s&_|`lfWfJRwR~pjNbOFL7x^-h z7l0%^ms~QEf2|i?7b4>VXb_xQ6+T-4H5Gys7eE2fq8J7RT24DtFe!ulTMiQlnu7u) zq(@wcI2#tn3^qAXP@F~UNC3A7c>4eA=77!s8UpGH`G5TZ&_X3Av|PY3GzauhB@D?y z&wx-{%tLR8MNF{g#gT-LR zxFVRDrTV=2I!+8FmpXb+^7hZt`T^)d6xwz z240z39o+zVTdd0;a9EB=;H_?aHRH%das9$)eX(4dTpup#S}Q#|Rv#K$%ec-z?!mP8 z;4#|0w<%IrRdT9Od%Rx}-#mnsv_)?6gxx$=x5%6E@belk6KF*NX7HiHtpN9Taw&ohY+ z`nlOn3a}6M+2ve_g=EE&DB3gxS~bz-ta=yZB=Vp?Yri2o*NA>9oHGxVFjTFO!KcXKvYqXzHw_5Z+dn+!_73Rv6weD_9Tpx9}X(#V^<&D{^1w*o4 zm%znd6hzB#>~ld6#^hU3;GRN_Jk~Mu<%_HczRq>{;dlA**EwV_ajoV>8$l2p2mF=-%rPj@KB>e zMCGm@!1`_t-d**Fw5Obp6!yZ`%RMf(+}@QpbDqCz*kAml-`X|P;a9aDTaIb@gKURm zg_p4tUrMw|3w%f@_M+a3aCs?vM*E@{>7li>01{rC~t)2aA#-FG$t$Gim1@)yXQ)oT!N|3yVcha$_3ZlFC>lyhIO#JsdM$kmkjb4rJxR zWAfmXzKDhxLb!oY3HN`NoBuTt^l#SCOByLxE^uY)v_UMvzgq|EE3M8?p26w_67B*8 zU>Q+>stNvaa$)A>mE%vbkRXt0hZiH^z^bF94Bc_W>AEi@b1Uf#1<_6@wYzLomnf!d zsOeJtMW`*x5f82~FK5QA_X<_j1zbK&6lzKTIcXz~8nZ22HrY3i@6KzeQote_pKc87 z7&E-BW}?b8LQFg?0VNCoa)B)0QDRmNHE;ottZ*r?ua^*t6LM@~q8zsJoe)V<19gHo z<|@Nc#j~UUW7l*e%lQc5G11SzB&zPm_NTtNvz4#Et+mMe`kfxR$b7lt`8JW_N$H&9 z4_8y3qjWpPLj_yQO+HQ@ij4iy9{seW6^~s zkLN!Z8>tKPXnPjo#yhZpfI;Ts9bR62{jRvhPpjYA5BodkYkyH%OKEw?o8@i#A1<2K*X9(x4O=OX^R{^^(R~S* zY>0OHxIO7V!{WM36`l*r_Kv)BaE-Bgd9Z+Cq_)~$|GYTz5N9W zF+88$6)rgbs$H%=Mz~>Rt+JL)Xic{wnD5**S)l-H^pRxms#8~*+2!{cHl`P^{R3j4jKd#@)mAV~$RA>7I4 zhGdpW8w021usy{)Kg=PF>|Ie_#=lYQK8DccAx21w1u5evz(di zy}3BBftFKpW?F6Qpe0R@j1*$6Ci5`KW)8*p?!6wY_DEfoNNa1n>% FMQXoJR6x@ zsYF}+;7m_ZK$D33HG8o1dJk}!z3x?>5La1{ru`ru>~pj_Eb+AWr47@cvHl~AHv>EC z%VawUSIlAOvnN*1o34$2)Ta13wQ8hTdx{G51N;xn0|eVuzEzM$7~>3^Yw)ilM1_i|M;!=pd{_@SN;0x28O-W zxfpHb#aC~wy>t;gFXI+P)W5m{FvwcsUN>S&N1NTHU*+|%A&^ zIm-A`@$e~g(%5f$wbGlr!M$Gkn@Q-%td(yjYkJ9ETIbMqgy}e&!PzvHFa~!(68M?m zTwzF<;LH+=Y%@aL?Fx<$XA_FE>2v~}sfm22#8eynltENv(q~r$KHuMybLjnX(7(3o zEy{Z7dh#!lj$x_5c*nu)-oFsqZ~ULUlryL%M~13Y>}pU&EQ%QD5BTaV{Fmu3+oO~b zi7($gzVZHW(EQC#vfrbBKJ3E1`_h>h@I5>`C}JHWd|0{+?EL+HnP?}&mR*Z=;rF=K zz1=a>PFO9jyOWOsuW+dSKp$;?X}j@D{^5_0k&idWmn&$$Wy~Gd|Ap|WW2WeW1@CSD zfh|QOu}XboT`TWu-n^N99J%3I!>$*V^|{vakF_|6@2maVy+ZjcfvSyc=v8_ z3E)ds$PE+QTWGf6@G|&Ef5M=osrlbM-#+yaeS48(>)oFF*pRRP9PZw+n1J}24@O1) z8g81t$Vvrf_no!k_(nta!qs%d=eT27JY2}=SY%EuP(u%gS8?w1(qMB{ycg&=SbF%j z`QCK)(dF0fC@F)cJl$Vgl&4%zkzLc_YQKlF9~3lUe~!kDyJvguwIkOBSVT=mtu-Zw z+`g9l*}3PTWC-HAmMh-;{G;K?Jvv^XBAnm*WW8>)z}iAm^iEUa8_(tPZduCDB0mJ- z>Io`@9pC?E4*Lh8~LOK zyL%ebI<8Ga{1|pFeX5IM&ws7R(fr!JD$-(;(9hieEaqe}YccO}&05KW#jx!jchg7g zQ3*;R{fHXQtJfaA6=@O;-RY4Ltr)6q9n)LJ(q>@BvW8WrHuw;ooy&590i>-0?9Vx9 zC(YJzgUD?jmcJ11z5Hi5@hZw2v)$CGy^*ZmEAI|VI9=#w$_psy#2R$OC%88#_GwG2 zFYm3J3DdLv3A;oZfqMJ8$rOTe`MQ>s?dE?amF;GftH^IH2(``qdDzu?k@DUM_>g7_ zpV6uB`K4c%ewY*8{G4gQ3F3o(DIj_1ebNgcVyxjJph0LGgr1X3AeCKw1Zc5?|=d&`Rz41N%sI6fe3FKS5hsEKZ z7JG&=F70)KspgjZc zFM>sWubqyBT^GG?)m68t>ZSs{K_s8vi&RtkYA%DFk7Sf_}kMs@64OLF}m!l zcW^%+6k0(x);>&53_GOxjrc9#TxA&MGR$9^$C#36$wGbYeC9YA!73VqH}El~_qu3!fCR3FWb9uCIgrPpKuaG?cO?E(7oO=QSs~7ZAqU}s zHMB%pB1N{$#xjAC3aTZj>RFlzrf^W01=>r(#E#U)90~6zyD-@qqnCwaq{n8kraV6Y zoCnns9?wFw3-teXy?<^B;o|*;>%|U?`oHcDMwF?VBNkC{f@9F@7@92oF&}EEzI#7pM~?l7&DzO#q@q6TrMk zG`TF0>zb)D4&Vf1zyVH|LDz@}G44rZBmkh<1!Rc02?LAUf^(4YtHS35N!lc+XUr+Z z3PW$Wb`}g&9-?ZC9pYcdyEi*9urbupQc!S(tSFtAV?SZ^D_JYg-R_kSluBCHO6?NW zs%t)PQbQ3|v8yLb3YY8knyd&;v&~tgt{Z4yw4h<*M4OD7dv#oluqBfVL9DQm#NfD! zHAD*~qNn4_k)mR=jS6*HyTXZ6lTH4Q1#ad=g;^LHu;(?*ee?ui|L}(d>5;^lTr-2v zNdu#723Uicstw5n|MN6Hn{Rm12F=)q9Qo$IRuR)&EiuJRJr*_=-~6he(7)$w%jcxV zQK`<-%6fQ>?b;K=3=#U#Q_jpyyL**n$NC4dH^1(Q3{|R|9xL!6rR<(UZla|ui?Vr3 zX|V0aS2?tSCM=~GmQ&2ADo(U5+=j;l)1{D4?|StYGZF~u8OtY{7BRUFH|pi|7DM=j zR!A*EYSK*`ej2iv%GC0Gnrm4uHm2;TeLHwC)-%5T)8Nis!5gtzOx17R&7QRYK?ndS zDGvS833E1GA~gzV0j;aSNaSy5(qvQ^As?zU#e+i#53%-3;LY(u-RGVZd_%#ZGrN3= zR_Yk@=514#dTI7DxG4S{(Yl2405o}dfUNzNd|D3SY_+6H-#sf^o@iwrLu1R1nHhJR znlFE4^6aqXGZ|}Y#j8KDetIT72=v!vQlM@-Yl(D%`sDwUj5I)qwBcdq2G)XnY&z%L zPHTNi-7k{Z)Bo-%y%z(JURYD_^*Y-`uf3TUyAf6lqDA+u8`nN2pE28gr8hWpzJNM~ zJPYR;{2-(N&fzsp@Qye0N*fv79x~-)U9b+5tUT{4P7PiOme=dH%cq2oHjpQ|EGzPH zd9Br&3`gv|di6Yrj6xuRsLv#0w^ri2t(n;UAJ&1;(WDn1kI`Mj zVOs14zqc_nP74$%@y;Q}Jq^y+yVkI?2Z^cm9jy>{Q2c4uY+k#{u>ej_m7Ep&0cO3hp8 z-OZ*1y(eR^ro&p~%P-T(J`j7MB!%YrNGba-Rdf(K7||@W*B1R#LM8$EXa3E~;H|rK z%L<)}PosfU_Gz{M{kAM17qmhk6f7`pN;P-r(NV7WKIzuo3;>u z3_p2M^-`nCvWy7fTl$jZT$5fUc82Fe-R{sqdJ)iU!Qh@ul zspNNbezKeWU_$n{(Pe+~dks&bxBb;d_?VB2f!CHuqJ2Gff}~n@F*jcyGO&UbhsYv) z!&tA#Z6xa(cmE-Ngb9A@1%I7Oq;IUZ{wS&$mIFhkW94$l;VP_-C1|-Q!+dj{6$1l< z9MMZY4X=NU&7tphIO|Mj&|z=EzV|o>uO-PtrL=wFvc*H4{SNDxJXFD${%#P*u>2^h z1;`3ccJ%Tj^jf)=^io0;SzS0jL6*~F!Vcl`xvsJ}QHb2)MjJ#?LRK*Xb#4Q*QqI}X z%SWWTQGh6wgX);8Ldn-fA=h0b4Ef2Fopwez%8m73&a?lRAhL2F7-%19geVZbV9#Y} zB^~#1%ZTx>kc`mcBd*M*YRcmK4n^8pa57UfQPhN+l4K^VXY#u<4_x0e8oJG^OzrQQ zMiHrDG>3s!eh*-1Ua4kzto|^==`V!K&yegB@1mmD_azgwwcvD(KxXgPClc>0!Z%Pb$y>d3o<6_V-f zdlxEcn%Oi~T6XkZ{TiH>bWB4ET<;c8zHd|aWqzqz%rd|9aPIfj+~jwSau9O$8nsQ! zAMP2>ddiN&64B$C?Ouz+oL8Mxdx=&K7%$-!t`1zi@)_fv=}L9P=N65o)G?G?{AuRP zS|_vjYgf)OILrdmRo6elo028#;D@QVIB?f_52KaOJY zy*}Z#iZ2!N_dl5wQ$i6@V|s>eQ4<|y@d}8jY@m?fMlI(6y9ZFCfzuM`D}&~evoufH zfht|5U^=S2z33KC>Um+c@x+Ga0`&=k5#kE4MF4;1nK9W+wGRp~D_X?Dz=x5J>-&AA zOBlJl@d_RFmx4{4tIi&qjD2Z*FH`IILp(p($T&95Wz7?3gm@|Z&eoy!*NfZjmL7?H zWHwxe=FL^sS%GQ;<<$*awN6K?k>c!&kbCZ+2CNoqtorQ7hP!#ipN#_jzA;8K*%>K^ zzh$Hm%6{_Hs2~wfK0PDcezLbyq%5aXyMPf2Y8i_W#RK!>n<{rPS5TQou&yjX&evQ8ASuG=4=V4b7qw^?w z@2<*nw2*yxN!KxT_zc-yrMAr{oe?Y_MBMW&3sc>$^{X*THu`1FI3I(aW?AY#VfFCa ziD?gd9;nGeH7h!xopCIod#Y@;7w*@nrFg$9>%H?OXG_kmmA+R8F3M^HWA8-4+K7YihHL)`a zR8d5D@;9A{o?vpxdB5BGnLL9pcJda?%q}M$_AjCyC<+{a5go_|2(y#ol1AT^gX`9X zt4-k?--8%-q%*E}HeJBp0)ymlTY3W@_aa`q6lS;_(P4}uiI>lTcc!Y3 z19F%K3>q}13lK39t*D^!F{}myn9%^m5b>f}w6-T6!pxcBWQG-D2AyZzMJPZHKX>r$ z3p2eqjwO>db86mA>P%|$1k)X=gfX3LW1usWNIVC+azw^d*wm!>2YBNaQN4XLZsJli z-TTkD%V8GY$ZEZev)|c3azi_Z3DmiQ=$~b@Kvu)CEg^xkD-BQu_99iog@yyEu+d9; z*w(g3Ry`uF;iWc%Yd_Vc_=r; z`tH)!2oZ(se40yvP~3z2OZ4+5{R%1|mE9HMj{fG7k(7%zealDLezf!eM+8v6r`-i=X$}bC*xO#_ej0Z&C$vb*c!5 z#7Djox%i-^uxobhwVF?5aaNx;WB+>VK4V46gTC7W?d;YNqY$~cmWogPKXMBdo5MpN zpumh$x-%?>RYTwCY7{}{^IwI&`B}hc20=5DP~?m^Fl%0q;zNuB2|k_SKOwuW7DQ7^ z=9az|qMA4L94x1tvSc|`7gBCjL|kk~Ism~dnls^Gaf%kP(S~Mt<(wFx$|C;vMwmUp zfdxPdLR{fRm0>>5+G1IIe-9O%1)vx?B@zS!3*IiK*S3Yv>jzfVijntDwP%%cqUw$L z2qS$l=Rb>uD|IRG<%Yxz{#9bQ7RF}Vb6tJS9Uy+H=}Jpa6D945xo{);IG!uXgBa{{{$ST|+Lg>W?iP9QA~RYGhI zE#HOrrhxGi3aBv+)xi`Bcp@}(J;Asix)hitR_Va-d)L}`$WjlIMotKG3na!zDqP{t zR`L#`vU0U|X%v82n+<~s8K`!_Ko15ks+pF!5TuBJEN3oJ7q-I-2lQ|@gEwoW>2vlwfIypZA}H;L{J`h}}hXHa~JLN5N4K%uGk-N-FBFI{Y-(h?%^>Q;0=9ff^yOAm~K39qS4S8&3!G zwdbEB1`p?SE^*&do>DiEi}jU>5V4rhtF@=fb$Py%sZc95(Bqclpt0_q`5pG`1&AGSk8rE7}Uk!5hMO>+C6#6hyu5KVmu__0YKAztoxZJ!`={D~EbfC@v z#ZjS!$@j`#95-*aQ6(N{Py<2sfC;-BSTdnkgJ#AyaBQ`*f5V80YThz)$d)TC9ENM& zSDb0pkc+jdsQQ(h*X?G>yRY>zbWcx9W{A1u`f|L5!YP zMI_XVni&`Y8!^brb^;nccAzmtQTrB`pdH4Uw;d(`svHtTK$5#hClS)*Fk?pjPh^UZKA|rAfED8dMWu<6C zaUs}A0W<}gdR5NL5~PZg@v%spW%^1vdCAC<=XuE~f2Q`cOOf1zeZ*N5_!+!Rt?o}i zEkAvkeT&GCOqLbQGlB%7S1sHu8hY)TV_e~IJ(6@2i_Z&#Q4V!wlsyqIZ8J2e+lq}mzH`xGJs5gaJWO=&xiILd zm8`e5a)P#~CteU`<3eY2lW3#{e!~7FCaoytymAACn6m%JI0UXideb%P3gy?okevxv zInq1a)PEuJq9RE>T>3r%c!elj-lUCF#O5Lft+jzD;$LYLfyCYE;aTCpE96c@0gcp0 zI1!ghBKsaU)E7dJlIu7v>|&+7M4U@Y8m$c>Mav5nkbd4bn1@O%WSj^7$D{;w3RDO| zz_l%>w?SZjTFeC`9GgGJV)eC%*@mU`Fk%YiF_OMv=0pWC=ZNDuMkscSS4!Zjq^2a$ zT!@ey>D||16P=68+00H#p2Szpa*qo>bGvy=F!Gq*bMC+?USMm3NC%5B@qZ>MZM&jL z{1lgBtb0;!d$;-9zcfZ+7VGs8H9*Y4ciRY;YJ> z9kV`_I%01#|1riD^CGF_<(>TVjeB{!125FSQ7?duRn*IAzukvdT85<-s-qz75L&Mz z;dRNh2F7IdJaUQP^cL+8dM^{+^LmbbUEJXK?X^cH#<($PY`pu~%xo4^e8T#KmNAXE zF92L@W29wSRh_L=|5`H95>DY zVmw-mm(Ju@px`4EeNKet>{%g6ctT&B1voxQ1=AUMVDqLV62MCU7JnVIy09UVPW3`2 z2zN*|iM+Dx+@vkg1~VZ=8Qs&85)?8 zNC@6iewevhF^=TN7cJEvcO~gVkrBdvCU%#d8i(FD%ow{W+%Gl{xu$%WdW{l+so1uR z;{J-5j9U)KDTdlCQco{$eO+q0HBwi34(6$BL7Xptkq3>vvq$tHxmw|;c%+(rXpywy z?%fAHf8OQKW&f0n^m<=h^fWn@xyvwrE(4VwZiSaM8}8}HIG31g!n+KgjK9T786ln^uMX$eSBIVjg9H}a6Cxb_bW%PIYw z@ez42BST|l`o8^V%W-wtFKy`{sj|YfR~Rx7wjKl2CU9SP)KhTf4nZwmgdiARfvU?+ z-xo#=*Aj=T0s@VLDZCxY9A%Y|9`ZH#!L}a=UWBdnb59Ojv+;Ot=RoyDGrfh;*(l)8 z#nz);Vut?erH)#0ukpHyS)igrPSSH!6a`BARPLdV^-#oxxm(dR5vLPB=> zk^$Be+-b0U3l)HL8gRlQP*nbX3}`M6fUY8?+UE{db!`;n7onGJ2LOzA?kE&>2$;r1 zjiVtMtRd1D5MR7hGg!kW)p2&J`i;Dk-bgV6fi!3eD1o49w%ny?r&6@`P2W;;EiqCu z36NO}uYyYy@{A(K!;$N8k6gyED6ho4avpjnSe{cEb;if{6>G$ilBva=>04${9iT1v zq#r~gY-^`SC86Y{dp&fnPdU>e&xrdbJ9@u!CX2J8oHN1ZHNp>Z4IX&8;nH}ar%CZm z)YW%o_6)7m_sMHHs3SxESbm+Xo7`42QW_cAajHN*iOVWmW98d2lcbw_^>S3_GS-IKC;fP7sg2<)SDsO9qyFR%&54M z_VuLuuG3mR0g zx5UKd3RCuESP)=5W+M)B$-;nIHlw)^ZAJAE2m%aLX@Ewt*GL>Vw~JVcdtf%=9B{Y^ z^J&4sfNTM&SqjPmx%jo@cGuUrkP#4@sLiHSmU8#W+gAK}T~oC_#pMjQ7$u<#aI%n1 zR2p@e%15~(0prjQ^T;gVLPmgyR>SY195fW<+_ZK!2lcmI$Fc3D)DkC!9lmlRO^VSy z!oLP$jhyM?j=*WCjhB)jB-M~B#1zk944+!64I)U8Etr9?L0S~-r`5Ma zI*o*mE^9A@==X-8O^sgOVrAstO?|h@T6c^3MgN8NZWZXa{cDFIw@qxm@Dlxnye30w zc(Y4X#9z;F@^c6na=snNAg81-j@!-%V z?U(6=3g>%~#q?A;TV(EipU1^)x?640O2T16HC7*jJ=FC)W6%J|0i-*6Scsh}NZR4% zFeZNt4n^l=i}6~o5+`kRcvfueKQnvn1JYUSHC!m8LV(aW+#cga8(0BRZtR*|!VKH;#B1eQF{(uyo6 z5a7Z;?;i%OQ!le@F94IqG%)W)(eOO{*W=GQb4EdY;C=+Ph>J@GfgVE=4}yq=a3meY zcqv2+jx=g~9ZN%i?x77w;nacPFaHY~2ZL9TAOGnX$cK?txS%sbapHB`%q zM=!#@2>T%7_=r=W>9A2bP_Ipd7@rQb9FAyQJNVgBD?A~1C_dJc9!CLVM_oDLsAYdEH@L7YezrQf)O~A1WPj^euqHm0EZ92 z0S25JkjVF+dAF|X*)K zD`7>-sfG`eNsy*1Lq$mpr9Q28%pz~S-s8B`j1sAzj)ygF;?EDF5oL zFP7b0DT_k{)EySm5z{U)GQViL)~#6@>~QpJ8!sRp8hqa32kbB8#qR6!Li><0K~lZv zu8J-d_8}hnjR`_&pZvRfvcnk$$fm(stvBm$i{zB+%UTnp7PQ) zGljbDYmWzh>6Sj*bQAjGVYkFVm$Zwb-$9 z&K!1px%WVD?+)AEWqTE*Sg}k* z(^i##)m?pKqK4wI%!F~9e(Nejfu5M_4M-H_rc#@*h!Sxp-pvf!UlZ^UBKx)4^|3~_ zWqHPPhV`+{(8ma$S{+X2af|*>?$p;6CHk)yn>Kv8l`BK6w~9&)r3|6iv8(EQWVEf( zK4rvrA1_ohywQ>JE^ME=kS!pwjEFz%&`9f2%(RlSOWNzE&>=V9=8@9za@R6MBhTW_ zwM~D7wTVjX9(n%l)uTHm`@u4UvSoXUJfSrBSK6JPkE2ri*mS}g9~J%?yG&zyM{Z7j zMpaRujQs9{!Muw!`;!wqUup_9Kde9pmDQT>PX4La`JVEo*8004pO#N;f;4$%N-xB6 zcsb*L4sD9?DZQTgos`kKi{JccAJ8asww7 z?-qATGsx3qNArCBRf|ss74Z&{mX(7~lk7!xj3YBIn~f9)O~0Ylt#LbAwdID#Gk>q& zL24}i^xU96tnXEc!?+i(Z1QG7>+8B`O}wbd%=D~8KA?}?zYOPG_l+w5D(!B>J8XX= zx{&DN-bz{3!VMDxKCP&{CJ!uCC`YE50n?@u3Xf8hyqPAb@n>|$G4pn@?cA<}dTaV# z-731lMf+!e>9&ZRyVnmL^=Ze?m6Jz3U+}vxcZ65#sdxKi%d78-1o-M^d{+%iYWx&W zQcy(vJT%d&;i?U5u}*=8w8yAMS@j(n{m-)NX^`to{GV^>I8x80}5rY>@!zrts1 zJg)C24_938A^Y5_B|_^u&-#ubJ`nZZC(!92ud^ckLwN^QKTT7jzdtM%edF$mRglMw zAodj-fFSTB7H0hGEdp+h-ao$>!8IsA=!N}5jsR2Pf5>RutXdNHLB%#MMA%{JOnP`= zsfJ8A4uXI^P1d};@TqDH0gnk4D*i|P0eA%BD2Sx5@VwtH=kct|oQ#ZJR`H88u+dGR zsP(}_o%vrBj{%w-P}dXy$LI{m2Am@@AejL;Y@*x=+pf3}^OiT5Q-!$>Z~b<0F*PJG?pMD*w7H&ELD+o z-EPmVEiX9_fVIK0k&&ji5^WO5X>H129ntcWvi-~n1C3djTgfx zfk6gnXL?{?q;xM%w!5ZiZKLNbJu3*?F zGvbh}uFMn;tOZ~Hm>-;)n0UP%Po30_v(%cs0nQ-Q&^O~(BA*J_oX1OQ{CxQXGELXPr@wJKp%XzS=}*kZ~4LOvWnxFJdv-T0=kq26)z#!$M>!0>r`zX+gf2WK?5hXgC70T#U8 zJpXkx2wjc;y`7yj@Zi#%bS6n@%FFf#aBqGlQCI%OAIq=cOB;f@R_oFt zT7o$I&f{B%HS4w{kHf+_`3Iwqm7nm3fdp zzxl-6sx0xF(#{2alx9h}nQpdiy~D@Yg~GHi!daJ!J-(Mzj7Yd*4je*uHGLbtziLa` zZKYDY=IHpy&%If4&=JeddLQBbM$$hZJ^f>TC}o+JwgPXDfI2%mB!#n)NqnVT!gxmy z5DU@(H8oejpI1n3%YaVrpP z+RIOYu$&n@0tj2NFB{syyv_hE&I3Ms7rC6$3&xh<&jha<01JUaC1}pUJgR^^zLcz# z$b|S&G&4}6hJZAh=9(*FvSNx*2Qz;kS8(@P`f<|F2t5wqr2&e){}c(VK#QSaFluh} zZxs^+!c;-F#Z+H5VQtzlzXDd$(4&}|cFcvaFmrDm+m}qI`wbUrf~k{4}RC1K(Is-G;H&nrnf7$dxgrLdDB6{lPw7AG|Ai>x@qU=gf_fswR!;lDY~ zGjNkYQ;2!O2m$UISguh@9Ml7_#QBx57HR`1FEG<|3-AOT}qw61H01sYypffm-3 z^HMV+&J)&i?a?J{jTidP#49)rrd)VKVT{(<&jSG#DKxxKFn3DF=~O59?%0ykI!;;H zU=^L1uG=+hqpBW1Q-Go6aOuCzBZS|npWCwBx9IWU6PHRlp01kSY`+AiGwF!98C%G| z(UIZ#(vDZ9@4;ER|GkXiSLsiCwX82&!tHZ5G!nE)tt;O<_64J0oA1vTthX7$z85b4 z;5?5q$nq-OcEmH%<|ug{Ww+G4lX}-8#>kbMzW^(=Q0W$`r+Rj59vr)n&6}B^fN*~T z&Nt@)!s>tT&xRqR#OolYbquR2PdNHG5s=7)Pe=!JPEeA9MUJqAGNqw4K$a3%?f$KO zLJ&Zy2R6*JC6A@B!w=-~qI?y`LmzF!-=jCdv_<=d+PpdI(#1FTGQQiiq{`v&7BU5q zM19pF#zVfbhm{uZ#S67^$5MAJQ{4gv+V@BFO9LZO9z3>}0+I@#UQa)!DvuBDjvh^= zzU0cW5Ddzqdw${jmaX-x#s;PYdu>6JuYI?@hD~6)JnTXv4uVqlT~u-+xErFH4D}xR zhqA~UeymBwNy3zSRRXr`A4Om+!t#F_d$#4PPG3BZnuD~n;LVdl+39WeYMK|>5J4h#d~z|dJK+2Dwds04KmWZn`SMlbzF1rCG#i z0s5~uTA92bJ;|m~{LI7gaLdSdDB5O%i03pAuhik35;pzSK-1+zSly_cu*KKqC(vka z&f^C`{R_vBQm^V5jzaEPId7r@bVF0$G`uzyp~42C3Nup3jSO*xHG>$3d|@`e)b_G- z&pwD5;qQto&>t}7zPh8L@$UH}8a0htGjPqp9a~X||92lrVpBq-xt~m0$d#-=BDx7| zX?A7Iu|0~0?a1eQ0Ax~6a@t%P`XCaW8D$4oqj**rP0(K#s1w%S4CI(00raQ}Y`KNe ziHNySSOzr^T7;GW0COo+6+YQb_?`M6)dteAMw$!NuO|)p{@@4FDRaO~U7Sn|mMI9} zeX0Qbb^+>uj5a1t>Fzm8?D|K~0P8Oi!N;>qz+e(q-2Xs~bP33FK(7J0Uf|G3fck>z z81Ngjf;CM7Y}l%2fiTfj2CBs{dcvX6KuvW0b2A1mC(;|?b<@(`>SODU)lR60WWhdN z0u}{k>1vwpSS?*G1R8WO*(U;s4WgfsA##kk|m;vo5JgN|5{#=#w7|A-RX52&kRM&~H z4NWH87n3#D(f7p-YV?33laiJJoW7uZ%!{A#2Gfh1TNor~r3rDSHhd8&>Mjf?A7{2$ zf0lc1cS2o(gVFtIPshvgnN0wii+qmqSP=%tQbnGgAN?w;QX&`V2oyC{G@Im7kM;tIrN z7-@z$BkKEd-7LXS<9@(Hzee;AcJp(U7yDh>GELkodRyrV;wIfD@S2@Dlye_f zBd$s^w|2aFXmZ*=XD=frbOpWLVUYFOIzsvAkwoc8LiU~7Q%+pdm%JKbi{=>hi$g5@ zMBj3)^PiN5E8GjDPS^i^tu1V3`nSf=x5%1P9h}dDk4n!o6(_It1kB~}vUU2HZlp*} zzaDaM5KT~%ddODkvpUr@eHqt+UMsyVFCc_bAejNG*LH&XusZD_oLb%z#seD{pshS+vmy` ze5*oF-Wk}(Cj>hAo^z6AsXS%)VE2LTA@1CTK78&pvPi(Y8gFT_?@@PCR|yr2E@w{} zNK6;uay6a5ZfEa6DUk1-+Ddwd6E|65)XFboCJ=-dTbWMmnyx&@%}sZu>&`|s{M?-7 zukBFix+oLOhmkh>&qpCl>}kc#`$2kdVXZyduI@L}(TZu2$;XBL(gNpc*m^X%xm`nl zl`F>n{tFp@#66iKThLDtc7MR{mwGZ!>+@1i^r7Gp*`*vQv(U@iaB7 z5>}Xtr~VxV`JJ=&huK~NuFx5+IFFeWoOivik|`9o!uA)UuQWPoCd;u!(_ZpB$0O^~ zm*St2VT~$x9KYnF$`-yPFtb}EEL@SaS=ljse=|R{{zO{;W87rxgWKoWp-#q==GWWF@5^q6uAO}zXIVcspeZC4z) zoE<-Ee<4zmA&pg;J&E`wW&NK9OoO(;VHbMl`tX-VlP|V9j z7Z>?c(SxQ0Wd|VngR}a|D~T+@qW4(qFx+s*v*uLWSI=dC2^Wn>w|_uX&F+OwYOcD( z?}ndNyHfVKdB9tI`W~{XHPk7fVntHIkhQe=b~n2Zk{aEh`TS4x7AI`J`yWgoO4qr6 zAm8#csFL2NNnOBlZNR>+sUDZr;kntvQWQ+%b~g}a%|ru?;(i8J4ya)}ev&l30^h}- z;}=bpzmz;S4WDM{U0OOYirCP+!i>$QkvXMbNeiFwGdh~!I5Lz<>a5H1h)ez;lVpy` zo^|^uKPlNy3z@vdCu8U1-PO0g_xhT=*SiDd`{Dykoch()p+TGCXNr&4QlDU007GIa zAqG=If@X3(9q||(XkrLb_=^ZYmdJqYj_=<#Hw5G3BZo-3;-gQ~g@sXK{Ow=nS+mN} zSoqakh8~ggYhcc7szHr*umD&mLb-6}JdFTz3xFL}1mH|!NkA^;O@{&22Jk$Koq?7A zDYLTBcfH%93eNF7l6Bv*Ldlz%zAvI);%Cj-a&v+qpEHzw?Q zq{M`>q=)Am!M*UmUW@8kuf-+$Kf7qm%0D*)bj44Vuzg-60(Cq{w<(3{gP@>skn2F2 z8y~ycG~H0iWs+){v`&(DQZi$zt&Fm`Cp~2u-tGKx@gZeNs-?X}1GQTEam5SoRB|3y z7mBbmpGpv}sky27*ck*F(equm#^;?dYi(K>8i3aQ;QwjCuu~+posyQFdaEnZj{(Dy3zlPsAcJ0rl~Vu zniO_>MG?A;DEvD9IEN8K%_Ln%i@vke)!#+IBI3{pZ@L`#|JZsHc&PX9e|+o`ibf%1 zZxC6A5F**vnXx4*Ylg@Yp^ZXJ_AMq`V;E!Ki&B!Uq8M9An?fihN&Eeu_vqfw_xE`G zANQ6q>Rx8v@AEq6d7g{#C^6_{{xto;&ndF`$7?rZ^lx4=T~bJBvV0b|&7MhjbAiUB z8%|~zfwD(7l(Vi6OYBT5TL)HA4_L31$03J#IT@LtfPs-0hfTO>VZEPV10WFqK)Em~ z!2t|W0+4G8`!6I#54^1rx<9g4W5)t6w88V|m_h|*!JmNd1k}qFg=8uiZ_T}GWylYU z6ozm!Y|ml40?+<6a0Q=ON-S&wV`1Z^+M~^bSWvRqvO@Dl^^CP+O((=qSs{bycvwn;n9bLh-*!R1=8Zq8%^o7=8*vDD;e(A!*@YM`+ zxg?ipLX|XQrT=X8Ipc}RR&*7{NAlv7^OVoGC)328UvuZ?+KN~sEeFqDx&EDbqsW~q z^23XQjnz?&9h!T^7;ngYYA!}#} z^mNBQ1+JFESgUR^Ad zgnewF{nb{CGbL6>WR7dzt)+kJDf(TnGHLXz(-p;`mZYjdW!v)ITTSFj_nP95@^2%` zOqMh+U&`}7RB@&$EvJb9j2c@IQkUU(1+R4d2!;$P}Tr;{0uoz zF8JY&#LT9v`rI>5Ty9oKz3?b`(AS}!Nn6ZIsCo3~b1oNe;rDG*3K6T=e1m4(LEWs= ztwD67|$zZoZBAPQj8 zD2ucX!O8LB$;t}_)edj*ej6i8(NEq^=`7+Mk^vUmixx2V0{$1`_rwc_-!HspUNU5+OY*`m zIQmfQCn5?t|1jt{6nNp13=uyn$bV+qQn~JDqIfD8pFtE%0L8bPKe|7*$qDfHRA=NJ(YP0vZ2I>)Ou zJWsGg`A>aJ0K1Vnv!daeEXDXyg;MX+p-MJbgl zhZbnWWw+|g7pwS7N73%{cD=sx&?|L*C2hdl0ncf{quyA*z$WFLwqy0`Hb@D~LktGq?x~REsjo99wiTk{|anZuV*Y||l-6#88$ND@D+C~g- zXso>!SDz)!My!=E>p4lD`6KgLs6D(d`fXXL&528w8}25N+eRa;oHx6*WYcD{XDsyj zPI2A}5zn|szsHsyFxq^m_YUJ|;h$yUeYk_u#HTCL^(`uG2hT7>`J`$I)v)O(Cliy` zKg1;D*=UnJ;ACW;g;KC7$+G!xpoQfKGS_Z^ok%(4@L1WD?8l3`S{?;sTPlpQu=`>j zgiMAasGVcrxP)Ud)~LjueK;Jug6kO_O@Lt)CRqrs&$d?^ZJu-m#0xnggMnaR3}+V2 zo{eq-8x1KW&>M1S*UvY$b>Te~hEyceO%2&r6)B+B&%hX990&eA5iJ$CBbof;1F66k z!;~1)A&??Y8$aT={ty{yePj87+yJ{Mtt(iT$C1ft1_CdM)q3N7iD^H)z4qN@Gz3%@ zccsYGizbhxsD7!!q@*}SlZ_{<8cGhB(3hVNa(C&lF-rZD$&4-8;?wW%7itf>`o9~$ zy=4DrF zifyZMV@6PSaR}nq6=6{aMkz`Do+q!U6ZC1;mnL^Z9d$v+} z#)v=teALDS|L}_2Z=wpfRq-TF?Z4Bjv?D~{VxOzq_?Bs&v{x6*ObkS*w{@<+^K1FM zshv8y`;^Qley$dWL2c2Ms@c5C2aKF6xtC~{9;jxEzu9<4-^wBcv+wji*TyTyQXYPH z6cSP##Sery+!nc0RG!m#OYR71;|%TXku9aCdMt0~^Bp5)Scoq&%8JKa9Z2WM5{^OJ zOO=Thb?!D&j5y(7f3oG`%N2U&nJ-lr#4j_q^Ea(mlexdzs`$2t4+y=Ib4X zYnpvMYlT3ErVoHQsM1W41+vnWLsAR?x0@!hYcW4(MzAnJ9Pn}iJdbo#4tWYOswKgg zK_GU;fUFX{bqz7}H(3o8aEWg8OeZDn5R=GJy({L>kOF=5H|jI83Dj{R)yv~lp3)M^ zYtQ=q(L9k!DRw5?#1rFW+GyO_1YljdMQm0~9c|8sG(4bdcE!d3EC&$?h}xroLkd0v zY7exLup^X2^WcDLC1s+FrleoEf+o;WF-*K@y^OorOQ~6bThwM8RQCN4NyGf97|4#M z#GYd>RPXf}NIeMM4CtX}+sv178i6lDIYD)VPj7@zEg9SUmN2Lln||YN`I?ZDgDI@+ zZ51>u$PpV!hSW(6Z1SB^iheRLCE0^@M@6by&xfaIaip^*^O!<3s+WYK=>cYKL75I; zTi|fceaWWu-LceWP*Xl`I=?s>=k(OEos@Fzjna3g2gH1Btg)#=$VK=@HY1Q06#IbvUENcKA2NjZ6&iW?1(o0JH@dGm zEM4s0m!T&z>?-R7zZZm%tq8~t#9Wm!i4Z@(+FEY0kv$4zH5h0SWlmjlu&@eP3K1RAK3N4A(A~&P!C2DqY~pL zE1N-ODP;T^k{X32h$}nPeGS7)xbxV1pS}6cH;;V8e{o=?LBv$Baa`-{c>LglXwm(O71(8&=!qI*gVZsv zH3=1&gqaSJ-*2Ck^_a>*!d`l`=xT-6r`0cUE$<_5BwychX`FiUV>{D|O+~4Gn#s2m zu9WrS@l`Yh{ysajbkH{)#X`&Fd8N$6wZ3ed&P~|>%j|{0{X8EoS$dqX+%Slpxc{b! zoO6Ol*X)kd+0-K$Bc;TNwX$avz@uS6jXZW63lG2!I8Y8LK-o}xfPlg@>jD%PdQ3Qz z3nBgn>HxPj^D9WOlr7H&a^6am{l$~0!3zqQK40|=uyud16g{XiTL|6~N@r=hHSvHU~2!CG`Js8i?*h31CvIUyc46eh}2NX|Fqf-$7sOs8Lj-vL4gj3opNzv0_c zgAdm5U9+QKgAzNw3=OHV1UiQ@d(%UO@*-lw&C9~zj6QnLu$M`ioKEkbT7fq6J`DEI z#Q>?2%qc=0loOfFmmZHV>DH;_F3ZC#1srrxjN!7(#cv+jFkR%YfmchoYKQH@u$1Q! zXQ4?-gTkq1($%HTxoDrQ7~;f%xYm>^3BC!fhhT)+eM>_eeue!l@klNifb7ykt2DTo zNV!BolPag&$Kk36#7-GpxO&V-dE~Xx#^*PktpZL6RiF0SL0EJdC8u5vU9t!~A>J&F zg(vW;+b#Nq(Y_V_&IZ=IDx)+9YM<=!_F6pU=`ka3!NtQR-?m3CCCFx1aQndA$>jlR zw-Fbc?8?Z@Lx@p$onP>RMYtsMJGdQOVXZ*3k|s^~Ox zf8|`sj}n?`ce^ZcP2ec4fc0rt@saa?I-(PGP!s%0Cr`Z=Y&r_&Mnt~QLQhd5(kaFy zkck%MTdYxJ4=i=WqFic2IU-f5fCdsF*Fek2~o5*u-orYXuykZ5mp9p?3sN%P|4FPN*%#0H25{{l?%*Hg_U*xT! zTQ#2+eOwhys(d+s-n{2jWzK~7Wtp6MHAk1x%-e5z3;|+-+MP70I;2*fg@%7SiRh^? zJdVVA4+WI0Ky4m<T<2Lx+GgM>;NKe~mc@8%og-@Oa~E7OnCVyV~hq4d~k&no?Vj#Mdm}-O5J) zXbZ!QaO&!N`^RsaYqtN8ke5k#wOXnarS7SaS7K4rd`lu{$s^>8n$p?{Q1ln~%sfd} z`u+CgQme3uFc^4MFF(!E+jaV3L+z2Av0nJO|3Rha_rSS?o#^vy$O%!Ot@z`<=|4udC`m_x zVc0Q1uv$0}uZ%|gAC#py71aJ^_}K%Wt;3#hk`Gislt1XJxwbZDq(Nu~OnCMw7W|37i=>@OF0R za_&c{-^xn-gXjM^mR*R0j{e8nIx(+>MdtKt>QWd5#? zdwuG;eArNUevW8?_?Bb5v|)Z>Hqsf@j=^rHy|ydcmHG#!ghq3JKXTYOr;Op8VH zbQh_i9}5ffgpm5Sa|p{=->xcnc};|hCD=suRkM$5KxEGB%tlJob2IQ7k&+gNJk20x zN-;6t3Qn>yRJ2%F)9N9LTY*0 zoviRLeXVaCo;OBM;G=~+wJHYnD>Wc*QoexL0?-fKg`P+_U{}oF#qxfX!osZ~N*T^D z26}OrHu8FyY;2UJfPsb(Fi}!eEWFnLHaAFn!jw56HX{Ev zIY=llRF`CA^m2trAEXh2M}Pmw|H=-e2yceabf`kGOh;u?NI2_%6T$%x)8DoWBeE+X zHp`AmDJh}C*|iPUR+%w~Tq3k46qgIR2;T|a+#ThE zWsJDqOySftC4Rt>IT6E#k-WF?lBkX#F`hB_EudgjEi1vtSagbDS^Rq}3W|+f*&Vh< zd=ShHmrC<;YOr4um4@KaY*LT{i-ZC<7#>TZn2U?g}i9d4Z*2&VRK)f?>IR5qIq0E z*fTxqPB+zy_$pc8!+6#67c~VE0g7#p#!@cv2A?2+z|E_p3^c z^Pj)>a=k9yICbc1TM%{E+i+QyXDb!9vtaSHDj%cpt#(n4q8;?2+EC$Kvml3`pRUly zBu(@8$J1xh9?PpYq!CQtZ?|y2O!3pbl-R=2R3CTqJglI3HsJ$a-cowKclSmjh1)DY z_|4i##>3)IRp+*U8cR#Swlp_cH;7~s)(ZYXU1|vslKoO!VRT?cX(AkZi1!JtCHRlb zNJ`Ff4$J46x2HuvvQAg}M+o?91+o`NRK7@P>K^`De;xlR517qUk!*5WPwK*^~r zCkccxS0<;{)s+K$7?4H+<~d&Eu644uabs{>p<)FoPM?=bhN?@$*{6U4vHn%7*P4+AJ{!q6+=r*%3k0p=f*9E@h z$v8!AxwICKxgz4Lk(vFWn*8+n9dkIXQk_TKY?E|0+d%^do2TCX+t|KAydBQsbntVZ zeennUwJ7~64Fd+0-;%fnd$SdNsLLPOMg-^&0q4am$kNc2Qv$x8TgN3(A?qh<4Zv@4~%>WEegUn(cF*;7#k0)@y>8%twO_iX!P+U z?;>X#Z1aeFZ(N`?cEwtchw}h34vv8J+9c5F@_MI95sIg+bW~;qO5U`6LAzZQFoAuz zfR);NrLvKe)D|Pz80?(~)vgDPePg6AJb%_!rBjhzi#M@)*GMrmXelN=xssRXrJ23h z(*H%98k>;;Hy6ax??E#Z_k%n30dIok=#BE}7-=P&9&0mn7e>6lmEl>|qk)Ey5H);Y zX&_3KCqlunO3P{Xbo}9anSLGVDSJ2WR^)BnvuB@W;9DDBQ+q?)Xi@$LXRGgC89iZt zq(&#CU+5*U6>OS2Xk;1Ih<;nTy=fD!W6zcC^(fS)?DNGdUn*mO^yOTUNov&Vohp37 zLfX(-wo|C>^$DIA->UGN4S5U;2Gztc|DZ(oY#}N&ZsLzTX1{Do0hfc~T{~VpFne(E z#qEoqJ|=vD`bi83^vm~3Q+IER+H_m7H@3v(+bJ6>CE>3nGkIzGkLfj=MLxYRv-8y_yj#MqM8(2RgbU!2tzzIGqW?VCFs zPyXBxuy$qX^bM|`wTHWa?F&Y|6AF`@c~FVFh>7491C`kyHvRy@QAak55-I5*B&C9Q zl3j{g!a#h2;MU2;S+ha}Ev)G*k-7@YyY*_!2GtnpD3Bmoh`HJPMf>>Z7^?IGi!C>` z*9PDTgJFrOrC*8~5iy@OP}#qDUOQCr*xqE{2LYC~JC>*{^o@$!!#iqr_@#+?53$1v zD!N$4e#K#?vuABxX`bif)zJ(4K+??6( z*9X4?)>1Ee_@vjjc&S@SX6GL?tr(SgOpyaEz6;dq587v%Wi-CGSflB#;4(~NtReq< z4m-n{C)kH~AR?uW+g@Qh9m-EP^dykOh8IAh(*`_q3oVeY$efB!Fux-B?80!H5bmRj zcoMOA=Zo^JCDF2-4{cnOPs&z*e5kgMV87*}({_){d$zqJY8OBSU|>F8v^IY z9>D@pbjM%?p(r}4T#~f_18_IOx&Xojl(ris>nx3M6dL?3%sG%2jfqG=!U*#LQg+tq zxG*+aAlY_E?Lh@oVC4mj5nZw$3!fH9!&q@vCQLj7*uCqvkpBv@*R?M_ths=+XM-5q z8i#;zYOrA_;hZLguP6V)RyP6BK>S;J1JMf#F_T~>g$%^&OkGG3T0iJ3?w4>$b`I)h zk}@tM#AHiOq@P3-y~yza6cdsqk_q2DjF{Uod)L3+Y65V20qOm_a04YedJ<=DOz*l1 ztt&V$5J!?*m&6I_mPW}NF- zL&N@?V2+ex*a@YRP#);#Ex^_K>*pnpVO4L=qesl9+$ixr6mZ1qvN!MB&_2@OvqM`) zO!yj=#5U_xFC6Z)*)@p9@5`;Oq!xUw+t;2w<#sD>PX4C8>F1|k7UTC@$MZkZ-2uiD z0heURFE@xk9Zbqi;*dIyFXA{6Y1Osuh4Sc`ynW%v3kG$>Fn`K#3f{hire@xh{PZ}X z?iQ|64ulIA^L_S(Z@r!T=}+vj*UuG|HXi7zc&M}RVTz31v}yi@$jDa415FdQ-7;tA z45;JV6934|>+a0wRmqyd%*}Qwyx%aF^^T=B(a6jxYOL}>Rda;y!^?Srgfq33x}O6c zojJIy`>3;{<=U|`Ufj`tG-q$ieY;e#n7Z8Ei%FV^mAw9KlmFXBm(1?W=q!i1CsJlr zS}nzb{-RUVK_yvzij#JAnQ%EP2gjoR;MXVFqQU;v-qaPphCSH#zMtz#fAh%-v-M}bkT;U=snOazq$T+b=zd|~4lc^u!mPj} zo443t0Zi=V)4BlSIu5X6QAlL&KY&O@Qb=U3juDgW|E6pcG-4{Yu1?wj*Rm8-h=PM# zjzzq+uES~2LgAqogHi&rJ^5^gXZk%Dc7cz8`b0D;=W!chg{p^}E#O1xiMoxjz|@OO z%f8v7sB=VEQGw6`T&R#?n2VfD%FGg>vKvLw;%OhsHX6DaD!f8y)a)n#mk}L2$km{u zVOqNaqD8Va)NFS=6{j{=b`Z7j-pMIyc=%7A71VK3Ay_$Id^=wXRNrK*Nu(S=wNq>5?t zc*j7C4|qL_iK;V^c=!>Jss^SIAVOqfSzvSkm{%8+G#Jkn0HZ*F3gj7x-9))=0zLyI zq=Tn|VH_5jqW||cCUlqxm)+6Kf7Ai8a)#BPM> z$ss8s;HiVi1O<5jh{O>3OJ0PV081-ygCNMdf^kw_ngSIIQMeno+xVZweko^{#d{W$ za$k&F<+GN&(E~r}z?Q1#mI7wtkIPOveI0&gD#SIqhCS4oI~-@UYS5zMzrAfg@L(ae zXEqa2_;CKbH1A+J_GZn-p**htDg@NHDTG@tc+FI zL|)OR*)#SDw30wc1w|cs=2x14zW#`)|mDNgE zj&@c!FK`KWBRQ@8t!-(;BwJF{8upkw zcsF?!*PNLvsr@K0pZ^c47(9Q!NF6bZTyr|Rqw6}M%lwKTx2bN{NB7a(_n$)oe>Uhf zO>gV&u$}#LR>{UAAW%d>ri%6Pw=Y6-TH||uG`~G`SM%OnVWr*Ncjtqzk8nJ!eRQHl z(4Z=O->$w_e8s%T&gaw1?o&o~PfKG|`&Yd0 z{z|YpvSY(9vs8meb|(tbW|f8m^>7snjO?K=gY*BO^kwy&+UH-W6!T6*w9eIX+F(nE z#LBPh?X~~3GYLDhTcud0SLgYT0kuETKb&>+2#5N;$a_-yKDED^VARmQb#Xoyf1doy zi=Vr?!^-UJ{^upjn-aVV4>o0HTrahym$%MIlbHY+74GO+~0#}bV#OrcD26Zy~yF|2@_Wp^VgV+0Ri zMm{kYCI9+O!`*1f4zgLc|7N{zgo13C=<6o-W7MU}mc^J{%^egc${7dA=};qi(*n2q zTf<$L7O0}|)31kB1mu^?rWoM?rYsYD#jKdVVtddxiLl#b-QJqa{4&t5LA7Zwg+lJq z5;kxKLaIuSvLp}G1Te+&6GkcpNLwTYL1qmdGDemsg(^;u`Jq61MxRcvRR(`Z(4fn? zHa6ydeeIcKasTaC*4%qrdmkK{@5XJSzvnpR6p`_Cl8VvB-CxB%+{j(6+#Qm7KIvwb zQ&n!6ZJ@5$NU>UPWRs2B;MZ=hfKN}v*xcxKPPbaE9$HAIvkH5WS5DXH21LD(H_ibM zVeC#vSH%zLhRx+2YhHR}>#>C9t0LU~ZR}zK7hNA^&;KHp`iB!ozsVMt_-5k?@kXFg zg)$1lr&I+FJv_?;4Or?K_2}^k)?WohQmmCV2(nnfVH0+bL#zx2p#mO(UIwA{BK0+f z#}(-kNf-!|2f1i7o`EWZzZS28sd$?&EwZ!NlHI~8WAR{Gh)nA#f%gi6PW=3D?6Tc@ z>0oZ$U&0X1hFXtdzKV#4zy+k{|8EJx%sj?`kRSE8Ucy_5(Eq@WiK*TqhB1AQAuR}i z3l8B@=>JG+CTN5i;|Hx}GT{alVRv}KQU)#rfV5d5je7VSprpxo#t;kaX^D3DBkYD~?F8-AgIl5KWRxECf*}AQD5MN)0}lofwskth05=dk0icgI1>uq;y4f?E zXFrQ=4_ZT!w+W?h!`@(`>^tS(A6Km%_IqhezvdrQk!ruu*P3&6xT+^T6Xk`qZb12* z*3z545~Sp+Z87+BQbzR24I^TeNb40J;n^a}&D&*`ZErs@c5 z#(iE3xO?@U>XAS+hW=t~^wS=mxC^=yyz`Iv8D_^7d;OO^p(}T%4UKLCEP}G<&-^cX zm%_dqFLMl>pInif3RKoM*}1m;bD4m}@7`bZ&kq|^a7$78*zxOMqw(jD(Q3k{M(>xo zOd7X1WVudvNk+|9n+ck#k~ox7d)-72HTfRNj&>?gEo%=nipAsc$C*xQzJP7W`;~B% zVzVJjX5Y!NP{rQJio|j@1)v8>$MQ01LOpET&57NB)BO9cGp(H9iz>+R%Io*)?FiXN zd_gD48J^BP;Jf1 zW<#;Gy2bBKqitR?Jl8{fig`MN^c>4d-t5`%_>KEoZ=rc#6peT@(Sk5={JNN+uJiU+ zyn9lxCFVPBi=RtqzOCsN^+JOr8TNLv;)kFGKnY71n-9)7x{cvK@7*+RGN27xK{PB;+sF?fob~h+#^@RGB-Vp z@6_jH5#Di_I#Ksag28xs&-7F5?Nd8xl03uLcY5(VTJpQw8IE9oo>d=K{_w`ZMEF&B z)y?@rj1c|)?YFV>3$I48ZIoA`FAP5U+)2Xj&Eolfiga_RLO68qj`7>>x$>>;ncIZD zJ*lTtl|HZ^PYrnc4=PbBz+;)s`MOd3mRvT_O^jzL?!Ff58qHp{wasrJc+Z=Ct^??| zfwk3p#YQc{B zk_9ZQ%wa~9!ZuF=;0vo#40Auu>@Qxt4v?oO_3jzA>8L@=HU7tmKd^NWcQ$*_@G^v;!o-XV0IWQxps!2mXl;;e7k(~f4 zdI*SJpD96C@4Ifw^;iE1Bk13@tpp}c1w-zR|hJ7s_{+CAAe&r&fMAcwQEKinTuF80%>NYAhbB zCJ3sSOiU4RtM+Js?O-faV))f%$vLYL=)hreR>nrip!Yl*b` z8nNEqp4C)=QPHX}zpM-QF7~uo|8(@RzR(PsUJ_tUS_G@5+bmWl$`i}8Dr6BWhlgU>C9}iyHdScT+zRz!y$jD!m za*36)k7mneqdslV^=#;4Yd+u9MMFpZ$1s|26dZx7_9P_a2gmxLu1;0TNe(1V^`b4?!$kjeJ==;SX#c>>LPI@0E|GJmOA zAzLOUNfD?tZg5WX{5?~c8Yd>H*&2sPZc%waaW3mo{g+Dq7mB#?ucaFlr2lpKe~+L4 zHTcK~ps_9~W@T|$l0TtZS>Q!#lVMM8(C)0x^&GJHXtN=8=T34E7_iwRdp>Z=A$9gU4kb4JcB!%)Awt?a60D($&L}1}{2_?Rxl)G?WlY z6G@3JJ1Pqe$-KpE@4gwzpOXnHaMlFbYuxZ!wAr({;(iX-FP<1#)&h=WQ~qCvf@uRM zzWT?t|B5SCk>u3AUz$_jHWX_U<(24b<|r}Swjq2w-9jF(@x<|H(Pwi9$(zlzsQ zlFJN?{tGXS$+x|l?cloK&j0<;m&QhE)4Fmk*+IwERSd^1P2wH zBOcDs-<*oBxckua5O#I<=4VfrQl(|{LQ=chqE-)Grf;;8k{PM5RNv}(FiCbzQ$TaV zRxP!6i>+zT?NZTtXIbByfht2(?;DGZTRrNGinY2!4ga9h%$t6LQ)TPrS-mN@D8Ytf zVh-M6_&31Bh6#Vf9JU|)oUg?ro_xAl!SO$VISBhO^ zb{$HyY!Iggru6d>!?*0!^82M0^Z3nG35}VhP=gCi=cJ!s{V2YWDUq}@*MOwvPK(`c zJ@m0`^q31}N{h=^kN?~KI<+y{>5jvnU*A`jebk**M4hk}pU$7N+;{t&iIBYH1CjlY zw6x5gi*W7Bt2^~g|I8Hw!L6@;ef^B~n169g+JyH;ZPx3Lm;XV%Mo;ujZurU9D|q6o zoo_Aa1mUW{j#I|-zUb`M6_ZoPvpN@++Y_7!=_VZJHT;sL*gRV07IUt$GY!k~3wvKC zl5b_GdLN8n)sNv?tt&YbHobU++fVS(=iSfb@VUdsa!(v7Sv<1qR$Yi*)`K2u#^ol7 zw*_R85cdO6P%={|?oOo0QCq7mK0liI%GvH2aPd=NUshF=Pkp0`+DG^2QIUC*rTV{k zzgN^rZJ-WvrjzG%yX7-UmPgUq0H>m07ryR!pSdny+03-L0uY>eMj?k59~xO>L)!^X zSjaHagA#K6{`FqHgexu6Bx$2sHQh(O&9{WxyfjGROIa8rueX9OL`pYfCxk$gD5`2L zclg|=MS^G3ht#LpMI1!WSUzZLLQEv#-Ofc^3z*w|u&6}vgK3g0ryO!9;ox{e94})z zpy3wIMv5qWAILA*7m+xXr6?B-`Sca#MTDe)MT0JqY*Z7UXB{iI9`#WrCLVRoi7WvF z8BU#0bD=4ssGC->?2YG2C@YDvzNbcWFHE+rkvllh(j4Nbp0M$Vp$Db!4B#Rr&8csL z6C7s_I!~Y>w%FN^Q0~N4dAOY&@3U+(AzD_y8??RJWE!r}OLdd4&F?upe@g4X6>HjB zZqt)Dj#MiKWVX=0!Upu;KL+O5#93VSDoh zSKutftb;*-2*tP}XFtNmV~%!s<~q^@`gH|Aw7nWJ)3PDCVUCfnH!asWQ+ZJ>EHji? z7J8`u`!S;3PBsPwC|MDbu&0Xw7O5qM&2%`Ta}%9D-;mN!@de#-6>DUIZstWWJwb5lkEy^e6-k??K69XrAy^|3!?LH$EGjNOk~!FzwFP;UqY1kaG&2E#dS;22};5 zNFcu08fXA%Kpurmy?~j6S}F_enI`~;84SBD(B&Y;X&ih;^_6Xl2ftTM=HDy%TK#LR zCa%wy6yzt%U!E6FA-hGCYh+n-<+9N$+^>rQ*qHO69>mL#yc)|tsCZN1LFT3w4RE;6 z)a)*^%-_z{>c5Mz#e&SfH)ItsP_U)ymPb-41_4pq;~G*f0OTUTqh9&3OjjF)V0n2% z)r-9x$EmKI{`YE*Ky>h-o4;R^Z*J`f-84{nk5SL4mNO=a56(@m0K zqJ*zeIiPg)$g^WI0=#GaYt|B}xJK@-OkHv*xhh;lJ7lDTM}X6rOx$_)b6do!JO%s4 zre=doNV-3(;{6Izm<{(u+090?9jB}W#dv*&H+0g5PSE9IRW)bfTzw z%eFX@ccTg7-^{}f>jTiHzGwKR1L?je~2=CBn&*#M8N2VsR+*p zBUpgP?Ae;|5f!m?=cT_up#pCZ6ZI-*gIRWc=lZ{P7T!wa*-|u%>j$<&24?=fJbT9< zQU17R6(3eAA}+tUUbelIr>RLriL!dFt~5F1V49BpLQ}t8^mDws?J37EyKO2V^+mY) zzS~2M{+CgycH-~!Mgj=C)%R2qYNLcAEGt*3w$ZeZSDQ%N47NU_El4e42Y%g{q5L>~ z+PQ81oZ6>9O+ihr3lRg`za8wVH;5Dct~^qtaLs(aCvb4;b+EHRd&jatym#+D?`>6Rn|4j=4or$|byNhcumMV6N*p`~p_+@#@+GOE9 z8>O>D(U>o6^_9};ym$r%*{^TiRcllBmQd$#G+;z|NpRu0eDaK&w{y-!;Oj%*4tKkX zsHqF?FM2cCrWSlF>WcC3!^+QtcUN^Gq<~td_w@i`Zikd~k|z^NT3>a7#T^jGkx9c) z4vj28|2B?H7{U_hRfr7cow}c}CwWO`|KN~=`eEtdJ8G49OGa_tA2jOejD~@oZPzs# z8CA~8V&{qg>8v04Os7PHX?WqgJ$}y`G9~SBJ@!3*uA8R*U|9h2WZum1{(bxJW`^4y zsrvuH8X^Ay#}V-Ce>XEcOF_^K1Qv%$1wuM?;U4!ZE0tWMviV^N2NU}s>XspDANC}z z293IBK?;G5LJY{N%h0|4?*yXAlpRaS6GXQw3F%ko&eB+-Ck~R|)+`Gb9El7CTKB^TLVte^4nWqf@VHCdaAD zYpl7Qs-6{*(XV>iw?9EyF@5~EwR(HYrdYqu7p+ zc`LEl+bt`O#CF2Wv2g~uhC_30s}YSS5zN(5!(hvA4NSr;k5SNi+DnZh06$W|Va|Yo zf~il3;RBE?sPI)&ZpXjduPovohlaIkbT0VQ4O%P&-?C?h+Sb0XuMu8frXyTB^D+R6HT+>1Z7;_# z+rnPI8^WR~otbkRhfN$`+I9%HpE<@=?teqm&qgp;J_|A1@@{yF5CDJ(fG2hkq0QMU z-ZPtdr4F0jD+eZx43zv;vVuaQ8)J(JyS)^U3(MDyHJ?Ff-k0(>LI#sIZ6(HFk9~B% zE@3?Ve!63Pg&++q>=j-?!0_D?uGv)3X2mGF8C{>n^_4kkR*hF#v0nPZS*iF#VCREc ze0f&S;X{6p2~ILC*ToG_&})RW1_~pu-9}&hU?3g$YFbm}{FT)@e2S`4{-+wM<%o@# z6sqf(*!6R_3-`G$;*^H2@w-TC!UbwF^E1?Ir!Cn+4x&xlrl`H~6l5K?2hH45-=M<#2I*_a zdIH>o5KNN50!XqO&QL`6{ncG#A#3C|%GjN0t*-rTOSVddn$L_*U*b6R5u{C^BG7C= zR0cNKAvQ6`V?xABLWhl;Vtffhk zNF>&|YkuVRg@{fy){{F_SJ!GRSCo|Q9}mimOzPK5!yQiYInDRGeQ+b|Cftwl~LRIn)NZn>`4z zF==#TM5q+-(}cE6bzkCWJXwaC!ULYwO4^n2av-l@Iw>Osxv%~Y2n=*r z3W)jOc7yu~KuR@p&S55cBPX|axqO?^i@c3iq{IO(BV2RxD9_usv7@7byUX_5`q4bx z!gTbBEN~~w@fGo@=)eh^{TAnpV&Y1G_s?}yUzK{2RIOSkH99TNhZME`COP+m9X~q^nH=3Dlq-bs^FhB%@{|~ZM zV-eqa0J9)sXKxbLe& zy8k<1Xtje=-&8(xv*4@HO};-SIP{xaN3dbN{R_cHLQe?-AKrLJc*qFfTop%OP1xj` zCrX*(*BxE9x^Z;1dPn>FM|~1LCl7H_IZHUH1nc`0;NW%=yYeC24_sN*_$jgL)~sOu z4$fMHcscfXk)5nDtotumbXF4Fnr58isYPK@oj+SRTo1H@^C+3JpJWLUUlwFbR0I)x zZLlpU?G}tDw@i&8BX*RrAvCgN*GbiWxuipr)JoBlG@|J*C1W8zm*KrhCdxuGAT$6F z2HB7xC^^!wga8-=58<|CWqQxRMi12V0O78eOeRndZ?5P6Q!Hj?i|IgV7zHR>& z()E)0uggF4S?GPE9{J}J_z)K$sp3}-fQErX4KA@V^; z=rK2+Er;<*YOmU&!1k%@2!h)!fx? zMrfCh5{`eorSEyXIZ@hUC1>i-`zX!UDqL3{Yjx!WB_}712Ok>P0I_7SO3mLRx~)S2 z{p%Mdi4Y`b7T-P%S`5Gu; z?RBzP`t6&V;Mj=ed3UTrdF?=@1mJxq7qXTMYh%imh1YGz3;oDg~O~h zJrB%YlWw(sO>Ppgup(LddH@ll6QRH%3rPOMwp{Y<`*`n0hqE7wq=uikg%%T?t9iTm zxrv5pW8#!rN)k&9MB2}Gti8@An|!^D{)(5n>GIXBYhX|BJ$f&vQLoVs+Y-hMemKSE z?uzoG!;x~=)2S8xFX9{==O>raIBS9oS&rd8YwswFYU#Pv+SIHeWk$HbU8ml`W$|6& z>oy_LEgVsG{DjG-`!^*4)B{u7M|M^HRc9+jlE`X4W@GYIzB}cXT~Zap3N|))Src zA$!{=VVdE+h9#xPt2XNH>Ti2rW$z1FzAJP~wyf=?g-}Fb%3KPx|O5D|r$bu1%Lln)iON4YyCO zdYPK@f@r|eoVcz1SVp}njkKuzL9*4pz8B3B8|%b6aaIrOb(@xPXa_#p?0|RQ>l#hY zt*CvXbK!+N?m7b%d!A+8{qkcXvg$xRbs3Atczayn)4dV-NXu1S_1lB&vWTTLr5@p$ zjxgi1T1V6+U7x3M{k+}V&~VuL)vNE`XT=p8s)R5d>^%rdJ-rW3Cp!y-h>)UWWVXAImX_U$+KvysY)X%~->(^bbl{e~0#V6`p9|aE zNer{z586EtlVT`Y9c=rNrsggby)337G_v1>yDgRvnwv=1VCxZ~UJe>NeLtZKFMxPK zrz2r45u#fQwq^sejv7+vB*cKd8y}$lpnb4s1&=pmrsPyK{~)p4jZ3>)qt$Xo&v4v> zJ%-;*|65gg9X7dYFCojFwC~g97v>v;g&2{CjL)jcMfDTi+f(l`+U+p>qwhw@t5T+F zrwq=OtAwQ~$)!ZnJIg7r9CF(FwE>U9Mj39F6Wexch~>)8k~vO0R8*MA z3>KR03^kI89=UkE1~gbLjT*DQPJZAhbesFPBxtWeP6dv8a6fh^XqZSX8pZ>$4c;bk zGV+QTIUnzP(AVO?Cd)ID!fJ}fdl~xCJTs|Ph@hJ36a-s);9Wu8g6W=Q>T|d`^M=Wq zrbA{l+0XiP|Dkznh%(f0ko4*?k=|9|*eUsA+ti)etf`Yy|+p`dfowD;f8(#ME z-dP_FDYxUq^zMzdjaml`eQqR6NQduG{c-AtfQ#;G&uz+_ z@QV&%=lsYm-PaFq87lbqMRw$r9HQ zfp+;zS|m($YC3a#06jh6DI`v~VPN)R-b(;gS&@M3z$S7bnVk4MM-2a%cOa5Ls`&c( zAJob5j9cbJt5CC1S#dtc+|Sc4lNwT!&&}$h&5|Z6Ds25ieJ~~`#ppfy&gh+%8796i z&zo-&zm@f{XM89Xf@9^srQ6@05qLVK38789mc4NkTEGWrQ{(^bI;Q z9OD1n#3i2;o>Z<0#%Ns}RFy2U8H^or;LJwYNJMH0xb8~t9`Q#gS= z2yFo{45TEC(r7ZuDSgv zYO&1DAJlV`q3C_U{-mq5ZkwB|xqEGDZ`vO2wz=^Rf%m62<#5;++vOee_id!}WIW{; z&g*}eA}HJ?$ztY#_sw;YORDcTG0W7Q*kYq^^Cg;M2qlEimNV7`g68~ngRx28F$|!7 z!V~9+#Ae?M$C-LafU^-E-hMIwkt&9BS=0o#31Rdzmb zy`a{&`ybSJO||&XosDR990PT3tLG9mP?#)%yG=qTUC4sht}P zH49bZQ-5ZA-P|J?gG*l1469L5SZH}i&1}@ufkgDgtwm5k!_^M}FP;+14X9P4Zi17r z(Q+)u|{&X+MaZfYz@X=>BWJm7qSN{qLkB2>TwaD_*148(u)|7+?>z@c2< z_ZY`oDn%hgmJCvuDLbXn*fYj9h7%$)B74zhi89%@m?W988(Y>=r^Ql=vhOXnBuYh# zw*T{u&iVbXtLvI2*UUFF-}gT6eLweoKTxUE;pzZLlq}S`69TgTTJ1Ii9s=aTp#yCo ziHx&*LO4R8`_PDT3HkF?0TiraKsF#t8@v{WxA`Bb_^%`t{`3$aZ~MI$eJ_oa-wnKQ zt-v?Z#^wHw8=0EdvaQVmLfy4gZRqKR0(`|x?~2waZ-lQpiY_o#pdHKe{^OhlpT(}73}t$<`}ZD!#4s;4`ndE zZvFNyU92Itx#5|E6WOrHsyg*;3B2pc{CtE;O^FTV|%zVsKeuerZ}&l7_(IVdm>qEpU3-@G)xT6P7c&O zymxQn<|Izu-)h~uCtgaD5&)S=USfqc^fR)egiQLos4_xSMOA4Jo9sozi*I2>B+|w% z*$oAenW^SPJw)1TVYdOn5AdVNsuLebe-?jZA!tpzfzCiBdrR!PSL{NKPaU%Q+*@ht zp>~}qaMF;To*{~RyQf~ubw^hJZv!q3~7!l z^6_&|hDUh0*ok#B6Vu@r8ZNhICVU5`C$-7yWj^5QECF-+A=Z)zOH{Jw<{J3@Y`!(W z6m0M=oj4 zih;cwWex|b^j?3gmCLI#Vq3iYtmX3kmDABYLV8xwBgCi35#`wScs8UQ@r#(b;?$6unU(msl_ENv;Y8lyaC`!5;d$i~`;xWj z{oUeMK2>Uday-FY2;61t;-L51QgdYf^g*h&pyR-gUB`8zP}*<))+@Xb!qq`|FiZQ{ zkQ8zSLnOQo9nrEsmef&V(M8%ioV&8~C6N#lcxvK0qiw(~PWJC&(O1?V_O^5?p6w~+ zI~-Lpa@u)N24yX&x$AU=&|di^?~MKV{e@ zi<>F#|3tFEJSH~n)39y$j!f;web~S#4XO3pn@V54vT@CgpN&;6*g-3O+w?HDh}%9y zNaKuwb(UZJk{juPLxz^w#_7}>`uxBbbcb(@HWM;|jDnP*XF}%8Be!u8>wS0$k8^| zmIuaOi5#;{P&lr5Lf!ylwn&?(54R5!#cGIZ>8tEI?@PH;$Pz{GF`;?ls99J7WVzIS zAQ|On8?K~Ti#+;`>SJukh6)L0>RJu(yXt@ez6Y6A<>Buw7E^5*CBCatw(k5Ud3Nn# zuWY%O4%Ef(gt4ck9Rl*-0xCb@3Y3C6+HiBFq_M=&eci9Rm%g%J$^U2yYBOEdViT2& zLO)$A&=tqcwK_R%!)a^lR+lyv!RffuW;+t96@_SoQIHb?td%$*uo1RX)O30PWs}-~ z+_S+F(Y5??(GqUEpXMkilJ?^#$B$ zoc|zrP>q1JSOsec*g{s*R+J1ZtLT3@2BeR|Vb>Ae9#DmUR9e9Mt@4Oa4LNXw^PlJc zS1AFPfRch!Bh?%81d(MMR7j{IE~7+aryJjKZa^xHReSuPe&VJCRE*d* zTd?XRXd239R1uA2xGbT}k>a6%amWq;R$>6Kkcdw>!pNk3FtdfOY^0;>XXHeL8wRR<4 z&r>CJz8|nC>d8wEaKJp=5=!9B@j0Pc5@UbUi#B5EKSWnNp2yaLsf$``Kgu7D|3v<5 zRT_cf>uGp(ta!zKj(JKl@qBoWU3*legQECGE1h7rl*(P_KGWidMp_2skRNX=93D!l#}ae(sxwVi7t&`K6CI?Ju(*N`m;+g`wY$? zq`|E!CJqfa!YoHxla%twzVA1R`R=FB=1`M?XXmmLYok2%F{!6>8o2%5g$I{D4iMCS zp{%q#&e(9JI$t{}WIyFy8||-t)gCGKZlTsp+Uj^5nETfu&KM$c^C0F zD(W|C`K?Jix!MUu6*tjkQU37tXU#=vhC;S&f!gZhm4bLOJ8|V#Y{Qk`g`DgYV~$tWDeEI`?{e%_CN6 zd``%L4q--ZM%TO1HeqwFqcL`Uo{?$CrJom#WQR>SuX#+}Ztv;7TSKctI@0+kt)RTi zdVXc^O%;mFmYs>&EK$$Nb^3Esjas;vcOm4C``tiLB0?}RV2S3zT7u~P!IXuDq7HIL zj_MIiX*`se1~pxJDdt0cTc=_~16|!rTU^xsU12u|l{jDwJ+~~j?j$=0uf6V@7{mO}Li6g8JTP$jEUcbo%`_ppc)=aTS zhAL;22g(ZXTr-qxc@a|fdUlxUKildk8Kp!2Y>56kveTVwXJR$|0InX)ZvQT zn&E_8%iOV_vN&3b$YR= zjKAjJg?XrnMfXYgDfiDSt{G+;-ft_LXlR;aAId7=hLR#Gl%C?QSSCngNYn1)NKQE^ zo|Xh<5j|4gz{S?<6U@fnC?a(tJKz_q_kbpZ55hlhFR;>w$Pm4S#S5IN1#(A@1uc;6 z>!m%=59qVLY*7*_&;A)}y6LIIhU?YQMJL1L{l7dxzkYYLa^SY1NvzU>d!o|m#%KQA z!BS<{lB^Ql>L%B&KXhu)$-{5w!ev$S4VrIUYDaAeGuG11!j zeNU40F4pZ@r|ia+9vH#^6Lu%JnY-U_JkB;0wZ*9hdBnc43#6Rd1l4Y>aEevyUvZq$ z`>*h9Ey!X1Yv7@H)RfSObPZ7{#_olJn4f(958nf*Xm!gw#}PQpVff8f!I%kB{!zYv z<}dw!78PXnbS1QIuCFI>LW8^yW(>*i)eI*`tiM?Lmm7F2vuEcYC3jE(N(qzWgrM5O z3&IQ_xatrDZ6)HKE(kIqxbO~P;sX=GB3g=>h%$!i+Y<@KA7r!>5BFM5jYDq$vJ@OQ z5Tru>Ur9qlNd-e#MBbXsdlF6rrtGrEy&?O?ho4C`iq3oV1^4(X`5x=qQ>D<#4-P)@ zf=i3RJxS^>XY9s`=6kzggn|_|_SSk;Uy(v&J_6Ycc8MToN4yNBI$e1;y)tlJCX4D~ z`a?@)6OB)|K2}Y0zONOt&*NP`TP&y(pF*TmADgOyc=zeJN6`B)5^=cY(a}hJro`fc z>_|K}h66xVUas#k;oQSSJmKs~ShA~2kGExfs~Qi6RcMa1t|B0aFeHz+M`FFm*fTB| zA4#y{;o-v0CYlzDmn`mmO8?6Vw8z-=Sn$kS{Dn=g?KR>Lmq^UD78S;Fb6a$(NcgI+ zD-h`>>)@mRc3E5U@p2}1;!5a&4m0(cBSE7Xwc?VDyNxb2!Y*w$j#q1mp&Q>WbI(-7 z-S22u5Nz(bHD|*r3K6+LZ&?sLaDwsayUr)w(qNhc9G+_OUhKs z{x6|o+&_G(ZuGWzyjG|QiuYG36v#b2m8LdoBIs4%CuA;pio|7+e7ZkY$6&&1`1Eho z$!=+HQ0j|LGY6Y^?!U8cyIz%ukH2x9lFRkhA%H+j>uJHU?>D{QIJ{~7=yq|HFL#$J zqEa$k%&K?@_joHdPM=T=n6cM;@}lF~32`Y6OhU=?nuSlpq|dHAes9l;dvjBU(cR15 z--|z292K2?kV>2Vv|~YL{%&((U{}j`#=dK0jF0h7$8-s@v5}*2x=!ZSbZL`-6q7l> zv0&CrR-L5f-cY3(rk;ebYE{EpX0(Iv`=P^|oc0&SkWKBjWO_uJwyL*T9t)}0#CBi) zC7t2LtUvEO%JQh1>Z@y8IJ4eL@UaafDZ;6Z|92C%iUK20g@kNzQ5hg}$Yu;u`*vol zjU3e*)JL$9>jhUHl6b&b_E*zpV46H$L5qmqr=FNiTaOtd_X6u!}SW>>_oe83#!sGM~%fU=On3L;AVq3?m`LHc1=X6Hf6zJpX&&|M(G7P? zpKC>TJ{z07UjE_a$u7yK!9lOo*Wtp#HM4KrY4|6?-0#(e{kqY!w7a;@*?}1Wi--)} zfWhde;V(?NqodYo0Y9`a_G8^2Md*t{OXUNz;(GL6iOUH6#OCAQeYr;*y7<#rD{=x<0@ zw5FZpc-*}7xXCMi7Ze`z2EV5H)8Aenjd&r-_3++ z_jR(p8$6~(^HaEnNcW5uTxbH)N6Ji-jj57nMC@{2y3?tp8h#VeY1W!5^>MrL5Xn;Mo@r4mC#T$#o)ag!4-o*Ds;pq z(NpHNTO1bK9w>Klt=Ji#|eATpgWje#thF@tJ771Dy%|_ zC_=X55n%@_zm3ELU3%TsQ%4S`n9^^AZOaJRzM@|Gb>{ZeyQCe(NH+2VIH#`~i9*4J z&v*y*Q^t=YR?KRHuV9`ip=#_w6~eHvkG4V}S7F4)cqE60D+rI3hB(F+x6ZvHpE?x) zt|$I|%ho-6`_v(g>xx&m`ud-F<3v@rz|Uc}`*tVUShW&bn00^wk3qifq=jN63wM)b z!h+~)ehX@0ni=)>Ttr~h6Vw!ANlLnXKAeU@=?ZmHUc?4>hXkw1-%Hf|aw=8*7j87i z{nqZjrJ19b6WJ%`yDzX0UO6fo=o8)Ckn4EX(X%Tk>byfy2fbb1E;L4;$47}WQ{<5R z@nP`j@K!YMHXC{)L+I_9X}cdj&*GKOohMlzPu&y27wBVnIN?`=CjHU_V#c_9Df4*+ zc{a0}piwYvt=eAMD^-@K6ABCI;BwqU#S6v1J+T-(M)tyYID)Ut<`IL>J_XcOh+Hw7N)A}<#K?WSPRq2R*~)+oT_ zB_w$Xb5Z45e>09}D2yGE=+`*k|BPt2-%o8e`<|s!t^;1r+05!_n{Vc zdWc8|uD;bKIjHt*@aV{OZx1zlhDj;ASuNn(Y+DtT!?w4}6&RBUa6Va}FN2XBT4n%R zI37Wie?b>7HJ^EP@z%j`6kFwTAWhQ>+iTQfE_o!vFtOChR@%9)3XL*o07CKD%dd>FW;iR;!dY zUFvFp>4=YOGTd2#TI@HvWs(__R0{ME>NYEr_+JDap zcwQpAhdMi8aO|o|cdd}Bd~s{I#Dm3wtC{ljB^RAO6F$*qyF`g)Ts8AAw=JTVC(>Uq zwZ5Fm;Em?SU(!qE43H zZ>qngP1F~ZcR&7{u!r1G+oi?6Vy-9LYU=CLOCM-xxGU+v=HI4IuB!k1%4nh@-#ud! zx^NABT#im`j0~^>yKbZqXrf`t4Gjj%yKil#`}bz!Z zqIMNGHm8|l`n*i@%Xs?$L(xt)(fSx8#9u8ZEa%R?gX(sk9r-`aqjHq1ZY2#|{apOd zZHk)e5~=&JZH&Vfo8PGL95v>zWtH7C_()>AZ2U@+Suyg&t`X)kGb5(EI8`MP^R;}o zVq&eqVdWJ5J04c5uEhqsJt6Nm;^8g6#R5D z8lHn(2}DN)g2GLZ2nfw(&Q+zRAO^zn2tZDF@SGqohCCsbcVw^OhlL&A3md(*sjm!% z1R8d;5XiI^flMRGu}~bVO;iqX+D(nDf18UfNdFOZT8fwsrB-eHZb_uu09cW|e}>4j#@is_UCy2tF(wz`aHBKIduep zZ--D3PGl~q+(Ax_hKJD>Sk$eiqG%fr#>qUs*L2Xedu&dQhZG+!ZrN57Irp%#1BZBc zWUJ88yoH5a)>0UOI07Vid2_LPg$zY{lrU@cF$u&J8-}oIe6MaV)SP>*mTIp49re9hRh`sC45Z#K~C471NUg`F2leS*eKpLh@ zqk5al+8%Q~{|HL5z}=VErtw)Wf>h0eSEL1YM(DhzbE~Y4;{RMIA&_EDz=Mpig1e>E z*(sgtjcX(&w(0l`ZT@+lgVmNvZS};yE>B;tw0E*QhHQHYebZ;E9VyylTc+bvQujw* z3pA3Ra&T~SXY$c!7k0KyQMgmrzhx|?ua~wXYn?pJGtrb@)m^mjtt{!+5xeV)Pg`U5 z{d#I;V)T9gkzaQvZr>ct5|KVxR;>Lut(zFv^}$w8=#Iq6CM(058%x>imrEs*qMPxo z`(DjGMTE$E0kPa~qyIKb%27fMmqvEY_=^E+uE$?za=F6$wxZ(Ws2_(q~ z^)zQ!`Nh7?C%k49?7rQIbo@Heyt1Mz-L=uoW@bNJaq5mz?wm0-$mv-CV>R(Q2xO-K zeaE9k1aa@?ybN^xL1SC`k#Qb=i%NuOP`8(bs}n++z*CAMbK?Mu9 zm*9<+fFx}pkP1VWrZ57UG_WB;^%AI-3aCAi1IQLk)(9>)MD|;d9~IC8Dsdyzc|)BL zG{=n&l3-K%AN0nF`d_8+@*&DSLW=T^xjrNGc|vFK{+i{Bfh95v_t+R+LR(F<1q}`> zILAYbsQk%#`&EhQ7^1L#vvV1<$9FHGIo#eeeQQD}d1s#5ZC(3r6P&`4kh4-Xf} zi|w`cu1P37uAV7cGSfMJiT?VBqxH}PWs!VS;`M0<*aAQM>2q29hq#p3w#k+$FrqO< zKV9hK=h60VReHOhmw>^ebCjQCL5g>Qh(MCa+~J~U#)4!>%tMAXZ>R-HCjZO2NQgUf zf?UT^Ew+%yul;FAJ)$MKZWBc0+4)gz2$g|H$rMFHM!2^{ilyJlGkeD;N2>6_cSKzV zU&MsCEf*)M`lTP~y2-zrPc&5PgV{wMi!#^gq}22Z!P*}X^{XUfW^7dmagIbt?uuo& z6>)}oCA{!1Qg5}-NWwl74^NHrvX_%Tw_G~iG-lL^*LYX5(?q2AaD!T`NRo_A=K)Jn zcD<4vN=Xdm&tvXc5ZIlyX~9t%b30K;@ytBRQ|44(!={HR)k4uD&97Sqx9r^_>veT} zQ-03jvvx7$%((v8>z!D)O_>kNLT$u7AAK*g6FCy;ocZD6OFOYQonhr)Qua*FdCRAz z2ASe5hs`i+AaT$?&m%^ukRF2iZ|v9H{B1G1r&6B4z>MeYOp*DwzQgsjtRg}CeW5gb z$;RDt%1c44XqiC+A#%*a5`Sajo>rZ_`n2%)e)^;9V`i{3k0-8yXkbvhinin9(ZKPot-HF2g^`B@Y*3#dL^LJxnVOwxY#Qgqj6 z{q(un1SWc_;W+NW?r%v0^#y$%z(oY$X=rzN4;U8vr$EI1>Dd7QN+-JK=4ZiZPbe^g zDB#_8D!ny|7Fm`g+Jba;l~9!Vue>0QKnOnra0C^GPiE$3<@$KNb2gMG9*jAxaBR|? zO6A(ylNTg@qe8nXV6*~#dHoecQ~alw4t=!$L@vlcDdZs>76Sidw_%EU_Kq8x9S%DS s$*tR9?0PdTR+}wlajx+3uMg!PwJXE73F>A0t-b(>fP5{7_ Promise - signOut: () => Promise -} - -const AdminAuthContext = createContext(undefined) - -export function AdminAuthProvider({ children }: { children: ReactNode }) { - const [isAuthenticated, setIsAuthenticated] = useState(false) - const [isAdmin, setIsAdmin] = useState(false) - const [isLoading, setIsLoading] = useState(true) - - useEffect(() => { - checkAuth() - }, []) - - async function checkAuth() { - try { - const user = await adminService.getCurrentUser() - if (user) { - setIsAuthenticated(true) - const adminStatus = await adminService.isAdmin() - setIsAdmin(adminStatus) - } - } catch (error) { - logger.error('Auth check failed:', error) - } finally { - setIsLoading(false) - } - } - - const signIn = async (email: string, password: string) => { - await adminService.signIn(email, password) - setIsAuthenticated(true) - const adminStatus = await adminService.isAdmin() - setIsAdmin(adminStatus) - } - - const signOut = async () => { - await adminService.signOut() - setIsAuthenticated(false) - setIsAdmin(false) - } - - return ( - - {children} - - ) -} - -export function useAdminAuth() { - const context = useContext(AdminAuthContext) - if (context === undefined) { - throw new Error('useAdminAuth must be used within an AdminAuthProvider') - } - return context -} diff --git a/src/admin/services/adminService.ts b/src/admin/services/adminService.ts deleted file mode 100644 index ceab319..0000000 --- a/src/admin/services/adminService.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { supabase, isSupabaseConfigured } from '../../shared/supabase' -import type { Database } from '../../shared/supabase/database.types' - -type WorkoutInsert = Database['public']['Tables']['workouts']['Insert'] -type WorkoutUpdate = Database['public']['Tables']['workouts']['Update'] -type TrainerInsert = Database['public']['Tables']['trainers']['Insert'] -type TrainerUpdate = Database['public']['Tables']['trainers']['Update'] -type CollectionInsert = Database['public']['Tables']['collections']['Insert'] -type CollectionWorkoutInsert = Database['public']['Tables']['collection_workouts']['Insert'] - -export class AdminService { - private checkConfiguration(): boolean { - if (!isSupabaseConfigured()) { - throw new Error('Supabase is not configured. Please set EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY') - } - return true - } - - // Workouts - async createWorkout(workout: Omit): Promise { - this.checkConfiguration() - - const { data, error } = await supabase - .from('workouts') - .insert(workout as any) - .select('id') - .single() - - if (error) { - throw new Error(`Failed to create workout: ${error.message}`) - } - - return (data as any).id - } - - async updateWorkout(id: string, workout: WorkoutUpdate): Promise { - this.checkConfiguration() - - const { error } = await (supabase - .from('workouts') as any) - .update({ ...workout, updated_at: new Date().toISOString() }) - .eq('id', id) - - if (error) { - throw new Error(`Failed to update workout: ${error.message}`) - } - } - - async deleteWorkout(id: string): Promise { - this.checkConfiguration() - - const { error } = await supabase - .from('workouts') - .delete() - .eq('id', id) - - if (error) { - throw new Error(`Failed to delete workout: ${error.message}`) - } - } - - // Trainers - async createTrainer(trainer: Omit): Promise { - this.checkConfiguration() - - const { data, error } = await supabase - .from('trainers') - .insert(trainer as any) - .select('id') - .single() - - if (error) { - throw new Error(`Failed to create trainer: ${error.message}`) - } - - return (data as any).id - } - - async updateTrainer(id: string, trainer: TrainerUpdate): Promise { - this.checkConfiguration() - - const { error } = await (supabase - .from('trainers') as any) - .update({ ...trainer, updated_at: new Date().toISOString() }) - .eq('id', id) - - if (error) { - throw new Error(`Failed to update trainer: ${error.message}`) - } - } - - async deleteTrainer(id: string): Promise { - this.checkConfiguration() - - const { error } = await supabase - .from('trainers') - .delete() - .eq('id', id) - - if (error) { - throw new Error(`Failed to delete trainer: ${error.message}`) - } - } - - // Collections - async createCollection( - collection: Omit, - workoutIds: string[] - ): Promise { - this.checkConfiguration() - - const { data: collectionData, error: collectionError } = await supabase - .from('collections') - .insert(collection as any) - .select('id') - .single() - - if (collectionError) { - throw new Error(`Failed to create collection: ${collectionError.message}`) - } - - const collectionWorkouts: CollectionWorkoutInsert[] = workoutIds.map((workoutId, index) => ({ - collection_id: (collectionData as any).id, - workout_id: workoutId, - sort_order: index, - })) - - const { error: linkError } = await supabase - .from('collection_workouts') - .insert(collectionWorkouts as any) - - if (linkError) { - throw new Error(`Failed to link workouts to collection: ${linkError.message}`) - } - - return (collectionData as any).id - } - - async updateCollectionWorkouts(collectionId: string, workoutIds: string[]): Promise { - this.checkConfiguration() - - const { error: deleteError } = await supabase - .from('collection_workouts') - .delete() - .eq('collection_id', collectionId) - - if (deleteError) { - throw new Error(`Failed to remove existing workouts: ${deleteError.message}`) - } - - const collectionWorkouts: CollectionWorkoutInsert[] = workoutIds.map((workoutId, index) => ({ - collection_id: collectionId, - workout_id: workoutId, - sort_order: index, - })) - - const { error: insertError } = await supabase - .from('collection_workouts') - .insert(collectionWorkouts as any) - - if (insertError) { - throw new Error(`Failed to add new workouts: ${insertError.message}`) - } - } - - // Storage - async uploadVideo(file: File, path: string): Promise { - this.checkConfiguration() - - const { error: uploadError } = await supabase.storage - .from('videos') - .upload(path, file) - - if (uploadError) { - throw new Error(`Failed to upload video: ${uploadError.message}`) - } - - const { data: { publicUrl } } = supabase.storage - .from('videos') - .getPublicUrl(path) - - return publicUrl - } - - async uploadThumbnail(file: File, path: string): Promise { - this.checkConfiguration() - - const { error: uploadError } = await supabase.storage - .from('thumbnails') - .upload(path, file) - - if (uploadError) { - throw new Error(`Failed to upload thumbnail: ${uploadError.message}`) - } - - const { data: { publicUrl } } = supabase.storage - .from('thumbnails') - .getPublicUrl(path) - - return publicUrl - } - - async uploadAvatar(file: File, path: string): Promise { - this.checkConfiguration() - - const { error: uploadError } = await supabase.storage - .from('avatars') - .upload(path, file) - - if (uploadError) { - throw new Error(`Failed to upload avatar: ${uploadError.message}`) - } - - const { data: { publicUrl } } = supabase.storage - .from('avatars') - .getPublicUrl(path) - - return publicUrl - } - - async deleteVideo(path: string): Promise { - this.checkConfiguration() - - const { error } = await supabase.storage - .from('videos') - .remove([path]) - - if (error) { - throw new Error(`Failed to delete video: ${error.message}`) - } - } - - async deleteThumbnail(path: string): Promise { - this.checkConfiguration() - - const { error } = await supabase.storage - .from('thumbnails') - .remove([path]) - - if (error) { - throw new Error(`Failed to delete thumbnail: ${error.message}`) - } - } - - // Admin authentication - async signIn(email: string, password: string): Promise { - this.checkConfiguration() - - const { error } = await supabase.auth.signInWithPassword({ - email, - password, - }) - - if (error) { - throw new Error(`Authentication failed: ${error.message}`) - } - } - - async signOut(): Promise { - await supabase.auth.signOut() - } - - async getCurrentUser() { - const { data: { user } } = await supabase.auth.getUser() - return user - } - - async isAdmin(): Promise { - const user = await this.getCurrentUser() - if (!user) return false - - const { data, error } = await supabase - .from('admin_users') - .select('*') - .eq('id', user.id) - .single() - - return !error && !!data - } -} - -export const adminService = new AdminService()