From de4871ac69e6d4af48b70e875e287e14a9f9414b Mon Sep 17 00:00:00 2001 From: uimaxbai <61615730+uimaxbai@users.noreply.github.com> Date: Mon, 13 Apr 2026 20:57:47 +0100 Subject: [PATCH 1/4] add fallback fonts for international languages --- index.html | 14 ++++++++++++++ js/storage.js | 12 +++++++----- js/themeStore.js | 2 +- public/reset-password.html | 9 +++++++++ styles.css | 15 +++++++++++++-- 5 files changed, 44 insertions(+), 8 deletions(-) diff --git a/index.html b/index.html index 9c89c36..be50f82 100644 --- a/index.html +++ b/index.html @@ -75,6 +75,8 @@ + + @@ -96,6 +98,18 @@ rel="stylesheet" /> + + diff --git a/js/storage.js b/js/storage.js index 6e41f69..37ad376 100644 --- a/js/storage.js +++ b/js/storage.js @@ -2619,6 +2619,8 @@ export const fontSettings = { FONT_SIZE_KEY: 'monochrome-font-size', FONT_LINK_ID: 'monochrome-dynamic-font', FONT_FACE_ID: 'monochrome-dynamic-fontface', + NOTO_FALLBACK: + "'Noto Sans', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans HK', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans Hebrew', 'Noto Sans Arabic', 'Noto Sans Devanagari', 'Noto Sans Bengali', 'Noto Sans Thai', 'Noto Sans Tamil', 'Noto Sans Telugu', 'Noto Sans Gujarati', 'Noto Sans Kannada', 'Noto Sans Malayalam', 'Noto Sans Sinhala', 'Noto Sans Khmer', 'Noto Sans Lao', 'Noto Sans Myanmar', 'Noto Sans Georgian', 'Noto Sans Armenian', 'Noto Sans Ethiopic', system-ui, sans-serif", getDefaultConfig() { return { @@ -2734,7 +2736,7 @@ export const fontSettings = { weights: [100, 200, 300, 400, 500, 600, 700, 800, 900], }); - document.documentElement.style.setProperty('--font-family', `'${familyName}', sans-serif`); + document.documentElement.style.setProperty('--font-family', `'${familyName}', ${this.NOTO_FALLBACK}`); }, async loadFontFromUrl(url, familyName) { @@ -2769,7 +2771,7 @@ export const fontSettings = { weights: weights, }); - document.documentElement.style.setProperty('--font-family', `'${fontFamily}', sans-serif`); + document.documentElement.style.setProperty('--font-family', `'${fontFamily}', ${this.NOTO_FALLBACK}`); }, getFontFormat(url) { @@ -2852,7 +2854,7 @@ export const fontSettings = { weights: [100, 200, 300, 400, 500, 600, 700, 800, 900], }); - document.documentElement.style.setProperty('--font-family', `'${fontFamily}', sans-serif`); + document.documentElement.style.setProperty('--font-family', `'${fontFamily}', ${this.NOTO_FALLBACK}`); }, deleteUploadedFont(fontId) { @@ -2879,7 +2881,7 @@ export const fontSettings = { weights: [400, 500, 600, 700, 800], }); - const fontValue = family === 'monospace' ? 'monospace' : `'${family}', ${fallback}`; + const fontValue = family === 'monospace' ? 'monospace' : `'${family}', ${this.NOTO_FALLBACK}`; document.documentElement.style.setProperty('--font-family', fontValue); }, @@ -2915,7 +2917,7 @@ export const fontSettings = { weights: [400, 500, 600, 700], }); - document.documentElement.style.setProperty('--font-family', "'SF Pro Display', sans-serif"); + document.documentElement.style.setProperty('--font-family', `'SF Pro Display', ${this.NOTO_FALLBACK}`); }, async applyFont() { diff --git a/js/themeStore.js b/js/themeStore.js index 9ddeb80..8fb744e 100644 --- a/js/themeStore.js +++ b/js/themeStore.js @@ -712,7 +712,7 @@ export class ThemeStore { --highlight: #3b82f6; --ring: #3b82f6; --radius: 8px; - --font-family: 'Inter', sans-serif; + --font-family: 'Inter', 'Noto Sans', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans HK', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans Hebrew', 'Noto Sans Arabic', 'Noto Sans Devanagari', 'Noto Sans Bengali', 'Noto Sans Thai', 'Noto Sans Tamil', 'Noto Sans Telugu', 'Noto Sans Gujarati', 'Noto Sans Kannada', 'Noto Sans Malayalam', 'Noto Sans Sinhala', 'Noto Sans Khmer', 'Noto Sans Lao', 'Noto Sans Myanmar', 'Noto Sans Georgian', 'Noto Sans Armenian', 'Noto Sans Ethiopic', system-ui, sans-serif; --font-size-scale: 100%; }`; this.updatePreview(); diff --git a/public/reset-password.html b/public/reset-password.html index 245ad82..faf706c 100644 --- a/public/reset-password.html +++ b/public/reset-password.html @@ -16,6 +16,15 @@ body { font-family: 'Inter', + 'Noto Sans SC', + 'Noto Sans TC', + 'Noto Sans JP', + 'Noto Sans KR', + 'Noto Sans Hebrew', + 'Noto Sans Arabic', + 'Noto Sans Devanagari', + 'Noto Sans Thai', + system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', diff --git a/styles.css b/styles.css index 481957b..99711b8 100644 --- a/styles.css +++ b/styles.css @@ -1,7 +1,13 @@ :root { color-scheme: light dark; - --font-family: 'Inter', -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, sans-serif; + --font-family: + 'Inter', 'Noto Sans', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans HK', 'Noto Sans JP', 'Noto Sans KR', + 'Noto Sans Hebrew', 'Noto Sans Arabic', 'Noto Sans Devanagari', 'Noto Sans Bengali', 'Noto Sans Thai', + 'Noto Sans Tamil', 'Noto Sans Telugu', 'Noto Sans Gujarati', 'Noto Sans Kannada', 'Noto Sans Malayalam', + 'Noto Sans Sinhala', 'Noto Sans Khmer', 'Noto Sans Lao', 'Noto Sans Myanmar', 'Noto Sans Georgian', + 'Noto Sans Armenian', 'Noto Sans Ethiopic', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, + sans-serif; --font-size-scale: 100%; --text-xs: 0.75rem; --text-sm: 0.875rem; @@ -10911,7 +10917,12 @@ body:has(#side-panel.active) #close-fullscreen-cover-btn { height: 100%; width: 100%; - font-family: 'SF Pro Display', Inter, sans-serif; + font-family: + 'SF Pro Display', Inter, 'Noto Sans', 'Noto Sans SC', 'Noto Sans TC', 'Noto Sans HK', 'Noto Sans JP', + 'Noto Sans KR', 'Noto Sans Hebrew', 'Noto Sans Arabic', 'Noto Sans Devanagari', 'Noto Sans Bengali', + 'Noto Sans Thai', 'Noto Sans Tamil', 'Noto Sans Telugu', 'Noto Sans Gujarati', 'Noto Sans Kannada', + 'Noto Sans Malayalam', 'Noto Sans Sinhala', 'Noto Sans Khmer', 'Noto Sans Lao', 'Noto Sans Myanmar', + 'Noto Sans Georgian', 'Noto Sans Armenian', 'Noto Sans Ethiopic', system-ui, sans-serif; --lyplus-font-size-base: clamp(34px, 3vw, 52px); --lyplus-padding-line: 8px; From 17c382cb93b371dceedce490d2597fc8875b4743 Mon Sep 17 00:00:00 2001 From: uimaxbai <61615730+uimaxbai@users.noreply.github.com> Date: Mon, 13 Apr 2026 21:57:25 +0100 Subject: [PATCH 2/4] glm hope you did a good job fixing recommendations --- js/app.js | 5 +- js/events.js | 67 ++++++++++++++++++---- js/player.js | 150 ++++++++++++++++++++++++++++++++++++++++++++++++-- js/storage.js | 31 +++++++++++ js/ui.js | 29 ++++++++-- 5 files changed, 261 insertions(+), 21 deletions(-) diff --git a/js/app.js b/js/app.js index c60adaf..233ce60 100644 --- a/js/app.js +++ b/js/app.js @@ -660,7 +660,7 @@ document.addEventListener('DOMContentLoaded', async () => { }); }); - initializePlayerEvents(Player.instance, audioPlayer, scrobbler, UIRenderer.instance); + await initializePlayerEvents(Player.instance, audioPlayer, scrobbler, UIRenderer.instance); initializeTrackInteractions( Player.instance, MusicAPI.instance, @@ -1087,6 +1087,7 @@ document.addEventListener('DOMContentLoaded', async () => { }); Player.instance.setQueue(sortedTracks, 0); + Player.instance.enableAutoplay(); const shuffleBtn = document.getElementById('shuffle-btn'); if (shuffleBtn) shuffleBtn.classList.remove('active'); Player.instance.shuffleActive = false; @@ -1118,6 +1119,7 @@ document.addEventListener('DOMContentLoaded', async () => { if (tracks && tracks.length > 0) { const shuffledTracks = [...tracks].sort(() => Math.random() - 0.5); Player.instance.setQueue(shuffledTracks, 0); + Player.instance.enableAutoplay(); const shuffleBtn = document.getElementById('shuffle-btn'); if (shuffleBtn) shuffleBtn.classList.remove('active'); Player.instance.shuffleActive = false; @@ -1186,6 +1188,7 @@ document.addEventListener('DOMContentLoaded', async () => { const shuffledTracks = [...allTracks].sort(() => Math.random() - 0.5); Player.instance.setQueue(shuffledTracks, 0); + Player.instance.enableAutoplay(); const shuffleBtn = document.getElementById('shuffle-btn'); if (shuffleBtn) shuffleBtn.classList.remove('active'); Player.instance.shuffleActive = false; diff --git a/js/events.js b/js/events.js index d173fa3..2aad714 100644 --- a/js/events.js +++ b/js/events.js @@ -375,7 +375,7 @@ async function handleSelectionAction(action) { } } -export function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { +export async function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { if (homeStartRadioBtn) { homeStartRadioBtn.addEventListener('click', async () => { await player.enableRadio(); @@ -384,9 +384,13 @@ export function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { const sleepTimerBtnMobile = document.getElementById('sleep-timer-btn'); - // History tracking let historyLoggedTrackId = null; + const { listeningTracker } = await import('./listening-tracker.js'); + + let _previousTrackId = null; + let _trackPlayStartTime = null; + const setupMediaListeners = (element) => { element.addEventListener('loadstart', () => { if (player.activeElement === element) { @@ -397,14 +401,32 @@ export function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { element.addEventListener('play', async () => { if (player.activeElement !== element) return; - // Initialize audio context manager for EQ (only once) if (!audioContextManager.isReady()) { audioContextManager.init(element); } await audioContextManager.resume(); if (player.currentTrack) { - // Scrobble + const currentId = player.currentTrack.id; + if (currentId !== _previousTrackId) { + if (_previousTrackId !== null) { + const prevSignal = listeningTracker.getSessionSignals(); + const prevPlayTime = prevSignal.accumulatedPlayTime || 0; + const prevDuration = prevSignal.trackDuration || 0; + listeningTracker.onSkip(); + const prevTrack = + player.getCurrentQueue()[player.currentQueueIndex - 1] || + player.getCurrentQueue().find((t) => t.id === _previousTrackId); + if (prevTrack && prevPlayTime > 0) { + listeningTracker.updateArtistAffinity(prevTrack, prevPlayTime, prevDuration, true); + } + listeningTracker.forceFlush(); + } + _previousTrackId = currentId; + listeningTracker.onTrackStart(player.currentTrack); + _trackPlayStartTime = Date.now(); + } + if (scrobbler.isAuthenticated()) { scrobbler.updateNowPlaying(player.currentTrack); } @@ -433,6 +455,15 @@ export function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { element.addEventListener('ended', () => { if (player.activeElement !== element) return; + const elapsedPlayTime = listeningTracker.getSessionSignals().accumulatedPlayTime || 0; + const trackDur = listeningTracker.getSessionSignals().trackDuration || 0; + listeningTracker.onTrackEnd(); + if (player.currentTrack) { + const effectivePlayTime = elapsedPlayTime || (Date.now() - _trackPlayStartTime) / 1000; + listeningTracker.updateArtistAffinity(player.currentTrack, effectivePlayTime, trackDur, false); + } + listeningTracker.forceFlush(); + _previousTrackId = null; player.playNext(); }); @@ -446,7 +477,8 @@ export function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { progressFill.style.width = `${(currentTime / duration) * 100}%`; currentTimeEl.textContent = formatTime(currentTime); - // Log to history after 10 seconds of playback + listeningTracker.onTimeUpdate(currentTime, duration); + if (currentTime >= 10 && player.currentTrack && player.currentTrack.id !== historyLoggedTrackId) { historyLoggedTrackId = player.currentTrack.id; const historyEntry = await db.addToHistory(player.currentTrack); @@ -2145,10 +2177,25 @@ export function initializeTrackInteractions(player, api, mainContent, contextMen player.playVideo(clickedTrack); } else { player.setQueue([clickedTrack], 0); + player.enableAutoplay(); document.getElementById('shuffle-btn').classList.remove('active'); player.playTrackFromQueue(); - api.getTrackRecommendations(clickedTrack.id).then((recs) => { + const { autoplaySettings } = await import('./storage.js'); + const fetchRecs = autoplaySettings.isSmartRecsEnabled() + ? (async () => { + const { smartRecommendations } = await import('./smart-recommendations.js'); + const recs = await api.getTrackRecommendations(clickedTrack.id); + if (recs && recs.length > 0) { + const filtered = smartRecommendations.filterRecommendations(recs); + const ranked = smartRecommendations.rankRecommendations(filtered); + return ranked; + } + return []; + })() + : api.getTrackRecommendations(clickedTrack.id); + + fetchRecs.then((recs) => { if (recs && recs.length > 0) { player.addToQueue(recs); } @@ -2164,13 +2211,8 @@ export function initializeTrackInteractions(player, api, mainContent, contextMen const startIndex = trackList.findIndex((t) => t.id == clickedTrackId); player.setQueue(trackList, startIndex); + player.enableAutoplay(); - // Set artist popular tracks context if on artist page - console.log('[Events] Setting context:', { - page: ui.currentPage, - artistId: ui.currentArtistId, - trackCount: trackList.length, - }); if (ui.currentPage === 'artist' && ui.currentArtistId) { player.setArtistPopularTracksContext(ui.currentArtistId, trackList, trackList.length, true); } @@ -2220,6 +2262,7 @@ export function initializeTrackInteractions(player, api, mainContent, contextMen if (trackList.length === 0) return; const startIndex = trackList.findIndex((t) => t.id == clickedTrackId); player.setQueue(trackList, startIndex); + player.enableAutoplay(); if (ui.currentPage === 'artist' && ui.currentArtistId) { player.setArtistPopularTracksContext(ui.currentArtistId, trackList, trackList.length, true); } diff --git a/js/player.js b/js/player.js index f24caad..ef09ae2 100644 --- a/js/player.js +++ b/js/player.js @@ -16,6 +16,7 @@ import { exponentialVolumeSettings, audioEffectsSettings, radioSettings, + autoplaySettings, binauralDspSettings, } from './storage.js'; import { audioContextManager } from './audio-context.js'; @@ -162,10 +163,23 @@ export class Player { this.isFetchingRadio = false; this.radioFetchPromise = null; + this.autoplayEnabled = autoplaySettings.isEnabled(); + this.autoplaySeeds = []; + this.isFetchingAutoplay = false; + this.autoplayFetchPromise = null; + this._recentlyPlayedIds = []; + this._maxRecentlyPlayed = 100; + this.playbackSequence = 0; window.addEventListener('beforeunload', async () => { await this.saveQueueState(); + import('./listening-tracker.js') + .then(({ listeningTracker }) => { + listeningTracker.onTrackEnd(); + listeningTracker.forceFlush(); + }) + .catch(() => {}); }); // Handle visibility change - AudioContext can be suspended when backgrounded @@ -898,7 +912,7 @@ export class Player { await this.saveQueueState(); this.currentTrack = track; - + this.addToRecentlyPlayed(track.id); const trackTitle = getTrackTitle(track); const artistName = getTrackArtists(track); const trackArtistsHTML = getTrackArtistsHTML(track); @@ -1336,6 +1350,15 @@ export class Player { }); return; } + if (this.autoplayEnabled && isLastTrack) { + this.fetchAutoplayRecommendations().then(async () => { + const updatedQueue = this.getCurrentQueue(); + if (this.currentQueueIndex < updatedQueue.length - 1) { + await this.playNext(0); + } + }); + return; + } if (this.artistPopularTracksState.artistId && this.artistPopularTracksState.hasMore) { await this.fetchMoreArtistPopularTracks().then(async (newTracks) => { if (newTracks && newTracks.length > 0) { @@ -1376,12 +1399,19 @@ export class Player { } }); return; + } else if (this.autoplayEnabled) { + this.fetchAutoplayRecommendations().then(async () => { + const updatedQueue = this.getCurrentQueue(); + if (this.currentQueueIndex < updatedQueue.length - 1) { + await this.playNext(0); + } + }); + return; } else if (this.artistPopularTracksState.artistId && this.artistPopularTracksState.hasMore) { await this.fetchMoreArtistPopularTracks().then(async (newTracks) => { if (newTracks && newTracks.length > 0) { await this.addToQueue(newTracks); } - // Now play the next track (which is now at currentQueueIndex + 1 if tracks were added) this.currentQueueIndex++; await this.playTrackFromQueue(0, recursiveCount); }); @@ -1467,12 +1497,20 @@ export class Player { ...favorites.map((t) => t.id), ...userPlaylists.flatMap((p) => (p.tracks || []).map((t) => t.id)), ...history.map((t) => t.id), + ...this._recentlyPlayedIds, ]); - const recommendations = await this.api.getRecommendedTracksForPlaylist(seeds, 20, { + let recommendations = await this.api.getRecommendedTracksForPlaylist(seeds, 20, { knownTrackIds: knownTrackIds, }); + const { autoplaySettings: _autoplaySettings } = await import('./storage.js'); + if (_autoplaySettings.isSmartRecsEnabled()) { + const { smartRecommendations } = await import('./smart-recommendations.js'); + recommendations = smartRecommendations.filterRecommendations(recommendations); + recommendations = smartRecommendations.rankRecommendations(recommendations); + } + if (recommendations && recommendations.length > 0) { const currentQueueIds = new Set(this.getCurrentQueue().map((t) => t.id)); @@ -1498,6 +1536,14 @@ export class Player { } async pickRadioSeeds() { + try { + const { smartRecommendations } = await import('./smart-recommendations.js'); + const smartSeeds = await smartRecommendations.getSmartSeeds(50); + if (smartSeeds.length > 0) return smartSeeds; + } catch (e) { + console.warn('Smart seeds failed, falling back to basic seed selection:', e); + } + try { const [history, favorites, userPlaylists] = await Promise.all([ db.getHistory(), @@ -1553,6 +1599,97 @@ export class Player { } } + enableAutoplay() { + this.autoplayEnabled = true; + autoplaySettings.setEnabled(true); + } + + disableAutoplay() { + this.autoplayEnabled = false; + autoplaySettings.setEnabled(false); + } + + addToRecentlyPlayed(trackId) { + if (!trackId) return; + this._recentlyPlayedIds = this._recentlyPlayedIds.filter((id) => id !== trackId); + this._recentlyPlayedIds.push(trackId); + if (this._recentlyPlayedIds.length > this._maxRecentlyPlayed) { + this._recentlyPlayedIds = this._recentlyPlayedIds.slice(-this._maxRecentlyPlayed); + } + } + + fetchAutoplayRecommendations() { + if (this.isFetchingAutoplay) return this.autoplayFetchPromise || Promise.resolve(); + this.isFetchingAutoplay = true; + + this.showRadioLoading(true); + + this.autoplayFetchPromise = (async () => { + try { + const { smartRecommendations } = await import('./smart-recommendations.js'); + const { autoplaySettings: _autoplaySettings } = await import('./storage.js'); + + const currentQueue = this.getCurrentQueue(); + const recentQueueTracks = currentQueue.slice( + Math.max(0, this.currentQueueIndex - 10), + this.currentQueueIndex + 1 + ); + + const seeds = await smartRecommendations.getAdaptiveQueueSeeds( + recentQueueTracks, + this._recentlyPlayedIds, + 5 + ); + + if (seeds.length === 0) { + if (this.currentTrack) seeds.push(this.currentTrack); + else return; + } + + const [favorites, userPlaylists, history] = await Promise.all([ + db.getFavorites('track'), + db.getAll('user_playlists'), + db.getHistory(), + ]); + + const knownTrackIds = new Set([ + ...favorites.map((t) => t.id), + ...userPlaylists.flatMap((p) => (p.tracks || []).map((t) => t.id)), + ...history.map((t) => t.id), + ...this._recentlyPlayedIds, + ...currentQueue.map((t) => t.id), + ]); + + let recommendations = await this.api.getRecommendedTracksForPlaylist(seeds, 20, { + knownTrackIds: knownTrackIds, + }); + + if (_autoplaySettings.isSmartRecsEnabled()) { + recommendations = smartRecommendations.filterRecommendations(recommendations); + recommendations = smartRecommendations.rankRecommendations(recommendations); + } + + if (recommendations && recommendations.length > 0) { + const currentQueueIds = new Set(currentQueue.map((t) => t.id)); + let newTracks = recommendations.filter((t) => !currentQueueIds.has(t.id)); + + if (newTracks.length > 0) { + const tracksToAdd = newTracks.slice(0, 5); + await this.addToQueue(tracksToAdd); + } + } + } catch (error) { + console.error('Failed to fetch autoplay recommendations:', error); + } finally { + this.isFetchingAutoplay = false; + this.autoplayFetchPromise = null; + setTimeout(() => this.showRadioLoading(false), 500); + } + })(); + + return this.autoplayFetchPromise; + } + playPrev(recursiveCount = 0) { const el = this.activeElement; if (el.currentTime > 3) { @@ -1560,7 +1697,6 @@ export class Player { this.updateMediaSessionPositionState(); } else if (this.currentQueueIndex > 0) { this.currentQueueIndex--; - // Skip unavailable and blocked tracks const currentQueue = this.shuffleActive ? this.shuffledQueue : this.queue; if (recursiveCount > currentQueue.length) { @@ -1575,6 +1711,12 @@ export class Player { if (track?.isUnavailable || contentBlockingSettings.shouldHideTrack(track)) { return this.playPrev(recursiveCount + 1); } + import('./listening-tracker.js') + .then(({ listeningTracker }) => { + listeningTracker.onSkip(); + listeningTracker.forceFlush(); + }) + .catch(() => {}); await this.playTrackFromQueue(0, recursiveCount); }) .catch(console.error); diff --git a/js/storage.js b/js/storage.js index 37ad376..185c351 100644 --- a/js/storage.js +++ b/js/storage.js @@ -2371,6 +2371,37 @@ export const radioSettings = { }, }; +export const autoplaySettings = { + ENABLED_KEY: 'autoplay-enabled', + SMART_RECS_KEY: 'smart-recommendations-enabled', + + isEnabled() { + try { + const val = localStorage.getItem(this.ENABLED_KEY); + return val === null ? true : val === 'true'; + } catch { + return true; + } + }, + + setEnabled(enabled) { + localStorage.setItem(this.ENABLED_KEY, enabled ? 'true' : 'false'); + }, + + isSmartRecsEnabled() { + try { + const val = localStorage.getItem(this.SMART_RECS_KEY); + return val === null ? true : val === 'true'; + } catch { + return true; + } + }, + + setSmartRecsEnabled(enabled) { + localStorage.setItem(this.SMART_RECS_KEY, enabled ? 'true' : 'false'); + }, +}; + export const analyticsSettings = { ENABLED_KEY: 'analytics-enabled', diff --git a/js/ui.js b/js/ui.js index d88f6c6..5ad0f22 100644 --- a/js/ui.js +++ b/js/ui.js @@ -2999,13 +2999,22 @@ export class UIRenderer { } async getSeeds() { + try { + const { smartRecommendations } = await import('./smart-recommendations.js'); + const { autoplaySettings } = await import('./storage.js'); + if (autoplaySettings.isSmartRecsEnabled()) { + const smartSeeds = await smartRecommendations.getSmartSeeds(50); + if (smartSeeds.length > 0) return smartSeeds; + } + } catch (e) { + console.warn('Smart seeds failed, using basic seeds:', e); + } + const history = await db.getHistory(); const favorites = await db.getFavorites('track'); const playlists = await db.getPlaylists(true); const playlistTracks = playlists.flatMap((p) => p.tracks || []); - // Prioritize: Playlists > Favorites > History - // Take random samples from each to form seeds const shuffle = (arr) => [...arr].sort(() => Math.random() - 0.5); const combined = [ @@ -3039,7 +3048,7 @@ export class UIRenderer { if (forceRefresh || songsContainer.children.length === 0) { songsContainer.innerHTML = this.createSkeletonTracks(10, true); } else if (!songsContainer.querySelector('.skeleton')) { - return; // Already loaded + return; } try { @@ -3056,11 +3065,22 @@ export class UIRenderer { ...history.map((t) => t.id), ]); - const recommendedTracks = await this.api.getRecommendedTracksForPlaylist(seeds, 20, { + let recommendedTracks = await this.api.getRecommendedTracksForPlaylist(seeds, 20, { skipCache: forceRefresh, knownTrackIds: knownTrackIds, }); + try { + const { smartRecommendations } = await import('./smart-recommendations.js'); + const { autoplaySettings } = await import('./storage.js'); + if (autoplaySettings.isSmartRecsEnabled()) { + recommendedTracks = smartRecommendations.filterRecommendations(recommendedTracks); + recommendedTracks = smartRecommendations.rankRecommendations(recommendedTracks); + } + } catch (e) { + console.warn('Smart filtering failed for home songs:', e); + } + const filteredTracks = await this.filterUserContent(recommendedTracks, 'track'); this.lastRecommendedTracks = filteredTracks; @@ -6230,6 +6250,7 @@ export class UIRenderer { playBtn.onclick = () => { this.player.setQueue([track], 0); + this.player.enableAutoplay(); this.player.playTrackFromQueue(); }; From e2b9e7772fe53eeb7cbcc3527183d0ac49c73566 Mon Sep 17 00:00:00 2001 From: uimaxbai <61615730+uimaxbai@users.noreply.github.com> Date: Mon, 13 Apr 2026 21:57:31 +0100 Subject: [PATCH 3/4] glm hope you did a good job fixing recommendations --- bun.lockb | Bin 0 -> 535318 bytes js/listening-tracker.js | 282 ++++++++++++++++++++++++++++++++++++ js/smart-recommendations.js | 171 ++++++++++++++++++++++ 3 files changed, 453 insertions(+) create mode 100755 bun.lockb create mode 100644 js/listening-tracker.js create mode 100644 js/smart-recommendations.js diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..6fe0ad6519b8121f58f6464921e875bce161ce67 GIT binary patch literal 535318 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

$3O7jJE9m8P8zr=id20Ml zECew_p$@0Zt|6=8smQyNi?18BgC3*7xzosL@0#S^(O3FzRt&^e?9TuD!TH{^_x#Vj$KUUsbALB> zU%q{2KQr^}%(JsKyFjFS$`reU?Om5^?;kE`{f;}8kSQdKocJTH!%_N$9{Lu&Q8%ar1_XG+xjf* zllobsqN%G+sXQ#ft$5=7jq}`Zg?l!4Xxgph;~`zm&U>6&Iw5y6?Qwir>o>N@vP>&- zW~h1~U%P2O3FT!;MLQ;G#gW?2^Wx_TC?Qgf$`Yx=Fx>oS+)E4&?< z{$@bH>7%`l_WYXp+R};zKijlw?h(8!e(~2+=6x3Ci+rj5uK23fZ%B1vm*dyQgqPdnpgw`*Fz2iISjT+DRvrJkXapKo24BY(=FGYy9hXFn9%rd{3zj(Z~NoS7M! z_k6qF>!L@DD|3F`$;gdE+kB3&EpU8#mvQ|Zb{x^f;kwpulzHnD!v@bPzIj~V&nYYP zTXs1p-nF}1NK!Sgg5?fB*k*dK!sO6%{m;K}aJ&2|Mb*Sfv6+we**|ElcZyJc@HINZ zPUAOT>o@lBm$|uJV_bI^%6R8um(YQE=iKXgd3cMRH+!#iZRNb+^p4jDd*3gYJ9fWE z-Pjpp_J)|xEU;)_z9D{J7Iq)%5prya#_tWSU;h;myYdyj+`H|uK4}+a8=LZ~Pp+i< z^|FM1xZ7cGrlMQ7Zn3;QeVcn<^YOFBnb=i|cy+LQeaJ8@s^=QOswt65M$nN?+R zC-Z*8=QfINRz7>(s6%bC<CqMua2G@Q+}RjXWKDPCcmsV>-f@pog2>ytvd9ATeYtbwcjb+*81HNQ+WF2 zJ$qlRoRhZZrNv#R#}?i2W`2Cyj6SjDBKBLgeo>*cv)`0LO=b-E(D~i+GTCasDqt~s z-xJ51_ED)?T`5*SLet&^t>64LP7T?XgRAwc{4^%ANyl-Pgz2e=lS0YBFj@sj8i(G+fyrN6Cf08ozh6e!De&usyDMc)CI* zKA*4b8{4q2bNQp4n_I1X@?ci(!B+D}WR38cZ0P&GU6$)+54sMk7hG)1)2>SwFMpY- zz>Dmk{3dFTw?wVq2Z#4nuQ=-5;QmPyGB>={t+@GyiDQFqd89b_;^dHsJr}c-Y`MK_ z$mS;{Ob3+mKYgI+&Kz56EN}JkR{y@QZ?+7&JzD$S_Fb*tRs|hG-Pi8vS!vwCwu6q? zUL5OV)qBS1yyLDOy6j}AU~*tbjdw?!!z&F0}8`<@z-Go?el346B2)QgE~Z`U@W zQy>3KyRzgg)ZKJf&b@tREl=6q-C+56Y_)qCJGH#%8*Uz7^30%Iz2e7*I<(b(U-Cff z_t`erD@zI;d^>Vh!m6s7mcOo<)873=UB~^^ay(AzGAvVG)80+&PECjjtLr>(^;HIbbq}H)8{N5Q+{w;^NVSFxUPyDw(0ncWfxm7t?tnEYv0+HcdIY#vN3p5 z{P5EW{q{TACA4~fZL21}kF|cs9Nu`pbnZ=w#ndED{6dE3M8))V|1 zB?gXJmSK3!`U5)7-<>ow`qYd*4{L6UN?mhQKhOT%3TJH@JznGYiPmp5%f4f-SHD+f z^7PFGO~(h#*ga@{)l8o8iSv)t`r;F?GrRZ8hf&9hRr;KI>u8T_!>>Pic_ymk-L`W| zby}Hj$cTOXh>*cxV)*g*W}a&OZt6eUqqsws2D4u;+q~<}`5I611&4i~yJkc0%^j;> zO5Axj)90P}avnI`F>-ldm-2phPn_(~ZP-W4c6p11cc|c%t%UY{caqlco}%f$c@3;- z|19EE>Qd8hd3LX46#eY`*C~QMM-8poEX|ms zt)+l_Q~S=8;uN4IrXO~=_4ZW&VWY_M7F4%Nn1Oo+L+ zY>jn;H~F3>O}gXq&1CPF@eMz1Ka;lFE9dVHvDU%qHF0>Z_3KlliqDqbF~!T?uD9n> z{urOV!!LKZoYX3zhH1GgX==^2_g#EFYwl|AcfDWPWZ`<(+I0r^c6xoHw$p)Z&ZnL? zxo&n|dd2TKK7~z6?C$UC z`82F&g)40zCb&<{{;__3@7YtHMGxq>BCR&QFSUMi-n1~}`gZ(a=RzcD=Q6pQH&u{(*FHx*_V#}_@7(wk zEvj^y_-at`GmlcGaO>Wr&%JYf@6_ID7kqm4x6sw~Q+PHSxTQpF<7)Pr_`cEly*=st zfF`|n`JP)ox{%Y_k%4X8E-hUjSs>NZxz}qi2%bO0sbIE|wa%n<-q3QuqZ`k?9@i_n zY{OX(v&{C>YX0%2ZWXqa zbh63WYTe`>PFKGc$v(OAC_{^Wu1_ou_srJ8KDTM!z_eeoXzzdDY5nfMoO1Ax^A#Px zw0PvO{o~O>9i6I$b#8GzXkfU=;Ze0c7J=fG6AW!r*FRCa-}gNPaU^@8oXkl z^?;aev8N7y(6slx*6-7gF?WU!NdKiVXP_0t8tR~M`rzNky==@PShw4QK(>GFUN143$N-~QdP|C&V;t#UZ-iV66X zbo_*-y&tuH4}5Csdi81Bu}OP8CuPdw^k(kkPT9SNTv}IqMev;ltLkjE7~OK60}?3S{pN7O2o`%SYmz9lDzJszp?`$_9J?_TSe;X`+M22?t+xJ97*+3!p9 zH#ObX>Q)b@MtvJME32{Wu9E1&C%*DyPbc3&ZUdH_e_grWt%nc64&@$ z(4`^c>c@umKYVQM;8X=iU)YxruW9cWt>4yzP2yKP@k?A9+`{x~c*K#&tNlJ&&WcX5 zvd#SB#svF8^F7vWwq5u!eH+)7t!6}*Op~Sjl~xnqr`WLTRF6-W@7C4cr+(G?U2!8a zBs}0rxBBNZ&z&;&gxe6aZndu8b$b6cU}KF+?HXLjQek?u+}UK_it?38UU_8mH%dUoMmb*c{H!@uwKa@|@y z{rmB&c3~YGYv=n6ssHl%&Oe^ewAV!AH&y>FF$-&_8`tdgr^MLhOBZeMUcNk`-pUo7 z8lCz$CY4Qd+xKO<5A0a?Vd31tH&#Yn9aFJL``2S%$5;=U*m%SIq3PVT-wmeF`pw%c z+x>iP^hf&9?d8tXG{5Oh{Ae+<=I< zR`vJP-hSY=XXD)}t#(OuIXWz+ ztLf?vD=1&S&u4?gUzA`XE@%$Cv?czTB*&3x0`Zk z`o!h;4_MhGj;XY#!rK8)>&A>;(PW8X?m5r%=kinv*1jh*)%tChfwkCexlE-!3#?SBS z1WuaN^ZnQQEzW)3=Tf*$o)LF57jmj;JMY~54-UOzyLHO%_I>!oed~_YC^gYysjv1u zZ#u2tcCTE@Z>rhoZg88}t(%*#_q;bE@a&Gr+xLn_*Wa`v&DBoTZEg0=>6)SHrucgY z?!9W-F*LL(}@k7viPMa{-JN_ z$t6a(2D;`-<1s05T-USxHGa*se&ahNx;|JOb+uyT>k+<1)*f6@)9mfrG1H`_IVRZpF29g)@{F+FFm&%2}qq}+gp3TlTqt;U&k5lW)U}B zUtYED5*In-$dkvRX5%Vvv|Ksj@b+a}7mX}(dg7U&7dIZg-8ZK5`*ROIyT*n@7F+F; z&oRh-=GCgB&S=`3N$b~ZoYhwQf!4jdM5fCy;G);^mjU5%5i3fKno-6)XIu9q`^l;N zKW_HV6p?%F=+rJ%FHd>9Kh^Q8LzlHZcC1M){}(gEG=4K{{VvXVVEOu>tYv#7BwFUS zUs0g@=Fb%?tXs2S($gmAqS8D&bFNkIT<7{cJ$intp=gtDwR^v5mUGXWuA6Iw-Jh5^ zJ|Uoh#%~s_UqfB{LN^l4TRr%?F0!>*uGiaqnvczTp-pS+f}hK!O#RHSRi^4s)>S*Y z{MNCxmVq^b+FsvzK2^Cw_hwd#Uh2Ba(N6naP*$y98_V;Z(&n#seqq9`dIw5nbo3nb zVL^cwX2ri3|JiT!Hq&*uWo_|mA z%kxk+t=|_%-}T)#=xDp#RcdB1*pIoDVe!yq8@5{>xKzAYW9OJUb1dql+UmR}v&Zb7 zeJ&0yRP?atm99HKF6k9s%GY5^j;AMfYvPby>$g$iS2wEoUb&b%!nf(Bo_%MppL)RW z+y46RqmHh4kut1jXOmhVYMNx~WRfcSyl1WiU+L5^Snm`wYHYnzXj}UtI}M&GuJs-9a&E?>&waA{X0ASXOqE_O zqmp8Vd~`0Cx5pB%FPiq|*7~(SerjwN_m{Z}_Bc@^w4u-9v%@aAUg)=V;s+~}GP}}k z46i>w@k>j)=bh8FO# zE8M%{y_ec~qdZ!_eG7XVKDQXv{`r%*^l>>Zx@Vp=xLMDj4^ivmJfde5DR9rf?e0`7 zXPmioFktI4hfB+<9{KWq&*wre)2_Xrbp4rMM(uHtSL@f)`{VKOim9VMESl3{L3Elc z8&`V7wQG{UcB8J(vj_F6ThgwTXRZQ~4Rh5F%j9?N}Bs>P)*|3@npp?#)z_r{1vgbhsQb{_3-t!-jktv%Xs==TFTBB$VyA z{ln4lI{PXnoSwO1c*vozDNm(JEN6czkH&9)t>4GbTOZh$W_r5*m+vpKyK%)36K|b= z!WxrJpXTnbwtvGo+iuTtoY}hQ(fKn+-_75haq|4Zl`Bn6*~+~B_w}83Sel-yuJKzy z>vy(YkwYF`MsGgfY;}_v_XF>Z55DWSBYUE2tqQ@<`<%@eQp9q{;;nP46(2b9z?iE0 zteaOk6!T@%a80hmhVqJk3RmR*|;ydHsnsvb*ljaTDH*4gDT_?5gc?)U%o>&rk zXvCP1P5u)Om3cpYzwg`|Bk$LqTsAn~?Umb{U8@V4j8B?9JjEfu$+s%Ebt@AdH$MBi zN8t_UJ*`^cQ%LG#8@2P`7Fxd-y({^hacQ(D-ged+_m?dv-@jygX>y(-qdR85lh5h? zzLuS8@2LB_Pns{QzGS<&t?jZIDHj?_d|iCMX$>F$dZ8d%^wSG_ZKQb(G$qhr7!`n|x8@ntrPnnIGEdtX{uh}}x%CGy-kg#gz z<-JdDA8x#>xDLhj$628-gq?5HfZAP%WZG@n3X=A zP_~4oy+yTtOC`LtxIel3xqHR()vWR2Setp>qCZDCo>|kj>dv>>(wsUTwbv_4oxa`= z6CYc&Sv$}Du)~)6*)C3fGT!{cru3Qn94N2xTTJWszt}NhdHlVv>9;k#bX()MxYqCHycheVN*!6@YSh}siFH>T4PCm(@!ODj zc3)?$$#NpsxA|K(@u3UN+weT`INCoaRhiBSYb##Vb8qv$I-*Lr;P- zOm3N`&DxLeE^qdI)gWe4A&uV>TEFv_*$lUD(_+*{bMt=v8s(}N?wr13WWa?soy&X; zIa<)U)4Rga`zFVQoQbhcyXEor=z}@p4=;N&Am($gkvkq|E|f}p-YKc|TP5enf_JCi zxSdoz{Q3M#m5LoNxTF1>9pURM9t^1bG+Udq$rbXdrq ze4h`Mz0!5GS+}X0_S$It{=*Nl`2DSg+aN=K&p`KpK!d@GzsHl_U9123 zgCX;ONq_&f_r||x>tqboE?_WZ(u^U|Mx*`SG5zn^W4+b?juDVCInCN&$fg;mKid!E zl)uqRJ@Hqpq`|=DB2?D(MUQ|Ufj=(-a*vs<+>iUe{8;Vv=Fi)z?)hIW0&?ChUsd1# z|7!c?&uowE^AUCaHLkVNmIL+ld)q&AfB#Q>%RQM9V?EhN7aIS$a|On2=~j<`9sxZ9 zdIbJ+A|Tg~pP3hxa%0>L2BuI$|8sh;_e76?9sxZ9dIaX*V2CDH@l*_2e|h0^m5a``TKX> zv42v#<-KfL5Nljyyj;HeYeJd_?xNrQcx<((m{m+a*^7C6i|DNtW0s>y${-1r9 zF84?u68^pJS*5?0G&~p2N3NbefAi-iq+HNlgTb6~`?31>`UK=}EE22OhrfS*`5V=L zN|v#9W`uCn^q}&VY%DtPhocJ5cFL(T-=ErgOZ@0*E9`Q7o z{!Ys!R+TfG=s#2VJ8{yp|9vAMW4vX-|L*g_KeG2Ee)@O+|40OXuC83ma`Q(_<({U1 zl}YloPc*MyJv_xjceMY;YnsHs-_zT_yNAJGoX-)>yN{cvzaQ^ZOa6$J#7JNM_YshL z2IkBRVvUQW^MY10=IQpYBOoy<2)}pF_1CrZwf|`Z*#D`I-zzWM zaP{{cz(-F34=bA_{|=tttMfEf+{s_Oi4?O~U1paj*AotY&7vF)( z`6a;JyT5$P8Ok42`&+;FOUm^QC_S*dx0n8V0seJ{jouPH0{en z`sVrnq(S;d|EnS(*UMu3!G-_L?*)^wYn(r@E%RdrL7vr$g4q9tMPg8kKY%9J`@%g< z^xyOJPu%I+@%PXCxpvuZdG87=`pZ(KtBG!^nc^L@=xp@y~uw-1msv)#4(ufe{l>--Ov#~jxFQ8 z#XlotvRx0_to`mmw06JJeyc4~t`X(rm>)FyZ_fezR$X1wBk*TLK*prO=f{}*d(W3r z&d=XHFwoQ8fBBRjE(phrNDfF1!o0(u1W2e zBcMk>kANNlJpy_J^a$t?&?BHnK#zbP0X+hG1oQ~#5zr%`M?jB&9sxZ9dIaE( zphrNDfF1!o0(u1W2eBcMk>kANNlJpy_J^a$t?&?BHnK#zbP0X+hG1oQ~#5zr%` zM?jB&9sxZ9dIaE(phrNDfF1!o0(u1W2eBcMk>kANNlJpy_J^a$t?&?BHn zK#zbP0X+hG1oQ~#5zr%`M?jB&9sxZ9dIaE(phrNDfF1!o0(u1W2eBcMk> zkANNlJpy_J^a$t?&?BHnK#zbP0X+hG1oQ~#5zr%`M?jB&9sxZ9dIaE(phrND zfF1!o0(u1W2eBcMk>kANNlJpy_J^a$t?&?BHnK#zbP0X+hG1oQ~#5zr%`M?jB& z9sxZ9dIaE(phrNDfF1!o0(u1W2eBcMk>kANNlJpy_J^a$t?&?BHnK#zbP z0X+hG1oQ~#5zr%`M?jB&9sxZ9dIaE(phrNDfF1!o0(u1W2eBcMk>kANNl zJpy_J^a$t?&?BHnK#zbP0X+hG1oQ~#5zr%`M?jB&9sxZ9dIaE(phrNDfF6N= zJOb4Vq)vA7!s&-iUpc_PhpneiKwx(-FIz9)9(_DKz1(eE`@6eWwQ#Vr2=EMc_w^`c zQP!fnmuF8OUyt-Z+VJiBk44t1r!p8!e#puH8`o2?X4Gp?hJS{XAi6AdlqR}qvSKha zU`6Uk>(r(U4V5NkGN^Kml$M6|OiF8vCjQexR;4vl<;f zRGJyRvUr!;BrQfW9#do+nrHdu)! z@#u&qeU(0}Qsug%Nq?metCi-a{7E0yD9v5@lRm6fT2D0o8FE7-G}&GsRo9$!6IISj zY0}pgO7m7)UbL1<^HEwpw6;p~MU(dBhjvQyS6TtI_DbuACfhFv9h5deX@$@Zs=+Z3 zO=4jIhtb4$u+j>Xj#1hmG#NjZa75J&RppAH9aUNwn)oOR$CNfg)h&j0TxnxfT`RO$ zrHxZsakLXk8?Q8Lv{Oo(fF^w_0cVspNtG*!wnS-@l_q253dk}=X{AVCOI8eqsY)x& z`VFN`L*t*p7Var+rYcv4^#>sNvy^5>dV<>SY^B+wO;Xw%r8%HARN7pnIilrI+B~I| zMazvQ<8!{!oJgCiatoB^jFwlGTc|WS4)UvV5lSnMR#a(=lvV-FMrn(cRuQd~(jt{s z3C&h%OVA|tm7$E%mZ@@8(8ho)%avA@ba1j_Fsx8oHP*YyU}9ORwCbdjNXxPcE8D06 z&y==CX*JQFla_PJI;GVjy_-QS=ada-Bn`D;pCni|qDfQhKsTjrSLN!WxhQRi((0kP zDQ&0H>Z8p-lXK55r8OWOqRQ=7T0^vpAj=*!=|>}YDnw&!~ zphRwY?XSA+pavr>{v@WDwRJnMibwzVm+6^@6TQ}&Xv|CDZ zLGx5vg3`L9d7;U9HBtF4&Z~Eo)`N6CG&!%{Q<@uTTeQO1`$}^sT}EjSl;(kU zO%8IFhiDSNo)C{_iG8BV^&)*sm3yi*Pqh0=lVeAQVsA)NnjAZ#^?_|llVe9TFW8P& z1p5L_w(AW$Rk_!yoDbSQRql<_e9;al?Jb(b)DI4-y6;uFzGwxN_Caa>XckKQh$h<& zfTBwKqWlG-l|(Cw{if>nBW)m={dzN*_yX)DmKqRDlxIhvd!RzhrA?w7HxRJm28_fk%-U#*q4n)FKL zuMHZz+OP&9mDWL(TZ=XyO|D-Z(PSIzV4>2wpz+VJ9%Q?6t#Va$H;_K5v>r;^h~|eT ziyNB6U=#SGb;Ek7a+^u}pt)dsDs2ntYG`iQUP{|ax+0o8R_+rdPSR(oE9ZT0rR^epPH8?$+l_V<%@^ydv^}I3qsii@w7sO4 zD6Oy3_Mween!nQaqfJm+fYPGSCMhjYX$R0IqsjH5ADYDPAT&Y?zz$I54v}uE>INw- z8m$JJTr&nL?J#LaRW4X*F=%C#Hb`kl(43SuSZPPm-f+Geh?Vn<#Qqq(MU!Qy(vFjU zg(laG5T(VEet{;}j8LVWApHbQt{GuUJ4t#D+DPm$rJW)jj3&!)rJW{ynY1h;ly-)+ z+ylsYYoyZ7O1=zYmQhMOM|z~vMx#kg<6xZ9#;S7X(IzNuoYF3!O+u6N;CQ87B%MkQ zD3%FIyF@xf)t!hY*_UA$nw%S_s&ZFI`=QCXahlSulJ0{h=f-fQT_bHK4P}|GwCkiZ zp~-o0hSK6mw`a#J#?DmQ4bsigBC)fSc9V3z^!&#%TWPmQKj1iDj-8{l+oZ3ft-#Jz zS_0`CN}Go!&AI~z(NsB(#JGE%%9{MJnwf=}%~~EK%Ac(%+P}RB4aVzAJ4RnzZ=|7-*j?E0p$>w29JIDJ=;t zmD1KI?HO8XrL9xibF}_!L(X{{&r&$lhR(1o`WXKW~IF* zJq7Imc8k*9kZy){2)k8jZ%MaSb+;+)9a>eTZCBcRwDL;Zp|lTZrfA2oJC*j4^fl75 z>{8k%($|%?TWO!sZYph$(!QXrV(iLsw^wOjN$*6H<8GhQzL8#tCdb`=rF|zIjwZ)l zl+q-K@?0d#0i~Is$up!Z2bGorEw|DRDJ>K^e(xuQOW{*|5f}}mrBxX<0#C0LkdC(+2&y;3Cx)7QyFI8Q6evon!vsbE|rP3rm zZ}=}#tA&QX<<{$y6=Q8l#zO}k7NwWDNJhO&cNZ5{CP_ zfHi}RkO?wF7RUocY`v$pBkoy9;50LA=T<7K7`3~f|E!SzeF3+PK^I-vug$W>Y z>62j!)PZ_X9~ywnsn>$qAjeupkmE~^rz{}HkQ_7FL5>qSE^>j4dl~2XK<3N~KtZs8 z!e9wSK<3ViL2OIk{=5{F23sftpBUI7Fou4Nh4IiI20#!5!yxENnQq_$GJhxY zb$d8SWZrr|Y=KVD1!UgZ1-gUGO|OJyummDuJ}iXkFcW6MU>FKAM;!(i*=A*^0#%_p z)P!148|p&?XatR+2{eUfP#`_+OUM3$m+%T+!yAyfZFz2$=TvzvmFG)&o_vD-6q4W~ zaS3AF?j*eqy8$+X%qMS!9U$|_yFuoOqu>A>f@p|=xiAmr!va_c^1K%egJ25lQ(+Fw zfH07G<54gg#zGh91~O0V3T`0t!!jQ%^S^dr4~|d{E^~6a0#`xiX|KZ#xCt^Jdm9qq z4kW@|xCb&X`v4xoBX|N&LFQ(k!E<;4FX0uuhBxpQWUf}`VRyl9*aLfEKSaSn$OrkM z0LUC`A+P{TC;~E{S`3PVHIx7wCAp&G>b1KMuW;bw!9^eM< z-~m0M7kEN%=mTEh4L;xte$W^EApioQAM}R-5Cj9EBXok!&;`0eTWAN3pfNOoW+3-o zBWdp_kb88wCztzexuCNsI0N$BBhNYWU_LB>g%AOYU@=6( z5?Bh$U^%RSm9Pp{!x~r%>tH=>fQ_&THp3RkPu~hcA+UrZPzq$5TXW%kifopIb;^79|gj;YM65tLb!dR55D$=WA4Xg#3104tBVG>M+DKHhLK{!l@8894fasImv32+Az;V#^R z`|toB!XpTWao|F`yMsL2%Y3Lcn1BsfK?x`cc_2R&fb@_N(!vSq9)k6-7-WudIV^&4 zFdk$+aUx8D#?Tb%gUt7p1)0y=3|k-zyd^I0;WIpi&9DWwg4_ekeRm-!2=bgH&ypD+ zHJHL^$^}CQXa&uo1;}%fJQuwNdDfL@TbZl73gEFcx-O(6}mL2nBkp$W+R zcrB;`Wx)x`!6WVm9)r9Cl({{b%NqrwVGN7~nadjwGJiK2ra&~rz!5kK$KW``!U;GD zr{FZ4fwOQ9;@~`7fQxVmF2fbL3fJH|#KR4^3Af-jB)}a=gu8GL?!yCk2#??~Jb|Z> z1kd0(ynvVR3SPq-cnj~~J$!(V@CiP{7x)U_;5*2}gbAd8lpu4IslgP|z);G_9A#hd zhX4o!ckqD1?4P0_^NtxIEu@3=AP+2?83XfR3QPol z=+j=<2m2ukEb04EXa(}^TNW6I?gG8&lPB~6ckqCo&=2~<00@RbFc?B142Ho77zv|b zEKGz+Fd3%6RG0?gFdb&VOqd08VIC}ig%AOYU@=6(5?Bh$U^%RSm9Pp{Lv82)+lki> z2!fuF8}dPZC;$aP=AJCT3W`HxXb9OL2jqmzkOis|`;Nr97%{Sf;$RIWpd@T%n+=Ft z9jFV9ShvMyf()>o^_>umuRh=dHNg>_z!u7Y4OolCXDNuM&Mw#ud!QD1mEkt&JCFzu z;Um0)$M6)AU?pvqZvvY_D`*XeIIg1MFvP$E4*T)gx{w?4LLnH3J{r0+cI5kw-Hfko z&=F?9Am~G$yz4tcd*pke6L1nv!&$fp1KDOU41!&(55W$F^{^NA!C}aYzscBHFdc@$ z2p9uhp*!>dFYpHW9;P$Y1F2gYEAKSq9fkvxg?RRtd~YJ(k{p0skQWMr6_kXmkO30u z^L4lhXJIYW#&1oKxi^`^k~u4x53>N-=1j^=gQk!~97L1(>`PD{Z8x?o)&bU%miHER zq$d;CtuTc3X3!EWpd`q50`EY4orZG|2N&QXTm>I!1MV;zhCyAZ5Ay!IAASXWVp72z{+{|54YIgYrLLX-E(ncx!IS&(;Eac~A=;V2w~!>|m-z*v|J4WSX# z00)rmiC?jAu&>|+Jb_za%&SVil&J_ZXK4v@$j`B=Dc!N>*n+j%$+>tHP`fEf@DQ(!7c z{btHm$5sMowQj1cvA=WiKL~CRGl|D4Vk7U&cELiB_hM4koEUnM_68r2_gfOTLCWSL zEivl=Qa(SidPx7}{nkym1<_*Jma!kku^x!-2l5W76SRW1An%1*LT#uErjQQAe-&bL zk-p5;^rsW)YEVIG59pJ;1G)ukY3FW`x-+mv=udl)_dU`NX}24?yweiD#`q6nd;MVm zRDo(R7)pT$bb)T*0_Knh^8PB_{8#JRa?+mEZ0|AKm9)I0k-iO~&QK@~y`VREfiuXv znDXH8t95OjHZAW;R!s3 zNAM6Hz2j7ryTBNJK<$O>6N>Po)&%nsQ=-Ua1? z22c{DZ*{;1q+eF>_Zlnv(wLuzv;`D`f{+giKz=9+g`o&oDvD{=i<35PU)msTuMM@J zCe(oHPz|a=6{rlApdwU&@*wY)oWTjof+IM9J=j4Ru!Yi43Z%{Tp&rzQ9^eYy!3DZO zSCDz9&d>=uLI-FM?Vv5Rf!5FpT0#qG4$Yt`G=av@2pU2hoPpC24L;xv2jKwhhkdXC zHp3=Z4{Ko!tcFam3?g6-%z~LP9j3ulm<*F(B8-7y5C)+T0z+Uh41xjBAACXfsm#3v zLIC(fU+`0D<9ZP5!7vbpg7_N&!(k+hg3&M*Ccrot4^yBJgoCtI(lbDGVKyv;`7jse z!2*bcMX(r_z*3ODt%8-X99FDCzHfnTuoHH`E-?Du zOIm!3zbFttQs)rJzLWJ+5DRkL9ET%t6k^~oc!QJ^T{Kx2j)7>BJ^?4;Jctk3A8~L1 z&Vl$l3$jfqe+G;`jd|MfWNd?!F}6wk{kn{dJMpX4@3I~b*WfB#f_iWfF2fb53)hvs ziIsA<;TGHg(e6M3+*a0@PGtQJyoOis5@f%>hqv$!zQAYr1mEB*$cb6B6xfu|^M{nI z%lxD9d?fEZmP<^78IHAgqDi%)sy zQiF0a*!v)DI}E#F8^~Ok%x5=*1|Z{9p3P)_NcvO}TLJQucEZYg9$P34Hc$$RgKVc5 zlmwZ7Eeh691mqo%-1l36%*z_z1&J>81g#ILYpf%A#Tq)me z7@srcS)&}tw-0&fQ%!7jkmI5Xwi;9hd2W&Q8Zd{vT3C4otOs?WjzZQalHUZ|7#hJE zSPiS78F+#V^aL;H44t4g$bF;S_x1q~a0Pj8kTR{HJG6urAU;HwdXgvlueGjd-N3kw zcBDIkaXW2Ew*k?+fV4x(NCZIHe!fk>DL;!oPK7#4xF zQG8DUiMjZfxJQ5=EQAFx0EWYS2!cs43M6h42kFN=myrMp75@@jX@``TKFhX;f^on8dhAMjLqL25GLB{25+l)NoJoBdU$PBJi!N4TVe}(?mi;E0q-AW)24lYXlzLJ| z@}ymYlr^@^xGrU7-x=F3Wh4f&KV*!^wndW|8pncYGVYCaew|)Pp0WSN{VzV`n2|bS zGjRS}i`@k4K(4{-u^V6`Y=te57rg>@JFEgp?}DAML#-de9)trB1$#is?T3A^7o_cS zZyAj(p?qE;Eq-G_u7gtNES!g{a2YPa88{86AQp~68hpt0^eE}oa0H67ejHl_YY8Vw zp8%uJIMPO6;z#OBo@lZzNcnRh@i6M*_afQ_F#4AENO|dl)RDGHKa6d>NBS<@fa`D# z;vo_4Kmy!`n{W$cds0^FN#CD>)UVEcKsBfeRiH9df{IW9%0oGD26+!9@1yKN-owcI z7*0^~i8yw9N2V*h+jJtF$pj zvJao2$(WNek}q{6EwPmK=W1PID*H^HT_pb%h$iW;@CIJ1^)J}Z@CiP`J9rBp;62D# zkTT*=>qnb5`u=-1HT{?E8^_JB%lUReh=muS(3v`A~&=ER7duRu3p$)W#R?re!KyzpYO`!=i zhDOj38o&@348brE_S&4ZB>8J1*qz{X+58)9!fctO{?m{Bmfq1wMGJhaG_DLE}!*SRRyI?2C zd`AfEAiW*7!B$ug>p=FiY7<9|8pOF`SuWvojq z7E^8!825#2V%wFssh=C~B528tXWe)5R_5d6NDH9Ec;V8ty zDL4ryU>@bqV9$Zfk)6d}flDCi3lInA;UZiH(IijGTvch&B+pnUfwXac>jr6=FOqwx zTcmG-58MWcrR+=DkAm#4Cs^6X!gG-IBrxuKDP!DMGXL|8JlQwK{UY_GtZ7QFOCaMU z6*eWL02BC`G4h3aGDbdwj1d`!vfWSc5q>>Bv}5Bf`LDn@E?$zBG4Tfb8a}`~cn=2J zBl}ji@g4gOzJl~ekUmKJ1!For>2y#93WEjYg*tTp^m_M6>MeEBoCTEBam}oW9(>bQ>@H=nnDZGW>|U0L^VTuteltIVOxQeX^E9G zsX)pY&y#J@+dymR4&6Y`F`cneP>z#Mq&q@an9jE4`zjZxinA(E8RWcH1}pEdpO7c- zv!}o~=m-8F?__&I4{!%J@BmNf1-(Jq<%R773)q$)R^H)S;a}?cfLuTNVgn%nWZPr0 z17Hjcfx#f}eEWms2Vo^Y7zQd$)+NtqN3t&I5YW~i%K8Whg<&up!a(Nd<-S}rx%S97 z5r3mu9|er!sM(v5wUeJJ~8 zCdmGh?aBIbth8Iko%HhvR@$>ttxuw?9KSnR-vR4E#>pyJ1FK;jtOcpR6}u5OfcW2x z-2_`;8*B$TJ_K2hfjzJbcEe$n-jCe}dqKvUNJvEP$af2Evk zL;5M-fk>Q<{gVDjIVoe*<(o$Nwo%S4%^45!O{09P4rytJPa!?*Bf{Y=lD>jmRNz3s+AF7cr=V%wKoXcda=fqbF*5$m> z4J*ff7i>qUNnQtR0%aS^I@Ez0DlPS;UTxMTE#qh@WsTdHyjtYReS9Nq1E>deL43)3 z6{8QMt*`Qo{^T5NJg13mNWSFNCN1l7&N0>%|KhiuD$@ol-`-09nnM$iIvZ(cQ_?a9 znqkARGQQ+nT{*Y4#I^#Fz!lqFrDa{dHI#47c76bfi3hxg3FOPSiN^i$ob)4j2;xJI{RgCFzubeXa2YPaMUYrt zz@7*3e+Imu7xV;U{QHpZ4W6Kl|Ih40W1M9lN&R2%Bl-S&AOyhx=nwrM5CXs-`hqw3 zf%M4->kD$u6wQd}k~UhSE>`Ltz{>tS1;Zfm3kpC z6b8W%7z}-B%P_3mJA`3FLC(2Lu#qqi=E5A92{T|iOoPcF+m+);=By`>9u4DR42*-Z zDlK**OoFK}1>~7aj_+{Nvq6scS=h3$0OrGDxIwuH>_U)x5t*}GL|V4B9G1c|kbX;_ z*J7p5t6?Rqk~H@XH#52;5;VC?U7SJA&-~~9)A4jkUxj%S~CeP|J-{8x3`h4y6>J^2 z7Ygw5^x?y*U9Ce0ZOF3n1349J9r>4h$CZmZ5w1_4cCUMmuU2F`_O|7dzy0FbHuRw9 zoh4asm8?t-8?i0R)yK=%wYyh4<3iS5s#g=Y`H*b^n&dP3* zV_QL55Tkl}JH`;!WKM-CX-#&bWW@hztZZk4+sdv>T|Tc$uH!_241WIZfq|ax{_$Py zT5h)4H8HsbX;&3oNgavkee3u6u3qRJDBEFglT)4?*{7Z@Y~&bIUcumR&|Pa+ECSDgmj`#HgXz$ciuDZ`=$OV{xWvF$&pdzSh?EF zZb@D*lXIk_$zKzQw?msw2Uyh}pY4}A`+iTsxQp34JhZ@mr7g4R8L) zp{sWCHcndIdtReMmosMb`Ad$IyhoEdUtLl(yKELb-I(KGNX-!|Is2P=#5fJFGM^lK zwnI;|k|QJj%>l=S=a;^B_)$lOh!Z)|YD4^&EYoI(tW05IgChH~71jcK?Bwakd7F2& zrA~QUr*e$90CKXEbKJhz+(+FuY)jsb1BXKLIY;(F?sX@Np0*8=h^iy2yPw|xf5t+| zOUqg`I(VTBISz8z+a=#4%W=AMXXCIZdp@L+99w5wP7^X?EZecUQgC(NuUoDq=aiKk znTM7(KHK6r{oT{(JjppuI7^<{mAKt}Zu2>-1xF zd3`fp+V`3qds=PpWa#Z1kUZi&qmNWx(rlH)+WE&>OlI7r1$K8Pt;xA0?Rs)J@0BZO zYv=9hom|JG$f(OnnZr_$BXMIpK7QVE_!!KZd`~DF9C=l?LwET1P{m;LY`Y2-jvTO0 z_U7QsZg@qGjDxE6Yp2;dr12nfq^HD9=1wIi>9O;DTaVEr#2by~92?NTr>|_sWMk?b zO_s(CCWjN1jGgpc1F}-*P{5*{m#Z~CPmUS~`N)wyw^(wO>zZ!J?;43-0pT zxF^|L@;LD89@tBQZ99BV(GHfkbF1w*{+Jn*vt=8Xr{6zK>Hdx!i2*qQfo`SUefk^R zEIM!U8}%S5g-N(-(?YD&`7kk8P>$mRDkXd4M9TfEr_Vt5Aom`AGmGYVd+Ngja@eDC zj+dD+8NH5ydvcu1Rs174$>%qxE@%KmZ5V%x99iHdQ*c?iuv)NaeHphyIfD|Hyj_s4AE5Z~OrR6{SQ}Ot1r`Lj~+W zMX?h+z#)|K96&G->xzk;*xlWQ-PguK6zuledKKT#o@e-;`-5lry|V85zU#mKXDyd& z`Ek$e*|TTY%rmnUNChAjOOv@wun{moQ8DBJPke2fR)l03V&24>7_J=xO@K|b z_q~1dPTFJWn?1rex4f&-{6DLaZrdRaJbd*JUVmHcKI4s9F}fFsR@RCO?asK&UDul- zY;Dt5k2DLtM*qD1;G84*dMDUXSc-rURVZ=bH*(ww_a0B00wG@lL_7=P@rX6V151Q# z@2|nTe`L;csjUB>HP?|Nh5X8YxNf}B9UPGEz%OV+gF_>NBBhbNJqul&`)(RXV5_2_ zy0qqsdQ4EyC{o*4Uk?HxrV(HJ$ApFjN+#9ZTMRMyum>~%-~gqdz)%g1^kN&=hg+{a zBpr3eoT9af&{1kFuT_qU)J6wrwNgLTpXXk6C^iZ-@JtPyQE!P13yXvgVa~iJ-4um@?Y?&nts=bGoH9fe5UGhkYq!572ku|`NRGViXj1QkhUPTQ z$SuOGO#61AfmRdS&w!W#nPZaJ%%T70R{DAg7$`8Q4a5mBaqO>Mi~lZHhE@s0Nh5{k zGHdzh)qcy=sz0wV4rrj#WQddO^};fHURaJhIEeEGOR)k7S>^b@cHO$`c`$(^_D+%^ z92U_GXcu5;J)t{Ao!kd2+8wx5M@bQ3+AHeEu|WMa!%#`9ibpm%^}=TXqM8K6qplcg zLDo<1l?4rPs5*RjRbR)vR*XcA0AGqXVbz~R*LTA@8JUc~QW(C`iTU7pKu|YK-1Y0# z`x2JtYUq%iK*%>9Ft;%4pFDrG4!Hz`X2H|ICrFcYHc*E=HUZ$c(F`v*-b5Gx>=i?r2tU0b?QN0Z6> znSVB8Pr{NTUOMC#@8`Tr*R@Y3mgu2FDq|r~KQ6U4x!V7IxwQ`Q07CuL2pa1<=I-0m zI>ZkMji+12k!9mQjKWgx^`^TX9wR9}t)?SJ&(9T1Y6&w@8^nl8PPtwW4U%e*~lR-@Rb7A;Tc z5E~%G+vry9t~@?`%t42=146u28rn(k@$egoIz(WR?2$96A|fgO@at5iy7jTNNo)mU z4ckdu&c-amwA3ZphK*HkVNYbDr@lJ_&}_m9O*a%q46XY z-WcL%+9*zkv;#upu{RyjBXfTje;wingl2AL<5$%NPFawoL$p9>mF!m^Zs1g<$5|aR z1qktW^zrnyrOUSYqC=MO*3NuRtTKFM_nA6m2N2?|n5jp-y?V1Q=#W#qHRlc&b}yT; zbEppSt%I5{XbilE4T-Arrn$Zz0wHn>QY;X%utB#yw|BR3eXK+B)^~Dfl0j1)H0vte zJ9A@uE9AjBNbdTmiQW$UUs}1jD}W|?mw-_27mV}`lb5JH*nPuhePfCODB1vTOP>w=yALsSPD8=N|vI}c&njqyFQ;}2;wSdsT2?zX(PM#-7H7lC*H_y zf~Fo28qdc&)ygbe_t2BKW{=$v<$S>z`>F$D(HZtXI?Xa_n(oyMG$_?j^%z+}*dQR6 z9*(l@VA1au5FT}Uq8~%_(>WpRVEVQl!~q0A5pkeeE{IGWBROVTo;$^894NB$;=D~= zw!Qn$5tq8_TJr@$5?wgI`r(c<*L(!x%F5T$Kp>=}PdCR;@0m52>MocA8mU@~YBb6# ztIM_;XmK!!s$Z-gZwq8_j9L>fr8#_hR%%CWH6e0@uhzyyhlXjTxVjH23{O2lksak2 z;B5r@p}eI0nd!yvjoZ2b2*qL!i0pvSoZ5%&_;Bu0NH7rS6lqmZXhfh5f`6kYp+=Uw ze6&D#M4SQ|L(nY#<3NkGKaExcp~5!$p|>kF;QB?EQ)h3fS5sArGBC8ZhSM}OF6Lil z`i>VssCEkt3Dw$AfnORjHt0!%PBBhE_$+J(O%3$Z!?Nv_Du3;OR^{lyO&}!Eh;MFR zI}YqpfzcqN!;Tz~;y|kCXZiZPc@qVMMhYE$1%zZ!#$?-pp~(^RSZkyP(%(Qxd#lEJ zZPl22r2?@KzI$mFGpPG*vzszZbmYo zZ5eQ_20|lEHF~Vt@jWpn>L$GW^`|}zdDMqtE>jyFz5)v8^g4QmCPyMo@)BDyOVY-6~F_5+O zd*114_Tr|F<~mv}adZpL; z%k4fcd5m0>Vr9&$Cw01kGX0}J)B$AuFO)JG{ zLTzX#rBXR)VM_KhU$+&jhShde!$ zN9>u-yUV^LWA_H*fG(?+f(EOHW^SO?h81$A-kxOqZN?V1>ySN z&4b0dBj!y!Qn4P0`w{EGe`}qW9kQ>6!LzH)T`E(aD!DMH&`U_(w*D`Kz>QTh;a33H|piW4tlHEtbK)cCti& zr8VrT|7^YomjUb>cHUXa@BR3Z#dPak_keJT9tRD@2e#TPC%R^L{|1Cd8)6P(z2vxe z{MlYVs#R<9fzv=bV>!~!H~86@6@@A8rClo^0^Z&>BXHlSSA)RBH`GzJ@xk zzq}kAP;^Tg5*axNfVAYYRJ%z@XJjmtykim+YBdztAt8{~c*_z!V3(C?(!3bzNGv8t zYukWOR$z6vp>Hi;tEc*URKTFt1i1{LKy?(VCVtLZhU* zJC@9!m0^qQBd4Eetu`P$3Y?TQ^Lm%E7-yv@^rFc;dL={iUl%o-D1~4-ShARB4eKrDnytFLLv~&ZI+UBq1G*n$m)kOAl48_x_rE zt_I!_=cIk)NVVkp%a3R3PLvK_lj%T31UsA&2 zHr}?UR-zw@ypd;V)T#i&rairtQGVKqS!~~#ji_liSr0Z>nNjO}OkxV#DQ3LI0VxBn zzl}+)waKBT30kAf6y9?0| zW*eK*c}{PdU{_u)0Y>8#uRrA0dda=@%gY}43K}khVR~|oo^#@p#T0C$d6Asfeg{E> z!dg@G+YYo$y!*&n^<>SqJtM4kmIrU-F|Zm%(YmeF2Q-wUXS^O*^KJ({6=>vR#8NO2 z%J|p#Om^#JUU#$(i2-5>WP8x=?U`-^YUwm2_enAny=45~2Kc|Z`+;->{pb*}hUoQ` zN1EEpta$Bvv#{!UV^T5@;%#JilXnZISd+%%j1I|Q9T3vdo!=_onU=VCFB^|Nj&4Xh zftUgrcENS$xKD4WQUZ@9T=hWgrIVl`?G5^QsYA`n{xd2}4&Rs=#740wzxKxn_j%V~f? z^6-NL7!5V1R3&i5DN(G(7NDV#p7AIeJ$+l4KXD-MiYV4l*a{BP+Nk5AHLCt2);sl1 zC}|BEvPj^K6{4Z>K|QCuvFz>Lidq8+Ad!W&w^h(YIvx++6i&~;{m}7r)VElSq&sQh zjd74}_Ql^O`1{0zrJ5yv?@2oR4DBEwq@%tTJ~LVmAGsI^_vq2;@ThpS*nIou8P(sN zgN8t&Ogb@CW&_f4{F{?rG2Oe;cx0~`kJiefwb?y3e(AV;{79WvO#?!i>$9t>af7;6 z!QO6;zO4m9`W7|GcIqAfqV;u%SVxb6#tbxVGc2pPmT}muqq)xe`C6rXpNd<2XX}tx zyq_^8X1Ctr)CD8W;h<=Lxi!!3Mti$rlqUOW2lBI1=L?&tsgNJ~L%lrN-tw_fuyIg=`lJccFfVuMqKCyxv; zw5#{RR)<({nxkfoKlyc-aUKXvB^jP7K**Y1?Rg{X{`+aObTkn_$d`QSo95N_aC8|R zVu%=;&K7C5>@1`=2iLdAxeV+mc7`JT2jWZHLu->gp0~>aA{%9?0ceP8lW9w?tlarj z-V0^%oA^}AS!@)Lg)MJp7S^qrF~!PcVPXAm1EJPZEo&4#;5Pst|n^1{$iEK?Z%{E~vG-E_aLWH2B+(IFPvx0YWscUgzG}FSMkQ^0;@PHZme8G)&$8 z_}Uw;4`ONNpaj$!pr+3FWWfKj}0_B>tje=hZuW+l$F-zbZStbDv zXrw4TNR2f9zV78V3}G~&!WY0eT}vbVA74=5J2_j)WsrP2WBJjn_?p+II)R2{jn*~* zA${}oeINV1#S%JYK)j*muoDRRlAUwbRZPF?M{`ODMtT^CDUh}&+%3E{-aQ$@64XmT z41r8KlVEuBV#ePxLc#JKAkeiAk*(`|cvaP$A&8%FuK^Gm=~lx#;c?@3(^}y3;{l{3 zkWv<3`@Ea{V1%wU@kl3vhN7od@y!<;INGX|Ohd<@UOH==F~W&jxp;> zF$LFNF>i|_WgXqVrRdD-cC9DrcvBoH(>Jkn1hURoqGB0{`w@>vzyW4KQG1zn5%(k3 z>-53$%DPc8HNET36O_}EtR3^yop+o@lfB`4TGr$mjE3cng*9?6v)pLjzL+TosIE-* z4O|O!6sum0h{vNSYo_sH8!xux;(iLE@nSowC~L;GKyHxEcDP2e@zu-^FIsZ*3hm_6 z{6G^08j`O>6?KP-Qj$}&?4953Nt!ml*ke~dr1M!>+qyyf>Gbgq# zVsBP9M%LbzCx5tko*z6>r@akXYkph65y;I82>H{<`D350tel$35fr_} znkeuXXl(#mBM*3P?Reu`McUB*0$)E-K*|8Q?EFg4`+ONM9Wst1cg7qoXYuD>vUg@$ zC0JScS}{dy$@Faj`Y{6sMos6us4%Q+FL1!ClN*7My?!0|==tZQVI3H6%px5CLRAl6 z?+0C<`_yj65W0LIA1fwab63$C$=bN^;w(S=iix~6X#6uE6u;U3+Fi-J$i)2&L6s}N z=t-p={}OSD^-Ua${f&M|Zs7|KT1{6SK8AiMigvCk*Ub_tka}Jmct5w+j0 zdhj(vUL`CJ*#v}ENsraLrnwcJy<10f0!SGkYv0F>?=|0Q4?{3>w$g1NR5grhI($Rw z$i_yT1Dt*P3kX#W%hh~pl`(BWHI87-84i(G@U<61ZauW@w1p!WPbDD4fq65h<}t@E z-PIwE92vFpxY?b;Q<`uD(rM3ID`FPCcj>~`IX2M+w~+xM>AWjhc3{ZW?;RNp%S*z5 zkVJcJ?DyU(tP9lwn1;Ch%XTywm%GE?KMvTt9cDgl!<{&lFVi7!-}i?~OxzQGZ2P#Fl#k6~8h z7wu@kcm&`RQ#-KO>7T5c|S|%mvFAKZ}M9mjbNntjz_$*#I1?r z1F=mMw^k4h5&H!}KbUQ?zWujo#QG+PYOv}BYYyX4lpC|XB9Gx9iC4+A;j(9vE_Xih zv(3XC&*Yq6#3hdXMO7TPd}2$*7>TW5L39i0i0#hb7!So&XIdV)v?tlao2?SI<^;2i zRU(M1AOo@P^d2Fv?O|Wu+Z^><9fW=;KESFU2!#B0#nz)@pWV{0!q+K~I3Q(#G?-^q z=S4GX@~31&fFuJU>+;3mZ0vwt8z~y3NEMz*ys{Ld0A@!+wJME96)%;}7;)rUfE(@P z6K}BB0xJd%R)PZ)aByw)vTmIn=E_kTYfa>3oQbz^RTS)L?>()a-tpbb`+<&%BcUJY zhhmqd=YmaM?=MUhTH+0}P&7eCvim3Ze0jC?O`TPb5paz)_uuMAToV#=Ao8?M`Rs~_b9C|ii1TfMCjNds zgxM-F2V!qlkU1553~}r)=0Mz~#8z26QnBs`Dw-6j3O%iW2C+Z=sE#zve9PYXYs$*i z2z;D`j72pFXF5>p>*w3k?2Ew^#JxBlf^TLdl{P*i0EorjE}N`3+^z|P4xuByrV|rk zq1xz!{?iKo=zmxKew*p2_{#=`b13vR1Z1u7breP3Koq`?qRa^KPI>TUj`8%n7aI15 zgTpTHmUC_+93SN4cOpCT)!7%mNi-grCiiVvK=5@3&a>q??P#L6X_A~7Cr_65a*p3@ z`D)bDVbz%oSk@*wHQ}Pr+H$mF3U2e>^nk(Oa$&_=>sSt`c=s87_kp#L`;4ZE-Z%6^ zv#h{1mvz~xa=zfO+iLb!{Z%+=fdddM1FHdqYN{>Mj?aH|q#RW=`8T)?II_OzrwUc= zKFf7jHVYcHHZm+$E!DPLb*aL$m@iD$_LOkv<;?}HQ2slebFgAyY)pK1-%6kX0S-V* zOMp-WIcBT+QeC%B`&eu2&eC;2=)1!osV?8nt9=4F0zD90vAnX*(F27W0(lmi`!+1} z!@tJMJDxSuWS%-tmv2Auz5T9%_fkvRMZhU4S_}%aK&Se_b?!6H>?}2tXc$^E!$|*V z=h1$}$E2S)vrT8RpdooV$eHckpdsz@+V$%}M!yH$83*=sA=hajCO}>e9QH@?M$Sug z$W0*hy{6;vDf8YB-%b@xTDLX^foiW412KZPsca^eqqUoA`c9#dG*<7J}6g%)$+@?BtTt!|Q*E8e+DR&ihOD0@%eryQ>I%aOFaMO&nyplj*%r^K;{32Pjmlh;jw*9Nh;lz- zgmhFaw;8i#oA_+)MB}uyqEV0m*#oR#v7b}sjrvjMjSzwE*x3v3D0IbnKDCy-^UE$? z9xoqt!8vcX<7toG4I|mo{?6@%;&m$KTG8?`8zPpd@~Wr#5!*yDjWTc4+V{D#9X(aC zboQd>#^rLf*I6n#Prjk)^cOU%s48`@zhcxkzq6 zEP!-=yKGILGsF8a8djBp=BUC{f$AS&$A5P08%K3mitO^$>)g^Y(OZG`DPmBTH4RAY zWlE*UJ9i@vc1>)2bUf{_bH5;-pIV@CMSpL$PWS0h*z{x$jg#aD#0`jtThf5`&s}+I zG^g``bOiF(*J(-86)2rjQk%-T0>|0n;|bb6EPLA6D=n;giX#wLpohP%|t z>Bm_b0|b+vxUcT)N^keh+ODrR0RKWKzjxyAn)tit>*+~_x~`>@rF=YhI5M!9d+3T6 zMF#2+X)$g*0nLsg#@&`S^eDs-+~nyj)#6AqyCI8aU9QqirXjAqfe;53E$aAZJh&i7 z8_d&=1X34BkYis1H@%i?bp5OY(g29nqvFq=I0pPf1~-A!0OD#eb>B=U>rpzIA3$mY zNgWe4>E!(f^K?k{C2~Ip`Zk+!blM6!tIJ2~4TME$m*eW5FiY8~L&Aa7Lu;+FBJ3yM zE4e|3%mYFkwBEnvi|dD@@WFCxPSPPD^hMRkB*V-xg@-)PL7b&bASCNGJQ6#%~#KjZm8?0{4#l@v)5WK z-B;DRo(}NK}Jq&eb-((MX3FE|+K9=e8=<<$}{cbjN`sqg-s7 z`r2=GmT5?$eSuJGTe71qdYFcm)U}oXgm??Am=Lyhd(Rd+n(aWWfgF8UdFkf%!)Ujh zues|$5MCt)wzBMd@=nEI8KJdcu!6m#oH*sY(cT?J?s4rU#1;r?{H6@NpX7%Jj{hTr zK0rvKKO~#=-(Iz${FL{T0EE`U&`C{t2MsC4BUNf`Bk!lvH@7z{Zd=FcTDt*+xX%2g zUi`=5p>#H!wdNvy0YWQy^M~Fu(>>PwLqjUBlxHDr?bAbhE>0V&YppYoI-t3BYNQl* zxXja>*6gHsAk~1lo@&#j?fUa786jDx0HM{mb;-W2()J1Kbgi8LLV8`K#d+INOD-ns zT6+PcK9IMEE<6km@u!oeTm}}aWF2)6=KnzPzpN#{Z>}7R1vkM&9ge)+TG^tZj*YLdEB+?mm~_ZJ zDm`?5Ysi}EwUeaC0n_-rt$~K|)^&rtwhy}LoxZBR{Y`F-E{PfpgrZxc*RL8BH|=Z) zglDe5Bb}Un4xzOYXf5_fnBA{Uk+abn&M{L}>NF5qbE}V?devvh@>hhQzyt^fCkJYg zbl)7)eEyM=m&s#Lp%GE%BhVOv=Fiji9;fd%=c|#9y}kuPtFcnQQC+g6SUT59(Jg39 zHp!LEM@$P5vDGe~*S_aAmvfgIB$= zdcJVtDmpXA{f}5W%DE;N|7o6~|w^xxD2suEfoM)~bLH75ZL zS)_k=PL=f_e|=M?DX2XVw%mUGfZK7Bc3&QokYbpL;b0G3&BvJ96 zkyxVQC{0VG9h%6~k{a?5`;ig){zTO$tQ z&&cuh^|G^SR9v;*QWsx~Wi8SW_{Otx#bm>PJuy?x+(^*1raY(ljR%<_;@;mmnLy)F zj+F^1hzyju&fn82_mkg91@!~A&!pHILqzlQZ|05p>!^r>{4A2PMDy!MG#-+u*v~2N z6$od6-aQs*h>(WWxD@Ay?Ny7Ulizqm(h8S&d|pg+lcz&IuV{+jQWQgKhe+*H4 z(T^dDZ}2fh@ufY6D87Kl5XIN*7^3*9Awv{j=VOTC>xm3eeD9DUiti9IMDa~QhA6)E z#}LK03mKyL)*nL_-j;U=E8QH^ci#OoNw6;Xce05AssOes-yAHO9rME2gV`z=f825% zf;+$i@xn^##QqgL8}4ToiGBAT5E+5vwJIsybHt)=p^LF$T>>097v(yiO zlml|1c7@E>UQ^bybGHs;-@bC1asAE=7}cQ!dy$z!P|(@qb$4Y;zUp&aU{|A4 zr5Fc{x1B&rfu_rZw9S=!d6m%hbClB*`4af(#ls1(`3s{T(16m+-K#c$x)^ zBQ@`s8QN53Bc;y@@|@Xb(m}N0DtHr(^o_1PR-?5BV-8gBZT+AuXlTb1(Z<6JSq6dT z8x41NXqnCWffR7N3f^F+pZ?>l&%O5ylM(FhLPLbS3Hm{6Fa|;Xk#UmcF~6)?we5zZ zAJPN1`>zVbb*fR;RpyqjWZh*F8xPZ}6%S-RXi%ikf^MrVYBCyjk6CVuL@^&o(3--H z)v$o~)NhS*Qx+ZV3Akr4qj+0vP<&F9aH zQ_=e2_giiN2PWX{A!})Ra`pb={Y`EIfuAEs7flaC;8(AOd2Gdmg=DK}^B)XG zMzN$oYV_+5iw#BY=>y?$d_0_=7BtB(v(~#LzQK5W@l_5Q%qPAUcnpO#XRcTCv1~ud z{{-UlqLbUIj|%BhwWvA1eTie-#@o44!XmYNulN4(;pkL09`-d}Kv-x@D3Efs#;UF_ zweQThW*V<}hL(BFf#{E-+n-^2TcfO7-T@7LNdvjXa>PCOa^Uds18G+gFWM5(XdoC< z;+D`2H!hSuY(WS#5gI?8bN}d`&*{+Dm3$e(`q}YB*3nmieY)RklG+joUkitUltpVB zBkgvEy$M(hglqf_ASHlQvd*lQTHJac5bn1tJe83?dMS5Xe_0X*g#0#UuGTZz?sUKQ zs`}7Klioo1X%lg40vTY<321;QzG^5(C`u9~b)&l`hG@fZKJVSCyDewkrgM;V3IxbG z&UM_g6|<^je{f(3liM{QCXm6eyT z7;uyN03i(--0|Eh&(tp_oCf0=41`YHYe*@_(-oYKLL?pk(xl*k_p3a)UM^Y95i$a9{pTK zYldj;$jEs=GMn|G)9JEsq`N@Ofb2_I@uainR97H$ZXGoA0#Tm#nV5zs&Kx`C_8P5` zMD09R))+p<)RMJE*Xl~2fs_W)xOMRLGuzDA%#qxjmEIhN-6ORs{z~>G!ykplPqSJ^ z=OFn=$U}U9;U(90=jV<$l10zEtOue&;R*van3L5l6T2&UU5pS-49g16C zZv;t{-}Ehh7f$?6aaFWN)}?Cib6WGTzKziupSgxW%z;$vpIT^~Va?Hu0|yErTL7U| za&Umlg^VIebdDG^O412eM-G89N^?8BuNS(g{2L&saM7ac3L3I5FT+nP?Df>=JP^_y z`1<}p$kPrl+JB+@sw9)3Dn;V<2R!pot3c0Yw|o#6_SX8LXPHv|3&7k5*h%6 z=CqlgXPd$s7SbsyZr{W*5ZHM1BewCY(N9VA^U%JjVWYG*Gtm!UKVol&uRjHE+A6+- zE8Cp{M1#3Cky&Nf5If0VqY6NpC8e6*D!Tvp(<I&BN#S1h-7XegPhYt3*$xCk_MmRVwm-i1HK+WC`(WP>vbFs4(V?h$ zQ$O7YLhBS-g-D$}Pp&<2^6vTBZ>b;R4gDxuKKAmnf_35V<%FwIp@lwtTy2)3KO<-w zTB8%6XiXc&9`KT0FDh}5LkF}uq(m2zdqnswj zqJLnm{kA6<*La7?R`UENTfQqJ)h)86jjdQ~%$IZqVge2dS8C>|fBoclhCn`&ByLUN zMRRx(q8S_-6pBaCrK*m{`jmQQMBho!BYeuO@s*Vg4ru01PgxPtS^7!eo5?`{eUFYL zFkX5z;dF^fV;ajgo`$3JraI?9nQI!5c%;9+%UZQ?nsNJ8$It%3IAAlU+!|$5Vi_oM z{hJbnP2}UL{6p4*1)Zm_1J?w{Y}B=hhofT%K-k_3bF*n(-#C zzg7P!+p5nIb4Ht&SX~V?JloA3Z9qEQUgwV1fzS%ZI?WxEbHp(}BzN4)XrQH%v`W%r zCs=KpWC!g!pGNy;$f`*Q!c4+ej7-tfW8OLSz=Y(CTP{@JA&caeUqACfLowf!G2PD< z_HXnBG_VxJoT5KvmO{V*`pP|0v_^8nNDC6(=6(N^bd(nAD{yTIt_NqXzi!p714WQD zr?6t;s5AF$gNA!_acrqPQdgK|Md=_GbCY0bSpL)2-u3Tk*FL~!K?W>x$gNdCXnwGM z6mvjElUv_(GzvK&#UW@7;UCKmr?-qUcWq)$xf$5^yW)B*8l2wz*NX#<@4!T2de}40d0%p)fEbe?oiCxsqK)$ICG?#Q;t?a!r*KdM zygR1SMB(qW`)e*t{k4!HNaT~)J(OZ10z(53B~1DBNzu-l%P~CU-V8Scyp$DRbL=wNDrj<&nr)% z_no1m?7?dJjcc6Wxwi6=UDww|7{aoTD9})3cPc$-^~}Mi(phUv-*y9`+-!Z>&r`ox zADF;fgW%5cerAtrQeyi@7xs0bY!k&?*DfWGC%BP^_jT=$wrGvkDOyurbL6xJg{fmS zkWNqc(Ube{Ykv+jWD;R}jg4fkL$sTJeK+0^%C!npR~`thh09Ln-Fl~gG@y8t7Pq|= z#*u1i6OS%iIh?+PM)iPZL5z$wmNn$htj2z0G$$Vx{?D8)15y?JxSy?Yv&E9>0XpO; zkcvR07NPSkokrExA@_h##cb~t%MJmfG=4hd2N0_2Zu8LhdDgDbQXSIYOpn!JD@dKK zFD>2uk6qsoj)Z(0o>_{Ve(t?I6&g%{gc(G!1P;6mnJX33F zA`sG@V_)lk-E!vjavib+2yxwF_uu!f99*I;Ot+Phx=DwDP_*8uaD__YhR0Moyi$jJ0YW2f8?mxw_MpP|bV!-fGP2;{hKw8EcIoR72OuPC^}Pm`O?FOc zqC>iJn%zg2Z+A9(yh?`*20|R%*d8+N@WSUFI%EnEx=CO_w=U&gbvxj#L$>gKtO^@1 zz29wHmJYcD#2hqll9JMkwHZ8GC!L2tEPxDq<^Qhan05b<+c%DMdcXWgP=lDVIvQhh zJ+^bVprlpt!oA&_>JU5+&070DsadszYx84th&vGCVALi3T3yHJkI*4LKqyvz+w0zJ zBd=Zm=w}e`r(%U~lO8)5r|D?M05Jv4gQI1#$KDEgq(ktyIpg5K!`W%|rTX#JVCXi=xphQpkUMW`VY-1pw zE&67v9+d5PaXynZ?4_;39gXCj@b{&Mqij1^^t+|6M+O!qL}8DgZLwhH z6iy7#*;=$GsPn<@%&9ErOij!y_WiczGW;no$4fWer!?%t9*qd8E7u2}&zRb;chH}3O3L3t@P>|P0 z70wdyI8pGYbHr zDNL(ZDcvpQ2jXkeM2JoL0vht@KO2s2KXOb>A06^1P>Nl)1g`a6IpFVgCVF*g5ctul zWL*0txnFS{Z`aCfpviw)bGMfJS>67Wk-?S7siajbOjLe>6=#d=?V=)ZX98MX`_-WA z_;M4d?jjFI(uQhcslR7&l9zqSUU%7e*!+k`nl~E6{*N6MJH;cdTUf3*H!Zfj-lne} zopdq~k2H6Tgp+ZkI|?xpoyn3FZV#kG5*rs*CjX*5O}B`r(@J&~R*zX`Ht^ zoVYA)!bthfP;_LpiY{4;JHGnt{=noyTn3oaveot2eo503zd8@CdF>Jq=m*VqRUp() z+f@;pZ&fL3ps&ZDyjM8wNJ>R9d0o(uzL_i@H}l-6s}u?06g~-iaTi%bEV8Xz9ocdX zb4ryTd#Ivf4U*jp>VnqD0~X$WwL(8BisqC=fR5S%p-5=L-!C*F7yEkwLB3DMSA!>* zqHRL8$z}Sh_U)Hnq9P9LlrlZun!;WiA&^0!dT@*iCN5)uW4G~+50hv-K%nx9=XcmD zQ8>Rtxh7hRi3vsh93J3Jhjy21RHj{DI<1BAC{|<`qIBlRiESsTH?*@e5V6wcXJg5D?^|zSP=y4oY7R96BZ6gpv zNc4ur=~49NJ5R}*v1@*$Jsi1orC#cxX3p{+KRdN|j3b}?cAS{gH-@qgu{;sh&ACiD^l2(01Yi8(YW!;QPG41M* zUUM0U&+mi}qLYS_bmZ@#{jrCaYyb_d1+=CK4cDlGa4Pld(6CQa+fxmaT7zdI5zuVs zd~u-vAFG^K){q;U1uyJ3QUp15+4k-~M_lTT)(C+wQHVB3gc?yJd^zg*C@xHtJ8FCsRpMjVF zu`j!^=1{xg;~7H6MJiff*3p%Lej}E5h@=xYWOgvmWjT^wA=drJs3@xZ&{+b=O*|fL zWWXSrqrKXT7M4T0z5tCq${vuYcsvi#56R8M=*_Zii%j8z={_N1?gbFiUXKUf_1f?M zPF(Z2DlZ2RCi{u|$xDOQ*aqiQ%LDrgNe*S>)~ zo}GIl8)cN+M;b4ic+vcTgM!RYPxM1sb$q7(@!rAK?a>cb50;P=p^gq$X$MKiRhq$< ziVyzBe!WRU*^aKh{rTFn5o4)>kz)_EQCN^F>G;fjn^esT6AkzEy+K1~7Ph|0m@wX; zFJ)km0EyI}BYWS}I5YFFVxd5|y-vbJ(QFTLpOrNDTKZ|$4>OA5yS3Cp4xsIu2EcuK`QY;&;C9vj9RvpWxgkbQGGI%)Tu7MT=n@E!J86*hzM zGkI_~@cP-w@U#iE8Zq1c@pL{Pk=+@m6CL+I374}E018?~=9)4vS9^IaXo?Ja@~r7J z?CG)bKxS*a<&hq+%gQuqUd)sC0}a^*glwYK-G;uke68RCY5Nq4C^biGw0=C_nIzYl z=(rLz%d%~D_3yTb7hgVXwV%-5{1S)kRA1PlvkF; z>PBD7Hrz~hlvWmKLOC*^u3h}7Z;grpVVgQw zB!Y%!(EMo66~#6LWK*;uN4HZr(lzLP-PvCZ$up5Z1qTa&Fke!>{`alvMdtyb+x8We=^={x_NS_rvI@4af+KT@{t1&98q~#TDG$JAL7!*1ba+2%H ztqYxAH@W+@+CZG;nvexY7H<4@-lW81oZ6$R2b4;x!;#}jsaD~$;y;qym~f;fKqy+z ze0f0?(77ivBidpi8Xq7QK=g~&itOa<4NHOHutgUPgsPycOYZ3Us6qv@qvXu&9h9q5 ztWv+uMQ+VEZI5l8ZXf=n$c~lPr6WM7{$`L=V^xpAJK$xwQc1UgP^Izbyd77MFPr$2 zoo-?$OBF32>qp$0ud7^bwN2WbwASUc2aN}bBeb_5t%+%By2xgL*oK9z&a`;Vw2G;sz*b>xE7(!KHKZs5W~S12m;U<7sf{`?1U|J!KuGRU+sI5u{RfNZSbZ%KHoKOQ&d+#wG|NdUK|AXoaOA zXCMQzV$jhjO=K{ol;^tnj##&1b_x)(6kyxKUA86b4IkUzTGC=DM<5+>4%iMfWD}jO zk5!+vMOp(IItPi?{9}TG)EY@T*{^@8?)+{BxiD2|p+frflZ)yjbu?Z(WST9~B6d=`W$ z&}&amnd_F*D;=uaWZoQIw9ys_wRZ6Ab#-R2EyW?QZX_Li{==#SYp;Kr^1VUFrHqE@ zXjF{+(NOE{M~jSJu#4_JrkR6^3~DOtTP?knt%vUNpi{5p7l0_%6Per;5thA+`>EMX zmRtMTf23d3y8#;l4p=?WU!_r#TK#yQ5q@xDk!z3+k8W*2L(%Pwsg})JZd<$s2IGh4!K+7G#Kd%PBUZW+Ab%*`C-k0 zhV8ksequCX-?!L2YBla`Fhf`!_7mrAOj?hc4`W)&IUw73&gQLscx2pbnO{>gbG^El zW%`LZ(Bi`iRd}3qpx=z%iT8`?$^9Tmk)qY=IHEOO>-{RR$Aa5HxO3d!T=tC{dcS;r zVa0eaT|Z(Da!W@?qsRfPvN^YqBZn!zh6XdL)%nMFdSV&01`X+`Y4@J1S6h{(jD>5J zzoUwVBUwKE*?N%gd5Tczg3+)etX0FwUnI0>hLyzc?P$1-)ilr5~@7QKc zhz^P6NWD1@U6Tit-Ks+ra%Y~?=JiZa0rtzAy~DwW&xqd0c%0w zyBtol7`%~ofnU*?s$hhG^;ZPG-OB7kHSeZ>IYG$2WZUE zkH?5o77sOhkbUI%EOBcJIW0ef5%2uKjQ#|?&zTT0S!f+XSaCl5A4>YDnlSq zN9EllwB{f!01Zj!c7V~wF@O5+)XiMYPBPcuN?GqJ({$-OeLYM5FA6f?D@)-EF)nL` zbC7(UDj@JnG@fTZa)kf9-KxxeJrlh#9^P6c3Z%3Z*|X6GzbU4Ab9IP#ouZZ&8ekI? zv88{@YKC)DsOHVrwnBDD2z12Xd_sqsN1Q5^^_A8=l8UtOjL$V2HQnVc^;UwqbR&E{vQU?7uV zd)4BaYF;0lQ#lR7@}<*`f2W#_KRF;0_5iKHGblwUKxn%WcXR}(qoTFa^;CnFPrvPj z^-rL$qi7dS9UT%GsFfaFF`c&A*$??P5avswOcX^fUT$?r2*kvjR_Po=H(qVJT)GwO2Ty!DNX$vg54$`pF?qADpPn3XZKYoBUkLR%>W9T|;<~awr|FUT#&J{Y2D3?bx=eH->Ubggi8hOm5Y97l>iv%1i+M9FOoVQXPJM-~pRU*z%e zFPRLXZ{npzKuE90b}AOpWX$|Nvi3rt(t042y&J{`kGyd|yB=u38r|8mmm@ zrZpfMOao|60Wks1!h`kpc*JjO#QI^Cg)|_hK)mn7evgPc4DF?n(kgihq%@FwEt;j@ z^ZCAx^}{kfvD`!&kMCuKx+B&Q@oX#Y6wBvb3bIb+vl%%5RPB$OuZ>4xf17_SsZgi* z-&bQG&dz8eb3Hv8BQd zKs;v(qVKA4IjPZ;P$SD-K3Z_iBS`UC4<|o)otE@XsrsaTk1C+SaA>3oF*!fY(2UdE zH2h=C`po52&Eqr*yM6e$gH&E{pAhVU_&%YI=%);3u3YBYBTtTO_y=zVIn~k`eUTpY z@Hy|TGTC_=T=VKmUyigHUV53oZzfgHxvZmX!Xg83Z{5vmO$^4xkN<-qOb>t{j*gZ- z_3u3Sr}i8?Eo8tHAqw}t&=&isp7qME-qk;dAxxqQ_ZIODI)zMvD8#54-gIv zYivA<`#;QOi0>d$IQK*j73wQKsf1k-$Ofkj8qE*t-~0+yH0f$B(1>@-^IA*H4~6mh zd=(SL-nx~ftrcUAH4RxM=Z$Qn3Y8x^^8+1F7!R)>DAXx%8zga!liBu^+3#qnb~-hG zPA!awZ}*|<6Hd|kzS4G&`uJ^&XL`W$dgYVZq&y0@$?=1Of^XO%gBAg@<*WMD$>h4n zlC50dz*|Qkw0`;=YwHzM$kBa*dx0YAmut>XbiWVsNLg(#Z$EUO zDjcT*ZwWZ6MJlflAK+vjb(Dqt&jS6dFPWD8tHljRCQ;@w+{0wcr>WCw)8pv}X-}Mc z4BS{fBtj!eo+ob(Zd%A@IS^_LD@*VN5;TO6p<$u^DQ{d4=yiWlo6#`85U&bjvBUeh zThlCuThSgrj}!B6ElQ=;YKu-A5iqY&9B9bGLfCm%365qEpzvKa#*g?($sSNx1*R3w zq2NOVI)d#V<2Q!Pryo^l*@jbSebCBto3|~Sh zceRu6F+*oo>(3N5FOq`VAZX+>G8%Psbf{XB?rYm+d%b;AfRKt{qzdsUUvuJULyC}d zP0uT*l1-XyFk!8+b*gCjkQXS$NX%yeDT&t1p*yxkuWq!QGOHnLjb&g}fshS(kx{|b z^+Dn-Af%*NbP91V1tN%Uok3HMG;#XKmW!P0?x4F20 z#cyOO#1hSGU2<%qI12dxPvl(?>HKb_O7kP`=iiM~D@4h;+0G%og6)cA+4A*6+RG8s zJ#|~Q8`_Lk7R5-UZ$RiYYWneyPTKaL>0|=gQS7FL1ECuWUfa((>NtKt8@5UqGLa(* zDdpCm?p}w!Yh(7!PFll}{aZ#itY;VdL)Y2~Aas|(_;Ym|AIlz%2%mXPq%2t+>GL+~ z?UldWA~_AI{9yU+rfv(re|}KjF_0q|j}?&WXzjYqmyxF@g<w_%%A&4JJtmXLwS!rD2#L~FGF^Z5MmS>06I(m4mPmM$7O z)7!Eq+hyhTFEmoJ{y-E@bTBU?=Aa;mm^X221)&kQRuDuiYn<5&w22xNe60EF7pEWY zoezm}k0FTTA?y0Fa@48nyyl{dcU`Je@L6!?NZC#ecC`3<&ra7`Qy`Rmbnkh=NBt^6 zuKci>YY&8GyZNYEmv{AOf~-2nTJ{7&vHzCA?fz`g`_C;vXq7+{gE%tdP>}aHqhh@o z4a-x!2N@M ztOG!3H72azYBi~=6QcG1M4fqWH|Dt}%Z#A$Pv=(1tUmcxDrmTL#IvAK$>Nnp@hpgC z-DrqBKQ{Nvy-!cm8w(B`5g(w0(Gmznb`=hna)13X;TRu}9rm+;kPHmVy=vIWu&2DX z*#VKuKxmhA&WvkKdvtm8P&b}?Kqww9eg62Fem5R{V*RiRpy10##0SOWfzVh!{qO?=H()Xx#%Oz^YTdR;Z)V625V|{kI zR{nk=&sl1UdFiK72de4Y|7@4Hy+ZaiU60nd9$4TU7uAuDnl=99*I~wa#sRwqNkMxl zlK^iDwRP;GQ<$b1D$6b4yusc=r6O@MA*Y{_KuB(3g^#D*-+V9v2vwZH;1rJZ+7tis zed#xH^u(;#LLjsjqTH5TA67kOKWHc##A;m6kzH4w{ya6{88T!bjAkDY6VNnSEnV6A zwDolPn|zQ+;O5*%x2r%X z2ZVI$10g@R@LlN*$J6JR0>XS2D$PJ>)emi2FU!HEn;}Qg+D;&}f*Wn=(En-2X3;vN z!f?4C1JAID`>P(7Jrf&gT_7~ln&+$UJM!S!a2<`fH8D*y2*-X z@d?|vueS%nt;+%+RI3Rqc_3y>+so$|2W+GYH!E^ql8?v8TYuyIh&@K)Seb*UImXXQ zhK(i5M>>j;P6R?+JHB4htoY0qUL1jjqyZtjGi~ULqP`P871D9d`}xP$D#7FA_6Or{ zT0e>Yd)j*$tWRJxvOmpJ&C8Kaqd#Pu*mR@Swy)h!cG2|{#nzQ1IkbQBdH0w)20$nU z!)z;5Bk1H6?5J3xc{L*)=5m(xIy@H#c?6ED8?zF2cV%KPSh_*0ScERo~_( z7J7?*_?#-}DAzZI+2-+%($`VsW^9#qv8k2@@2s$kO(TUwfBPL9%#X-73iqACfq36p zVV{=If_TqJac5Pai3y}t$baIZRZjUjt!YMt_1_cRAm< zb>q3iR&`=$N|<#KaDe$yu<=}X6l^@#M1?!&IZ}U;yn@?JEHky_=pz!em+PpaC1>kY zeA-^YFYwkB>;dN>0UVIs**kss{pL%DP}Q9y;`_X9Cd(D3eo?Jod2RMg0}Yp`xF3Zx z3tVmrClffLaGHVhrf_C~$8QQ}7Kk^@++Yf1@ynZ4<5rwpwLuSe**O+ZmiKm-{M=CP zrd=e}57BM z|L2ZPx8S5K6%C0u7-fc(JZXK?XRePm;{YQN_vCw){}hh!7%-zAYmL#eMI6_uhBkeFPpy#W>W4h=4j8eb0UN z-shZs@Ba1n+WVe+9t=qE2WlJ<+aG9)>G(j*KoiuV47AfNA&ngoO`<)Zkr0hP5)2U? zO^-&KANJ=vtJbPoYp+$c&N=+iT;ADLwQA0q^=sCwS+i!n@j22k2?nnGlYDs+<^0-b zedG`S-!J@CSwv}6LEEn9Sawr(e|z_(N_!>v(!E!H32d4_KlIR3p11$+KKrZWbxWI! zd#|+l(06yswJyeIq2abyYg_B2sl}(Czglr&*K3`s!?Mt-sh3InJ#D_})C;ue?im>E zMp3Q4sI-z4At|d9K{z$Jz5Yoht6WYo$TjV%Z}Y#x-_Nb{M()9!u+rVSW1LKk770 zU-*63Kl${xy+9nv+kUlppZ4Wk_%SEle#U#h?lGH3@73J)RKJuj8rP5gp0E7O-+RNO z&kgO?E&JPpoV3oHpYiBFfBe5bVTAZC`h|~uwd09TeD4=O?NuLooit2d6TH7%&h~k_ z_R8@8c;73(^_PE=FPhuTdU>!vJ{oS`_Wl=r(|i8%t$Tb?Z!@>Y%lURQofR+q<3D=x z4}8%tX%8q{DPaEP*SMYQmEzz2Z!iAjOaIco7|bv8MO^u>-gEiIpZ38Ydw?%G@&wy= ze68Epf6ar3AN=+=e7g1}zTH}37(GaK9_BT_{>>kM#xtJt5nx1h5*tdFDW_J&6OR63 zdi~A+=21@@*t*MUrOnD|u~z1nv0c7+)kg{Phoh^3vCR|Mu7TB3?y(9`}!(ocPZl{ncmv$PfOpWMwaUuiZoN z7yj(+|L)u0^z;wCmM>aN;1u2dDO&1Njw)0oEuIKz9T^`ChWpcRym|GHzVccB?D3St z%oc4OZNQg~HsDKl8w{zb+TeeE{ENQzi=K7)6O^N^1Qaa!A`R2iKKh-%{Vk9C_#=D~ z)qHuSZ=G-ZgBQ-8_rz~`wf{mn|Bx@A56t_%^MRjx%ip^7{gTCOz_-|Oxf4&UHy?E{ zpZ)MZ{K~)ahu`-XVDr*bt1l2+8^0bH?SJ0=hflljCI8jeeI77=b^cSns6PMm$A9MY zo_GC?hkOyYgtpf4X7;_^J=ekyB*QXKTYQdq?PN!b!r%6tn0VoxU;2XI{MYaMlGi|+ zMlUV8tEVX2`h#z9qxXBi?Qgy0qwl%?IiaSl-c@Wh+qKQJHh}6@A2+s|bx^>ZYsF^k z>8_sdmD2Ok*5WQLS{IB_oobYP*`}pS+>(Qm@f}2*e*(EpTE`1fctMy_yd+}zC>(vJ?-gDz(F@0pR zJovJUH!tD>`Eap3KnUCvj=8-3V^8|2^$)%FN&C~qWu-mw-@oBGAAb77zp~-&%k`bf z`dfeJ;@|&q#pY?*j`VZG1dGvkX{ogqW@*n^0 z5C8e!efE$3Ka15}`~K}8`v&6Lhko?F*S_gX-t^RKFC+fB#D8tRx$n;9Z~xt5 zJ6a<$UwG>~S5Nry7kt6G_+7ULeg8{e{>E?mnTt<-C2?`$zyFk%e$HP#>H5F_UgCm( z=lu`8_<47p{odwl8r1)iEV`cc^S}H4FMjW1e)y5kad!BRzW0|t_ve4-X|MbN;w|xB7 zcmLD9TjHO`_m|J#^ZegGy!wQuU(4^}yXbr3Loa&DGk^5&{5C!gbd&SKyT9UrU-{Tq zzwGV*#()1;-}?(6|Ce9?qBs4%$Nz_$S5H58{59|Y&%{N~Pu+gmKREd6FMnFoU*emu zxpDn9S3mKUFZ=7id-zu3+6%nyflvH5&v^Zh|I@bIul||O|As$! z!K7&%w$7e4l?pZNGs{)1n9-v7Pt>i@Q9&R_j~ zx1Rj$$BdjF;p-oI$4|WK$A9y0HotF*y3N}+|A1@XAAal8f9}bz`MJM2BCh^_$-zs$ zfNtT}^Ag7yhur_sRe3 zL!bD}*F68Im<-o?H0L{?{0G1I($75n=(q4)#&iOvUQA~|wV?c|x}Q`o{IlfkXwonbLrPgk4yaexxN_|ZOQBdj z4}@CVd-!5=GMflR6)17R6&IY^j5|LJ3bxlqqg7fY4)%FDX*L<$nHG3Gr%~3Hx|(ed zr;EXA%e%I~)Y6WJQIk;OdO01(DXUc!lgG~}dNf>ZrlYt`r%Q_+E-zONKbTL()8T+y z|HX8<*c%TQne8|6q3FNkEf$UZY|R;#Yutj?Lh7hio$)hwi~!^yzG0^wb$MjXTNv% zhttc$`CxXkR!#jlIG*ee+)GsZ+YRg0=xDoML_rM%jW$LWDuclz)0OiMRkp(94#^XF zrkbp;&9@Sa< zjC%1Euej*W94%z0!^cM_xR5YTI#_QP3(%KM>`E_Vb2ZDljM+3h8EBRbH)Ue6fEgSu ztGKC`%8x=G;EUDC-ei0@QJL~`a{11DPb!zqWH!O!1=D}Hnlg+ej~lVLg7ra8A|!`i zVd$?;2I3OFIV;w%p4^#Ej+@DhnDKgwKr&sHpGHffL#UvGhK!!s&WAfU%cSiz(V=A~ zs&#pAnZKb+dqBCS0ni0b1#4{#sQm^=hACCs3<8(#K}W4q!C8w3+zCw4kOMx74QyMZ zA)bKVB^o5Vi31x78C){fpQsM{H3*wviPEb+^rINyazOX0dptvdjiUp$P3-RP5zTwI z)>8)l@nkl;+*nc*#5Hn?w)%2BkUi|ZnMNtA=;pGBv`HPRCx;mLmpJCNq{%u#PAwmJ zYH|9S`dVGx`t80Z(D_xu$N{(3x*73}WrS6rhIE%GbJ!a=*`*z;HjSLn(@3$wZ9^-8#aFm2 z9xP>$&Sz-mYSz|>AW>T~^3+l3sok>70N#>HZ8UtqMvVg-q_CSy6s;UU>t`VCyY+xpEV+%+lEpfOjs;%Dj`?V#g%!cCpz{Wk z`Tk@)o{SUN%f~z^p$uBf*jTciHX=!KiXzvL0eBY}psSR+u$2QzikBRR@ClSL79|bX zVXv0!O@hwd%xcjc40H)I!Af^ZoxuTngI;*+_z)?v4@i%-s04tcn2prjP_Nnn*eXoh z%d3?NR^!{Dbb@;O4!r#iumF&XFirICvY;MlR-R$D(}jloxvDy9#M#!e-&z*cHKGA*QOv}ST#v`JMU4rj zC}y?i9&4r--3p)$E8wOT=bd*QqX6fg)HP{7#aQBOAc>jhw zLbbO5whG%Ck*oUwmIDCkht<;8d5mOzSyN`coXxhY#5i;rK;Qxt$+O1RZhQWd|KNAX zgW-BUm~iIM{rSfA#y2+e$Lzv^?D}+f=L63CCi}&>6{!5S3xz&md)G)jTx><<(LsZj zkYm0rX6Y<9t`9)dg@CU@(fWC|TrLh1;N|yD1gq630q(wb0{N9P6xOV@Q zyPb8X*^}Q|&}xsV-rVgmeZlJ}x{Q<7zGmQDyXw9S=Ea>+qq*JZ>5x2~U)$+*koqRT z#0+UIv4jf~r;ab0M`uCJuxrCi@;MM!t<*$aeK-elo7~ovP3+;znb7YHkbr;Z)0qqK zW3!IhC!PtZV>32N;1L0DJ^h@hYojD!KI(l})a z=WC$Ae48~0U(P{)#rfN@pO5x<-D%>Fznz2r5=~3{N1x77fafPI(<*#9H~JRp9rp9J zKR8TiaB@ep2kKwXR|l=o-KA6?&s0bxe}yVUiRVIU&Af}&wSJIJ`>(2A`h*t;tRd}8 zw8jGM4$`wz8j093v9;tg(Hmhf**(zQ{L&BoYFTX1s({9a*lgeHbcWizm^oJwsUwma zomxIn*5d3*WigZ9{)I9{QAL319h~xmozP;q;DGPaC`pUU1Qr)yA6stywV9d}``hU( zr9bjHK;T2#{qbg>DzI0698T{JjLU}<9y`|wE4l?$y#C~w?q@4k0*aSpl;f#37mMSrwrLDry zrGg=HN{ZrH5%8Ra9yd4LXsp7gq{hM7Ooo^!b|yTYPgIyn0snMk+fiYBsKVr=@U!44 z*<6LHOgK{wJu9t{l_K<6DDynPRrd@$zyX#cJBppDX5gu6Mfj9BqE!nlQS6L(%376} zEPhH{L8yeJ5IGx`lAw5TKP9G8wsSK!ik%TpNm7aFENv9Q(nwM4v^146l(3ZHemJC> z$I52}WEl*SVqy(bW;6BifEMP2%B#y0ki}*^m@Mu9=R-)@IxI~~wafkOAt3sp6rJ{_ z^G8-ofJHHC=g)Q%G&W42grRN}1r45N9WI#VlASPYx6_nFtj{3R&%peV=BgbTbqOw* zc>#LS*+wtRnlVn(ZbepD63TZzI+LE3bTjK+w|uCfkRbR&NQU7w8BOOF1r z$v$4l3kEMYIb*(otAMXpF+x!DVN6J6HaoaIIVlc?40Ug^fnBMYQerK)J{gRLn6=2@ zZ@{=9X*%Do`9JS)9qDeAj2bb5^@ZUCWpF&@J*n*m@1sj>VNaa%kxTOlmZ^3TLWYG4 z9*J5HXB@}Qg>{LM>5{Z%$|fjeVr+y6ywLZo)nO*XOO8J$(*@>bvn^(qGc%|hP>s=T zIq4e6OIKnLR(U9=3fum?&!lwa_~Gj!kSIQwp3s3>U_->p&2dC3y#Pu-R#q;5v!#G- zCK(sZSwh%=nMyt4LzJ%fqti8QbUx6H6zZIBuWBp-Uxn>F-g*feZ_E>zxxcQzlCPf(gCt-4TBW{#v@sP=(@DROZi-@}k zIPkh&BU@LO*0RiS0hTSjbeL}6h_wP3#V~Tn_pW!21Edd8rbZTJy4Ppm+M6T&N5dh` zqzpr%T;Pjhy`;FPIH04L)g#OO{9`#P*at&R5`FF6(l{_Zs$(3$N;_GOHp{`o+sSs4 zKoI2uNffgV&yn3+CqdCnLI(34!o3i#k!U$h&=WEVR|R2RkefIxOAmp<1q96ceakv$DJ_X=;MT+l1C)*gpn~58Y_jKu%4)kf(RLiDGDvfH z%lt%xwvh&owq%434Z-vn>23tDc7KG{{5^^`%>r0W!(hbaxLgB4LvaDBMoO<8K}|IR z4r7IgB{x{JX{+k9?v^GxqLvRd$}TaFmo_s^Ug~Xvwg&JJ>D6r|4wV`e?xhZYfhHOh zsfw6tEFM81j6iKg$(mx91lc^eRYW?nRMBqT_e!(1l*=wV?eXi?q;Ajd_z{+4?f{BKT z+W^=&Y7J%OI+dEglUv>^$Xs2Cvw=8{_F5`xWrCm<57Tjk#}4#^^kDZr<0=nms<8D; zZk^LUcQ_LR_Mw5X_#9X{WLd?eh4mU&m0nA*`Ir-Y8n{fO8!%ZEJX|U=L}l*f{w-aZ zc6a>}P1Bkm^fh>6$;QI+m~8eqg|$~ngUyFDkacK~UN<~R5h5?chYgf%BFd}2o-MZB z?SA07wyRB0?NP@Y66kG7Ww_+!>^_GPppQ-r++EM;00eg)T=^b2Eq^Ve>Gdt8rI@$^ zEuV1!;6`2-Ui{*@0V78ZqvYzeOH>1x8a7g*`X%}zOShV?R*|#gHHR9$C(eu|Zggmi zqy2EUj5F}Gq?(c`w*72|?3&Cj` zz86wQN-cP8t=By>7l?>BUDawNsG)T5#!-QhbY`rf)}RcLGvg~czhn8~v^Y`MrjA?k zt2=Sg*tv7KObcPkq2}PnhMmnlOlPz^$EHZ`=uRZ) zNZY|!khz^#pv}jN!FY(D8m6`nns|6M=U6}m%5knQP(e1j`Bl7)P@OX5m{>_&oltCc zbAT$)b&e<1MQBw|EG|-xFmRdS)Qw{XJ7!IEW0ePNRoDcf93iC>VgSpaiK{uGv2;WX zTp2{@2*gu6?_g@pcXJT4*l2PkY7y$}u=)nDp_bbs*9&p*QK_^=UiAr%h-`-=O0XfA zYZo2n%hfT^WsoVEU(URC(k}m3;Q<%N^Xi4z%Mr!K(E+=8c{9i?h_TNkVTfEPS>xZI zfe+r7fDRE!`Zt_mzv)_6^8ucnU}Y|L*T)hg0`E&;o&@Av{)r?Rpcs?( zC)WfuZ&Co(;#B0``@BveQRb~>p)&Q;i|ZWC3K|0l7cdr_RWKZE3pu#}%7>5>^3^lX zSvDx;LaVUNa;`~g-nJ;O7PoPc6OroPyFgJ-2n-67mm^*y^Wr!9h~Sh;o57 ziWvjV@w`wPz#&5W=NqzqoFR^v+iJQxtL=S=(Uez?p>;n*#{-lP^`Z{QaTl9pg~bCAdbMnL2gY+mIkuqcX~N*X;7=2S|YBjc!-zDq>{i9 zn~b^2rbzIimfYZONrgsRVba?r)94z<@gX|LmX$PE)T^plaQJ87PRDHZl?OGslS|ZS zua;4jaUeSWkvI4>CHPsv>!f-9DT4z#-&+uvig#cBgi?ZXl#Ak{n9VU`rQld>@e;I7 z3+r(#FWDa6Md~*N1M5>y_Z2-uAIhDB4mM&n=KwG$62>5ZZBHT4&E9# z!%+^3(v2RG?&!~NoNQLN?Sa8MjgQ|^*l+X(E|+)=YZpx2isTCKfw zu*JmCue`>Tsj6?Y4)32}?D#UM{D>3d$Wb2taNVaZ3Kmw#ER_{BVoS)EJGWrS;{{P124_(`M^RV$9VGgywnza)CE)DAP4|df@XzEQSiWdca$2 zMC4dJVA$id1UKBbFYnWkIK-AAhWU~#yo96jeUQec@pSd4^daOs$z-8MnjPNzQ_IFD z@3Op+>KqL272G=*mfpKO{^h{|qBSnJcwm%Gndivxgu=ZeH-Pxzr7Jo=UL5Ljf;)b5 z=gG>g9cI~r@&$RgUg8i9FVc%qmAqbpS(b_06`H2FQ9o7bKi_tbd^}@TA z?IlR;H!Q{pK7o&X^J#9s$Z%eZz#R_9sU&6&4&Zp0KEV0>J+lPDT0W5y!`TMPOKDza))0IRS;=H@v) zfeBZ+TmoKC=#3*@f<2ZvDQJ2R5hj+$_^w7tfhtM&3#CcJqxA_(^L&4aWm4fUHYOUm z%HwM6jAa;=UYnAJL{e~I1PmtENyt!}M7cz{)Ts`}MxQBMX6tSCdX3C4^gtpw${>u*zmAb8zQPS)6;_?|O7-?y zTP50>qt{rgniMou*z`N5PTS)R_~EFK$~*n6M4S&)mLJVtek3*f7~p1-O=p`lctA(+ z)djSa+A_)owkT$5!rb2bz-|VvwI?itRK)K|Ia#TdqzKrGQ2;>uCmGT0E=O8U(d?FE$wMr+|-QKJVt6QB&ER0W7}*mSx>8c;fhCae2vD--Q8raJ ziqhx4?>vo=rRR}qd1ksp8v}9qyB0rYol9Q`Z_C~!#bdEym^(76;iKp#E|LsSj$PDi z4VHR>nn$L(X`WN-QgGDbpz!L+Y5)z;9nMZlLvF@LeH@)seXP+YWH!$2G_@KzsngU( zPAF=ms9KEcbgdYhh@$|zKre1nqa4s$+)B-LY&0WW(dGQ;Mf2g(&dT*e{=8vL)wq;Z zg@Ke>oz@vM$Mr0p*i3@6G-f!s8YxD5ZYTodRE-Yag@Mc~w_`E^j-#P23Hmz*Ca5~T z7}i`*?v86$vBqFO1%+a{6;X;9Y;JbeScO;_D0b2eQ*K7=@LyqS^5ig2d_`p_S?%P? z2~iA=xUM%aCaxi0?euVbW6q40>(mVI0)e2ePrdrAjXZF+C4t2*&mg;Pegw@-+G$aHfIvF-n@%)@HC@Ah7yLbx@QG>Y|ucGsg<5X$Nc-2GYOW zRU31&$>MNxl&D`zZqT-*S{-w<@<}E?jn+ZWk|P0Q%?8Mnn)nj(<1BPNnw*u4;OlywJ092HWHCKX&net8*P?O zHspAP6qIMHwLEUHg(@dSM2M!dmJuh?v8=nf%$bP0@U=ObV!LUxeX~SS6IYX{x>_|L zSdm0{G0|xW+=6#c1qF(ASwUYdrP{uNKvaEV5~|jd12+OMp#)%CYW8@pY%cQP&Bqc} z+v3PcCKk0BHJ}+bY6e>Zi_LO1z)r^<^Y{>q%1Vx!f%v>NakAjqS8acGG7r~geC)f; z*D9)sooV_(u#@aMEKYW#Wy>p_IAbn5%((}MvLzjX zO~3ecZ-l#nD6#va^-7KjHHHQV8z~VMI?S1$6>bDDsF;4$uu8OcYktaVO}7$lWuRMJ zfeI{_XmJ*P3rT`AVGD7`YZ62Nk~3nwlEc>D+aF~YMHcKy=K;m$N+6E zU{V%^d6kC`vCt-(AY=k-h}eE3w+9ME1z4#_v_sBHe9Xg%HccRrC?J@e{VG{O?_kPu z@-QZn7?2ZAR8sB=o39z8E!2z%t*n1(4F|Bhz3tHKrW;0UtKDyjUfaz~0lSITsy*m! z8?=t%wl95KA(|KtS(IQna?2?#S)XkVO+Ae|`aY?rCt9zb5v275XzOum<29y{%qck? zWE~Q`)i`&Pks3#Q)Kxc1a4nx3yfJ|7a-1X!wvI1W;oM}`B4NxMJXILTygF>BR3}Hb z(c``tJ-LZp!)iB&ng}hi7q0H@130@s8tz<|wt}-|>B7t>!<)N(*NV3bDHwa026ybl z3~B2g4YZmoX?|F3^n|C}^jQ_Nkh&EXHjsj^r}W1X?@LQOahla6H{@hTAq@=(%Aiq@ zJR3RV;kzOs)u3QnGR;>#-^P|3@)&W@~1uS_T{I0slA<{gGw)?gQ z=4MmqmHML4nr`iu8`llUimkV%8^+vNh#*Ur-c0I+$A(Y4Mvn$ed^PO3nNu5_ksh%` z?G;V2cBvQD^Woui6t<^v6g3R5Q`?%rt%m$XXr0903qAJB@W?CGCwAA5zjpARy+(3t zc-xFH_>ub+?>9anbjfPNpOch9Yn0qY)ym5YwW-3GSl#1VBT-_*y$kS-6k~6>A!)Lq zde-)Ry6BdpxYgz!4Bq^}+2GTm@`}pR`Jg1IE3bG3wjfl?7CVz-NdY*P}&Wguyb zOb+X*+?p9ERpZK1(#SU09x_{0XW;9Nz*v);j!bt~edFN0$Im_+)T(=dtilMJ`2k)Z zCV)pBnpf=92dK?YP`H8VW~;`dHGE^XHpg9}_iJ+w^tE^|wq7T5;BK0ibh;>uOgVAf zXXhi)58{DyLs|INvK$XRq#jSu9o_eWY8xJQm))A9`iS|}!5U?PPpI@dKJLkYXRSD! zG_$P@{xrFASI^)F3wC3Rg5#Wd{c{;}&bd6Ktl&XemRx%OEx)3+E%t7$rw1seK{bp#%PAXnZ+JgAm?r(5x;y+KO(*C5x3v_Q+LEag zf)Z6pFEepJfGLjJg6{f@n^&N*dsEz?$-KP2-_ie|@A@RETiS{=t?4-fde35-vq=-N z_rj=&?B}T3BgBLy|3Ijx(Kb%zF90MV;&2$ltXIbG5KR&l4d1eDsWX z&k&K4a>Y3~85a@dp&B=zR7oYbBD-^wcN^uuKubR&w3ID^_m3R%OyUtf4nW@ty+NWL z#nq6ZiMQMo;^ks?LI*K(xlh9Nr=#Ue*4(m}3eA7%Y8}7KK+Sm>_C0rGFQ5dwgDKkV zIG_%I#Jj;gt9NxThZ<`M`jyb`x~!3FgE0#pw~*1@Lgo9~=i;uFi6-cdz3ogrTeTX> zfN*(SHF*PDlucrJ%UO2@0Nz^(6kQbT^XS=aH)h6pLPGAHjt$hhf$7^F+uN?9T|S=T z)G#p2$(#v9<-Ez4SsVCW#f_I6T@f-}y^XrVhN-N(s6N z*OgiGb9vDDHNOAUmC4<1GlQ|trj?YzYpmVhm#Fx;j^#{d)fliQSIthC`9$vJBF<;B zOsW(onqoaMA9q!z%mR1E^A?Zj)>uZEHf6rz1lMcxe7Vt=<7 zC-_y!-MV6h9tsOxSHb0?!*Y1E9CvngnJu?AMMamZSZ>&hX?ahUT|^pRTWM=%YLQMV z=?p1~d3u=lhdXl>N4)MVPtxT|o8b8Ao-J4hZl9#tZl#0BwSzQA%L8vY+tm`~LM@qJ z3b&5oRA#HXE4eb1xqD>_B7&~0-QbkL9Io0$QYTbYRH-{QenVXtrR6o-)pB;iNuOS( zUURH?HTCgY`^RY5n64D9h?A2Oo2Gh3ldL&-s36%uUC#^GS#rRe&BGC&_k-=b(C-?` zYd~fD(1CZ*2d*D9_hoh@W>3Nlu3UVM1roLGhZ$-!Wd~aQtHyXdUa}~rl-Z4(6w*jB z-Br#$s$PS5dlIOQQ?;|XnLUGT?;JN0uXT2w|4w7@gi=o1lq%wCriiO{{EIhY_Mt74 zE8pRMtKnB?N~m+hF9%&pRWfTc@j#hl8q>q2%Y>*H~@nYe9 z7b?}(O2g_xgR+ssUV?155PNwL7O%)|XXnnatMx#Rs@-XSM+VdvxPc1U5^dWP1C{ET z6GaTFn2a8#16QE9yS$Lc6keuQD$${PTGC{Q;ZY zPvo*z%4zINT6Jsp)}^`VG5K3y%&!KN7p_&g(OvJ~;2`<$*g(dHg|C%YBpdg~{h!IhPp zjk&U_ahxr*p3`yJoJKlVx|fzyb@f@!SKFEh-&R^J!#T?;&o;|_MQeG@Oy?^z-tV*( z7k@uzNw%YIEyKPDyO;Fplc>0j4?Pnt;7L-U1f}rcc+D9QO5gmP@$;?^GH5(S?sK+E z%g(j6jau@ZujKm9x~3pr(t-EP!*Y4a=3)knI7pML4&iQ2WRwU3_7s*?5b<(%1B;}l;JT)q{ z6}|we*5*^rgmq~>VjlGxmu9S{)9cSq>R_Q(_4KG7`H`FvJmRT!Vo*_NHBwXMZ=<~|=4v&1=b z8y%_q=WF+r5L|vcUtQyK`L?>n-_KW<;H?rCdvN4PvJYL!og_m40@) z*WGZA%`@9d-pv)&xv4>sm!@5S-Wm_PrPYD}y1bU6D@W84b(*9fu9~(tAvLH_dM!C> zhCJS#4t1^MPqJ9xlfB=WSu~uT1vl(|TYJB58XPrq?>cvyBZu-jvrrz-ADr%}$RjIF zsVgJto#J+KoTWz_rB#O8ouySdqS8`^<-OZk3@~GJ9*F9ZS@h+s-ZMwF^}U(Da3GWY zK1TO}*i!;V4coi%q9WW`RIsvay-v_dTrWsbcUqq9sqIiZ&^c)8arI?~q#iJC{AKlhosWc4=FY>RSVmlPe9-M~M@L-6R&cd6-`RMr5cdOB_+7df0A~%+bYxiG~%~TXS8=}=}6pbp2 zoefbr2pmNgJ1wGeFuFF1Vy8t^4n&72ik%e^)uFLVM8r;u$c>!o@S3cyL*%q*{H$>G z3X#*Iaed^e36ayH@e|8Y6C$TYffU=(+Po;( zk2P16Z1DtP9@@s3LvZcVHQ#FVHMZCA2wGx>&j$K~Z5UTA4|MMnX>x=wwgm3B?AA5A zSf~njFsal0xs!WK{o&E({+)T)a6*q}4Ue9BSu+a8d**c;g$S6knd3*0#g@LcdY0kWC zzcVVpvXf>*JLl3+N6d^avrehPy=cIOM85az?lHy3QQIBmtk+wnIcQo^xgg^ATC?fQ z@q`^QpOw-3!# zdde_wd$0tKzktcpSbCpYVFacM1DT%(>J6T60nUevhvY84k(Z&PS9X0!R}-_>2}VcD z+xQTZ8C4lH)|0E9TvzbYxfY}{XyZG_^hZPSd;T*1P*de5Qhj*?vYucrgKSFJvbMo1 zh!(cgK-ThC<^x|1PK&nlZ>DvIi&(b3Pp`^lE^w7WYY1z=a^B%r2v0$B>0uYF67+RI z2)kdv8@OmkIRRoU$_EQ8KN=2sY)F(*&j{*zf=!}o5k_XRv*^|xC%nI6Ok~Kw+Tk$xV zG&uSpe_jP;R|>>|Tp%=eqLHVIBU}t@baqz;?KV|z{!AAKGtCEsb3rRFcjOVZD4mIJ0lLv7|JBhOc1E}Mw02`vv$ zw^9tgt2`+0`XmnIyZq{if2@W>Znf5#2;;zOrbH@8cJf4m>NA8>B z81fu1>vDMp!tr(a&Ndv__)6-D^qst_jeqOAf@d)0<)a1>;Ay1TkjyEj<7!nc;A%PG zKqyZ}+(saXqi|l&5+?KIt*N{73pe0R`I)sT@;~5$>r8`Ic>u4% zaPoYiC->Zx7^xp?xSTvBEgt#x1BqS|qRqy*f|{(o(}daZ5!*4X61~^V3eskh4g4He ztjY#K6$UbYZ<*Z3h4khwU@+Oz=4O#svQh!pQ{cM((QyBPTM>#shDsbPR+AB~Zt#(HvNvYQ<<$tOhRSY_duFsO z(D<0BEb1%U5G&zeNGX!96wr+ZJJ_SKCU_Sj8O+}H`Dinr;Z5nVU|3>eP`RGFy;$RO8D6)GV>*UyHH+r}7flqO=>46%jDnrCUfg@5mvVu&UseroOyeD! z;GIwp+fM9h;OtU_(I~XD-e^o#5oVd60CX2lyz+}tlnqQVR4+ExpdA#A6e!B?JBvH) zw;4LBix2h^En9k4D0cgsWiapAv~BEwt}VG2H!A_l;p%5=gtGC4l`k*wR9Nk`DjW1M z#*k|3Xl}bwV(XY;5$28@rj5vLAnLOkr1gYeLQ3Efz=w#9_}uDmPqS!rxqy{tTXJ(D zg$w(`)DAgh0z-&|-omQUyb=s@nCcn9R!;~_1Rm<%eogSDDi3(7a4+F$K3N_Eq@MxG z=={uR@@oM%SUB85B1C$p-?kQjt1X#vbC)*ikKAz*k`gNnSap zCGZwTF#wi9n-IC3xH9i+*Y5%Y9x{=#lGbz2KjC#{xk%KzzzSIpY1?nV>7&P3bcSiK zvRs9|`giLSrBsVQU{%=K#X5RVr&M|{3XOn_?Bci{ut{K6wZ#tcuizWO$LKGwz)C}Yx%H{+%=ckW(mh#@dLOZA zWSeHB0kw&?`Ke=?IGbpRpsX=$P$4nmi^-VgW>};;rjZkjjTA$go9DI0XJq&)5;CD8 zrxc*COy&fv4B8mC#muyFa)Xj+3-ex^8GFY$fy%yv!oBz0=j7owK16YA3ycq$q9fP$IKT#izl@Y? z9H^vM1QWsG0&HkF1~`&*+)Q%JF?W=}i%wFCc@$N|Da38y*hfj=M@vpQa3VfVv{sb| zf~v4)xIZ&afL7%IT7~I)zrWtA(qP5&<@zK_FvsZ$)DIik;B^6(n!G)JMSZO%TCH=V znX6KF0MZX^*`N9DSt@?vobUAnv5lNys-V=6{7VmwX1jpE+J~mhtJQf#7#+E|vky_E z>`8kU>G}qE7qF@878Yv&-nZxaNw)Sb8(3VxrbMpZEjw)xw4{QKWhy6o@9ycrwwoB1 z^+cs2Re_KM#lb-1&?+`r++o?;969fSxJFINF}6XsOyCOy4OTMj^eLvePT0iBcmtwPdWHvb}b$H_|FF z5La96NHf-Ja}Y3hXx~8I@x>&L+KTDR%^Ph6mMvdpvmWubri;Z#X{<;utZDjsEH|cC#{#Bu0^M*8nkFSrEkqK z;tI|dfEbY_^z&PaU}f*90$v7LHbx2EkEEq4k7bjhko)^_MhrWyAEtS23xIB}GyV zDBF^4^PU?{S!Nd_ud~5ZQXa1;(NU(gN9!TyDTOtfC?QN~r1WnK;o1?JptLpplt1rf)*fMkY;x}(Tbu9@fR>?$MKz*7dnG z@j!o2Xpd%gX=Tv1QaLW#C_z=IsKOF}7d8Sl`^)79CNf;5jko3~pil{|rBJHEbj{T( zS8rUoW}+HZW4N!D8(9HeuHKPa4gBgTEwImwI0Pefj{@J5x^a23+}h^Iekm@3Qd91& zmU=@HnakGMBE-krxgPgn8neYZqC1?So+|HfWtu)@qQW5pQ`9j=t?0?!(F7l*JcgxB zv`j2`4b2blNlI*N%};Ty>2%o@XFZ!3e4+joQNmXe2o7(+mB2BQHc#E`0>I>V7p?7V zC~T~;gU;@Ts-AQ`2e1p!;x}Bq>s%jAz^3zY-ey*?vCQ-lUP24H5oMKNcdsiWvP-Au z6Xo8XO}63~_G=KidLL`Ma9kj$*`;LA?{5zdcqIaJREZvX75gIvUv0{(|h0+|O4hm8A1X@RSW9jw`Z2^3UI7T2? zQ`9flGC50h3y)7Jhg#Z&G!ZIZWV3lRTW-gW!IgRZJ-!>)_qsoFp{@NpRxw=4PJQbH z<>ud*cYXm*RH==o02tLYB<@uDl;~ZRjO+-1l=`VDz%DM9eNZ;zc~SemY!V+Qe~OBz zkzWm=(;&yN3_CNL*agJ4v3FleqyJB?5W}Hv_y>9j=vke{P4Z#!Cxe^{us3_tox#cEWm31D)UPws_~)1jX}h z!8?#P+e6!x?O~KzjwS{%0ibFn`m{zJmAYFurMA^c>AQ7NY6}G&w3EAq=Hp>8zjieu z*j+?!R^6rQ;`B~dC`fUZ(0mRD*{g9|r9>n6G`RdlZa1<6iD$%Ca*G(9rJWw1HEO7) zMI$VGllg+X!Ll~M*?nrMZ{!4}hk?WR{YAe9tBu);vRZ0HU|*b$Kh&^9xLdx8F=m-t zG{gexdhaySKLw;W@i&QgBjGIMmzVR!vSG)5)}D{#2F{3BeK}JrI|dVVU&VCJNowh` z!_BK26Ln>tjojd6rbH})ed;+$-o+iaa9PHg21DuGAST+<&Pj3;Z%nYmeo^;Po__2)1YV|!SHp5yy$(THi>q;v0sO95hYm;F{7KBkG7E^xAQipe zwUF)Bi{W~D;B*B^j~#dCx3=vAAs1BoC~GjG z3MzIG?|Cq^R~a;XxijrK<9%*t4HmHBmV*fd zQ5s~~m@di9*)gmZJkSfA{i1ToH_=|b<$?7lD?PSh8aO($XN6x6v8o&|C8h9JLr;B6 zYtJ6h878^l!Tye-jocI6aO6zdGp+Dd;KR{qQWVquDUWsFkZ6^**O2zV_%!1-?8VAyO9%rHeg8pR+WZ@$2JI$E-+K+B*rMal^d zp`y)N=iMufaTzew8tMWz-fezM!OeeZReLp5Kv0Dl{@y;~(&b`}r?H%WhP~MlYDcnx zg}?N8X|-f$XGhCzF>!g!Y?$l6^bLazH@55LT}B)J&@pAiLDpn28*=wjPBn@pCfTba zp1?Yo@G)S*RodZUQmEL;tJ>*c)hO}s)H2_t^WploOqcB!h(7&+*JdEb6MpFp-7QTo z2XhUWd0{=5SI^-#A-T)?VsJW4!cG#{sV#{4!{ zfmFT=7=O>PcOCrW{Z6ZS8MOJA6O~dIpI32K23~M0IZH)~M_Nj;a?0iHl?yT_26#=Mf%{W#ufs+<^(x@dQ z8e=Cf#O zx+sbiooDx;v~b9lPekn2YMPQVDXKj58jGw zy@%N?!uM=}3j{75PDi)pu5@0EuXhgR z+2(H75*mHT3?q%tzyu}uZB|r%s7zQ8=BNK|W^nH&S~0n~Q&9klD%@)uP-otN*ArN0 z@*2U}dRtwgtilX*OntI4N06>5JCe02*y{`zlf&g^io2C{^;wrOyXSSBEk+8IiLHNx676pQbJruoK1h2bjB_S;nbpO7d7GQB?1_|WnxK%xYXVCg9xuiyEvtM3 z*aCoFcC?*^GzOO)N5-IgxR7I^hHRN;MPWY#xgj#(NeVwa-E|-CU|{w-llST=m-iQY zh20T0=^mTShbHpxqoK53?qd(?%@kjfm>FFdpi60o(TQqvxuPId+%$aY7jghpf7^u%5{Se^3@U1VmD z5>h9l`SAJ`9?963LG@@8zD!5k`hfQnEH(J5!n%M(ZwFp2++JR<6H(m8SMFwMo-j~a z_b$Hy=ZkKnGA3A>a$<2HsM%g%Z6;9>|8f#rJcOYc>@Xm(?s9Y9ZqfFwkh;DGR(5?Y z(Uzp_f>CvoIdt)30(^0lT1a=2p3I?wK!=D1pubC(=&gvoIK3J;cG7H-&sAuLTN^bE z4sJZpv-eE3M0C6`fUcQjD|1dDYOFV)X{10Cc9JG{A~)-}$EhN9+eiZWPGaT)NMjwQ zz(xvW=UH@p(F9370UXzzEXd&2t)*f*PjvIG)#Q-d{h;w7DxJ3t4X6PO5j7Z0JUuGw zA^`C9gaL16VcTz5ta+x}IdaZ;x>w~Z&%!u^+rP|{8OS;KGDK)fOExVCDBYi{NzLjP z4F8(Tw$spsgo_PD$X{FuJyfy14H{Mp8}_=5!ybh*|lw6Om$t zE|9(mJFVn~a5|Yx?z>mkl0MXH1Xh?;YFP@9`E!)0X@QMm#z>58ZTZ|4M1LH0GTc6r zIuMMrfz+~t4knjl0G725V#DqL|CRFBxb{stT92-!_APNXHHqs8gR&WcLNYxisse$o z!Zc`pKZvtjT|&^0bzN@qh1LZsMEdPtxd5fI_%Y3}?X6Vs@*qD!YWcuYi$l8Svx(_} ztbZt#pGfdQ8#TGc-3;-;EhrZVn>@wcNZaQY8uHU71_X9Ui9-oLX8u}mY~iwg#j;HLJBP#D*?JOnH3QIs$aZmP6DJX%`|&b+%h#o zS>;zdJsqZ|L?b6v_An8)9%L{A)L+~Eeqbo6AHup65FcVj`}@v`!kRaRwI|8)prDJS zv`8~4LNDDkC4x&;6DA4|nJPSGqkA+7;7Be2mKz&ef{`f@7kzz7Oj7p$z z89?9yw3QB>(_^EwI5nHSTqB{!JsFxAxeuuu^L&JteoQ;9s`;RkpsYNdpf0#YpWIf5 zOsZZ5VQ6yOm1*eOG6(~cnITOhBRccSBqzc{9Jq~?GTN^3;4|m-EWe+z-gH(#1wt$` zlcvLX${|RiLmD|Dy^#{8fgYo{gAOkFURV6I6HMPK&gO^YH0P`GKtUC@w#yBVKo+1O z!jeO`+jfZ&IxDhsSX?b!P;njZ1dSj<}S^5fq?41UdP`1hyxgF1S=` zPMm|Qv^}Dvc4`08i|>f4HYZ+vob}kCG$;HJ5hBKubG3;FbP4UpH}H9#V>CAak7D#i z{@K>9TKBR24HYfvcJB~~$>wSu<~Fb)Vx!KO5$X_~!g>afnA-J>V5=we>U+G==q541 zK4eh2I&hLNgAKXgFM~|we2-NOPQ;eXjuP|oa>XNotinKQ)}&V#UZUL6Fu?gxuXbTp z&t&0ZzeZt>P33(1-3zPR--pS+|^cd9>q2oXi63j&)gq}P!`z}ZJ) zPPo4u^R}2h*W!4~!0xc=w8{J@;U}5*h!!08PsVPyXnx^n4eTWb*5Vf$6-^jiF8U zb~q3!OXk5uylhV8FeR*`l2jc$(ETqU11YP}SV< zfHg3dIBxOIL%e4*1_PY#ciPHrdd2(tRi9b2tNOoaWsB`k7Cx6 zxe8QsL$KvM>BS3e_AsdcEQ6Go-|u5PB!!uN)W-h8Xkz%qlMBE&N`ZMs7ENWqqnI)9 zT>nh;FxlFy*2|#!#c`Gd)%rAWyo6Gtm^H4Ix>@3F6PF!4evp#Y<7}Xcqt?Z_8i*BP zXeQoR291W?(gpXyNJ<89K4h((TXYU!!#dZrUt=%1a%2DqfY||7kJ%?$7Sk?WuF($^ z<*z`;j9P?6d>i=u8OV0Anyy5l3s{@yTA^gX;_g7kQG?GZMxr%G1>?@GzywI1N&B39 zM5`OnQ4DDA@8k?6*Tdt1fPgK73>fJ*(rd6P>#n}}5XGU7GmW_Qu96GqYE;40ppSAv zMigU6<@GF~Gy%)h)QYASba<}qAJ$BH*p$3^4MGqp016SCV77{3;d87_;dr{zJ%+T| zLX`((RhU-HUka^?0kR6yR{3=hgSw+7rlx9T3sIifYPzp=#dBr8MSTdU{NYEi*rm7- zfzJFox2q@4>yYf~5JkBwM3|cREd}DjU>|cWUeY;qFYvf$Gt0M^&B#PA-$-6fu%g!d zl-HVWVvEGYt`3yMQ6nI`T0~6)eB4sKDgb*O54O^b`jF`ubJdpV94ak| zU_eGOQ>EviF%dI(K+9mSQe|4kai0TIh#KaZ%WA;;NCu;KlC;^((Z|*_dXrfv`#Ff} z`DMzf!fb@{WyMc1OI2gzrFv$4i))9(c-Ci1)DQQ)@=Ig zMGl?e2qN`beU(Ru%lu5V{BYhW4h&{?WpC#8LlJjP=!L3|At`7XYpr5ivs%hQ*@v!` z>iz1{kbrTJpBh;;vMhHX$)b>xcLh_U%M()J@o{>OmD#3PEjtHE+V(`K9=yjU%sJ>Qv!mw?$k@4Wza^u^&&&dyz=BN>KZx0)<~fT zv^daaQeZC*AIjS@)iZ*!o?!A^ZkZ}*k&P_Ybb_h!ZwuA zo4=Kj7{s+PN@=w?<@q(82k-`*ZE{yOwF!%I2~~iB6wWDgt;CH%Zlz&S2XGaRE|(>$ z0n3}a?S&693%z*3YbC5_(rqW;Lng`&5$Mjl!LPevmyD2;xfy#`O7Z^&-bxMn}uzg$*4G0MkRx*sTx6Mzu5MYpkJ?2svA4lVdlyn`wyw7D<#2 zo^o8k2({(Q?CNx`;7&#Jb~oH@GIvLM zc4Rf%ay@atxI*=$S3p?1?RKahSLcpTOp3=~O59Y9BYI*Gh>D|uvJ|dZln9a=sJz%! zN!d>5$!V-=(m*NgR@lk}aOM51)KEF`uR`RaHhNDbEYWG&F;sYb+|@0&P_=g;xY|D$ zb(lFL3Up-PqVBxolWgBQK27HP6RwK44W@x}gxB%$7Ee~MPr5!9@-o@+k+Hhv(U^{} z{+zGlt4{ppQ$4BDkwM3Ws5)j#-8b&Y6DMl{n{HB0hT_~@AM-QKotXLw=#g}HUW~(M zhGlu>7zs>L&LiXO$JFgE!+p1EsN;|EZsm9tGP z3Z^-3e2?YKr3eo2Zck412*DWkp`8s9zE=in*C)S!sH9Mn8-q~ZGTA>Img@U<&Z4$! zWjRq}EYTH=2Vz&##lf=loHamLs+g2i;EN)q#7lueMC!AVV!XFljqk!u*9h1f3wuF; zc5>`6(dn)Ets}wN#A8L;O!Z*?eZj(_zP5wuIMv|ItYujdv=zgBw=_>_kWk{O-W1eT z{Ja6AVexHOqVQ43$g3QW>capOjTE>@{y3`g!3BI3=1eZHme^IC^f@$XP7sQ1CIz~& z^u~oa3o#1)#7K&>fiI525b|xnHUQoVqzm+7B8_c;*>!Hwn$gAa&;u2LO>Kl)0D5aPMPp|?0m?VVW;HJu&%PCxX|hrfFD=w z>rbLJl5mvNj*xMd_tVl2n!@QB@70U1c*VtQ`g2`>?oE*2V4EOsq(JG-Y>#&JN#0RW z7bG@jIsUOm?P}Xq7qGEwqhBuhFzI&Uzy7X}6_k`{hd3LJ5Jv-Im~|dg$ON7c>BZb? zlmlLi8&k+l@77(8+nj+f@zs`HlWV^A#eesOFSdhj78CQ2AS0ec+r`;LbOaS@ZHROw zjbom)Ywt!*Fg8*^dViMBg<60hM1a*JDabevJlDK%U3|_pZD(@2@+uG5s<0u;4b$d{ zs>GYzQBvz}oRVA9nW0`_;WItV^%ogWrEZh2+>);!p!17H9kC-MD#>~|H!?+gq;T-H ziBe4T$+f1nK+s~8Z4y$fHL}Vh?n)m@dvCwC>=^mI-bIL&Dk?wHu}}pG5R9(9qwR)a zBbRvJ8Hz2kNXuqqSwHsJ3J`Ix=#Cn13+108>4I z(XM})Z4w$Me>+tOLJUPo-WE4*48Y^4&9&SnjYCu2Qv%e7dd<+(m<5%wNK++-p=@ho zpHbiylAtN2Fw~P_Wli*MnLh@tPL6fhgI>t4fFyk#*E52vo)FenxAN~VQzl|n9`ID* zUX_U%Z&isz;QegB^cEC4sXGgc74_UKE!`$*QV1Rqj{nj(xJ^ku0q>`($lU za}eQN0188-7aOPxiIoyxhs+>Le6<$H9ip{aG^iCT^9HbZ{f`W~FoRgm3ODpqditHb z!f9s`R%a&=@B+~tZfK%ZNlcHBNwuvY%nHJ|zPs%y`waZ)ClJ;0fvXm0!KuTk1|*;W+xSrDw(W_DtgMOWJx2A(EPni&gby5cFeVQ zbAV$P7Dp_iob35aEPESWK4zO>e!}j#(uiMe#IHBvH}2fjA)*mK8ZtxRY4{a89$nU3 z@d>Ki;HW}dvW>Ic2yM~@F7?+vH*Cu1q~Heh^%7c-W9JP78_=?twX&~9>?Y9^4e%=^ z_!S49TWah532;3DBzXxnj1J&K1X%B3J3)RJW59-p-7v}RBJ6ESc3wPDX<|&SpAi04 z$oi1n-a;-x*@*{?nFb! z*+3FUZ3r2`-d5R0XVQC7&8Qi4wKzOn-I?BS)r$%!eA(deihTrjE`a#GS>lGpdd? z$RMXAS}DGMrLB2x(cVnvD{b5Cmv+pn!^aaXko@J?!4G+z0kH%QSgR7GmAR%UtXun}Bc&wHkL0Dh*zOwx;bdpv@$73*MwYfoD`8{BUJqWR_l4 zg!a#GM7U1j3^ioM9U=yso1kPjQ(y<_tb!#5=C(4r!hvbg)C`e)xlsa>#9skU)LG`z z2&zt$b-`XedL;gcfFtIgqcgG}hs6V@tABEfm)jA^AZzzh#r-|@2dos0TMB+pVe+JW z>r0`@nwMU1ns*O$GL`F1Jy%X0^)rxFO>WgUhE(9|&Rw(>dvY<_mc`AAdr;J0(TUZA zIykaZtOvz4uOzy*I=6?KDlEUi{vCw`XthKGT7~UZMB6W9Aa%9E11iWI&}dFCQsKsi zG`m*m=qf{^z$h1GMlpu5U)K`Qs$7#?xpm1IqYAEh(L?3s7+YI;*0-7FX}&?Kn&rg9 z=B1K8td#acv%Hq)?lPzmlW)kn1K>W^T{5838fU)}WCX+@@$wRf2b=9;!Rl=ekd2|E zu0fy4Tit9$?aJJMC0Z{xCVIG;l@gmt;Tng3;dL})*kUS$=*R_sNgQ~!!au@lig3i$ z;eqjJ4qW6e*j_F5R-g$wT5>~5ODavFf9dJcqy<#Xq+UyBql%zuq!^Z*uv2d~kkk{X zQ4fbIQD=i8?t9?#$K_$z039MGJQ+LDEzvn$4@2V5ij&rf&&HM?#YUp; z-6WPHGE_q}!lC6K^ z$pk-Hc1W1$3z`PI3_Ea;0EC35)wCtm=4MVDiOK{^6zess>TDMT^#t2l<(k>NAp+{W zB1#xAe&V94)`CX}6E}S1iqU1Okhmxf>zxJp30fRaA9*Bs*j3L6zIp;}lGmcLnX@xQ zy^m;HyD|oJ{?47fW(l1A+V&tfjOHdx$$Hew7Z?2hmftw}hV}IM#h-u4V=d*eU+R7z z|D5fO>knMKd9mPv!t&tD2(d*tTr3YB?;v0Mq_@27$A0=LpZ!Pw8{fLU`M|}iH!5WJ)R8^$!iB$A;=Aye2W`)B{Q{{MDD3Z* eCGbW5Xs=(m@KnA$i7#cDe6j7nqwN1rfB!#BYVQC5 literal 0 HcmV?d00001 diff --git a/js/listening-tracker.js b/js/listening-tracker.js new file mode 100644 index 0000000..f274397 --- /dev/null +++ b/js/listening-tracker.js @@ -0,0 +1,282 @@ +const STORAGE_KEY = 'monochrome-listening-data'; +const MAX_TRACKS = 2000; +const MAX_ARTISTS = 500; +const SKIP_THRESHOLD_S = 5; +const COMPLETION_RATIO_THRESHOLD = 0.3; + +class ListeningTracker { + constructor() { + this._data = null; + this._currentTrackId = null; + this._playStartTime = null; + this._lastTimeUpdate = 0; + this._accumulatedPlayTime = 0; + this._trackDuration = 0; + this._flushTimer = null; + } + + _load() { + if (this._data) return this._data; + try { + const raw = localStorage.getItem(STORAGE_KEY); + this._data = raw ? JSON.parse(raw) : this._empty(); + } catch { + this._data = this._empty(); + } + return this._data; + } + + _empty() { + return { tracks: {}, artists: {}, version: 1 }; + } + + _save() { + try { + const d = this._data || this._load(); + const trackEntries = Object.entries(d.tracks); + if (trackEntries.length > MAX_TRACKS) { + trackEntries.sort((a, b) => (b[1].lastPlayed || 0) - (a[1].lastPlayed || 0)); + d.tracks = Object.fromEntries(trackEntries.slice(0, MAX_TRACKS)); + } + const artistEntries = Object.entries(d.artists); + if (artistEntries.length > MAX_ARTISTS) { + artistEntries.sort((a, b) => (b[1].affinity || 0) - (a[1].affinity || 0)); + d.artists = Object.fromEntries(artistEntries.slice(0, MAX_ARTISTS)); + } + localStorage.setItem(STORAGE_KEY, JSON.stringify(d)); + } catch (e) { + console.warn('ListeningTracker: save failed', e); + } + } + + _flush() { + if (this._flushTimer) return; + this._flushTimer = setTimeout(() => { + this._save(); + this._flushTimer = null; + }, 2000); + } + + onTrackStart(track) { + if (!track || !track.id) return; + this._finalizeCurrent(); + this._currentTrackId = track.id; + this._playStartTime = Date.now(); + this._lastTimeUpdate = 0; + this._accumulatedPlayTime = 0; + this._trackDuration = (track.duration || 0) / 1000; + } + + onTimeUpdate(currentTime, duration) { + if (!this._currentTrackId || this._playStartTime === null) return; + if (duration > 0) this._trackDuration = duration; + if (this._lastTimeUpdate > 0 && currentTime > this._lastTimeUpdate) { + const delta = currentTime - this._lastTimeUpdate; + if (delta < 5) { + this._accumulatedPlayTime += delta; + } + } + this._lastTimeUpdate = currentTime; + } + + onTrackEnd() { + this._finalizeCurrent(); + } + + onSkip() { + if (!this._currentTrackId || this._playStartTime === null) return; + const elapsed = this._accumulatedPlayTime; + this._recordTrackSignal(this._currentTrackId, elapsed, this._trackDuration, true); + if (this._currentTrackId) { + const currentData = this._load(); + const trackMeta = this._findTrackMeta(this._currentTrackId); + if (trackMeta) { + this._updateArtistAffinityFromData(currentData, trackMeta, elapsed, this._trackDuration, true); + } + } + this._currentTrackId = null; + this._playStartTime = null; + this._accumulatedPlayTime = 0; + this._lastTimeUpdate = 0; + this._flush(); + } + + _finalizeCurrent() { + if (!this._currentTrackId || this._playStartTime === null) return; + const elapsed = this._accumulatedPlayTime; + this._recordTrackSignal(this._currentTrackId, elapsed, this._trackDuration, false); + if (this._currentTrackId) { + const currentData = this._load(); + const trackMeta = this._findTrackMeta(this._currentTrackId); + if (trackMeta) { + this._updateArtistAffinityFromData(currentData, trackMeta, elapsed, this._trackDuration, false); + } + } + this._currentTrackId = null; + this._playStartTime = null; + this._accumulatedPlayTime = 0; + this._lastTimeUpdate = 0; + this._flush(); + } + + _findTrackMeta(_trackId) { + return null; + } + + _recordTrackSignal(trackId, playTimeS, durationS, wasSkipped) { + const d = this._load(); + if (!d.tracks[trackId]) { + d.tracks[trackId] = { + playCount: 0, + skipCount: 0, + totalPlayTime: 0, + completionCount: 0, + lastPlayed: 0, + avgCompletionRatio: 0, + }; + } + const t = d.tracks[trackId]; + t.playCount++; + t.totalPlayTime += playTimeS; + t.lastPlayed = Date.now(); + + const completionRatio = durationS > 0 ? Math.min(playTimeS / durationS, 1) : 0; + t.avgCompletionRatio = + t.avgCompletionRatio === 0 ? completionRatio : t.avgCompletionRatio * 0.8 + completionRatio * 0.2; + + if (wasSkipped || playTimeS < SKIP_THRESHOLD_S) { + t.skipCount++; + } else if (playTimeS >= durationS * 0.9 || completionRatio >= 0.9) { + t.completionCount++; + } + } + + updateArtistAffinity(track, playTimeS, durationS, wasSkipped) { + if (!track) return; + const d = this._load(); + this._updateArtistAffinityFromData(d, track, playTimeS, durationS, wasSkipped); + this._flush(); + } + + _updateArtistAffinityFromData(d, track, playTimeS, durationS, wasSkipped) { + const artistIds = []; + if (track.artist && track.artist.id) artistIds.push(track.artist.id); + if (track.artists && Array.isArray(track.artists)) { + for (const a of track.artists) { + if (a.id) artistIds.push(a.id); + } + } + if (artistIds.length === 0) return; + + const completionRatio = durationS > 0 ? Math.min(playTimeS / durationS, 1) : 0; + const weight = wasSkipped + ? -0.5 + : completionRatio > 0.8 + ? 1.0 + : completionRatio > 0.5 + ? 0.5 + : completionRatio > COMPLETION_RATIO_THRESHOLD + ? 0.2 + : -0.2; + + for (const artistId of artistIds) { + const name = track.artists?.find((a) => a.id === artistId)?.name || track.artist?.name || ''; + if (!d.artists[artistId]) { + d.artists[artistId] = { name, affinity: 0, playCount: 0, skipCount: 0, totalPlayTime: 0 }; + } + const a = d.artists[artistId]; + a.affinity = a.affinity * 0.9 + weight; + a.playCount++; + a.totalPlayTime += playTimeS; + if (wasSkipped) a.skipCount++; + if (name) a.name = name; + } + } + + getTrackSignal(trackId) { + const d = this._load(); + return d.tracks[trackId] || null; + } + + getTrackScore(trackId) { + const signal = this.getTrackSignal(trackId); + if (!signal) return 0; + const skipRate = signal.playCount > 0 ? signal.skipCount / signal.playCount : 0; + const completionRate = signal.playCount > 0 ? signal.completionCount / signal.playCount : 0; + return ( + signal.avgCompletionRatio * 2 + completionRate * 3 - skipRate * 4 + Math.log2(signal.playCount + 1) * 0.5 + ); + } + + getArtistAffinity(artistId) { + const d = this._load(); + return d.artists[artistId]?.affinity || 0; + } + + getTopArtists(limit = 20) { + const d = this._load(); + return Object.entries(d.artists) + .filter(([, v]) => v.playCount >= 2) + .sort((a, b) => b[1].affinity - a[1].affinity) + .slice(0, limit) + .map(([id, v]) => ({ id, name: v.name, affinity: v.affinity, playCount: v.playCount })); + } + + getDislikedArtists(limit = 20) { + const d = this._load(); + return Object.entries(d.artists) + .filter(([, v]) => v.playCount >= 2 && v.affinity < -0.3) + .sort((a, b) => a[1].affinity - b[1].affinity) + .slice(0, limit) + .map(([id, v]) => ({ id, name: v.name, affinity: v.affinity })); + } + + getHighlyPlayedTracks(limit = 50) { + const d = this._load(); + return Object.entries(d.tracks) + .filter(([, v]) => v.playCount >= 2 && v.avgCompletionRatio > 0.6) + .sort((a, b) => b[1].playCount - a[1].playCount) + .slice(0, limit) + .map(([id]) => id); + } + + getFrequentlySkippedTrackIds(limit = 50) { + const d = this._load(); + return Object.entries(d.tracks) + .filter(([, v]) => v.playCount >= 2 && v.skipCount / v.playCount > 0.5) + .sort((a, b) => b[1].skipCount / b[1].playCount - a[1].skipCount / a[1].playCount) + .slice(0, limit) + .map(([id]) => id); + } + + getShortPlayTrackIds(limit = 50) { + const d = this._load(); + return Object.entries(d.tracks) + .filter(([, v]) => v.playCount >= 2 && v.avgCompletionRatio < COMPLETION_RATIO_THRESHOLD) + .sort((a, b) => a[1].avgCompletionRatio - b[1].avgCompletionRatio) + .slice(0, limit) + .map(([id]) => id); + } + + getDislikedArtistIds() { + return this.getDislikedArtists(30).map((a) => a.id); + } + + getSessionSignals() { + return { + currentTrackId: this._currentTrackId, + accumulatedPlayTime: this._accumulatedPlayTime, + trackDuration: this._trackDuration, + }; + } + + forceFlush() { + if (this._flushTimer) { + clearTimeout(this._flushTimer); + this._flushTimer = null; + } + this._save(); + } +} + +export const listeningTracker = new ListeningTracker(); diff --git a/js/smart-recommendations.js b/js/smart-recommendations.js new file mode 100644 index 0000000..aa1c1e6 --- /dev/null +++ b/js/smart-recommendations.js @@ -0,0 +1,171 @@ +import { listeningTracker } from './listening-tracker.js'; +import { db } from './db.js'; + +class SmartRecommendations { + async getSmartSeeds(count = 50) { + const [history, favorites, playlists] = await Promise.all([ + db.getHistory(), + db.getFavorites('track'), + db.getPlaylists(true), + ]); + const playlistTracks = playlists.flatMap((p) => p.tracks || []); + + const scoredTracks = new Map(); + + const addWithScore = (tracks, baseWeight) => { + for (const t of tracks) { + if (!t || !t.id) continue; + const signalScore = listeningTracker.getTrackScore(t.id); + const completionBonus = this._getCompletionBonus(t.id); + const score = baseWeight + signalScore + completionBonus; + const existing = scoredTracks.get(t.id); + if (existing) { + existing.score += score; + existing.track = t; + } else { + scoredTracks.set(t.id, { score, track: t }); + } + } + }; + + addWithScore(favorites, 3); + addWithScore(playlistTracks, 2); + addWithScore(history, 1); + + const sorted = [...scoredTracks.values()].sort((a, b) => b.score - a.score); + + const dislikedArtistIds = new Set(listeningTracker.getDislikedArtistIds()); + + const filteredSeeds = sorted + .filter((s) => { + const t = s.track; + if (this._isTrackByDislikedArtist(t, dislikedArtistIds)) return false; + const signal = listeningTracker.getTrackSignal(t.id); + if (signal && signal.playCount >= 3 && signal.avgCompletionRatio < 0.2) return false; + return true; + }) + .slice(0, count) + .map((s) => s.track); + + const shuffle = (arr) => [...arr].sort(() => Math.random() - 0.5); + return shuffle(filteredSeeds); + } + + _getCompletionBonus(trackId) { + const signal = listeningTracker.getTrackSignal(trackId); + if (!signal) return 0; + if (signal.avgCompletionRatio > 0.8) return 2; + if (signal.avgCompletionRatio > 0.5) return 1; + if (signal.avgCompletionRatio < 0.2 && signal.playCount >= 2) return -3; + return 0; + } + + _isTrackByDislikedArtist(track, dislikedArtistIds) { + if (!track || dislikedArtistIds.size === 0) return false; + if (track.artist?.id && dislikedArtistIds.has(String(track.artist.id))) return true; + if (track.artists?.some((a) => a.id && dislikedArtistIds.has(String(a.id)))) return true; + return false; + } + + filterRecommendations(tracks) { + const dislikedArtistIds = new Set(listeningTracker.getDislikedArtistIds()); + const frequentlySkippedIds = new Set(listeningTracker.getFrequentlySkippedTrackIds(100)); + const shortPlayIds = new Set(listeningTracker.getShortPlayTrackIds(100)); + + return tracks.filter((t) => { + if (!t || !t.id) return false; + if (frequentlySkippedIds.has(t.id)) return false; + if (shortPlayIds.has(t.id)) return false; + if (this._isTrackByDislikedArtist(t, dislikedArtistIds)) return false; + return true; + }); + } + + scoreRecommendation(track) { + if (!track) return 0; + let score = 0; + const dislikedArtistIds = new Set(listeningTracker.getDislikedArtistIds()); + const topArtists = listeningTracker.getTopArtists(30); + const topArtistIds = new Set(topArtists.map((a) => a.id)); + + if (track.artist?.id && topArtistIds.has(String(track.artist.id))) { + const artist = topArtists.find((a) => a.id === String(track.artist.id)); + score += artist ? Math.min(artist.affinity * 2, 5) : 1; + } + if (track.artists?.some((a) => a.id && topArtistIds.has(String(a.id)))) { + score += 1; + } + if (this._isTrackByDislikedArtist(track, dislikedArtistIds)) { + score -= 5; + } + const skipIds = new Set(listeningTracker.getFrequentlySkippedTrackIds(50)); + if (skipIds.has(track.id)) score -= 3; + + return score; + } + + rankRecommendations(tracks) { + return tracks + .map((t) => ({ track: t, score: this.scoreRecommendation(t) })) + .sort((a, b) => b.score - a.score) + .map((t) => t.track); + } + + async getAdaptiveQueueSeeds(currentQueueTracks, recentlyPlayedIds, count = 5) { + const topArtistIds = new Set(listeningTracker.getTopArtists(20).map((a) => a.id)); + + const queueArtistIds = new Set(); + for (const t of currentQueueTracks) { + if (t.artist?.id) queueArtistIds.add(String(t.artist.id)); + if (t.artists) + t.artists.forEach((a) => { + if (a.id) queueArtistIds.add(String(a.id)); + }); + } + + const currentArtistIds = new Set(); + for (const id of queueArtistIds) { + if (topArtistIds.has(id)) currentArtistIds.add(id); + } + + const recentTrackIds = new Set(recentlyPlayedIds); + const dislikedArtistIds = new Set(listeningTracker.getDislikedArtistIds()); + + const scoredTracks = []; + for (const t of currentQueueTracks) { + if (!t || recentTrackIds.has(t.id)) continue; + if (this._isTrackByDislikedArtist(t, dislikedArtistIds)) continue; + const signal = listeningTracker.getTrackSignal(t.id); + const completionRatio = signal ? signal.avgCompletionRatio : 0.5; + const score = completionRatio; + scoredTracks.push({ track: t, score }); + } + + scoredTracks.sort((a, b) => b.score - a.score); + + const bestSeeds = scoredTracks.slice(0, Math.ceil(count / 2)).map((s) => s.track); + + if (bestSeeds.length < count) { + const smartSeeds = await this.getSmartSeeds(20); + const additional = smartSeeds.filter((s) => { + if (recentTrackIds.has(s.id)) return false; + return !bestSeeds.some((b) => b.id === s.id); + }); + bestSeeds.push(...additional.slice(0, count - bestSeeds.length)); + } + + return bestSeeds.slice(0, count); + } + + getKnownBadTrackIds() { + const skipped = new Set(listeningTracker.getFrequentlySkippedTrackIds(100)); + const shortPlay = new Set(listeningTracker.getShortPlayTrackIds(100)); + return new Set([...skipped, ...shortPlay]); + } + + getKnownBadArtistIds() { + return new Set(listeningTracker.getDislikedArtistIds(30)); + } +} + +export const smartRecommendations = new SmartRecommendations(); From a600cc94f4ea617413d7ae08ae961675e2908358 Mon Sep 17 00:00:00 2001 From: Simone Ianniciello Date: Mon, 13 Apr 2026 23:03:01 +0200 Subject: [PATCH 4/4] fix(ui): fix audio slider not updating --- js/audio-context.js | 1 + js/events.js | 2 ++ js/ui.js | 1 + 3 files changed, 4 insertions(+) diff --git a/js/audio-context.js b/js/audio-context.js index cc4dce5..c919414 100644 --- a/js/audio-context.js +++ b/js/audio-context.js @@ -826,6 +826,7 @@ class AudioContextManager { if (this.volumeNode && this.audioContext) { const now = this.audioContext.currentTime; this.volumeNode.gain.setTargetAtTime(this.currentVolume, now, 0.01); + window.dispatchEvent(new CustomEvent('volume-change')); } } diff --git a/js/events.js b/js/events.js index d173fa3..fa5f65d 100644 --- a/js/events.js +++ b/js/events.js @@ -518,6 +518,8 @@ export function initializePlayerEvents(player, audioPlayer, scrobbler, ui) { }); }; + window.addEventListener('volume-change', updateVolumeUI); + setupMediaListeners(audioPlayer); if (player.video) { setupMediaListeners(player.video); diff --git a/js/ui.js b/js/ui.js index d88f6c6..1617225 100644 --- a/js/ui.js +++ b/js/ui.js @@ -2280,6 +2280,7 @@ export class UIRenderer { }); this.player.activeElement.addEventListener('volumechange', updateFsVolumeUI); + window.addEventListener('volume-change', updateFsVolumeUI); updateFsVolumeUI(); }