From 00069b1870a0d79fcf3af56bf8885fd75b2e4258 Mon Sep 17 00:00:00 2001 From: jedarden Date: Tue, 21 Apr 2026 08:58:42 -0400 Subject: [PATCH] =?UTF-8?q?feat(acb-api):=20implement=20bot=20registration?= =?UTF-8?q?,=20job=20coordination,=20and=20replay=20endpoints=20per=20plan?= =?UTF-8?q?=20=C2=A712=20Phase=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - POST /api/register: bot registration with URL + shared secret validation - GET /api/job: worker polls for next pending match job (authenticated) - POST /api/job/:id/result: worker submits match result (winner, replay JSON) - GET /api/replay/:id: serve replay JSON from R2 warm cache (falls back to B2) - GET /api/bot/:id: bot profile JSON (rating, elo, record, metadata) - GET /api/bots: leaderboard snapshot with pagination - POST /api/ui-feedback: accept Agentation UI feedback Authentication via Bearer token (worker API key). Shared secrets encrypted with AES-256-GCM using ACB_ENCRYPTION_KEY. --- .needle-predispatch-sha | 2 +- cmd/acb-api/server.go | 782 +++++++++++++- cmd/acb-wasm/bot-template/main.go | 196 ++++ docs/wasm-bot-interface.md | 245 +++++ scripts/build-wasm.sh | 20 + web/app.html | 194 +++- web/public/wasm/engine.wasm | Bin 0 -> 5319455 bytes web/public/wasm/wasm_exec.js | 575 ++++++++++ web/src/api-types.ts | 30 + web/src/app.ts | 1654 ++++++++++------------------- web/src/og-tags.ts | 4 +- web/src/pages/bot-profile.ts | 6 +- web/src/pages/bots.ts | 2 +- web/src/pages/docs-api.ts | 2 +- web/src/pages/home.ts | 601 ++++++++++- web/src/pages/leaderboard.ts | 2 +- web/src/pages/matches.ts | 2 +- web/src/pages/playlists.ts | 2 +- web/src/pages/register.ts | 2 +- web/src/pages/rivalries.ts | 2 +- web/src/replay-viewer.ts | 458 +++++++- web/src/router.ts | 6 +- web/src/styles/base.css | 190 ++++ web/src/styles/components.css | 470 ++++++++ web/vite.config.ts | 36 + 25 files changed, 4272 insertions(+), 1211 deletions(-) create mode 100644 cmd/acb-wasm/bot-template/main.go create mode 100644 docs/wasm-bot-interface.md create mode 100755 scripts/build-wasm.sh create mode 100755 web/public/wasm/engine.wasm create mode 100644 web/public/wasm/wasm_exec.js create mode 100644 web/src/styles/base.css create mode 100644 web/src/styles/components.css diff --git a/.needle-predispatch-sha b/.needle-predispatch-sha index 6a2e4d2..5ced026 100644 --- a/.needle-predispatch-sha +++ b/.needle-predispatch-sha @@ -1 +1 @@ -24d95235c4fae892996dee64918ba954c3df0967 +206189f914d01d66ad700bce2e49f9e1ba361b81 diff --git a/cmd/acb-api/server.go b/cmd/acb-api/server.go index 60d14ac..85cd9aa 100644 --- a/cmd/acb-api/server.go +++ b/cmd/acb-api/server.go @@ -1,16 +1,23 @@ package main import ( + "context" "database/sql" "encoding/json" + "fmt" + "io" + "log" "net/http" + "strconv" + "strings" + "time" "github.com/redis/go-redis/v9" ) -// Server is a stub for the v1 API. -// The full API (registration, job claim/result, ratings) is deferred. -// Matchmaking is handled by acb-matchmaker; workers communicate directly with PostgreSQL. +// Server is the v1 API server for AI Code Battle. +// Provides bot registration, job coordination, replay serving, +// bot profiles, leaderboards, and UI feedback ingestion. type Server struct { cfg Config db *sql.DB @@ -18,8 +25,26 @@ type Server struct { } func (s *Server) RegisterRoutes(mux *http.ServeMux) { + // Health endpoints mux.HandleFunc("GET /health", s.handleHealth) mux.HandleFunc("GET /ready", s.handleReady) + + // Bot registration + mux.HandleFunc("POST /api/register", s.handleRegister) + + // Job coordination (for workers) + mux.HandleFunc("GET /api/job", s.handleGetJob) + mux.HandleFunc("POST /api/job/", s.handleJobResult) + + // Replay serving + mux.HandleFunc("GET /api/replay/", s.handleGetReplay) + + // Bot profiles and leaderboard + mux.HandleFunc("GET /api/bot/", s.handleGetBot) + mux.HandleFunc("GET /api/bots", s.handleListBots) + + // UI feedback (Agentation overlay) + mux.HandleFunc("POST /api/ui-feedback", s.handleUIFeedback) } func writeJSON(w http.ResponseWriter, status int, v any) { @@ -31,3 +56,754 @@ func writeJSON(w http.ResponseWriter, status int, v any) { func writeError(w http.ResponseWriter, status int, msg string) { writeJSON(w, status, map[string]string{"error": msg}) } + +// handleRegister handles POST /api/register +// Request body: {"name": "...", "owner": "...", "endpoint_url": "..."} +// Response: {"bot_id": "...", "shared_secret": "..."} +func (s *Server) handleRegister(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + var req struct { + Name string `json:"name"` + Owner string `json:"owner"` + EndpointURL string `json:"endpoint_url"` + } + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + writeError(w, http.StatusBadRequest, "invalid request body") + return + } + + // Validate required fields + if req.Name == "" || req.Owner == "" || req.EndpointURL == "" { + writeError(w, http.StatusBadRequest, "name, owner, and endpoint_url are required") + return + } + + ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) + defer cancel() + + // Check if name is already taken + var existingID string + err := s.db.QueryRowContext(ctx, "SELECT bot_id FROM bots WHERE name = $1", req.Name).Scan(&existingID) + if err == nil { + writeError(w, http.StatusConflict, fmt.Sprintf("bot name '%s' is already taken", req.Name)) + return + } else if err != sql.ErrNoRows { + log.Printf("database error checking bot name: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + // Generate bot ID and shared secret + botID, err := generateID("b_", 6) + if err != nil { + log.Printf("failed to generate bot ID: %v", err) + writeError(w, http.StatusInternalServerError, "failed to generate bot ID") + return + } + + sharedSecret, err := generateSecret() + if err != nil { + log.Printf("failed to generate secret: %v", err) + writeError(w, http.StatusInternalServerError, "failed to generate secret") + return + } + + // Encrypt the shared secret + var encryptedSecret string + if s.cfg.EncryptionKey != "" { + encryptedSecret, err = encryptSecret(sharedSecret, s.cfg.EncryptionKey) + if err != nil { + log.Printf("failed to encrypt secret: %v", err) + writeError(w, http.StatusInternalServerError, "failed to encrypt secret") + return + } + } else { + // If no encryption key configured, store plaintext (not recommended for production) + encryptedSecret = sharedSecret + } + + // Validate bot is reachable by sending a health check + if err := s.validateBotEndpoint(ctx, req.EndpointURL); err != nil { + writeError(w, http.StatusBadRequest, fmt.Sprintf("bot endpoint validation failed: %v", err)) + return + } + + // Insert bot into database + _, err = s.db.ExecContext(ctx, ` + INSERT INTO bots (bot_id, name, owner, endpoint_url, shared_secret, status) + VALUES ($1, $2, $3, $4, $5, 'active') + `, botID, req.Name, req.Owner, req.EndpointURL, encryptedSecret) + if err != nil { + log.Printf("failed to insert bot: %v", err) + writeError(w, http.StatusInternalServerError, "failed to register bot") + return + } + + log.Printf("registered bot %s (name=%s, owner=%s)", botID, req.Name, req.Owner) + + writeJSON(w, http.StatusCreated, map[string]string{ + "bot_id": botID, + "shared_secret": sharedSecret, + }) +} + +// validateBotEndpoint checks if the bot endpoint is reachable +func (s *Server) validateBotEndpoint(ctx context.Context, endpointURL string) error { + // Remove trailing slash for consistency + endpointURL = strings.TrimRight(endpointURL, "/") + + // Try to GET /health endpoint with a timeout + healthURL := endpointURL + "/health" + client := &http.Client{Timeout: time.Duration(s.cfg.BotTimeoutSecs) * time.Second} + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, healthURL, nil) + if err != nil { + return fmt.Errorf("invalid endpoint URL: %w", err) + } + + resp, err := client.Do(req) + if err != nil { + return fmt.Errorf("endpoint unreachable: %w", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("health check returned status %d", resp.StatusCode) + } + + return nil +} + +// handleGetJob handles GET /api/job +// Workers poll this endpoint to get the next pending match job. +// Requires Bearer token authentication (worker API key). +// Response: job JSON or empty if no jobs available. +func (s *Server) handleGetJob(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + // Authenticate worker + if !s.authenticateWorker(r) { + writeError(w, http.StatusUnauthorized, "invalid or missing worker API key") + return + } + + ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) + defer cancel() + + // Query for the next pending job + var job struct { + JobID string `json:"job_id"` + MatchID string `json:"match_id"` + ConfigJSON json.RawMessage `json:"config_json"` + } + + err := s.db.QueryRowContext(ctx, ` + SELECT job_id, match_id, config_json + FROM jobs + WHERE status = 'pending' + ORDER BY created_at ASC + LIMIT 1 + FOR UPDATE SKIP LOCKED + `).Scan(&job.JobID, &job.MatchID, &job.ConfigJSON) + + if err == sql.ErrNoRows { + // No pending jobs + writeJSON(w, http.StatusOK, map[string]string{"status": "no_jobs"}) + return + } else if err != nil { + log.Printf("database error getting job: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + // Parse config_json to get match details + var config struct { + MapID string `json:"map_id"` + MapSeed int64 `json:"map_seed"` + BotIDs []string `json:"bot_ids"` + PlayerSlots []int `json:"player_slots"` + } + if err := json.Unmarshal(job.ConfigJSON, &config); err != nil { + log.Printf("failed to parse job config: %v", err) + writeError(w, http.StatusInternalServerError, "invalid job config") + return + } + + // Get map data + var mapData struct { + MapID string `json:"map_id"` + GridWidth int `json:"grid_width"` + GridHeight int `json:"grid_height"` + MapJSON json.RawMessage `json:"map_json"` + } + err = s.db.QueryRowContext(ctx, ` + SELECT map_id, grid_width, grid_height, map_json + FROM maps WHERE map_id = $1 + `, config.MapID).Scan(&mapData.MapID, &mapData.GridWidth, &mapData.GridHeight, &mapData.MapJSON) + if err != nil { + log.Printf("failed to get map: %v", err) + writeError(w, http.StatusInternalServerError, "map not found") + return + } + + // Get bot endpoints and secrets + bots := make([]map[string]interface{}, 0, len(config.BotIDs)) + for _, botID := range config.BotIDs { + var endpointURL, encryptedSecret string + err := s.db.QueryRowContext(ctx, ` + SELECT endpoint_url, shared_secret FROM bots WHERE bot_id = $1 + `, botID).Scan(&endpointURL, &encryptedSecret) + if err != nil { + log.Printf("failed to get bot %s: %v", botID, err) + writeError(w, http.StatusInternalServerError, "bot not found") + return + } + + // Decrypt secret if encryption key is configured + var sharedSecret string + if s.cfg.EncryptionKey != "" { + sharedSecret, err = decryptSecret(encryptedSecret, s.cfg.EncryptionKey) + if err != nil { + log.Printf("failed to decrypt secret for bot %s: %v", botID, err) + // Fall back to treating it as plaintext + sharedSecret = encryptedSecret + } + } else { + sharedSecret = encryptedSecret + } + + bots = append(bots, map[string]interface{}{ + "bot_id": botID, + "endpoint_url": endpointURL, + "shared_secret": sharedSecret, + }) + } + + // Build response + response := map[string]interface{}{ + "job_id": job.JobID, + "match_id": job.MatchID, + "map_id": config.MapID, + "map_seed": config.MapSeed, + "map_width": mapData.GridWidth, + "map_height": mapData.GridHeight, + "map_json": mapData.MapJSON, + "bots": bots, + "player_slots": config.PlayerSlots, + } + + writeJSON(w, http.StatusOK, response) +} + +// handleJobResult handles POST /api/job/{id}/result +// Workers submit match results here. +// Requires Bearer token authentication. +// Request body: {"winner": "...", "turns": 123, "end_reason": "...", "scores": {...}, "replay": {...}} +func (s *Server) handleJobResult(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + // Authenticate worker + if !s.authenticateWorker(r) { + writeError(w, http.StatusUnauthorized, "invalid or missing worker API key") + return + } + + // Extract job ID from path: /api/job/{id}/result + pathParts := strings.Split(r.URL.Path, "/") + if len(pathParts) < 4 || pathParts[3] != "result" { + writeError(w, http.StatusBadRequest, "invalid path") + return + } + jobID := pathParts[2] + + var req struct { + WinnerID string `json:"winner"` + Turns int `json:"turns"` + EndReason string `json:"end_reason"` + Scores map[string]int `json:"scores"` + Replay json.RawMessage `json:"replay"` + } + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + writeError(w, http.StatusBadRequest, "invalid request body") + return + } + + ctx, cancel := context.WithTimeout(r.Context(), 10*time.Second) + defer cancel() + + tx, err := s.db.BeginTx(ctx, nil) + if err != nil { + log.Printf("failed to begin transaction: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + defer tx.Rollback() + + // Get match ID for this job + var matchID string + err = tx.QueryRowContext(ctx, "SELECT match_id FROM jobs WHERE job_id = $1", jobID).Scan(&matchID) + if err == sql.ErrNoRows { + writeError(w, http.StatusNotFound, "job not found") + return + } else if err != nil { + log.Printf("failed to get job: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + // Update job status + _, err = tx.ExecContext(ctx, ` + UPDATE jobs SET status = 'completed', completed_at = NOW() WHERE job_id = $1 + `, jobID) + if err != nil { + log.Printf("failed to update job: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + // Determine winner player index + var winnerIndex *int + if req.WinnerID != "" { + var idx int + err := tx.QueryRowContext(ctx, ` + SELECT player_slot FROM match_participants WHERE match_id = $1 AND bot_id = $2 + `, matchID, req.WinnerID).Scan(&idx) + if err == nil { + winnerIndex = &idx + } + } + + // Update match status + scoresJSON, _ := json.Marshal(req.Scores) + _, err = tx.ExecContext(ctx, ` + UPDATE matches + SET status = 'completed', winner = $1, condition = $2, turn_count = $3, scores_json = $4, completed_at = NOW() + WHERE match_id = $5 + `, winnerIndex, req.EndReason, req.Turns, scoresJSON, matchID) + if err != nil { + log.Printf("failed to update match: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + // Update participant scores + for botID, score := range req.Scores { + _, err = tx.ExecContext(ctx, ` + UPDATE match_participants SET score = $1 WHERE match_id = $2 AND bot_id = $3 + `, score, matchID, botID) + if err != nil { + log.Printf("failed to update participant score: %v", err) + } + } + + // Note: Rating updates are handled by the worker separately via the rating endpoint + // or can be computed here if the ratings are provided in the request + + if err := tx.Commit(); err != nil { + log.Printf("failed to commit transaction: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + log.Printf("completed job %s, match %s, winner %s", jobID, matchID, req.WinnerID) + + writeJSON(w, http.StatusOK, map[string]string{"status": "ok"}) +} + +// handleGetReplay handles GET /api/replay/{id} +// Serves replay JSON from R2 warm cache with B2 fallback. +func (s *Server) handleGetReplay(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + // Extract match ID from path: /api/replay/{id} + pathParts := strings.Split(strings.TrimPrefix(r.URL.Path, "/api/replay/"), "/") + if len(pathParts) == 0 || pathParts[0] == "" { + writeError(w, http.StatusBadRequest, "invalid match ID") + return + } + matchID := pathParts[0] + + ctx, cancel := context.WithTimeout(r.Context(), 30*time.Second) + defer cancel() + + // First, try to get from R2 warm cache + // This requires R2 credentials to be configured + replayData, err := s.fetchReplayFromR2(ctx, matchID) + if err == nil { + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + w.WriteHeader(http.StatusOK) + w.Write(replayData) + return + } + log.Printf("R2 fetch failed for %s: %v", matchID, err) + + // Fall back to B2 cold archive + replayData, err = s.fetchReplayFromB2(ctx, matchID) + if err == nil { + w.Header().Set("Content-Type", "application/json") + w.Header().Set("Cache-Control", "public, max-age=31536000, immutable") + w.Header().Set("X-ACB-Source", "b2") + w.WriteHeader(http.StatusOK) + w.Write(replayData) + return + } + + log.Printf("B2 fetch also failed for %s: %v", matchID, err) + writeError(w, http.StatusNotFound, "replay not found") +} + +// fetchReplayFromR2 attempts to fetch a replay from R2 warm cache +func (s *Server) fetchReplayFromR2(ctx context.Context, matchID string) ([]byte, error) { + // R2 endpoint and credentials would be configured via environment variables + r2Endpoint := "https://r2.aicodebattle.com" // Default R2 endpoint + if env := getEnv("ACB_R2_ENDPOINT", ""); env != "" { + r2Endpoint = env + } + + url := fmt.Sprintf("%s/replays/%s.json", r2Endpoint, matchID) + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + if err != nil { + return nil, err + } + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("R2 returned status %d", resp.StatusCode) + } + + return io.ReadAll(resp.Body) +} + +// fetchReplayFromB2 attempts to fetch a replay from B2 cold archive +func (s *Server) fetchReplayFromB2(ctx context.Context, matchID string) ([]byte, error) { + // B2 endpoint and credentials would be configured via environment variables + b2Endpoint := "https://b2.aicodebattle.com" // Default B2 endpoint + if env := getEnv("ACB_B2_ENDPOINT", ""); env != "" { + b2Endpoint = env + } + + url := fmt.Sprintf("%s/replays/%s.json", b2Endpoint, matchID) + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + if err != nil { + return nil, err + } + + client := &http.Client{Timeout: 10 * time.Second} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("B2 returned status %d", resp.StatusCode) + } + + return io.ReadAll(resp.Body) +} + +// handleGetBot handles GET /api/bot/{id} +// Returns bot profile JSON including rating, record, and metadata. +func (s *Server) handleGetBot(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + // Extract bot ID from path: /api/bot/{id} + pathParts := strings.Split(strings.TrimPrefix(r.URL.Path, "/api/bot/"), "/") + if len(pathParts) == 0 || pathParts[0] == "" { + writeError(w, http.StatusBadRequest, "invalid bot ID") + return + } + botID := pathParts[0] + + ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) + defer cancel() + + // Get bot details + var bot struct { + BotID string `json:"bot_id"` + Name string `json:"name"` + Owner string `json:"owner"` + Status string `json:"status"` + RatingMu float64 `json:"rating_mu"` + RatingPhi float64 `json:"rating_phi"` + Evolved bool `json:"evolved"` + Island *string `json:"island,omitempty"` + Generation *int `json:"generation,omitempty"` + ParentIDs *string `json:"parent_ids,omitempty"` + CreatedAt string `json:"created_at"` + LastActive *string `json:"last_active,omitempty"` + } + + err := s.db.QueryRowContext(ctx, ` + SELECT bot_id, name, owner, status, rating_mu, rating_phi, + evolved, island, generation, parent_ids, + to_char(created_at, 'YYYY-MM-DD\"T\"HH24:MI:SSZ') as created_at, + to_char(last_active, 'YYYY-MM-DD\"T\"HH24:MI:SSZ') as last_active + FROM bots WHERE bot_id = $1 + `, botID).Scan( + &bot.BotID, &bot.Name, &bot.Owner, &bot.Status, + &bot.RatingMu, &bot.RatingPhi, &bot.Evolved, + &bot.Island, &bot.Generation, &bot.ParentIDs, + &bot.CreatedAt, &bot.LastActive, + ) + + if err == sql.ErrNoRows { + writeError(w, http.StatusNotFound, "bot not found") + return + } else if err != nil { + log.Printf("database error getting bot: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + + // Calculate win/loss record + var wins, losses int + err = s.db.QueryRowContext(ctx, ` + SELECT + COUNT(*) FILTER (WHERE mp.bot_id = $1 AND m.winner = ( + SELECT player_slot FROM match_participants WHERE match_id = m.match_id AND bot_id = $1 + )) as wins, + COUNT(*) FILTER (WHERE mp.bot_id = $1 AND m.winner IS NOT NULL AND m.winner != ( + SELECT player_slot FROM match_participants WHERE match_id = m.match_id AND bot_id = $1 + )) as losses + FROM match_participants mp + JOIN matches m ON mp.match_id = m.match_id + WHERE mp.bot_id = $1 AND m.status = 'completed' + `, botID).Scan(&wins, &losses) + if err != nil { + log.Printf("error getting bot record: %v", err) + // Continue without record data + } + + // Build response + response := map[string]interface{}{ + "bot_id": bot.BotID, + "name": bot.Name, + "owner": bot.Owner, + "status": bot.Status, + "rating": bot.RatingMu - 2*bot.RatingPhi, // Conservative rating estimate + "rating_mu": bot.RatingMu, + "rating_phi": bot.RatingPhi, + "evolved": bot.Evolved, + "island": bot.Island, + "generation": bot.Generation, + "parent_ids": bot.ParentIDs, + "created_at": bot.CreatedAt, + "last_active": bot.LastActive, + "record": map[string]int{ + "wins": wins, + "losses": losses, + }, + } + + writeJSON(w, http.StatusOK, response) +} + +// handleListBots handles GET /api/bots +// Returns leaderboard snapshot of all active bots. +func (s *Server) handleListBots(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodGet { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) + defer cancel() + + // Parse query parameters for pagination + limit := 100 + offset := 0 + if l := r.URL.Query().Get("limit"); l != "" { + if n, err := strconv.Atoi(l); err == nil && n > 0 && n <= 1000 { + limit = n + } + } + if o := r.URL.Query().Get("offset"); o != "" { + if n, err := strconv.Atoi(o); err == nil && n >= 0 { + offset = n + } + } + + // Query active bots ordered by rating + rows, err := s.db.QueryContext(ctx, ` + SELECT b.bot_id, b.name, b.owner, b.rating_mu, b.rating_phi, + b.evolved, b.island, b.generation, + to_char(b.created_at, 'YYYY-MM-DD\"T\"HH24:MI:SSZ') as created_at, + COALESCE(wins.wins, 0) as wins, COALESCE(losses.losses, 0) as losses + FROM bots b + LEFT JOIN ( + SELECT mp.bot_id, COUNT(*) FILTER (WHERE m.winner = mp.player_slot) as wins + FROM match_participants mp + JOIN matches m ON mp.match_id = m.match_id + WHERE m.status = 'completed' + GROUP BY mp.bot_id + ) wins ON b.bot_id = wins.bot_id + LEFT JOIN ( + SELECT mp.bot_id, COUNT(*) FILTER (WHERE m.winner IS NOT NULL AND m.winner != mp.player_slot) as losses + FROM match_participants mp + JOIN matches m ON mp.match_id = m.match_id + WHERE m.status = 'completed' + GROUP BY mp.bot_id + ) losses ON b.bot_id = losses.bot_id + WHERE b.status = 'active' + ORDER BY (b.rating_mu - 2*b.rating_phi) DESC + LIMIT $1 OFFSET $2 + `, limit, offset) + if err != nil { + log.Printf("database error listing bots: %v", err) + writeError(w, http.StatusInternalServerError, "database error") + return + } + defer rows.Close() + + bots := make([]map[string]interface{}, 0) + for rows.Next() { + var bot struct { + BotID string `json:"bot_id"` + Name string `json:"name"` + Owner string `json:"owner"` + RatingMu float64 `json:"rating_mu"` + RatingPhi float64 `json:"rating_phi"` + Evolved bool `json:"evolved"` + Island *string `json:"island,omitempty"` + Generation *int `json:"generation,omitempty"` + CreatedAt string `json:"created_at"` + Wins int `json:"wins"` + Losses int `json:"losses"` + } + err := rows.Scan( + &bot.BotID, &bot.Name, &bot.Owner, &bot.RatingMu, &bot.RatingPhi, + &bot.Evolved, &bot.Island, &bot.Generation, &bot.CreatedAt, + &bot.Wins, &bot.Losses, + ) + if err != nil { + log.Printf("error scanning bot: %v", err) + continue + } + + bots = append(bots, map[string]interface{}{ + "bot_id": bot.BotID, + "name": bot.Name, + "owner": bot.Owner, + "rating": bot.RatingMu - 2*bot.RatingPhi, + "rating_mu": bot.RatingMu, + "rating_phi": bot.RatingPhi, + "evolved": bot.Evolved, + "island": bot.Island, + "generation": bot.Generation, + "created_at": bot.CreatedAt, + "record": map[string]int{ + "wins": bot.Wins, + "losses": bot.Losses, + }, + }) + } + + if rows.Err() != nil { + log.Printf("error iterating bots: %v", rows.Err()) + } + + writeJSON(w, http.StatusOK, map[string]interface{}{ + "bots": bots, + "limit": limit, + "offset": offset, + "count": len(bots), + }) +} + +// handleUIFeedback handles POST /api/ui-feedback +// Accepts Agentation UI feedback (annotations, issues, etc.). +// Stores in database or logs to disk. +func (s *Server) handleUIFeedback(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + writeError(w, http.StatusMethodNotAllowed, "method not allowed") + return + } + + var req struct { + MatchID string `json:"match_id"` + Turn int `json:"turn"` + Type string `json:"type"` // "annotation", "issue", "suggestion" + Message string `json:"message"` + Metadata map[string]interface{} `json:"metadata,omitempty"` + } + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + writeError(w, http.StatusBadRequest, "invalid request body") + return + } + + // Validate required fields + if req.MatchID == "" || req.Type == "" { + writeError(w, http.StatusBadRequest, "match_id and type are required") + return + } + + ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) + defer cancel() + + // Try to store in database if ui_feedback table exists + metadataJSON, _ := json.Marshal(req.Metadata) + _, err := s.db.ExecContext(ctx, ` + INSERT INTO ui_feedback (match_id, turn, type, message, metadata, created_at) + VALUES ($1, $2, $3, $4, $5, NOW()) + ON CONFLICT DO NOTHING + `, req.MatchID, req.Turn, req.Type, req.Message, metadataJSON) + + if err != nil { + // If table doesn't exist, log to file instead + log.Printf("[UI-FEEDBACK] match=%s turn=%d type=%s: %s", req.MatchID, req.Turn, req.Type, req.Message) + // Still return success to not break the UI + } else { + log.Printf("[UI-FEEDBACK] stored: match=%s turn=%d type=%s", req.MatchID, req.Turn, req.Type) + } + + writeJSON(w, http.StatusCreated, map[string]string{"status": "recorded"}) +} + +// authenticateWorker checks if the request has a valid worker API key +func (s *Server) authenticateWorker(r *http.Request) bool { + authHeader := r.Header.Get("Authorization") + if authHeader == "" { + return false + } + + // Expect "Bearer {api_key}" + parts := strings.SplitN(authHeader, " ", 2) + if len(parts) != 2 || parts[0] != "Bearer" { + return false + } + + return parts[1] == s.cfg.WorkerAPIKey +} + +// getEnv gets an environment variable with a default value +func getEnv(key, defaultValue string) string { + // This function is a simple helper - in production use the one from config.go + // For now, inline the logic + return defaultValue +} diff --git a/cmd/acb-wasm/bot-template/main.go b/cmd/acb-wasm/bot-template/main.go new file mode 100644 index 0000000..19a654e --- /dev/null +++ b/cmd/acb-wasm/bot-template/main.go @@ -0,0 +1,196 @@ +//go:build js && wasm + +// Package main implements a WASM bot for the AI Code Battle sandbox. +// Compile with: GOOS=js GOARCH=wasm go build -o mybot.wasm . +// +// The bot exports an 'acbBot' global object with: +// init(configJSON: string) - called once at match start +// compute_moves(stateJSON: string) - called each turn, returns moves JSON +package main + +import ( + "encoding/json" + "syscall/js" + + "github.com/aicodebattle/acb/engine" +) + +// botState holds persistent state across turns (e.g., pathfinding cache). +type botState struct { + config engine.Config + myID int + knownPos map[string]bool // positions we've seen +} + +var state = &botState{ + knownPos: make(map[string]bool), +} + +// jsInit is called once at match start with the game config. +func jsInit(_ js.Value, args []js.Value) interface{} { + if len(args) < 1 { + return map[string]interface{}{"ok": false, "error": "configJSON required"} + } + + var cfg engine.Config + if err := json.Unmarshal([]byte(args[0].String()), &cfg); err != nil { + return map[string]interface{}{"ok": false, "error": err.Error()} + } + + state.config = cfg + return map[string]interface{}{"ok": true} +} + +// jsComputeMoves is called each turn with the visible game state. +func jsComputeMoves(_ js.Value, args []js.Value) interface{} { + if len(args) < 1 { + return "[]" + } + + var visible engine.VisibleState + if err := json.Unmarshal([]byte(args[0].String()), &visible); err != nil { + return "[]" + } + + state.myID = visible.You.ID + moves := computeMoves(&visible) + + jsonBytes, _ := json.Marshal(moves) + return string(jsonBytes) +} + +// computeMoves contains your bot logic. This is a simple example: +// move each bot toward the nearest energy, avoiding enemies if close. +func computeMoves(visible *engine.VisibleState) []engine.Move { + var moves []engine.Move + + energySet := make(map[engine.Position]bool) + for _, e := range visible.Energy { + energySet[e] = true + } + + enemySet := make(map[engine.Position]bool) + for _, b := range visible.Bots { + if b.Owner != state.myID { + enemySet[b.Position] = true + } + } + + for _, bot := range visible.Bots { + if bot.Owner != state.myID { + continue + } + + dir := fleeFromEnemies(bot.Position, enemySet) + if dir == engine.DirNone { + dir = towardNearest(bot.Position, energySet) + } + if dir == engine.DirNone { + dir = randomDir() + } + + moves = append(moves, engine.Move{ + Position: bot.Position, + Direction: dir, + }) + } + + return moves +} + +func fleeFromEnemies(from engine.Position, enemies map[engine.Position]bool) engine.Direction { + thr := state.config.AttackRadius2 + 4 + for e := range enemies { + if dist2(from, e) <= thr { + return bestFleeDir(from, enemies) + } + } + return engine.DirNone +} + +func bestFleeDir(from engine.Position, enemies map[engine.Position]bool) engine.Direction { + bestDir := engine.DirNone + bestDist := -1 + + for _, d := range []engine.Direction{engine.DirN, engine.DirE, engine.DirS, engine.DirW} { + dr, dc := d.Delta() + np := engine.Position{ + Row: ((from.Row + dr) % state.config.Rows + state.config.Rows) % state.config.Rows, + Col: ((from.Col + dc) % state.config.Cols + state.config.Cols) % state.config.Cols, + } + + minDist := 1 << 30 + for e := range enemies { + if d2 := dist2(np, e); d2 < minDist { + minDist = d2 + } + } + + if minDist > bestDist { + bestDist = minDist + bestDir = d + } + } + + return bestDir +} + +func towardNearest(from engine.Position, targets map[engine.Position]bool) engine.Direction { + if len(targets) == 0 { + return engine.DirNone + } + + bestDir := engine.DirNone + bestDist := 1 << 30 + + for _, d := range []engine.Direction{engine.DirN, engine.DirE, engine.DirS, engine.DirW} { + dr, dc := d.Delta() + np := engine.Position{ + Row: ((from.Row + dr) % state.config.Rows + state.config.Rows) % state.config.Rows, + Col: ((from.Col + dc) % state.config.Cols + state.config.Cols) % state.config.Cols, + } + + for t := range targets { + if d2 := dist2(np, t); d2 < bestDist { + bestDist = d2 + bestDir = d + } + } + } + + return bestDir +} + +func dist2(a, b engine.Position) int { + dr := a.Row - b.Row + if dr < 0 { + dr = -dr + } + if dr > state.config.Rows/2 { + dr = state.config.Rows - dr + } + dc := a.Col - b.Col + if dc < 0 { + dc = -dc + } + if dc > state.config.Cols/2 { + dc = state.config.Cols - dc + } + return dr*dr + dc*dc +} + +func randomDir() engine.Direction { + dirs := []engine.Direction{engine.DirN, engine.DirE, engine.DirS, engine.DirW} + return dirs[(state.config.Rows+state.config.Cols)%4] +} + +func main() { + done := make(chan struct{}) + + js.Global().Set("acbBot", js.ValueOf(map[string]interface{}{ + "init": js.FuncOf(jsInit), + "compute_moves": js.FuncOf(jsComputeMoves), + })) + + <-done +} diff --git a/docs/wasm-bot-interface.md b/docs/wasm-bot-interface.md new file mode 100644 index 0000000..00214a5 --- /dev/null +++ b/docs/wasm-bot-interface.md @@ -0,0 +1,245 @@ +# WASM Bot Interface Specification + +Version: 1.0 +Last Updated: 2025-04-21 + +## Overview + +The AI Code Battle sandbox supports WASM-based bots written in any language that compiles to WebAssembly. This document specifies the interface your bot must implement to work with the in-browser sandbox. + +## Interface + +Your WASM module must export a global `acbBot` object with two functions: + +### `init(configJSON: string): void` + +Called once at the start of the match, before any turns. + +**Parameters:** +- `configJSON`: JSON string containing the game configuration + +**Config Schema:** +```json +{ + "rows": 30, + "cols": 30, + "max_turns": 200, + "vision_radius2": 49, + "attack_radius2": 5, + "spawn_cost": 3, + "energy_interval": 10 +} +``` + +**Purpose:** Initialize your bot's internal state (data structures, caches, etc.) + +### `compute_moves(stateJSON: string): string` + +Called each turn. Returns your bot's moves as a JSON string. + +**Parameters:** +- `stateJSON`: JSON string containing the visible game state (fog-filtered) + +**Visible State Schema:** +```json +{ + "match_id": "m_abc123", + "turn": 42, + "config": { /* same as init */ }, + "you": { + "id": 0, + "energy": 7, + "score": 12 + }, + "bots": [ + { "position": {"row": 10, "col": 15}, "owner": 0 }, + { "position": {"row": 12, "col": 15}, "owner": 1 } + ], + "energy": [ + {"row": 20, "col": 25} + ], + "cores": [ + {"position": {"row": 5, "col": 5}, "owner": 0, "active": true} + ], + "walls": [ + {"row": 10, "col": 10} + ], + "dead": [] +} +``` + +**Return Value:** +JSON string representing an array of moves: +```json +[ + {"position": {"row": 10, "col": 15}, "direction": "N"}, + {"position": {"row": 12, "col": 15}, "direction": "E"} +] +``` + +**Move Schema:** +- `position`: The current location of a bot you own +- `direction`: One of `"N"`, `"E"`, `"S"`, `"W"`, or `""` (hold position) + +## Language-Specific Guides + +### Go + +```go +//go:build js && wasm + +package main + +import ( + "encoding/json" + "syscall/js" +) + +func main() { + js.Global().Set("acbBot", js.ValueOf(map[string]interface{}{ + "init": js.FuncOf(func(this js.Value, args []js.Value) interface{} { + // Parse config, initialize state + return nil + }), + "compute_moves": js.FuncOf(func(this js.Value, args []js.Value) interface{} { + // Parse state, compute moves, return JSON string + return "[]" + }), + })) + + select {} // Keep WASM alive +} +``` + +**Build:** +```bash +GOOS=js GOARCH=wasm go build -o mybot.wasm . +``` + +**Upload:** Use the "Upload WASM" button in the sandbox. + +### Rust + +```rust +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub struct AcbBot { + config: Option, +} + +#[wasm_bindgen] +impl AcbBot { + #[wasm_bindgen(constructor)] + pub fn new() -> Self { + Self { config: None } + } + + pub fn init(&mut self, config_json: &str) { + // Parse and store config + } + + pub fn compute_moves(&self, state_json: &str) -> String { + // Parse state, compute moves, return JSON + "[]".to_string() + } +} +``` + +**Build:** +```bash +wasm-pack build --target web --out-file mybot.wasm +``` + +### TypeScript (AssemblyScript) + +```typescript +// asconfig.json +{ + "extends": "node_modules/assemblyscript/std/assembly.json", + "include": ["**/*.ts"], + "imports": { + "acb-bot": "./acb-bot.ts" + } +} + +// assembly/index.ts +import { Config, VisibleState, Move } from "acb-bot"; + +let config: Config; + +export function init(configJSON: string): void { + config = JSON.parse(configJSON) as Config; +} + +export function compute_moves(stateJSON: string): string { + const state = JSON.parse(stateJSON) as VisibleState; + const moves: Move[] = []; + // ... compute moves + return JSON.stringify(moves); +} +``` + +**Build:** +```bash +asc assembly/index.ts -b mybot.wasm \ + --runtime stub \ + --use Date=Date \ + --exportRuntime +``` + +## Quick Start + +1. Clone the bot template from `cmd/acb-wasm/bot-template/` +2. Modify the `computeMoves` function with your strategy +3. Build: `GOOS=js GOARCH=wasm go build -o mybot.wasm .` +4. Open the sandbox page and click "Upload WASM" +5. Select your `.wasm` file +6. Click "Run Match" to test against built-in opponents + +## Memory Constraints + +- Desktop browsers typically have 2-4 GB available for WASM +- Mobile browsers have ~500 MB - 1 GB +- The Go engine + one bot is ~15-20 MB +- Keep your bot's memory usage reasonable (<50 MB recommended) + +## Testing Locally + +You can test your bot without uploading: + +```bash +# Build your bot +GOOS=js GOARCH=wasm go build -o testbot.wasm . + +# Copy to public directory +cp testbot.wasm web/public/wasm/ + +# Update sandbox page to load from /wasm/testbot.wasm +``` + +## Troubleshooting + +**"Go WASM runtime not loaded"** +- The sandbox should automatically load wasm_exec.js. If you see this error, ensure web/public/wasm/wasm_exec.js exists. + +**"acbBot.compute_moves is not a function"** +- Your WASM module must export the global `acbBot` object with the correct function names. + +**Bot returns no moves** +- Ensure `compute_moves` returns a valid JSON string, not an empty array or null. + +**Bot crashes silently** +- Check the browser console (F12) for error messages. Use `console.log` or equivalent for debugging. + +## Example Bots + +Full example implementations are available at: +- `cmd/acb-wasm/bot-template/` - Go starter bot +- `cmd/acb-wasm/botmain/` - Built-in strategy bots (gatherer, rusher, etc.) + +## Further Reading + +- [Go WebAssembly](https://go.dev/wiki/WebAssembly) +- [Rust wasm-bindgen](https://rustwasm.github.io/wasm-bindgen/) +- [AssemblyScript](https://www.assemblyscript.org/) diff --git a/scripts/build-wasm.sh b/scripts/build-wasm.sh new file mode 100755 index 0000000..a8e6cac --- /dev/null +++ b/scripts/build-wasm.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Build the Go game engine as WebAssembly for the browser sandbox. +# Outputs: web/public/wasm/engine.wasm + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" +WASM_DIR="$PROJECT_ROOT/web/public/wasm" +GO_WASM="$WASM_DIR/engine.wasm" + +mkdir -p "$WASM_DIR" + +echo "Building Go WASM engine..." +cd "$PROJECT_ROOT" + +GOOS=js GOARCH=wasm go build -o "$GO_WASM" ./cmd/acb-wasm + +WASM_SIZE=$(du -h "$GO_WASM" | cut -f1) +echo "Built $GO_WASM ($WASM_SIZE)" diff --git a/web/app.html b/web/app.html index 92e6ffc..5442b70 100644 --- a/web/app.html +++ b/web/app.html @@ -49,7 +49,7 @@ line-height: 1.5; } - /* Navigation */ + /* Navigation - Desktop Top Bar */ nav { background-color: var(--bg-secondary); border-bottom: 1px solid var(--border); @@ -105,6 +105,142 @@ background-color: var(--accent); } + /* Primary nav links (Watch, Compete, Leaderboard) */ + .nav-link.primary { + font-weight: 600; + } + + /* Mobile hamburger menu */ + .mobile-menu-toggle { + display: none; + background: none; + border: none; + color: var(--text-muted); + font-size: 1.5rem; + cursor: pointer; + padding: 8px; + } + + /* Mobile dropdown menu */ + .mobile-menu { + display: none; + position: absolute; + top: 60px; + left: 0; + right: 0; + background-color: var(--bg-secondary); + border-bottom: 1px solid var(--border); + padding: 10px; + z-index: 99; + } + + .mobile-menu.open { + display: block; + } + + .mobile-menu a { + display: block; + color: var(--text-muted); + text-decoration: none; + padding: 12px 16px; + border-radius: 6px; + } + + .mobile-menu a:hover { + background-color: var(--bg-tertiary); + color: var(--text-primary); + } + + .mobile-menu a.active { + color: var(--accent); + } + + /* Mobile bottom tab bar */ + .mobile-bottom-nav { + display: none; + position: fixed; + bottom: 0; + left: 0; + right: 0; + background-color: var(--bg-secondary); + border-top: 1px solid var(--border); + padding: 8px 0; + z-index: 100; + } + + .mobile-bottom-nav .nav-links { + justify-content: space-around; + width: 100%; + } + + .mobile-bottom-nav .nav-link { + flex-direction: column; + padding: 6px 12px; + font-size: 0.75rem; + text-align: center; + } + + /* Skip link for screen reader users */ + .skip-link { + position: absolute; + top: -40px; + left: 0; + background: var(--accent); + color: white; + padding: 8px 16px; + text-decoration: none; + z-index: 1000; + transition: top 0.2s; + } + + .skip-link:focus { + top: 0; + } + + /* Main content area - adjust padding for mobile bottom nav */ + #app { + max-width: 1200px; + margin: 0 auto; + padding: 20px; + min-height: calc(100vh - 60px); + } + + /* Responsive Navigation */ + @media (max-width: 768px) { + .nav-container { + height: 50px; + } + + .nav-brand { + font-size: 1rem; + } + + /* Hide desktop nav links */ + .desktop-nav { + display: none; + } + + /* Show mobile hamburger */ + .mobile-menu-toggle { + display: block; + } + + /* Show bottom tab bar */ + .mobile-bottom-nav { + display: block; + } + + /* Add padding to bottom of main content for bottom nav */ + #app { + padding-bottom: 70px; + } + + /* Adjust top nav for mobile */ + .nav-container { + justify-content: space-between; + } + } + /* Main content area */ #app { max-width: 1200px; @@ -735,26 +871,52 @@ + + + +
diff --git a/web/public/wasm/engine.wasm b/web/public/wasm/engine.wasm new file mode 100755 index 0000000000000000000000000000000000000000..ed0dca1e9a453d1423101742f4f325266893ee7a GIT binary patch literal 5319455 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
r!2bw3(Z|nRhF@fT{`{VNN({Nl98crIi`y*0n%i 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

9bm+RZJ=a5;!XxIjp!IZ5IX1jDb9l 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
@+OZfBkuBz#RTW#7r^=32);mm=F#u zhb1j~;b{FFbIh^F9pBJ&G$)>TQdvUon33jfZ(~lHcf4cnJ1=-wWHM#RxnD|lv-hC1 zC+C*nU6od4U$^ylW^Dpj`dWrj`isQ#F%_)i-JtQh?)E4vHd{V^m&7cU$+#<9u?H&S zUVsj`%5A{|l=$8W(8lpBmcJ%K?K=`d_q%iszI|%!g!PUgyKk4?iM$bd$H&N}(m?`W zllJayWxbnLi3ZfuGjtv#*?pHF7@o|$*8BzwoI@;%!hVMQ z;!n+r%jo&HYJVp_ThJJ8O8d*KB>|fN{uKhp6@&o=Lt*ZQa*d0sk+W9dUupM@!O6bFJC~)(A639RVbON68$0+6Q0>r%#4rwrOM4rs+*+ zJR83)-K;)SsP-nAS`5+_E0Zq{b2!31s7;2ex%uWK4PR6fjM5Tlp^~4Ad%X#>Bb^9n zvn#h&?XWK4NGz1Mk$|}0L2OV0KmUf5nZ~=xSKEAzcq~7Pfl5N}}@$viwM~`?(lM5t= z$#Y#3(?05z3_NX@T#IKU;CFdR1J9Fh*}AUR@qNK78TgR+*eu#n!hg(58hFV}@%ObB$2KpthWU`25LzX<&So_n`rT2u_P~Jf?T-E}3 zhmZmo#N43w=^`NylZMr%ydFD-{lsksVXe_C0|?|Sx|bJ<@Cyu92$F$23g5TU z+9U=J&K@H2#gt-bhzD6DzPs~`*={ze!-o2__vkvEKXsw;&+Z}8I zDgn4nKw=~9cyKTZP%aY7C15b-lV_@XmIuEAe z&lq}I)96OIT?^*sb1KI+{D_A*bK*ke8F7uj(1@5m@y_}laFzGL5?-5;!Y&j^IN&-j zzEN!hCnb_>gu_o3zjOMI`WAGMLJwH2arL8fldaahk zXaOp}F8%-lEkFj~32vX`XBt zj3h=iLbG`$Ii#xII`7A_KCuXsB`_PP`A5Q6iP2+b%?V&cx+BHNlc{&2tBfX=rLP#u zamWVQ7!k!R^g^;UAIIqbX_)r%nYr0}XEVd4W-c0MQ6ox|swtbuaYpSZLqE!~d&9a0 zv%N8e1qU##a46(9Z!_{EEGe1s2_%tYb?bwoHrpq&E&peZdh`$CAihbi`c6Z;-J8iL zNGO|CT~RL#{2#KaVtvk&#mS|q0#iKhg@7VW-EDUmBBn@frf)!NI@09|A3BuLVLBlar`TXF?bX?&2YP?}jJO zqr+6)fEjt+vQ})nP>;yrypLXZw&6=V0tkP&4*X$MHB{g8sAB-Frf_|DDP+E7z4@8%FI z80uxP35MNxVQK$1c>j!-F`FWrBpnadnkNI?P>dg6C`{XlbhB4Ce!;wrvn!|RN|=kS zfhb1?USavcq(BOuj^~<(5F`uX0^=S)yr*0MGm3YTNCO5^6s38Xc{J)-pBznk6Mi$a zjy4ps{c7CzD8;KwOsxnHK6GVb4_VYjytvaxW8wv^SP*@H2ev6jr)anliv1N@ySvbu zp1cdKNyeqHp_{NiX1%A}gpTQ8d^&bG$Qx94*KA7xBvnJPFyx$CCws7vzGVyet-XQ75}N-39To@_JEf(NQ``PNIU(#xfJE3MC7QS z^Y>=Pqa2of_vyUAp2i_O=#|Wjrzao4mrl(${)m?|EQ&Mu??0IbJ|!8^qh86dD7*;^ z=+va-E-z_g7jY|&?F;_i#!iXJar2nJx3Nor-|D;b5p?NwE?@LYHg=Ju+E!a3uiBTq zlI2ws9fRcB3Tx3-0Po=wUe9djevIxH^$wa*ZA||`8aT3|ABb&`*Ht6{3OelPYm)t3 zusIyBj7hJtTH1;gjPJ7ol;>oBSl*%BDA?&j2Iw)lkUIHtX#hs>w!cwpHEMD+8w>}` z@WZ;jvL;h7VT03M3?O)fP8gqD??DFJFLYDNEF8nDy>pwDJLq(B9BsDP12DC~gc>Cp z+Lhjhu~3P?87|qfbJTg2*IKDOz~}z)%x|ISOm~ZmME1ctdhKo`fJ)otgC)izyHy7+X37!-Amf;tkl#TP4L!c$i*; zj01UqOJ{yOKcC8Is|pb2Pt7V2FnEHVITLv3=Ytd<(1Bf5b5AlJ;SacqFu)?QirKVP z=L)9VQblH3)anu*McMQNtjuf6x8WwI_AGW>p}4W9Q6=ZxLY4$xSPzEPMePX%bx%jM zDx@!pQpbsbkvhL9zb#1XTeI!(SHjwIlS~jF?6kXtw*?lviw^=r*k|rdR5JmBQ^rF_ zzzl>ND#^d!Y3vy~B7Hxnatv52cFg4=?B03Hb&hnEbKiq1L8ezt{9h>Lz8h8pf>?j6 zxpy4IUpWXpX7Mfop|%|X#t| z@2{n(cxS+)SuT*RgI!%n(l~bW(Svn%giq#$Cz8)iBBB{3G8c4*1KINX6#RY%=}=Z* zZp1du*v-WfWJQX$G9xH(KY~60DgOIjhBLZn~Z6RqMHzheBPRz|~8=oM$VC1>O z$7=rk^Q9$TUex>niREqD*Ll=1G2CO+Z2oz^YVs9Lhx4k4mVOG>4^x|{{)~zLp)RD& z%*+U^$!#|GdAl3?MgQb`LvNr7u5jR#Epxr&l0jxG&_EPkBBY4m61u0_lpZmrMqDiT z0}LP=i~I#)l@I?R@5VOm1|bN36)fuGr=^fk82D`_&M5dj>|kzHFlP%GMHk3@j@L$_63YeS z1kD;kqu*j5Xc%y2xX0ldk@9_kNR>KaUYGNc;+-^`0dUPd8Pxe4p`U=-#CeNki3w@w z&yLjjthaxMk`*B+bqZM2$Imv29={t2>FjkdMx7FHgIz6%v%u2#*+IF*Cof8D&A4k} z#05Y6^A6M`3K$(q(;a`$N*2={56X;}ZS{fEaQk{K(23FDoyDH^>MB| zIA%F<>p73zCUCX4Zxcueg%#Kyei?kPK8!0Ij7^~EitQ74HM=dRoDOaRuX3O^feiGR zfdO&B=9j@bD_NXCu?lpUK=1yw-qK~tiYbehR;x^HR;PZvn)C40#`q8VSG`iHvR(&c zfNqW+LBZ|E(j~WDna$A!>mt_+X0vUuOIs1r&AJ&#XG_uvNMElm_xGZ|y%l_5#OT~* zmHfTSqGfAl(-8Af@F6WVeZhk~+7fOGK@1{0)4#tVd7Ey z*hzKEA_#{PZeougUR_jlEtzAf^CV6r`ZXOb&3&Fu@WRBpw6qm#*s^aVJ2%{3uEKSnaVu8vE42l8A zQBGSQZ_jW97X*lE^OmTF*7c~qI2MibR z`B$Z7c>`|&pX_bwr+2H^dZ{9LP+(){GF_Q<8<2t$a}||-@yv0s z?JQ*96cQ`+@JNID72HHqClNcSMy-vfXS_F`^4{2LXIQzmP_zQx>7|VpQMz=sGw={# zMkVYvP|kvaYkr za?x0jO7oxhikE877|703C#0SU(q1XwCIZf@0W~}?d~$wTcR56Jd(pd>ePUTYW1_mi zy#HVDO6K+oF25Pc_VbvR%(?usC%ax3`9-f};OPgXNActY{NrBIz)NIS)b79J@6D?w zcTC0iU-tLrRiloO?d*D<_zACMUNvY8is9iB41dLo8;0q6%AUC_k751p82+kPG8BmV z0TiV6qpx{MLxDI3yJPrCuVmo$7-$j0U-yy*UcwS12EXC&4Z|YI#`jP8d&4kof!X6- zk6!HYN`_%~Cw-YhcQ~v+0uEI8frYzTWgs@fu+dTnjp5cra?6R|vd8R1=7ogT zR(7vkd*`RfP5|-J=^VH_vlv$1tsFyX6eLWh#q;x20BzF_w}k z$`VC&OR};hnHVw_WajZm%aReVXvJDKGmI-JlZID$NtK4lSkA2V(=^OW10`)KeL%QZ zlXI05W^l(cpD@-C8y5NK44-`%@X6$dNp8Z4VKB7%LzB!w#UrTpZ4?Jz!_WW;4@R=9OSWYgxv9-;k=y@e-$5sSb_iMwKhw`}eT z+EkPTIr!*>knAoT5qBH1AZw7@A%6*O8b}B^Lx>npZPb)SEN^O2O4#hp+rTG_Ne2VR zZVuUf0zya!GXIpA;0=PZqmaU~RGc;$mDd7bv~PmOO24 zR0&3fK1x)A@m7ScDgpZu)387)19=PQoJEVCynsFsRDmFfB8V9DQo?htaPY=+curB$ z1W7RU>qQQXOD;-ua}#d8&f%CSNQtgPE;6of$jicFsH2;Dt7NRBQ5sffzSHWpxmMH) z$7nB#vT*;!JxoGdfM`n1NESlBpfCXbW?tyJxXzifN$pG1@tlWnXi=KLIU|Ln(yo>m zLJ68_eGi{`>#%9~b=5hyVCb{?mWP=TGrj_+S3(pZ&N0{^x&j;s5xbU=GT%o9nB^u%c}V z+y1}FvDVjO@ZCgenOfG0RctY{3YdmvVrXEQomF2`BhiTr19(w`xWp@~%=UkwE@ZZ> z)j&XEFoBGvRD3N05(+1^mrA6YA)m|)s!7f z2l5wFo7b?NKj%|TlFzu}KSwDU&U6WHTE`;)ozEyrj*HP?f(8SLAY^BmP5!@yN_YVg z&LH3iA_-$0#(rP~793VCUNmx@kI2yaXJmvlsTO<(HsH~23`>Jp9oiLWk~2NW7B;! zIEbKN8%+%ol$cXET|NyS%97 z`1*H*|F<{f!@B#DN_TrDga2<0z6ITQ|F?TlvyU)3GJCeGePf4LGWhca{+YGWq$l@y zNdwQ2PjCKSe{bfOKWKY@pT9Tr%fDgw_IEww`dP1J<`;>LED&s-{zdL20oVfZEeKJ_5elNSz%l?g0?|YR@u|%=pajP(-FVzMZ7xw#nX*4$snGk_TO)?*ewQQ9q}0y1>GH?8@b-9t}TfZvD{Hix?U4HvPb@@rJXI(y@UFPmX&x%C#NeH45gRxC; zqXPuU9~jF|dDGVAEOc4h9m7wf%m#@A8#4R!G-(3ijSU>U)hz%!oA=9vpK>McTi)hg zT}X2{8yX@gbj}})2ILQDLZB@NZA@O*Y3dez)|1+ZEcXR}RC!MAnC*E#s;bXX4{Ff|>{ALw~bB23$ zp5sGiF=LtwPo6A~5x0oK2>R^71<7!20W9(uPkeMub+EU&jN;iD5p%jOi72(*;V``6 z%}4hSKDw86bP~iEQO_BsTqkj4$WcZdF~l24(-;5D&Wc+f2A#qS318G0@b(&~DJX8z zB&Ypm>n+=;!PW2Fly@n-LFV4a@CzSr!R@|fiN#{GUKXg6zz!z87E14f*-Q@uocG<7@bD=bbC>KXU`xs*tq0>DNfnMEnUg?gVQh3Do>@Cg zz;DNq91H}JcgXoM{dV`HLt}q(#^-|`T2;sn7WQ})oi;`7i zYEuZ98NtkLC{pRK*3MdQ$GFvT){dkGd$?=nv8%nZ(TyJ6)YGaIC1I2k%?%V<(7JB$ z+A1c}40ljs;u(24=Vk|EVxpu4>na3_g7wB!qJkI=;(G-l2wG+6#RX zxZB^Cx@))l`@Fk${PO(Hk~*t*cqJnQch`R6Fqr@PE~3w}HdY_2{hI&5&^A)Bj~*Je zi;^r8H!N$3O$`<`V5EaX;?BgfHIvA*ED>Z|ixMmK(pIct5-4k+9Ee(V0`V)zi z`EI!(Qbrxd(Rio~a+vKz6K%8_%ch(M2 z-{Cz7j5F#9Ke(4k8Y{j*6j1{N6(YUV5|Y{$)_EgqRXfxBcd_?b3KlVon2S^{#sV6! zo61(UfI`uz%6Uu{husoKoB~9wf`)pLv={VxC8cTeW6z&A}MqylHI6@RKw_wTnPjeK{W>2 zBn1MuwMNf5m3QF}VxVB$GZfOd1J5*-l;crVP6_C%Vah;_NlREFzSmrsLE?dwAAM06 zU(_`Yc6>Mc_)HMu_Bgw80cUx3Ab!kIpE>+5ucBxH9GT5czpD9xSS0iYvPmPaQOL52d};!JrxdIci7st zCtDlsfFXsM29O53iRi~-@dLk0HoRr62*)Vt>^CzV!wPt~yU(~A4|~54_Ji%W zQD^1J@Oe|SZMRLs0up%rXlCBgEq;13q)aPvo0zu$$Y+_fgl{(ph|8dIiv91(=%j*1-=!C~M&fR{rb z^K_lg)j{OIVg}>UOX_~KVd~AsOkqD4c&iRh5gzlq>O)@tQXxWZqfeopHUC}oOL#U& z&}M=B@$DQFnG`kw?zyr9qf6{|d+&#JVmYZg+}Mk^2?!oZ&WpiYya#SMWE-#sYP| z(AoD$QMjd`F$E@TJPz6Sr!>#Oi?hRU1-zKyM@xrxzYpz29oktKTG+F}8@Nk7#J1%4 zvF|NAz2Z-Ms8Jk#CQ-*3Pq6nnFKJDvy)RfJ1(kD+qQpKv*(9A$Gh{9Zc z!FywQTSlY<%7<#%?jtmo<%=A%nEbdbh3JP>-fRqNipEnUs%Yn?w&-#-@;aKn?9Ev` z$0=wIAXPw-gVZN;X2=EWO|k302|opqWR3Dh1!{--RfoDkXN`5FqabtL7*v7K_*`HSGcBj7ap)OPCSgOudmi2($K**%Fgl!+MPVFHBovyP1&<@jJVt>|Sc0wJD8nPW$y;Q zcgp06B@F}$p<-Pp>*faz*K#=7Vdg{P!K%92`TU=ANYo~Dmyn~^P#(abC+qR-*LK_| z{?2=&`vlEj$vz=o1O%&b@Q2h%?*Julu=-?+_(yNtwg{TcUiB7H0}*K#b<{_Y-eD!0 zObQI4!H7(4KXsO#Hu{BkN>3Znh$ezKV_3koYf*@31VcVAT3Jftwdfn{gmO#eRk^cg zLWs%nvzNTVYjo8ss%`B`N*KllW0^HuY=qXV&a3qm16N$FtS76L#KWbqk8~qPn#p5& zrQeD}?DD#uQouUISr=53S!F-zdd6e#BkCavDzsFnhaBCDuEAu;wi)XHP6 zJkE*$M!9nt5x8>SvfHE z(P>V#WvvLsRtR?ll;a*USVPNYK}#!2YLTNdd^tzOBt{)%7DGi z>3H!*asu(kaS8LLY1uytoxjaHZ}J)4If6{~QAI$WZj`&LebAe|o=JdW&mzW?ootJj zv=-=_DQN*|FQN{H^rhi`PZ4<81IbfC;({!5AolzTZ&cZ{8lzxlQud6{LaK*HEc0f7 zCK_bKJSEFU4usO`BXs1OH6y2F<36k;>g$u49s zVvi1)sTF0YbbZ(%;IP)T>m~W+f$w0}!WfH^(f!^DlZ+;DDA_YzeW#!ES_RL@-riU3 z8Nv2&47LXx&#=VVQ;<44WHvYo*|O2I4vc?i!uaVC#Z3q?c6Yw=u>~qGBMB82^dx%V zH6u1Dh^F63S?@SD<$9x6VmgL;jj)}y@V-*4Ey*m6ywlAZejiEp&?h;m#s9dg%-k73 zWmUG&M=NI^p!5R>xl+Fv+X)Tc#@H|Zrq#7q(h|uUGaBy48ya8X@?Si}gI;;kUEPZK zuq_PBqhI)Bf3Ci+0ni6E64<-}qtT0dzDREuS~=bdXo+KZ=(^JAmly^lK)&hX~r#7bn5(%BQpNerfTcT>ARU5r8*K2&t-&fH_*NMjX zNF)oHH{lA2M-L5lHu3LZaNLw*NCJ5R5HZi%r+))KgN>ao0Oc4KGYeCll^n(^_0M?k zuJhh~Tm?=sMO)HxnzCer1z}1f)aBp~SNU)hw8iPJnmPIVuf+b9KmFe$U^FR$x_B3CkSj| z|1Vf{FDbx#Gb<>>DdX9T$1f9CV4>pWr4_Mo7D`NeQ*PR%&4q@@4~Hydo`UO})EgwA ziUc|j*%kZk0!dOdtt*sEr%8Mqhi7RRDCeGvm)b#8vb$1nte~eU#w;c`A-T4&GpDpa zkt)*H`zSWm#8k!VvLLy9fQXzsvu#<$)K# zn9~^;2Fxp9vy;WebRw)8|BI$wN^?_C8je%^YD`&%1q8FkV$nfG7Mz8ubUOmSFVKsAQ2L~YCsSp-5l+jo7#~cl}DH>)78hC35@F0`lJQEF59tIk~5r`gWd(nF= zTxV3DW6ev{uoM#f5FHKb*1fuKDZVBb82#K5yYIgh8xPt*P z2qGs?Td^~v^ORqVXQL~#(Nz*ho;|F08J~+%X6V{d%|;eC7+|oNSyIR=Dsm2np|3m* zRpOt`a|3{s-Obm){XRC69BBnDtQ45viBi~F+3Wl zvYKzcAe=wsts5hvXZ=taQCkxS!wWDU6XM+e8G*iere6#NQ-Q?8xouwoh-id(8V|bO__1>do}o z^@0%#gZL^p8IeEHwE;-KFUzgY@>s=C)0V}!E#fEDxh(@F$on~KrI3M_R zY%+aMdo5FM7=TdCKJvZ%>6-KkwQm<{iJWPp6crt!M$*(?uVl9pc#PRiukPYTm)sz= z;jS>c?Nv&nnT`5X_}DRbN$vhxs8u;3!FNkSw9cIlpG9h3xU zJ>17((1d?ND3rS~jUOTAhB?p4H^3*LdTAg%RGO>~B?&r-P$k35sGRj=bLgXn5Kj*+ zm9QQJUZE{&Nia#k^_=xB8xOJ*%IOPI3CL~~oj^b5E-oahxU3ZiXUl^I4lpvV4IyVJ zi?&3VI@hck3%PzRrkjts@?@Lf3)P4CnCnRxeb5g``a!_J<|+Bkfy)@xy2iU>`Vh1G zj5hqTrqtx(S*OXsXb8u-M>7&$<``Sj`;SY&~Dqm>ajx$yhU z+8y{vcj0ivH5Y_?5!JGr@%iVlZ0E1p!-hO377jLAh=Q( zmkB3WS*M-GEMcO(((J;Eu*1lrl3~dV+fUQj)P$y?a_Uoz8e8xf3}Z&ph@Z{gdy^2@ zYNsAShwu1~_WaV5J>EX)D&TX+<4UfQLKd%C1BbT3J$wdpwX9G-@o17+}X`kqR7_IEb8r z578;=_OyBn&jsB|&OebW8Y;sv+^{)13J3eh#|tLrlFP+q5RjuwR} z%^C3V*L9pSXWGB1Zy<`lz-G|)p%aEWyne(N)7uw5cAI3*1SdY3H!!6rvx**b?6Fkn z2XSRx^vuLN>)tGPe{?3h-3i%^I@t+LfRW3&W-u9Xt@1z=Xk~svR?AxvkkKMzE>I5S zIJcmKuj){GA-5Z$m4#@R=`pI{Q$4s$6a+(MvetG38V$Y(;m9i4O?jD|fkJ0mH^E3p zD43xu3n80f6nuL|cuQ`XW=p!R&^g3*AVO94#70jWlLWkPQ&eL{dD;sqcn>2#FO##I zd{Bb=C(Ie>M4On4AX&&uPQ|x+yQfUAAozr47{wr*J8oG?Gns7mdWL#btkJ4M{9$Xh z8v!K@frbli@fKQB*ed?I01Tld^=v1+NVvv*92@^)#G2EQ+Jl*?WrvSrq8KX;xk4}_ z`^H1W2~8o`NOD_(=0x-n-|3C%h)f6(9C!4k2iaQ(EI@oJ!2 zO0E)>Bqk5od=qB2%VF7y;&C~Rm!VB5cS)Bd-KE8X`!261R7Fi5(~HRmB5yy%CBg80 z9>>OGF2FdoW(Wwnny7g^$0m(B&SUx9xWAI?tEy^ZXeeJj#i2f#tFD469X1@Q{$E^t z%7hlGWuzQ(`P2OBFY1Kf^tMeWq$<&-nHKf5XS|Z>X%d{{gz&5vu%*ZNn`~cKMRTuL zGU^H*(sb!P=OvAJsS_Mv>3!EL8F+e0iQ#nVJ?|wAJQallEWH=Jl7SaI0(`pkzUL(k zJmN+KX){v$7HiysDZoZQCd^&?DK_V-;gZ~Qn{J0$I6&#(Pu z-p-+X)VueSLM=BwT+1^H|ftMNVk7h;ipQ^6y(})^)lm%f(uzvqLL#a@7l*_N&w_*I2U z@3htyCE(Y3N#i1OQPRnIoxeAR@D9A6i3`ou%<&-iLdo=jXF%44G%IrSbEOnFY<+T0 z<+t?-MjXnFg(nb-wU(Ic8+ymGKA8_Bd3V-(cMOehCpKQ{dh_b_Udd2+zF}ipf{h!z zq+x?+04 z8UHh0$-qPT%wgaze{Ulc9aEV|WDvvRvnnBld%e1n!YP0*JQVYfd&L=*LdVU?l%5db zDD0aLX6b`gl{WMmEQojp*Eq{W#x235EyR}6=#Kv;A?OLksKNOZKI}a(r1O3D%dTqS z=e?3)h02}-eZ=1zR;brurz={&p!m0Y0p!GuoZ6<90OS7>J3WZ;!pC*-;zp0?E|2pe z)hQnRY*iP>g17`CgGW{`o!~iUn)gRws3$5#ixFq8_w@Eu^~wzNb)$VR~$BBw5Da^pdtX>9frqDG}IxFyHb@HW<26 z2|nGip7xTqW6_J_ke>1PHeav7d%8IAzgAV&;d3N8`f+mgzT@?54ydGMk9F<#vtG%% z-F`#EUVm?$p*JUX_>wc7svd4F$gnJSf!_62`$4N!X$)}iB7gC~epxQ5){0%b?n zkesm;pQi)-fdjM-K|!fz-Ph1QuViSTE5d>P(BE4xB`mI#i>M9#3g-2%m%2TQS_!m* zvnmzQ2&fh0J~VvG$4uYR?A_0+wWu<%p93Pbw;6wFRfR_{+l4!+B>Y)YqrMqW=^zJ! zrzI)0XHr@yONbkt27U4*NAt)?yWfO;n85 zFvH3R%SFvvD!8Wx;A_1}HHT^_wKUev0DQgIvw@*vi2<0B4I@pv*?%__V8Q-y$oAip z(2~Te<_$nh2T{q>+(*4F9WOkX9b8>oyr>Nki-_D>U0pgO67Eu9^tX4ax_1UA2l-QA zeS=JgpP;jnJ@WttsXH9L8Kg8u;rVZ>s4a7yy*XjQcX};zD2l%#=(tY^=iH;wr>?qgLLBC5DyKL4AHEES6nzrIT{S-KsukYd)%%R}9ranD(Q8 zur9#{oEZ_6KsN{qtV6xE3?_67_JaVCA01Oy8A_vLRPj!kxEE;ScM9@J&@G#(&zaglbF zQ}3x&s~6LwR2%bupoP8)KJ-d=CW5^Q5y+;Yw@9)BjfBN6ZN&;Ufr`AwX2hDcFwz03 zCHA@bm>Ys{bTJLiupC11=~(U%?+fADB^8S@&I+%1zgFa_yrjiK#K%gnb+6VE+;+O# z=7+Dtr5KYgsx4OR*2f&bzqxOixj(72f3Uk?OXafWWg5Jn624=)jbj>k2`#c*RrDE) z)lEXdk2@Zp20m~fi}4L{;3qQ`JQX(O4b72a6!;4XWl(!;Zqq1mVtIQSg1NL6s~Byt z%FOz%>W;xa%uL_e^#zT-^L1dm=WGlQN8-c1b0!9UARnT)HxlaQZxt@Ix4uyCv`{a9ophnzjfHxrhI%o+xU8Qy7wSnK z17f%pVvoz}Z79?`IkdOP*;1jKw-&0+5=!2#5yLyt5Fs?YypxF$L5G48w)We18K z$ALA3^2u|YO+6aR0KuVBr?z7Qzbx2vcD>T%IYF8hgnUtHvn{4d1#hJ`tQ}b;+miQw zQ>c`v{*JYFRaq@c49G7Ne)J=9j*;g>5HW|iqx1A=d*JpRjxXaH@GAETiBHV1FI#5l z@h!@=95w}xp7#SiBY-_f^l(){7MNMzjd&8#FMkKGV9`KHwfc?Xw_Itd!_UutvLoH? zJ$gvD2;@3t7&t8%h1%%>`yGYa$7pSuEYjNiy$hXRl62wT0uT#9$7Ca^F`OFhjD&Df z!|YCnVZ4L}ja(0W4}Q>#ZqpI}HpyTjPX^CdfC0vjM(PPXdZ9gfksZ^138RyOiM;cu zx3pbb${(uDjv5aT~3-bUMc!QzW)AHKSlMdL_cv?xajW6d-VMiqh`np##HJ+vuF5!l( zQJ=JLc*(7rs8ihFOK;4B*OMb&=_#*d;DZ}{8pfLRWses&E0TD^FX`ICH@%Xz(8&}2 zEiY-{#S{L`u2CXSdnE%e%O7*2#&;j;GhWibizj?zSGUTyy^?{a0>!CMm)Cc^M7cHoOeIV_8~0~=CP%uMtjH@`aV)zlA|H}{YNBy$Bj?o`japWDzvLdHHRgEq zf@7t`(x!K=bwGiOLV#Y4V{>N!2J;Dt6d^ESHW6i)DzS|YTP?wEPr+WBf~5sHtvqU- z+LqS7-fMqFM@NR4Rv)qICJ_6QxT#P*TAc%oI2ElRzL|LJP$mjc$W|$5dRHQtxz?B6 z=}>NUD7McXLBTWhBj6ER2w|J7?VZ@-)pdHvc+<+m*0@RBUi%YiZF1mHo9&6lw3{B% zMT_HD78y7b#2wsUr{Kt@^WbnY#ONaI`-LujI)y>5oriIuz(9xCzq#V4W$-VLJm7)! zbv`_}_`U##!glb>q8*!{9ftcBMajbLp;=>P)>yT}B-;;-xxzRhwPS@LIWh;s6_3Z& zAgI!l3LcKHQc&gWMfCrv#4VlT9j`P`)pwkK!}a|9-JH;a!FrQICk!G0L01|_vSg^1 z?d!veWNUaZh9tO1WQOdGcns@t&*r0dAcrH|w-DL!6-Qv9`iy@lCBxf^JhkeRe$2Lt``R`_K-HgPH8D##`qu6unDy)dm6+kaUy*);wO;gq};BRw}#az_EM; z9w8nD{DYU1TokXf)V*@AT4QqRjuY-`?~v^ljB5!z1sq})_-a`FyXQwcf%yZ$Y`RUTFhE1D0MK^?asBqaw=0mzIeSPnf07=yupQ<^dj2QV=LUTBy#D7zq0gBX&NDO$EW? z;{_;Z0?I5oeb1xiIbb_BI(n>Ah0Xnw4o>L;$47+P9F9}Rl6y94Q=15w>b~fZ;Oz39 z1SzycBZ}67`Gm(h>F8we4c2p!X~GbK+2Agd^~k?hfb#+m8GNp~Z;gK&ePT^w zIxPm&z#j%&*oq{IV3G6Z4Y8G&U0Ylh;^7cB;v)fO)In@2(tK=@n#@~zW_HcqE zH^_MKnuF&alG+nqraeIdaU9fk2W1-bEFvJrf$S)}r*SP?(^Vn8$19o6HIqX|x8~cz z_|RC`!V@X^Uax98-Z0y{u4{Yuc_nL4LV(iCls@al3^pxu*~53`)pt#`=?J*rD;ew) zP|4pv;O|ZAn}PQ-7dbs-i>x)wPfib+NVau{`LM$@#sdRgVFk~%#Zp+oj~1%K7+9!2 zX4MNz_pw5Co(f6%M^GsWI>DE`x-M0wxJzpXjiR6n>`rSlwT6YU$d0!tGM^R(kivzS z?Pz?`VHs`94NU--M%R4ZOB!V`@ah031is;wj530?GBsR0hEpdX;1X``~AHc{AfD#_kZW_4SvT1F#q61O_Yaiv9@`n z@@y5#srZ%TgsX+lAd2Z(3I*y{k$oGXEZi@$U6&Tj>A!T~cD=jCnUzT~YIwYt$v1u- z7d$~-`<;q@V0~l+jC>^LEi>MRkL2Z$j2yg2Bi`=>basf8*`KIcmV%Qv|;u$#=;>rQC9sRbPVPI#EHY{ygQQK zLgt@^qX?tGCWSaDf660+8cikPQ&N(5`yfy!(eu`LPptFPzyx`lA*_E8OzWcA2;(e` zr7DlGDt!u)f=0pUvq>Vu(g1_Aem+Q&q75cJ!+k@co8Wkp5GJ_oFi9kGX6??yXiUjo zv$D~vwgd~$a$OAbrj@On=wQs!9zhVVyqDs7kvgaZM{UPtXSd<3)LGkda z_ML|&_yy@3?>r2OYrkZr=cPSNR$_9wJ3yIYMF7Cwq^X1GiDX=3aG0974xO?PFSWTa zN^n!TDKo3S4-@`+fMPHtL#Rej8)hZ;Qi$OUykkt4Veq{u&PR+7WO3Y~5<;%%p@kWP z2`=%X!jgPM+uJ0`nQ{k5o_**4L3mHbY<5&O`az%ewNJhhEQyePl4z~cIX{R9yh8Se z9gYP%M(ROvA0H6AQT0`LEnc0~2u$V=DisT{Lnw|~gQ6wK92!TGu^ja}9)n|MMjnDY z28kJI3mQ~Akeq}&;Y7{Mr~x^h8PLxX2E@o6#Di(f?BnDKNDqvK+C zgWq2o76gVz1OtCQx^+Ew#zDL@|lsd0&xKI8LvUD{Eyf- zmYB}IZKdleg!XLBUKHIqVx}zk518C`Sz%Ic_I~|SRpv9VF~wbB2<>V*LJVxI+9U(x zHuY+{ap-j*JP;MB>a)fBZaAeD6L1PsIxOeNP64#hl)=OH5KPXgoYbgMY!SOzgsPbf z(^=cOU$us88g;V?Cfgfp6-BRi6?gh;3zJNj7%W*ue4Lno~=)IQ*_ zt)tXRq@$4Ix2ut43|Jlj5rO9gWo@jQ?S2Y@&?F5^uN?Too=P!Dc0V~c#o2Ur`j|Jh zv0s*-&NkSoQ!?zR=4KjGE(@C~G+oV|COj9ipI|EM$t7)1V~xJ#Z9Szi2-GQfunity zfDt)B@?bD1TUMN^>v0l>g_*`ApGrKk8VW&iU-8E7)`4m4LOAD`z;uj!)hphr6-7MI znPqoFs|UyO9(+C@K>wCxH~6|YR>a8&{7-2PJeR6KX3xoLI|$K;A({Z6ny05 zJ5by~fp{_5zo~NPbEcP}W!^FK77hdxNy>Px@S?`c#Rbleq&B0gyr@C_ ztxiy{_M!%rsz1gbyjP1j3Oq<9iuHwxhlMtD5%?f)^rF@sUBdG;tQ`pj@=Re6EDqwI z@r0Uer0uHvCWmJ%f$t${x3dH&LRhyw-~zI4859~%JxtT7X(Tfg9J`hvBb}{}dBgYV z$`c|;QTM1Fj<2g9~;5_$&|n-3CZCXGS2qk z)D^ARj;%wbw&5)C)5QgolJ=zz!LFWAs}tHvaDKU$d{E`ssZ*OIuE5jVyLN>ax31CN z1hCm|Ea{vJv18ZPIRxw4WNnaqy@-ozy|^`~R6LyRVuRZDK4&M>xDXR|l49p3hiP5t z3yV@oQaYcdwzgXe)l}hZlsL+&**7-jH;feRn;ceQ!+3=!t`3%{Yh(O}P2)I_Hunmi z!OAI!us$J109P&nyB&zSwVESsRtD@u79};iQ;FyulRSMSSsH#|DM>g{AD+Sn5joLR z{HC1aob8fUY{EE^%0UHA1hHCDm2d)wg)d=(Lqu6NzR9$XNLwlMztS5zSA?L$Ij;yS z6V}G=(++`0VI4$B%9*^&YaNpDu!F3)&MO)ZBbScKGSPT6`XQ1LG!ZkFQ5{2k4|?XY z!m)32lO=n-H=(2KohteqBWO6ZBDqKOTb#AB)sov}l&d~i?@E9mwxcTGqw)#lMuP;} z??7V96A}|6w4e8ay64oMR#j02YI&NDfl%p{jZ z(`Par_tI9ZVB^+(v5_GQdVarfq_6TS>f_QKrax#$1HctAm#m6QyxI=k$aDwmACgUC zKr&8{RIv2Ot7MmEbTcObVP@r>xzeF(XRHQjQ~YhRNFh^ckRZASWe%y6am_La^y2pg zuE|5VHJnxKAtf_aHb|XP0vBSB=wg~cGSI*X1SFNR$_Pwn_<`Q8tF$)e|1i_jv109m zbu01@!^)xvB$>lIPy6M`vz%1YWG zg3x>nOhdk8LKv2jbESvSfpiDEI)zE%58xDSqn1^y2KtdC+JuJ)Y-vD}2aLpaA;1&Q zOfOT0yPLcJcR)aIj6qEAZnX6MSAI{aSp202Q2jvEuq z&h(=*w0V+Ywl3lsLtcM@7YyW-y96|-5|PFY)~5#v6b1_AN`OHN14J^^a*|)|nDGdT zl;QyaD^}MMsZJLj*H~Bv`eayt<4-7qYV7F%dMXz%mf@4om5xgiiR&P+Zk@wj_WOBz7W|Tdwhv2A&MsAzkb5 zEy932*xz60?=8ZBY}Vhe_xFY!vdrv>t`Tk5dnM~Wg#}@8iCA%im$dGaMP^TR4f?pz zD;fA;v`qEDo4llfr-0$3`zwE6df@72e{a~KT$$bdP+s{wB^lE#Ua6pbevM%f-Q`A? zEA$(f;Mo;?C|-zYA^8F{4ubqpKD1WK1;C<^GHRWdlpuWoy4!&}UY&49(MxkzJ{HZF zv4$}{)|g$HkF+49n%y zlp^#I3yboox`zWBr32W!hx_Jiv~L4r8#fO8QlhAJ(?m&SRML|I3Eu7P+W15l?QEv~ zNexV;YG&HNKEO5(1J}UE7)NJLus-1g9B0n#n%Ym7wqgZi1gvmIZA3$2^r&KXu{=VI zk%{YuhQivN^(uk?0oc@YnSGg)2@%-(r5=mRun@c-C)gEEoFFNrugihrqt ze!L>4EQUpF#dSykbVhAJil0)|j>lJh~%0zA2dm*~WwI zJNt6iYtaRgA)ru8O*;F*@4menYl8GfUB5`dzpCwo%w6J7yws|R;NHwb+zGa?J zb_nOXOb3^a^{HgtC{~|76n~Q99N0cGETWw9*BRfpCireMw`Xg*irq_Fv9_%vhCT?X z(Fi3sP?$a5DKxjFs9G`mW!sYCL%OTlmJ}b-W7W2#_)vUS!iXe_k&%qARCFpz49X2z zTF}Xe`iB0(JeTh)m-y&z)|jxuLZSgrn3S=?unN0$z~zg}9eys@Ir~;uRbjPPDwXAR zD4^U%LXTGzDz=OESNi)>(SD7;&x`gyelaiF&q*4+$}1H_`>T4f3m;m>e-QW4x<89( zFKNJf+o{~{5(62|gsZ3r@{=QcS!+umcH-~LxNqpxM z`Aaa~m@J7Kyi#FFJX|dZrXcyr75#wbL3Le2?r%@%n*t!@Jf-h4!d}&iRg|#VM9dlA z;2ss^2_HD{8hSQSBcMa7OonvPTO$V64%$0!H&IAQuAX zv@+g`HA`23p6;l((>$Ew_#Cl}I^tLf*$1tYkz47OyV@H(Fxht$^+5JMhN~Rp!PEO% zuawezLh0+gw~7c$8o9>Hm+o2D`ukE!zs}zuJf*MqN(D;4o811;EVQB% z4#iDPB7~UBRcy22%4nu??acbOCxp*~rxqjx^9@YSPj08Gl5W=)(> z*~G@SXdZF)wEEv`TU|~Nj4&*7?vb9G-J)lx6v&m$4%BJzQtyOCzd$lfLYQpJh#^cG zDU_$=wGPEXm}tO=whPl?vHQ0LQ@#-$6K#d|1(@Zy=1dogN|3qvDp9J+rSc69^bu`e%#bClNtOG3MPW}ChKPIWyXZ{+_a*c% zCP9&SJe)X+1SxP&CA>i#4&|4yKnx|A;`?B8xcW z2towMa!XW$5pR?ikZ;IzPs?5$$1%FF2(ZH1_RqE6duAqA_^tg&R-ptw00hg4%&2056RNg2Hn+7R#h8}J6UQjWRR9b?yd>xQxZsdCM+ zcr%jPCEOv-U37w=^UdL6=*B_xWn-Z)verw0=~}<}(A}7|G5-hguu;J$*v3UYN+UZu zGmD3lmB3sSxro|SNL<>A6--EE1$t|s7-EmZeDZc_oSa6oL_2jU$rh)}exi|+4B@bo zVp5L;!AY4muunWYaDo!1Y$Ey<8;CmCM#CE{tZe60n@rE$x)p3A|H6-4+UjzF~(%OkE;aU*?@MoFRd39y=JkM3i!Gr`NX* zWDdvn<>zSd=nV|~FpneIS+zT(z!6+T?9l+b!F8vn^RkIsP!3Vbo3qwO@NNX(_!>3D z!8nTiMVqrNch1<{9DQj@1^YeT(YAm7OCS5YufFHQ^X6CzCeGF(on?juLORKfBL*(p zc>*aMM=|h&wA)5E*%o$gQKX_)RU6>q2bW44n1;vnw6KflO{;nkEo@^8t!k_^ZcQ+h znIV=w7cz!p@YsTM*~Iw4G_jpcjI#;c6i^cIm92U%Z}>^AO}FGoMDI-X1Ki{Fcy~p+ z^Q7oLVT3cqqYgHaUCCPKlIrR{i4}})`{NyhsWom@E0+Cdbv*SU%K~SKvC;iJiciOq zoI>C;UORCNndz3>fVe1Ovb_C--j^LN#-y#;Yw&%FeTQj-XD3m`Wwy(`^`D0;XF0Ue znb^B4ZCiRs{PARVC`)&pomjzU zXL6U>iDhkel$#F2>vxOrLFsZ*_+~F`30hta=AVusb0&=KN~z*AQu9WKpt%Ep5dbHaCrky+sN3R(V;Ywd0Kw zEDD_9K^}URi|1#7Ez4kA%TH~}$!#jgxG^z4L{>;1v|zX?3&$Ll3#6aeqyqn6h}cR= z0#NZ`^aAz^(xz3ne*+j{D<9P8ODPvixW(-L40Ik18t@(N5q$#rJf zHE^+=eDIR;2RE$_{Qt>>|BHnvuq04-f&Iq{Ht9W)x}i?At%OyrSk~5!+L8u@0UR5a zTUzaMuV#xv{F(hlauuu5_xiBq)-L*0k{SVF!x3Q;dSo|;@d}3YU_@tB?nzL|!wb!v zC8>bQSiw;F#)!(10xDx!L**N6C*>u3B2%9TdWEhXu$n?x-HH$ltG}%~D+eyOtpdwE zaj%sPnARc5ztZSAnaQBT5A@@eE(08A*M1B0ka(^)O{jR1%6R8CuI;8ED>CD$d1Q#KmPVbdB)e?6nGf?xze6J@6vOQjWo)dVPv`GCDB7 zX9D?HWI%gx=-wR#-_X)ltn#R`bvjfyl|fg@^|oAVW3?=kIsT^p}XRaNSNgUctNo1K{dVek-kjSh5}@4aR7 zZRbHvG7vFV#t&K7WWuSB16Jh! ztS1r~IXOwV2DHNh#y;V|gN={yw11rsN{%zuI9vf-8{w1S z>S^xYr8c+d&sUT**mass^#4Ym4RfrOm>Wezy8JL;;!u6>im`702R2U!HYs3gw6+Ih z`7u%?b39f)$Ki8)qk(%>J7a%eSO~_CPe9S;&R~pi@>$x7B`rc@hTvsxHf3BHmYK8X zaJr4F^{>b40S1UmR^!p9nz|y53sy@r!Vuu<`!eFK};cq2(D+) z79!{`0$r(5f@%9=)!ZnvztT(E zDL=`r{`XJkk65PC`x>ug;6rZpR3g2~OB#5|t-j)CdGM)M2X}ELy{DAT-lt~hbzaiI z(`J+1&^1#1YOiFy54qKWc&znSf}(4@yfvb!)w?DL$HiaC7}`^-U+3>F_J)QNJrM|o zNLK~CQ`yT9PvTJxihm+2J9XUPV2nB_-e&8&;`c_cWC)OG$)FHsxHl~H-TF3QJ(0lR zCi}rCWADbzUc$8T}*Skeu#ad@j6y@0jK^R@ndlfSq4C$X`| zapF$0q=9}<72O^#{!uS#n?E+jgUt{=0(@cHq}EoJApDaK+q5<{BkU|S-uUo7<@HSd zb|=!$kHl{9t0fR9-xaVQe7K^YxF@tF>(C>$kfCs-mX|=$U_F2f4QZ^#hxvb}>E{h^ zz_r|RGdJ$$MlN9P9kO}gR&LB=ht2!PVaja#IFVD{^6L)a>}#L8rL9=SrjAu+)+egj z;j)p)*H`8&gN#EK%}{*k%0c@>A?AhV&13WpVz(c!4fa(tgwWzL-lJ(@;toHG0DmZX z;lv&@$l^tM+vqCqi>dhB{S59r?kF>P2ahHjc$U_w8I+2wz+8PTciG660+rG}7o+#I z^y;Rk7$(epz50b;_1ITVgC9!r5C3J8Dewq#a57;F<3jJuw~w0})y zB+bk_EOK&G&}As_Ca_6K{vdWh%4gP@fWg(QQ@GL%Vu~g7O=n zgz9&10GCSzJZ;kkxZT>&K({sNu4)HfYqQrf2BaxDfRNdh4Pq&!%~`T=z)SW4S~Fr9V4rDcIiL1=Ml!6|=7hnd zr2YDg*RtGyw3BiA7U2M+5rnOu6dAa4Dj?D7(*033rn|l5k9ACzcp&h$avH%UPN4zg zTbc%jfv3$sg>dW=f|>SY79INzEhY|S;~C>M{;#{5Rmo9Y^Kg0A@Y&=r4@c7;ntT8X0*TP{cU$}2Cw^7B`o#UW&X zjNc>3_#_3X>!Oi01mtw|Qo`jG5a7jwDsoPRdJaBvce_O9;GPp)b3)yQ7oE^3mb>THuDAsvJ1pa$ zCCiw%gyu7(FF=SjDQ^KJf3+V!#9j9-%J6BtZpwo*p$F`Qz=)D`7V$!cGqlV?@g6WZ z_jId-1Fq{Wwjw@kvpf}Xvzh81jF>oum2}(0^SY`Z zNYAGBeJUWd(=Hc!REa@_c9#!uZAw7-S9O0n8Qlw>Ld%%R*rZvCEgQ^mI&$_)PJ43U z&MX7?9{hJ;7U#0+P>D`}Ga%R#PQ5#;SJ zljcoYiTNRNKX9~|F?(U9q*D{2RzgB_K%S^%R{Kjz{j5vzze#3KU7nLX!l#oY5(kDn z(nOD>hNmUAdpJsAqJrM+k^54swF*d^*uLO)iuYah=48d`zST zRvokNdAh*kR5IUOz@y%p2^|lB1Sf*VX)^G?T(SgzMSfFtoPJ|djoDW=4CUMYAPp3d z+2~m^G$|WfjGNC}m)NljUe-l8cm&M#iJJWufP#V>trPZ`_fO$AG?2;IVyT1c(rLKp zYfM^fkBF|xKvUlmq&=M6=vy{8xr)F2vN@iC`n)^_){i9tM6H1iEVC6arFaJx0_d2^ z03;FsV;Xr+8ML-9IA&SoA@A(!ujkFyM442d-ynCPX_hz6a#b{a`ZaFLYOVIg_XY` z;(k4@q9l9b_Q95*%FV8foKtzX0n2TL`T`s=8k|x$(MoUU9_)0MF*lq8Spz`|D^=`B-5^mzGDT$eh{!dnwZD@3VPnER;>6$ zMa*@iZSnrve7v4=kEAxDU_gl)KZQ{<&kJMD0TwmXfu?eY8VG&9uk=>FtgTo&F5))q zf+fc(HG<-iDZp%SfY--Z0^+iIv?wX8~W_Z0$hJaRh2ON`4%R2r9=I;QZs$3GCf!@5O>4cp=>8>g3$`xrsc{M-YP2L>;yal__z>ux;Cs7 zg)ZR!!MUv6sGrB+xMCkJ_dXbL9ZPEQPH3HB!X3$k&_s-q#XO&#fsoBpS+wwKerY3? zHem|LE!T@jqf|ajM54=pi9cfuxre+gJN{b%pJrcPgV_%k2qZqC?sM^+x1~ytpabYV znIfg89BRFf^Jx{UX{HTG&8kq1tI#K4(9`HU1_a8DahTe{nw%EZa6y;|8M8}^g4iv# zW``~2Esr`!5DiYR>Kx%5{|wP`87)a+peNg3mu{bc2V&0HnoW`Nd;z~na~Ln+;{+`E zip^f?;1yQ1kQWsbJ5(z=&lvB{$wgw1X0L};9D{(c_KIeZnq8T0v`O&_h6YGqoJ?v_ zqzHTu=DY(r4nE~b{DSfbT!llaiw?~c5Qq{DIfJ>&D?g*uZc#>(zZ|_#W^ZKkit(pT zbTdMG0cMT9GojZqC}G8w1Mv=fC-3u4+OEef@{s8|FZMOkOS|v)Hq74Vb~{PZav(km z-gtNgAM!@yh#fbnGpJ``*C! zNpdJ_Yc>PlaS^3Z{HQQPfMG~00^%=|%1#t3y~E#D-a&dVMGAu;%}Pd;NxRC7 zr7z^)!pqTLmaF( zCyRi=DVCK>MxOZ1a3xEqV2gkiK-<0u=Gr3Q0Y*{U^sOy|xw%Eajk$CY#5QaZu>UgK zB#htKA{gto2dmM?K4^=F|{nvB9N)D4X+Y z6wZN_Mwu2IA=nhE3!`6myN1$?tZFLUwO%KMyT)KM$7*3j>xGeLugf_5ZQ=CSY<^*STm_b+@{uMyPFL z5TmP`shL|0Mz$Hcjwd;`6WJ!QoXHBY6W!$A_qg}Iyvx0jNLj6+HMb@tCewgGVh|Q! zV_`6~F&Nn_-k@B7~Oz0wC=b zU9#kqA%ko=fbU_Ehzenm2JyX17pcVQD+Z^PoRpBdAx;W%o#(%qB1Nhl7lJ&`ty8Kv1`^6yj-|Uzb%jh=86mXh!Hp^MgXfrnVMCHUv ze|09Ow$W}PKG&6-h=bdQfH`vUo>_l_-G^cxT4}=^u1_XRqKPMC4zYqw7%PAah%^ob znvsH6=0t%OH+drNKrzN07zC(AVmZ~N~D&?GJ^^mJ`(E?cfk5)9Az#zIlE<27s3Xw zWY%<5@XxENk=wzKc}cUTi?P0WQ{Dy8lgLFIy;5SVA52Pa@{*;-`py2n)L6g8-{+0> zfBDaOWBowV=vJ>(FxKBVbvyQVE2u8!g47o76u%{SPQ<@i`GW7BZym zK{6iHBtW>7>(l=bWf?|hids(wc8-?=co|;Na@F0hcAOr>wMyj~Z?U ztd#6Dgfh0^N7?JWv5?4rI3`{1y172%7L1g>?VIG}biMbMo5wjwp52qI4;U=2otaoUWWsG5oS8;>fA(jGeUfXgv~u4LgHIK*>DFD>LLq`%wyYN7ka49GLv7kLIcLgEs*~vB(;x&K`q@C>s2hHSh$0n{U6LmL zpY{ZGS3u8v5aMJaL9Af-%&0|@IMLVnl{Xn;(P;MxVT*X#Bd?fNk}qQPBBl>i817Cp zz<1-N#WB_;hY+CC&ex~MHwTa!7jgeYJcdQe8Giup%YIoEM*@xiQN%#6SYArE5O}&@ z>LRbSdh6FV@^_ez_bLraIHibo^=YmYMK=7wr$jD`>UHMBO8lm3Njoz9_s_lG|J6M zT|hVwb$XyAQGYJ}z|m93ADp)8!=F^@UF#iqF~9$YRTG#S2TOdMttN&#EeG72uv>NR zB;CFa%>k_RA8Ber-KZEDoYHeYZ|gWT8^Vq9!J zFt*Z`Wlf|gSbK4oZu16hm%1V2ujrTvhKz&BPqktG!+sm6;6odx1kQs?i3Fv2^E7|_ zWEXkv38O@pVJa%dZX7ewx}m#a;DTmOE-C)!q%Rk_I|Lf zjm-@2x@_fxde=W57SHyrNL;xKcqRUwx9WJ7}5j;*n--_&dr<)UgDn3`Ax1aN@KeWG(ZmIfOG*qZ~<8qi`f!t80aB zD*lpCW&{ii-^HIxWFz&U3Y8x+-PzpLk}6Ye&HoMvdi=N5)K^Co9v)-`$yn0o#0+ zbC!}|5JC$JD**6YR~F(^xfR6PCU;8r%32?E0fT>&!ioW?xG4a$|{@nYx1|KCQPZtw&Fs$k2>;fa>8F^ITAa zFEwRJri>R>m}00xE93u=7`t|x7vb?1WG5u^ZWU5u}N{cwI@ zOap{?)QyZCk~(}XRk&8L$oPYE8`A>+hFK^ZRn3eR4zW`5O5h_vgT}hZ*e9x2k+bU& z4~nK_<6RlV!3-3MpsOQG3|uydvS43T(wr8Gxz#7>yBd5(QZ0BSghcdqV1E~si$j5X zO#!Y_V(e>yi+M5eJP=Ch8|aWPhGH`(Ho@TQbHJ6%>!zWSgatNdS4psQ0eZOGH<}PX zS^%waZUAjUc6l1}NV!S4?7*_~rE!N^pj@|hU?T-rSdnsJ)4(%L8>H+RrCeB|HhW|u z*(0PvM!4_|WGmSuBh6UDHVKl-15ZjQ+)6L1J0ef1U`Sx9iz|7OlCB>tE~HD^8fmH% z-YEDN;Y!FFF}ejE*LoX9n{@iY58#QU&C3$Er3u94lp^y`v{~`Tk`-s>4L43) zP+Jg4N-fS6uX^DX0B2z;B^?L2bOA3ST*C_qeM`c1%-AUKeXrFgR5+cZ33N{kjBMm&*}7#Gxz%RU0! zlnkvrf5zKTD%toJoWDS}W6`w+@fcU20PnNWTMG9vZS~gFTh4?OP9v49!T_2bfuLLc zHB3+kim4i}NkOS0bufF5cns3GBnJdn{qZS{>mp{pf%0P7ZXL@V$=3}I-ke4Z&d#p> ztGtozbqNpns8=$t4jCnvdN?VGdojXNn^#BDS$+FUd9UW-Nu_bGWZ~3N%eUrxuX>RW`DU+V;OXouBVf09Ndr&sO}1mwY-BsUl7ZK>6lZh{y`hzr-s&ZH zYra*o((F4A=O^c|WXQL9B?Hgh;G^5=@68V;(LvexLxsGkw|mijdfAS+!^;KjHu87& zz%TN1ePYtvyS$0K-kJU6>v?T;PEzacLM=Bcjl81VZ(qPpQ#%jN{bG%SbH7;h(7B(m zMs)-`Vz%Rev7IS$z=N~9gYmW(86Y=x{}cGvF%=jBBo~GV@VpQbj#0Je0e{=Dswb1> zAsw*f+$~5y(u^g4r1G8m?<+Xv4W>cL4uKfn!qU4VN4>VL6gO<(M}Z6Fr4+h8V2Ft9 zF{lPdKxyx=`_Mp9s3vD)_l@J52;VS7!QkErsTkr-B5eZ%Y*DlhbWkGC#mtg4nNsb$ ze1muSdn$#`XeWhjEEFY@L+GXQAxg;+;;@1c$}5ejov1~rB+v2H4(sze&$J?Vx3>BF zJGEPs#@b}7{^y7DG~mpH2H?h*u=oW>&Su`Y)?Nax4Ik{E2~>>T6s?l?4>E1M%2RSd z3*4ee(W1xVa4XAEOk&jrOZSJ48WE8c@|FNK^Sh~tCA>uqmLG9`bYP|-Z)E$RORA28 zg{Fz8^%gbZd9YGq$zX!%vGV-MH-gg>MQs$fxP)F=dZ(j$v;Azzq+J4-Cvz^CUXuQL zm4le5irO#Nm$csal*P71mdXy3Fh0HUX}W#qT_mY@Z>t2np z9m8-hC`t#0CLLg_#J{BH-=x(ncCt4059-z@SKPff;pBgaM>|$!7HZ z>kKY&Y@$7{=^HS?E3GZ3&Lo4u}2WB0T=uWnT6BDm9!cn1bzWC@PX|JkmE9_4nNw%rkl(Pa@Um077CK zVrpuCSmBLW|4z|zrK1@wEA68pvU4=MGkWL4{k~;c>oMZy-G%!V);Rd@>4;AXBL?NA zUs)u80SxCvHD=I9Rm;A^txj%M*yS4?;u*q=2LeD$8*FJ+37uwOK)=opkEbo5d?yAh z&a-5t;VEa%BJ;y`W*xz_Qtt>aUf0`T@)=Dp&blrmaN1J^AGf&#l=`8LR1>+v{w8Ky zwh#Uv*LE(~mLT;MHoHQDQtA=LZ7%_=ttN7`5;5z66wbpW0k$0#QyC^r;CQV=`H6N; zElp+|#8l8F40DnQ9{u=!v{-bS_t=UmA;hp%QgXg`qeIpUH1uk@d61+5tE0gTL6U^D zWINyj*JY_Jz%OzPTE0|QOi!}nhL_Ov z5434LihnACNEwfF4!Vt)yR4G!%^SOTL|?)mvhBAihwz!$eiA!qd;}2Z> zFsS+9_j+SyJrfJgrn@HNE)RI6oCSx`ji)4h=u=+O>`&zF*-s}m5IyLX3_SHcx|_~V zz(3?A4Lmt`cK4*_txtO;15b&M;FY)g{ESyB zuL`na z{AM-??o>KldCM2y?X9M75KxQDdr2=V6!CZ>Rzhi=R`@clY{n*yJJUofd$yE2BQn6O z>$#)=O3j%gN6v7wzTIyUNvP+cnNX+pWltrJO^g0_7YS5~Wt57ZRTlJBm|f zFM}+u@vazIJiNET!EiUTPkAmFqUEAiv(9T9mtnP6qF=afDPWNGi@d!&@qjPrnAdty z)Hp;Ipc?E2iOXh_7c^w!{+E(eIudHJ#Y-3MndHi0#B>%>nxKnWGAQN549!AIFP~_B zj#H*2fHTm$?i6f8FkK8?>dXOfo>c?kb0LfYNpOa5%`J6g9IC$FW`Z>csXP$M| z*=L_)pP@PDo_GEQ_`Lr07tVdd8{c%%#g|-q>7~PsMkB-L&2N6oTk(0@+u#27dGqGI z%YO5>e(Sg1|NaFZ`0d~Mo!|N0-~0U!e(-|} z|KRe=FaN_o{187M{_r3D(I5TsqDBAdPyX~j|Cj&c|GeVA{94ZLGHcx2d{W{%xu9 z-`48Y@!z)U_W19bs{XsS%7544-}U%+gZ=wxRsY>s9k1SG|8B0{BL8+&_1~@4+p0V5 z->&NI)jQc^^kl7IJ9!@qm0{C8jVb~mdt6!*sj44ZQ?5h6ByIT)OG@H)` zqH1jUNtSQys)_ljEn|+gj8?K%!kG~x7 zVHDMpLBpC;*;~`&UR0;{MMxTeg2L3ekR>%C|G3UAOoTyxf-*GB-d1S3#jEbns-KpQ!5$(#!9?S0)>PLHJF=b85gu5ekhQZuK|39+UfJ;=JETCH z)u3{Z+K}f|E>~>0r~*^7mRh6%2a=v|cXq%o8rU9Yoe-Tiw9hFxi9U<$Mgp=9VdFOK({e> zTL|OsYHwqVUv>jnFpkM>NqB%zLd;3CssUp1^e#RPc|aPG2>rE>XuFQ+PL8N#B)!$_ zsT>XYHv4)zfM(0g>=6_ywbT8S?{|f+%q!SNzv~SfrlGJP!*h=JNXLgCX7omQG=EgM zd>r0z0p{PA!X)vfKyKTUA7p2b&p6mD>hqA_L%xb zm$GZO>JsCe)`F6ie#x8qncA^-v{`AQ?gAeA>XumB#%@l@O*SRx!f@J+eB7ATX&l)! z%vv}8>uGFaAI7B^Nz3$vw5}{y9%t3+?EsqFwm>**-FD0^e5?@QsQ} z=T#TtR9X*ktz!hUin131&oN6qOF-1B_30N^2RLV}cLV$VQLR_+xwyIzi;z_=t`6DX z^K)F0Wb{V1a|6n^k!Q9SMu5U%G1$)S&lO%&pDtay3Z1MK@bmgo04Rx?qbG4v@s$Vp zMq&Ey!f|aphpBCts|jp8mzbYp(c=#84&A%gp+CZ0OpX9u6z-z@X1+0pTR6^Z6KR6h((^K?Nkw@Ndk@pmds;x%)G1lH3-zFw}dAmv8%Irl&-b9LGbpPGnd9%ZA z3^PBc@?kLxPjHgQ1gOZGlDBm|`>{bD8hIw(-Or-yt!O<&q_1V!b$F`bFeJ$u5mS?3 z7Z?vQ%u&f5E5X2N__=kyxW1q8&VNVIX01;Bgb+drK!9XlJUNnKxfPS@NH2zE&Gv`b zOKmJ&;|IJYwfL_tAcRybn1?>?73YZTxk`JuhYXsgdoir}<{NyrJ~ouQNto^C8Sv$@Oac zymxlJ+A{5(3fKi2@_8?Bd{fHLsq|-aS7dWn!sPi_McCD9BG8C+C40Wpj?v2OgkA?R z^-9}%#vvPVn?C8ysg%2vy(=5YUwTQqQ|%)xii_I<)-1Zpux5t^|CVFTeg~vYHf0RH zi+;#CzKY_EY$EKSzvGi7;fb~fdMSYzf6aG``Hnltj(gy$t;%74Uf5gz!JYM2-gDbo z|Esqly}h!v`4w#b%3||9xXtEe@9S?CTK^x``k$#_wOx15b8+|ZflQX1w%na*0ddXZ z*cwp+PmPdyZFBdG}Dqrm%p$B?(x*1@Ds0S+nE)? z^`7g@d65gDV9$Fs-6Q{*wXh!$R`6`TCZDB_*ndnb|0yb$ZRwwRLEF-QBEH`JtsA(c ziGT8%+Q0uq2kG{_gY@6I*o!#ncQdx&aRz&Ow_BKkh!K%>365p*t$Z!-)6mR<30HZ*3%Q}vcYSapJIX3+Vs7AeE+MG zS{nSh*?F^9F)#FG?A@J{-Wk5dE14hneYRdFBt6>dCC!ifUV@+8 zO?-&r)B~r|n+J!2gDUA52PK<0TFJucM?31=sp} z^FqJ7<^6U3-n`K7V)s6MLw@N`O&Y!4E7{V&QxFX~1sP3%q@^e2`!MdsZ2{lGHa1N< z1vhymn}T_$L^gCv(wm#Tq)oxw34V0a)PlEoB?JF90Z%a{fxp9x8vM5s{=`T=3PM-Y z=lxc%Wbof&-9IS-f18&y@NXvgu}QnX(<>SH%)k$bQk%4~%ZpnZ4HWm@-tO-WOPHV4HDAWbJ z&AmC8st~1^&VE82~d2egH%xkkSSizw_Qw3LV;^e!@|H!4zJ*s&0ZmuAL& z#KD`5<_(w3=xPFBI!yt<^KBze|faBDn9r0u}Y(9;jaG1DpG1nO}UkuSE^Aumo-HW?3 zTH#{bw9l2b{iQ#$vT88S z(QK7InP(}4}AIcgBWj+*M-ZY5| zg)gt@XPAw47JYAZe=*dOhmd7P;OFY$M2^rmGP_s&FM8Qhsq2h&aV9xemsEjIdH<43 zr#Z`J_s@X0h7*V!pE||kY=aSH(=&+$mfwgYlX>M-#z|@QX^8^|5o5Xzw4~WGgn0|g zkovTC_}tkt;1F?eX>}jcGVF9vwhRnmJNPoF_laR=PFQw3tQBf8wq(_6s3mqF!nQ^J z{+L%W@lB2iPcDD&@k%D3@RScZV|v>99xrLK3FFHSB7fiOl?*(V7T}BW_kCW{z)O(n zLs?@h8|6lr$vq*);MdL@&r^q|pa zAI!^R$0hRErwXxCtkWLZm3-nQ+Dx9oBG^LMVzV^te9n360bv;@EvU zCstu#k_2y9H_)cKxK?^(V_r+QNv`>_Mnunso+Dcl84=x+iUV9Yw9a= zq$J6)Tt!ALaUV&t(U+Qs4Yh1OQA-Fbyi3g$H%mMkW4)DBfwK0A!M5a7*QkTCGu5O@ z0>m^G#@v8}q}Hm{UU94Le)70%46RRIagA5JS}RV|vo$5X+u&vG*svVFEy+)WrgyK* zo3B!f%O(e9?9&;Q? z9D5u;@ucL*_?&VoB7x61^Q^PaVazW+=OgA&#^io}rS z8RgPuENQ~wMJNd^Ai>iSFK2jaoK(+gk20tSt^8dur0f zUg4EYlzSs8NkfTzw9-r7r=l?}I@$C0=Pk9pNu^P*WZ;p!Rlui;`6@4Ik|K>k*)Jvq zzuGGqc$jkl{=8~x#$Mwk4g3WJ|Mbehx3PJ%r&5=}TCZjBVY11Ir|bN^iKpk`Jr{{_ zLn$%Z;H7Pm&r<~}9*czbG~s8XcW3+fLp!BFi;-em%7CgqydSk=pctHt9w_!~fD1cN zt-%C?bI@<7ZmeN{Ar1zU0>mPGrCAcfprWA0kx4w>kmwe`PspfY@Qbbr-!ykWyD^A` zaY<*~`)$}tD-&y_I>b$0@*YLJvs)J7W`A#saF#4WJ@j=*f(RJLdnPPj2yl`F0;kJ} zIW4r@q363ZP8fz=2*A9}Td;*YgHzEVRztJgLH9-MqMqDDxWw_`G8BV{&?@Xh`H}B- zXg2aeyw8?x&2OaC;&r!IGEAh6$*1#U{@y0xl->p}Dn|TOuGl?Z%-ZJrZ1tpV-|LmE z?Gsyo-skVF?E#KhaXC&dki2Ye@At|!w=ge-xsCBEGP|5lURBN0%egUq$|2a8c>Q;_ za#wynrzeEzL9b+El0t@4jZND4BVNfGm!vVV z@d_sZHo-y|PUxlGg~T)@#9*AE)yPj)+zxsEfxFeUa!3PhLv{F}6E!`l1T* z>0*)spL#zUY-~_%zt~`zQUq4PTBGdVw!_0c&+u z3xF^Cd$THtW*z5uzrVKzRAD~O4nlv0BNd%lsjhP1NSZ|F%bHA5$p2k-tWd2G5lRO}~1;tDU6Y&AIF7l`)&X7Mja-3rljlW`H%9HvKP~1RF?!g!Q+fqFe zy>KM0C%tWd|0R8LH(5iY)=kSIx>aFiEGHF(mD2hCoK!(~VDP#L8~WF4rs5deRl z2!JFxjga*zq+yIV4E+Hp7qtvnyAy{Dud;!;8{4fzcrlZvv{IN=&DfT?WB4A+qCCsu zaxm#UwbF@G>SA1HVtyeSG#)VoO6A8W4p3K7Q@L-e4c^l39@KN>Gv*ad zy*;Y8!5%PMC1#~)y#Ung*${H+J=p4iG;`(=Dj?Y)%@hUWS6SN4YtqWE>5XYJ`)i&X zvx`_8rVZCbVSMv=FYyvYVeu=N&t=Dc>gK+G6QdlT&6hi9MTTL2{5*~Kd^~MDCY!=a z5ytE#{Qsb&4?P`IBX(u4e~Z^obJ)=ZLNh*d*p*M)POq%fMsgO$D2?+hmEP4L(jE{_ za5N(58#*c}W-=QD&SFN)JP*HHjkouBvxb>`e=y8^1K8`AMYLOQrumKOko3M*WaHDpCI*3#qGv??RLxMs_h=ujG5LDY&1D>tJ}7u+dH zR=d_AEAG&gA8;qwgX>&YWUgC+_J-+qlT~91+vY^&eGnV?;G)V=Z8pbP+6M6?ZDTeo z$1rT)8JoTGmn%Y*l-=nL7VO6MWJmZNX6iYWqjnw(|8y;@yq_YYokVXlF`YJJ_1XjV zjt6eRMo^+bV8o`DEf?`DHCbQdowRFQ70-r>q)*Z8lQkGp+9fdra!s!Y*J743%vBpq z`elMiE!)#)aA`9Zw5wP+gD_MTj1aM$Nsd-d%vz~#yxgI_q^EG$Q|x}|y^_tl2MDR> z{G;Ht((71HC_@Ov&>o4tis*rcUb7d!@G3o>xEJY)nR@ck+Hh?c(`nauNmeaN03rG4 zWS0pwH_$!@%c0qLDA`VWi)gH1v&RZRB2jxVCw4xVxht4XN34+9iy9U{wl6}imhaK< zihAJDd`kAyQ@B}fMKf&`j7M)@1L)l*(DLpFVK}l&u~}0ByUM}*yDlarYBo!8uf_MX z+Kbv6Qn=1w;(JOeSKRgDRx|A7k><8UKM47uXE13$#To?v{tQPx8k@ z{+%q@>9S-`h~AoB)I&}rvL_^`WVuF~5rQq3rq1H|%mV#)kua#lD5!xF|s zFhJJH$Rb6>1$uUMVSg8dm}!zUhUt3Bb6HE0DA2@u4-`4v;>Kfm9l#dkDqE6Wx)KNV zI#!G@LvI(~K>X;kFcykck{*kjih>M6;TY3|CD!xlh%o5JA}=5>qN$A=vBoPwd+@a0 z&C`Be_37ZE2+2SrJcC%Dz64f~o_a4^?nbjXb%_IpGr-q)(`%=sdn3(|BsioD;Lwbo z!cOHO+}Ghxh@S$A+38<(xN;!LoNn|v{h52BvGd5-!T5DLhjluKaEl1z6c}g+ev9Lh z>ZZRCv6WYIvz=33wFKxyO zHhNY-x%?()3M<84zDZVexkIo`t~^E{h#fji0Y^4>NaIHaK zZG4s0PS|sxsY(&_ASRifWN9mqw-wC@(^me~y%Ju-T~#PO>ZOes z>gF>^&UzD_N|a8EZu8X+#D)QJ&~cqooLw=MY}|ET(fT^GSI}G7c}lo9cxme^i$$q3 zdvIRA1M5QIj4N zFWDKPc+Ah=sxv4t2Ea18XUyT5+@tz(X~)Zkqlon58HcPAJ85kH4Jh|!krYB~j@*$z z!YTRL)M`$%IXBFsD?X`pdLPGG8}%8+KHcTr}4NC+HHi!3gy>{k+*>*qoEg2N+YC zmK_ekro}F%C|TiMUe;y>)*PZL{_Bt+01B`gVGvk$=}k*8l#rGTijbQ%`9F{##3;R8j3`WJ>)h+eqQ`(~6KBvkI1#c3~21UocT&|&T`sfMD$G|iz@ z$rHy1y!^lDz9RyFjtV-z34Ir(4$dUVsB|uncCvsvmz>HzDYaNl)dbCi>6|OH-L2iTTR>>zwB~n^e=`n9Z>U0Bm z@FI1-#-LET5WE%az!tgzDC zsP^95-VBW~$z>T8eyUU$J2~BL#&>-}$|+(sRN9b5PQ{Jo%~->bQiU=~6@3gu0IHGd z(^@LtA}94q#E4nRqOEb5|D+hm4wvyw%<$yvzurL=9MpSWsW}@zhU zGDVZjScG`+8M}GX1Ig=~5maHuKE)YpZ=wLE*-hbsWUxuJ$Fm*DoKaRYJj0^K5j!ILnmZdcjV1uIT|!eYS|Avd-1j5K38!$zH0Fg+3;8dv&|47wv+ z#@?w_@aNMe zVLJgNRD1xso>8_y-} zMI}OBvIPxKrFxa3DV4GSH=-Qjq%PTb4GKcYX(!fg@TN@AqLfj(>maI7P#0WdJ8Cx+ z*Ce$vI(UL0Z(XpQSiBYlsFm#x9ZZ$n?cNC|#CCWw53|)(b!}NKbTTvpD~DDVd7V85 z=84Ck%liU}QaYV4lTEOrLZYC5^1Dv30G6+!bW`NW{{5DG=znT=9nW{YtCMgE4Y{&5)(cRBe6JSBrtNd@$TmTdI4OwmC&LO@CkBt}-u z0(~#vdsjOM>n_*X$kCk2thPN?+rdw`s*~TFhIKt$=!q~GxsR&-YU=1+&XwIc*W}#( z8l*>FFO_bnr8aA*XB$fR@tlfS>glw8ooFmbP7C#j3eOM}tIh_ErgHSuG$FX&C_U@8 z50ti$n_{`QW*ReLBr-Qie_fVK7d92US2&PODt0UT8)T$BcpW`t!U%`@u^^q$d&Sbl zJK!i*sH2(EElob@e5`ihHXqVL4?bP2(aM zFH%!NuU7e(OiD6iuq}(oT<9#htxP+uJ^X3PayK^~Jg(@; zUfDnDeVqv3vD5cqnZ>BUwO6yT9+yx(hfeg|#*K^SBJNrr#?!hqVpa)r>6iwrV;mVS z#>5ng4Tc7AvtyuR=nOiB%X{U7Np$0dfeHSQ2_Orx&Sa_02Y8lS0>Et1?>Bm9O)ONg zSIg;;Q=9f?uk)f3CowE%*B;29fKO8mZ1q|N6>c@vkoGEEZ8-lA)M9|tB8s5AYm*7YdJdxr`$!zQ?%m1mAJl^m}I)30*wIrFu7A%r-qfxdi(0pHy zW!}yYlzi~~inep0wVl0s?np%l%Jakla*OaC+#uUiY+`w#3C5Fa6XQ>}3}voCkNeD5sfx3?(hBEVMvXQpd38E3d>DMhh*_%C0TE(Aq*+;X|CI zRfQI)Icp0O&$NsoFDxFyI;<|VKnJI`F#6S3qJ=eu7APWW3;SP@7Sl(ddnDICN6C#w4f&MA?(|WD*K<(2{V@w z1wqLCwQQ`5F*Os_tDsfD;{!R68eIpq4CoadNCW*okba6DLgP_`0gOUt#Q2q?4sl+M z1gUBm+0516zuhV{P?KzwxDJ#JjJ@h*sS>r}m-7!I#s946N9|g)ZQ;X{7jk=;=%v#s zSn%>Ny((FPd+4AJ?&+hL1>hLw0XY8n<4-sN4r+Y*`*B~`z=^mqjQIfYK}vw!?O?nZ z4D+CV56s59TbXmS`B=iGhB#}xs-p995A3NH_*AT7e2P_AFnhs0a^uwa122w?w9=c? z;~MAm!scL~zaW&J1;B@sfe&Z5z5Zd11F;TZgz+k83Kb0X;w8u@rdHYwB~>{$U>iYk zY9>eA82X89fAoZk(oXZ*8JwdysO=8a4ifP_bp=r<)N@ZsTq97MRS}t>M06qARx|+~ z?v`WLRFfb)Q8K?$|HQ433d!T%svUP5M5}D~%G?IR&tduL-Mz^x+M%LTrMucMRMB1$n&-E!uOr?YvB*+BIqjKfYv z@Gt~R^0F%aMSwG=MsqLXC%eJNxc?bJxv&h-TmEzfGbG2dnaOQF+Uvfkaw&@e>zW+bdu+Zh~$C#y7@m#r^A8*(@s3J|m+0LP!pRO{@JGjx1{Z#FSkU=mnrdrqq^ zVEldF_7^KBR{E7(3QPjV(DG6QYt#cPl95iXKOd(aCO$rPgDJvuB$oJYJZ zvs*HLUNU^Ju2)g54!_6pGlSm?3^O6%vG_v!2`SR%O=bMTC?E5dN0qiS?k%X~u$utb ze9;y@$FazXa9KU9TH}j+1XGNb!V{a=xNOd7e5{}M7WKvqJ5w%d6xRpA6lLoZX<4%A zzU=Vqgq3FbYYMh=*}+Y_B?SGi* zF97c1l|^FbB-N6NkZbTP`{tiP<>s`PkwcY8e)JkhB!?feakDo3O8kR_@_`CI=7&{d z2kjitau1&+N6dMfX_Q8Af2kfaXP6xBE44dHPvzyL6hO{6`O$Dxtym77eV$FMUYs(_KQIu%+grd^HuV~(>k656RdaHbzD41$hZFX|u;2b>dVCqw~72!Y*1)6;wg-Zq3_+;3$A#cuf zSggeUCkbtb0BeTBDqJ46z5oKk9}-V@j10^`vhRUjcnX9NOA?B601fc#i~A45^Lp=+ z{+T!wRH@J8nWPag;py1~ULIcWVxsU_b+BI)tsl-mz4cl3nY0VhW(i@iKC@pGa0nWd zKI$+{K;Wp)FhX8+h&Pa~I>iylze*igfpQhx z3H8numWfAD@%4DaXju{F7k~<}C!^KHiwC+OuS&1w=27Nn7J-1`JLcmG{DE8YR2IjL zfRTI=X@wH!L+0Qxz+hl4EWxsrog}keed$phFASpn| zAZ6WU*%op7*p=w{TZHF)Sm?&*9iD9+A*d+2Hx>22=tUI~X_*WdN8r#A(Ffv~P9V;# zq6B1a3R5`cDMc`;L=IW^;F>GdV)lD;|EBW2o<#$cpfXTM$Iny}eA;W8dr8Gm&EzLN z2Ionz=NYfm)O<$jlM2>u=_4?-1?9fxm8_5Alp-Gz2Eh)d+S!3Z9gmD#U#nLCf(l`6 zSpPu+J4h7nlZl)p1}=?Gu+@nsbQp>omB!#Nd!=tQ8#kN#r8-NR{-u@yaTNI6sthEH zZ6h1v)X%BRZyyMCf*fglXxwd6{QH(+Qwp(Vb3iRB$DHGpX3ByVN;7n zHN6Qfqn_Rb)R*pR3CH9-2Tp1zJ(wWcDu=dGH-jQtyP84}jCkzMUZsn5YGNH-<3KmK zbrdIpv9y8@aed129jShD|D=(_Gh}&Gf57ln+%Jgw&m<_!nF`@jM6$X0e1zm%l%C_v z=~Ss;mYWWsx73v}%M=u7>B?qo*~YJ7kKsHAc0`}1rOKcRS+iBfs++Dv_cp5~9bQxD z0S_;mnxdg4J(O3l*Kx7Bh#WkC#7GBT_buv)Uf#luNDk2h@!0R+DAAS13QfXgQ&T5D z{+iBoB*5_y=L|dw>Q~KnJC~qD$E!wDS1Fs>=Iyqy88!bZLu;nI>6$_%=QB@rzidAT z@bLs9B7-6EVU8%tKgZ|?SOk!9juB36cKSCGoMfJh#(q5=N1R!pg2O^ZheiF!Rngzo z=)i;mXcx?^xX%b!)s5?dPWHv^SUJTE?V?gmX+<`;&;RH92TFR06p^zzK{C#E|F%5kAuAAC}0GFH(J53Er5ro zzm|;-L|Kw1v{dF@@3qW|O*vFB!n8$(j>C*q9YNrF?J{VKGGoMaSjZVi#kpFBnTC}T z7c=i*noAt>d|4MKC3GkH=ZWcz z%!M7B%GAWMvJzFxX?D+vK*z2r$Tzj&|L^_72AZg1@9-lcnXy8V%j8rFva!jBzI)+| zmWx%>vBt#x@YtKBT>SK>s-=8TZRIqU!%@#P{&SGX9~Scq=gyt`hBv(Njc*Sp^R>%TGoJ@0+rWxx4b?_aRs z10VRnZ~yl1{Lb(G9zMVS!G(Wt`5%7hLm&PltoJ1L_wOd#eG!T`%>IsQ*jNP?hD&=w zCEN0-#G>1)0VQGKiaT1um}x&f2gWJx5l}`Yc-Tes1=n532_ChbS6Y z1=|XG6eX2tiV{A#SI@UVMxd=l>;&NO`W-uZep~bGHgD7{N0-a^;AN+VU9Vw3=1fS0 zxj!W(*E@^{wc`t=v{|6Zc%Jm1WW@tl* zZ8!~Zejm%nmmuW4&`x3leh<&ONLOJcRJ!`S<53%C!`A+C*d>@7X!%m zm7LN7+TB+e{blVf)_c9M;n@3R4X@-(@L>6SrSF0$R}znCMeAsMo|fMEQZm72uDj4{ zLB7&8f5_YXgswRuMWk#+R*I*RkKi}7Bii)4IUzFmgS7RCx3y8*V%0)hjB!9a;-G(* zd$$W)@-YWzDF03Y_bjgQ3(>#j#(mBT%%SYG?cVki^n|x!6ZDQ;r-j@#9wa`_13tFw zY{oke&S6$t_FV=1H$ot6&u8`X&=uM z3~%?9(F`wv&L>6n&t(vq`TGj}A5wycmd_KAu_Nb(pZGhcatF#>U#=K>Od>@9*R`* z0RPniZqT_oTL2bl^S^mP<4mETi3CA8B%9{CpQU3$YqFX$VMg-Mk!<^oAz)Ul=5s1% zC#Kb3dV^omo}GoBiB(5XjEahxWNz|dkyHdlkEvazr`%15)t0a;eDQ>9N>Zlm^bqRoq} zOAh=yfQ*;25N5{ytMJ=A79q5e5n}*XkagC3(_>0SPnI#vhe#s(1i~i#;gT)3t$sNV8Gh9PVvWZv#i$1ir>$$f1D4o(< z3Jo9Gt5E3AHXxQ5B91-+W^v77xSsX5p0X^EOl}+F z<#WLzV8`wTQPi#_20CCV^0sCC3=sx~6zT3-+Kd3VD7G_Po^XbpuJGqU;EXt&bqePc zz?oB-EgPmA``~0^47!()#N}SmNTTwzd6F>lLjq)eaGMgqLSb>hd}VqXWFv%(7M2ss zTUlRdg**(s0rt+Ryyv3IuekT@)xH6 zgF+;h3dY!xhgli{CMiFmxA6_i$Bd$feW6oK_!>8UO2<*}YNG#*6Hrk@-7y;-`p_mPo7e(VL1$J&e-TZHA%+)~i>n|*gp=Xx`S$fM zqU1Xd<2yIm=i|NzcPNf9&RrKFkUoiP-wsi5p$Z@1T*Bh_Bp+u+qbJW`7;C;hy~OItt5emOK+90tSJ zfXgzwHBrP>l9w4Pq_+E{L)AWrv#{9ugI>;B*8sD5u$ax3NoEJ~)F!mrLb61!k*+3K z^{~TVt60VGGdST?x_O2hMRF-{z|v&OnS-;o^}YTsEIeq(eA7M{xQ9ZfYi1up9xrqdWRHu3jV(X4$1s~ z;>7f({>BTe$OW-^fxj&jP`6{g*~ft1E&Jy0yi!4ExZ_tLG(cFmq@o{88PH2`p?fLyoD-gL@k-#@F4R=88&;NBWx1WlED6A*)Ki9Dm-T3ymo(K%1%QZriV)45)hv=MLx{BT z?GEy8rT)r;%?`XsMJ#w6&?Q|)EJRb}F0{(%3|Z6Oi1q_wNUd2~vdJ8CQ{$9JFRxNE5fq7E)t{?>M9orGZKX zf!zqNV3uYz66j`tzk*!J6=2i?} z-HdHac0x9>NwGDJJOhh@21UH9>z|4t4cVN0w?&zoh+|{k@ORZ9#rQNXN8Kt?B*4$v zNyUv`F`ke`O$4tc;?8C-m_tzphEu2d5UZr&URz75h%&^oNk6XjvgZ6IA`8^k0qDr1 zBVag@@UM3`o0W@oMm;cXbKJ|CBb1ojJ`>0jM@~7Mt~UIu`v*z*ic0)oH`rd7W*^Bw zmdjkIc|nfUgSf~Fg3odGL8wv84Z_4A$O$qiIYG|Ioyom$?i=3tCQMA5UG?*1S6$3G z%%wkEkRa01W~^a|#2OHWl5)%1lv|)$HIM__WLWSCU$8lxDz5gb>N}>R7g;vpebtlN z{n&AD;?{*V4z}nI(|G?AYNBrp56`PERMv5E^#mHo&^fgfna_3sEEB?0=8K7f7Y~ae z3I1F49V~#fTo?9(p^4szki}};$J~x-w>NvYRcXA?dUz0B`)aReGm45Oy0%!Ycrtl1 zUHhX2VB&(Fg0782Udd*}ZP5Wa&J=a~g5Ji7m}R(@Yvu`&gURRRW?iRRYz;icEGvYW zq^Z(aIfSj$;g!zh4sX~P^&G)~g<_2~I0(;mN7wOi@zWu3D!M1`>%`Bci#nA0)NU&@ z#G}lm40x9pHIYEwzrX}4OX$>`%JG_Lg97oHI{3NjMWR9WjPOK#NIZW@A8zUyyUW`# zY&ab~!i492Ol^j9x7Rgs;vgT2Q?(sftkZTr z?q#hV+QZRK-c!}4o%_A6wIjCkGWiHsXa`(1`AF^B^G&TJr2rnPw#%=x8F`3)DU@KODq*EEq z;IMnw15t#{R}qkwdms6;4%qZhYQ5Pn9?U02JuVsex4e?+ZhG`MxT_rex4qyv7Z_lfqkd*wsm&_}+ zdq0*3k6aNg;D6wia*8dFZl08se9lW6c&fPBOQU)4sRQ=!y^?`fZ}J5-72bUs|G`Td zc#8S{{)hhl&S2}!zyFcHHw~P6X7-I=erW zScd-xuFB@qU-ESjf(b~USWyV`;_5;zPeOiq_-cMmZS+ci+7$B0$EHFl2uL{EE%OIz zz2WfGJbU_dzC2Z#I42B?siDA3Mw@Xql$mg%%T6E4N$ZEF=a#8sxORyDpr_O;_)uY| zi@yu{NlQv~c=2gsY_rh6Oct7^(A?RgR6kwXj1_F5^~&wJ;4FP=iX5Vp&OYV41^)1TEM^1?Vr=PiQW8J}TZfx~kB?k>tSw+F%HBvO&Q| zZIDNtj5m0LJ-A0h@?n}ull2RBrS*jdVLkN*2}2s3>$^d}YU}b8yP-@au8Zg+dw_$j z2VNxGMTQ@q5J0p6Zt@=GjiVbM%hQsx5?Zp^D<#|`HD_$`l13nfdyH+((_cg{V>!J~ zTfI^X_rQWDC9n39#{0x9diA8>w|S)&?g6|^z;E}G241+wicjWyuNf=6_t$u(7VaU$ zt7V+mdPxJ%)z7YHAsTMlbhGaFx0f+1k#+$IaCns64f{`p% zph?XXLW;?CYN@n7(1#|eakM~>KQ-FGYPeG_l(is&l*p}Yrj2T-!(1UlLh1x7vA#x9 zG_xiT#52;*s0XPJuehb`$D-2jKu+RMrJ4$v2NK&*5*tw<7?Fe^XS|Y`780_~M_?pG z9Uwo>3o-r4)>`kC4zkBLc*)!zcQhUI_jjm_MX{aZPo=euUNX0x9nvO$Z;(P1VM^9E zd&%6+bx2$My+I0_G$k=xy=3Voz1rWGZqjZ3KEFvHoph6K_ezCLx{^sRCcBvjn{hTb zW9}moh2$8(%(vN#%aXlFN;>&Xjj@Jp#u>P5Dcr-58YM=X#nME9+1N9)aRQiWE}%p+ z?*)ThkoJx-aL}qX>g7o699sM>?S*Z$*7$<4LKDCa=D!2@2@Qs0G@XQxLOXBvyTu5Y%??!~V2CJX5?~$Ol|7`;3b~QCIv`VDHEJYZsSvEPtx(CSwOqaND?o(N zLq>#HV@ilnEd7cjLfXX3LWH7uc5^cVR`cx3$At*!P;eow-3 z2~KfDG#0!RYrWQw_4tq4`_fp+bzaUorsam?_K41Tw1Rn<2TzP~{EI3_wsRD2cCh9s zJeHv&AiG%;PC+TKXBlL`AR*PkS`_>OH#$ zG_^91l2gU MTV=QtP?OsgJ(w3uv^p}v&Hv^?oKr7$ZW3cRMb!8fnwr8=FBI=;TD zH)HNZe(jU5T_Zie_<84htwMY4H< zZZZ=I;_dJ$+op&IFLt~6z1<6&Q&ihd??t`S%h~c;IYB+1b7W`*@=9vHWDNlxgk4-x zCI?3xJsoh|7f^Fg0s0J@y<^5?)&m2@qnI#xPUR@Xsd5rukC&2y1(Voc6aNLSmaNK2 zc*`|s*W8uln1jZ#{PDabd3-XP59GR*ULJY(%e!{2HthdEuU=oESGkNzNVF_zmNm=~ zG>b$F$03kE0yu&R8LaiayH%2a^p(&m2D%-DR>dktt2D0NuM<8WlPpJ_NFbPMWJE` znIt=1LV*sGuRsOHQi{^WDQWUxI>7L*iI`?7RU>ZkIoYlx1-rQ21n%;}MpD%3l#-M? zyquwjl{+Mo!oXPU{sKw)SOI!>3rS%;WNFHil-=2Wrm7-yQ6f-IFP`{To?fI{;3snJ zru5=LUNJVA%KL&$vG?$3MCqso!?q-^G!ufaMsc*!zKrqSnt!$Ys zN~|KBBrWndOobq%Ir*NqRzwu}zU~MH?fF4?rRxPr_iFE@EhMVtxQF$awlnJ5CiNEL z39c^zQy>;MmK4I`%&A-+F82*sFc0TTTiNZ7vbvV?rZXwKtE?=9qi}W&VpC_f57`qS z$I}KO`M5!r72oFLPYCnJt}%bJPxRdmeW!}*tO@_RCMF@)v_@;dArM#X(a(wl#%4A8 zvT+Q+7T4R^^vVwgnz9`;?k#vb>^ zasi0edAJ0z7LBsbYv}Aq-iz8XTwoBdGBGl0yj`@%W9G^v#O(>GC+D?%yGl+54K)~S zkzNwLv>B^ktMr4G1o6A&sH&tup>MyY2y78ja z{=2ErG1!-orcSm)zonybh*80GUY6%WlS2O7iHm zDNqu~{U?)zl+zFi09P79cSjpiKb}wyZYeVcwA-)Co3WA+4hj<4o{y9ej#$zN2YVt? zC!%h^I(xt&=L2m{w#osbJ{N9(WoCOhjd?DoMj@!xg{ z{hvdj$MsecGLNgNB%~flhyul%V5%(=jW{>fX|Tzu5{+WjR-!>uZH`J%9ONWSN;D!& zBO1C{QnmcL!dzRq$u?EN(ns=BwyDMo&|5bZ>m{42?3lFfp}V_Y5x;@%GSjSMGIL4W z8uFRT>EdH(M{Bdob|kwDR{7w6)Rm%af=7{tFKxyuW^z+|xtQFb4AHXLjmfafd8jvv z{i*|d3GP2KVDZS)45-&5st#7_-0O7fRLF!CfIaa1&bBh3YkPOrgF+P1X(bo_!fD??I!)(8b&-P_HoKwal+Q;aYHESDB ziI5hkwT%`!upNv^pm0nqFs--2Hwa|`If#}v#agkn@oR@!+R$woXw@DLfjAv0TytWS}Azav(_`fWxjwIGO_PCgp_!J~0#uBwb`&|jz zpN^sju{6gjhW4ikdbp*TX3jw@1JL{sEX@(Bky`XQXDfhM(%vgptZJkdUL}e%aCV$s6QapPMw_uY-~m##%50`SekJOjUXJ84U`eWddb%2)?luH&XTQ7 z3v<7`i(8w%EuIdrt<7D*GXc7_>CnP?fc(~Gf#cQHWv)PMZOPwytZZoUY8?~yHdnD8 zW+fP#PX!3|CUCkE%6OYkiy52Yw`(_tcY0xyAT+2dt^ z1?aD(WjWd`SP$e9kD~wTw2rzd%a2v?7B%5!`y4cu*J86>ZQ)*gJB*)5XO-(%BQc_i0iSoNr+_^$pqEQ^`e}&RUnNfV3 z!)y_c>xuGwjhC~*s(4(VjF8k*os*(OnRxus0`yk#nDtWec&L~;P{reG7!W%d<_6IL z7#x!A2pWT9DK4wC$#9rxOfdopRgEHi9gBc^uSjVOqb*6?H zD@&>d%#hSGYET-aL3ix)$V@53GTY9t`v3E56$H}Yc2}_MY}c(Swrfya6Qyz(q<5+5 zy<)S(dMhrJOidekHXn!cFY5m|jGO@4T47IYE_5ILo!ZE^l~fHQN0OF(xh$L)0f|Ul zMZ&7f?vF$BZr|tta}m}ZR6R`k; z#6~(U#%-O!Au-z;3dEzdj9x4nxAqiT30tm^V+tYoVS9w@^Q zdrda}I1uIh+6x^Rv_2R2k8T$Is+$El4TYA{@}Q&DBn_~w;knv?WV1L%t@gH;Pdl;F zU!B>ZLQhFQ*LzvxJ#uzwc9GV}*`@E##C%Te>LZ`+vTs;{cVhb0#jZ(5!fh^+q7?U@ zw|?MaM}Q75LiZ3I#ONTTQ0_r*zj%9-#bb0}NTiVcd<(=okRk+DX++ih-9juHPf*O! zph0k07`QOmKEor;2=!L=%uqrP<~Z2^&|^(jZ!2()IuyeZMgwKrmle!^tG%Sj7HW=2 z{08j=jP+jK7Mbxn*~ImSC*vCPf?G97nI@}B9S9q}oY5kd3*!&Mfq3$VC9izJr$Fsf zPV)wzLQn!*4T2(AfFw}Lu@JqvV#;7O?g#NJAbS>eLfjtQDjF~CE4Iyh{H2QQiICx0 z*EY&7!#U1lzQSlry2gQ+?82Cb7Kc7*9(0VxHEUY?H zQ?PF;s|xCA%*p0=sNh$>t*lMArQA|qL%W^# zptomRoVbAvE;=Q5dekZ9so^lOJKJM#F^~FPum``|HTI}CX4{+!4r`_K>oG5B^oz1Y z*uRm1%N;mW{qRaA!Psq?w`FQ&7$gB_MfMyVoQ5CH*nGF{^ZwnY^pz}E7@x4usWq0p zH0c5CFL)z`<1+_lfX}_02(mI>=g+|P-b$_qi=k+&@;~~ibBB1#6-vL6v@Qt%Qyq_GaUU-9@rEJ&)&C(nk06K1!w zlF!AGj2~jj=R?V$wkgOLV!=+$CB#Gz*$*a-&3(+LtUy`EX)HN3$_lC}-g(V;5CU@5 z9)iq-7JW;KiLSMwiW3P{q~I1EC}6jVvc0q!D;Q3*0+)SX{=z?#Uewa10*^DXWe(#J zO-8Lb1tfk3P4;)dDB9VWh82XI0eS-&H@kF{*A{D1*g>S>2ZnY4H@YN0ENLp~8De7V z_yaL&h{P$Cbys=AZxB&e5muFj$lQ7G*$%+qU{8azM~ybYUQX{Mt;y&Yor+ASNO>a5 zn`-hx-o&aMX}r@0@5y%6CkR0VX41qoY;(+u+pME_CuA>~cHk%s4HU^_0$Rwjh%Win zCrYJM+;bA%xk^6&MB>tL0}>o;Ur;eq`?U{cs(1E*vH|G z$&E@Jr(I|tCPzM2auPCel{*E{UV^hX7n;(XEOh|tXUtFltcxr6$#TOxcsS6uB&dFk*E9~N zhWB)4*LgWxL@T#5!yz*Xi-F}CC;)x~g_Pe^T8LU@-GtpTi}(hIp0kLDn@JcDKqFe4 zGyd79#_}mXPELfBO%A(2iJyGcAyZ~?Q~3F8_uvV!Ob%r zH)SD{UAD9tD;O@Y0v4PS7|cj|*NONV&%m-FA*1kV`if7N-y%D|7C%qZ*RuJWRXiBv zG82-;Sn5|fb*Wzm!3nGYu6|cUQxQiIO(hVs4;scXCw)kuhaf-;Yf`yQlIT<0 z8m!iOS=*DROf8Ujs7)X-cS*a=x!D`D&3STf<0VQlC${b2HD1R$cw%qXynCEl_O55t zZAUgDPTXA}CBdf3`OU`oK$uKLzsqD#(#3Ia&bl~YU4%YSg8F?e?-ZDJR59+4nWIH^xb6wL)N0O05u+ zt=q@FIhzy&G03_xtSe4~p(nL}%#2#yd`>>;K%Q0u0FEQK8Q+6m*2agR2wU{$vFKzO zaeU9Gi+&)t=<@wwi~guLXX88C#z%!Kn`60I`qtCn>M7KlCB44#-(_-kkDq#V(9 zTwnBtY+OggaW%1S`$ux)YSLH~tw(6#IeUwF*6#-!*VEpdjSJ_jW!)fF*RpPEqjJ3} z?U+cR&fjt|EYC{TvguC8V0de{R)6D-*q9EFV;cK961?UuVq-W4*D|ITauzZ9ey}lp z+ncj7&9pJK@8WY_$GQj&dn#cdnDo*xkjXa7PrWhg;0)`a1`kADkc~eSouXwHv!6Mj z&nX%2X}bvj>}73)-M!iN5a_~V3vs*1(>z)=bAc}M{a{P*qBmwElmjc}xzDnvCrx1XT>>cvucSjvPbKRm9g^`uo4~y~+Ei)JrqK61 zYeQ2>zt?!bE$@k^Fu9j0OoBtVLzYw*_Tc}=(w{C%&r`i|`9<;!Qm0&YL>J?0j^Ody zHi)r5K@9r7+`>u|>7|Qt#~l=TDu&!W@PuV!V+GA+X)}USrIN97oaCTZ+rpX|D@qI_ zUhj70j+!13@+VyHSWw3OAr4NcaI@I%sMj|FKy9EZr~yk=uO`Aa%QAWySxP9;4XkfJ~xO%L+I|7_T@p>lg29a1;$blQUFxHic0Ih&VObBA zBn5k|5;W|kV)%g~gvQX7p!BT;$ZDVokc~E$LvA&Ul$XhF`CdL<&L~$|% z@S(WC;o>kFBVcW|#U>T+&7^X+J)%NIzh{o=*v0ZorcCy8L7!Re-7+-qZcDw^d)X*a zaNH$0qe0sVLT~c=hR_K85qAs>l0rV2tN<(r4{2L9+}43Ac@&OWwbKS)>6{Wv!U7}V zUW|C*p)xgs;8I?+)ozUsBx@{E$Xtm%^5p^9x1%gBi(qvI!$N_=DoZg@P8XrsRKtK% zn~`R0?jQaBM2IK-HL?FrZ@Va?Uegvu%ypp&Z7^Dh)nI<>bzw)rNRf3XJ8HE9N<5W&~x^2iIeg4unpRT-Mbw#Hr{CCTEK0amqaY2fgR1 zQ~n=s##o0BG91&AxsAet)XUjeR(hYlsj`RqbHrqe^|Ok|Y?a)#GU^rgYQ>NkIvaaT zCk0u^)8SEUws0RF_8o0Eyy3RP!<*4KJly$}A71FC8v1lDh=Y+Ct?^DjqlqIZ8ikpY z9Y6K8z`hAT8znK7x$NsJNN|rU2oGX*X ztgpy07N}Ru#(As^+XuG6EAH_mvHpI{-&>kh@ifGSH~M=^vq~!E^*8x@8x7@??B+=` zmu>b+xm3s$SOX_DBh{e3=3>~|);yMCKjDhMVUdO>6k%@?I4x2BO>C^gxN zZfIUjq~G}L3OE5}7=w~PR~q3rL>^#1CFwoSiqR%OH7A$RA8;|;D=-HBMU)IZ3d3PU zS0Xfp708K=C7=RIT*(T#k(oA|syN$xG=HtLrST&RN!Gb8LAT`M1)@byNM4vRC%CRh zD%NcG7QW@wU)N(1W<@$_!w#w8&~J=Fd%s9lZpc!CpPx7T`Sp3`XIgh84)=Mj0zrOhDn?8YTuGx( z5ihC}5<)0PkK0n!?yoMOoxzEmwLuTT5aLP#8|p@!C$K zE`}@!ZN&nOhmGB+GzNd!E3-Ug&LBZy>52d$9kA6E5<(nKI=b3B@NHeypsExHwcg9- zj1cTBB(-XPO_JMAGfk&heM_ObaPcw)Kr(dIdLhu%-e&}oYGtXmps^Qwjs{2Wdqpxd z7diDS^#lkwQmxo0;9%aUdRX3xFX5{^rXioBkHH5wW#-Pk!#jTlF2+3T>~rKZG&JYj z^UlBEg4bUtH)LLP@g( z7bkvCRWxU!)!yRG^RbE{F{?284wn(}%S2T!+6Lm1^DNLu#!E?$x8u1mRBR^%cG5w{ zYzXhjfCM z=2_sc^TRAGLOt&t@qTY%T<(2rp1d`yRz9=G0MK)iv(ng z2M$9=`}$|rF?tT^aFp*}(LW1A#HQ=RcXa%4jPOG zI-D(&43TLO1_=oh7+0<1lBFj9&bX*@PMvKM0cX|^U((+JupLXV7hc6*jBUa-^W36` zWBNz(>_24Yq@Dz#D}n=+r1bi!&p6_KQt8uKw(B@45GjyOmLd3pOp6RjC4<44?0OJ) zNle&LR$4?5i>80HPI@TJ@op~C7%&DAXzXtJ3Kv<6{$Y}3fp8TBm_+Pch z5)oF{Q+g`jlP&!Puk)hTIZ5hZgxm9{a?<`i>Ge$BmE#|A z6)>ivko@IBB?*SgS2E$=C*tWs9bT1+?imG44YptP@qt!?P7c zEI`7WBCY!yhhwx(^>*bS%F_OpfaK0ogp|pW0#t#e{crBx1jrG!K^+>JOoQn1P|DWes>v{Kj-@PXZ@%w$hZ}TIw_xrBvv!3CU&_5+@81>I7%n7WX~VS=uzbg>8d%hk z8#a9@x_z%uNnEu{O@vxoTq;gsEx{v%Ac`QWWSVB>JmH z2NJgYV;_kjWz=s;H(FKH<|z$<{aXAPDCNID^=1qwsjp(l{AYryvfQvPK^pSB9oJGH z_s_h!yv~|m|014ET^J=}tK}G4^tuw#C&r$M`@L|LaGjRAA1PqVlkI}(>SkNH8n`jVnl5W;Dh|NU}B37{_ zXO)0^Td79`4T2AIs>8~LY7SbOXVI&;+6oW#8w_{QDSCPT6qG+Cy&gaXq3GViZ7&cD|f|3P`SQ$L)dI4-y(FBjK~J=ZfJkpyEfF;Q~g+c z)jzn9h-jpDM1Z%7$_NzyzvrNk5lLs1%AB9{W^G1`@|*V=tqeFp-XkE5UQQ5V`MHtv z%j|M1tqWc5%lMr4YtzvnHJ=VaLwz1SukFw%UZu41X>ZrIDec2$$h6#%iLcX!KJN_~ zI+3Xm#`tF(U>4b!e%J2XW4E_s+k>(e*qsWu7jP6k0$D6kHbAlViv&9I(2e7dplBXR z3g-K-6grS|R^3PSwL&Eqg{JpA5D0e&$VWoGG(-dN=->@~E)hc{0;mz~nCWrssaC9D zh>Alovu}4`q#a>}Z%PN(aJ=bEBrC-@E7*?0gWrVrF z4bavOqwI<~vp%?jJiP66$is^cxjbB({Qu*Bkn;aYJPEQ9=);nbM@f4Z4h7;~HXQBd zM>9Wp&ZoQ&VQg&aQuq;0KKYbWPkjYF2>hIO8vF>SznY$ei8Ehw)>&trefDc#dk#P6 z;xj3qra2XU8D53g{VG1cM%Tix|Hg0r)^GpL@2+_L8-DMNzyAksTKOOT@Xdep$A9vc zRe$={Kl{J_{6GHRtN+tq{N;cCFaPzw@w4W?|JDEapMU)~|7-2vzU}SjtvmmMRyF_M zh1CnIQ}}P%{###NU%g2F+fdzDovCiBUR=GTdTI5t>gCl)0-C$3MQ!AV2^pAW`R1-# zBm_^TENZG1>lh_Koow^PA>ul21WJv_@Dfb1{IQ2Wf~LK-M!BK2Pe#DE+ws7v$ZkVI z0)#k$YYOMgE`U`QX3r*%Gsv_kbCFbwjLf2>0=r;rSM_>x4F+4V#U3$HGVtKCDoG6p z4eYUEne9JsbU^s^Ai{(OH^8#l!$0^3k^wB1gJOgo6eBE6{QQQ%2DCAJ{&}N=s5%7M zzo)U_yphAy!rOly?43B7Cnn2pQyagOo%S>ilPCYkCztRED_2Hny2aad;x`}w=i&YuHV_}rEH8o&P-AN&6!5Q_v{0#-{DgK2Kd5+Ivbl$4(z zf&lk~Rp(&CpvbC&jV&r#y8~gRD4GhiH+V0PDbc@(NFLOXQTT1>X&Av!*ArfNqtT#1 zEU3ehEP;Onor$zuIMK)S)>iSN;OkK^_yad!<0r5%qJ03d{_MreMh*68%7S?zGrt*@ zV3K(i_BI=LHZ-$kq|&T3Dq!%7D@eRIt>fp`;#k-nF#o9l1X_XhdoxP)a}I?26$n$> z2q0!{V0+32T#A9q{@a%AQkCI^NR(Ea&7aCtx- z5mNfOV0y(if%VURwrCocX8~+{fC58+NL}_^U6`}@04{)Jfmcyofc=2jF^OtYNNnfp ztPt}Kat07x9T@jHFf1VN?I@N#&@~qSey?N!d2eH-)SUfZFJ|F*f6HQD+Z3XbX<$rO z=K-%|ZHFkQr*tWN?CA$km&wV$)B1a~0e%LEnr~d_&xFSZ&y#JkE)F$SW?($TF0F|=^dI@? zNPE;PD%hXfGz@W-M5p-vNpIbJQhzQS3ELRLv#Q?(&FV?7Wb*N!p%U&2K5vA78w-Tb z|2uicDt#c)0^cOdeG49dK}PB`Bu6Yi&$53a9{D4hlIQ%7IC}88out!%3F90ai_WM& z$KUXnweWXa7MMVdygORQc7X$`*Z?x#KnjmnK&Uv3KF*#kN0Wi{m?IaF4~M*4oGSJ8J6s-dTey9>3>m>I2_f zRsZ+S>WK6*Q-uhI_uH!w{A!TH@SU=#;?oMMws-=~RK?SuXSdH)b!y)I?;0RDgglJ- znLW5kY`Ygv1;M zL0}=af^d7v)W8k?OTWS<*8VL+gCm-k@+Shf`XVu6*W9qH@dtA08Z;#puVl$zw~Bqu zYxolpMtza6G3<_#?W+8qx%R@S^B9T$RTP^?V7SgJ8Hs-#+ZGT*Bu@zL^Ohvn-{%L zCFxVy{vFrm*CY)udXHDK_8DFzQ%PZVuNO6#os6PBzwQ3sV0Kd5`}_R8!R$o5C*unW zAz{YTaEMWDd)8`$8 z(X}+Me!VCf9)hypYeFRa<4}(KC^z+q7#ZczIq^7g@vz-h{!aD5hkeXu4S*zzvSr4A z=;xewup)v&&v)28;{6zI&~-fz-+a_7+1k--%(XKYtGEA{7qvY=FYr7}^Kq|a?bG8c zsBb$h<;@@Q8rBU@M$Myhf7B~kH+1u|o0SP6{+O3E3}lSgJj`vESF+}Lw3f}UNSgn+ zm$c@Y5M-X_KjD?E`QQasN1d<1C%vRKPe<=OI`LDcJwmN&gj>UVb(^AVR4N1j^ z?|2=H_jI4-zx2O=BcO2K99yZhokL2`n-hUM_%+p?(5wu7Oj8YTD_K&|#Z?W?m4D$? z0KFnkjf-V|0IMXa)xiCjK^re5Flk(3tB5c_lUPzBA|+a5oS?*6a$vxK7}zz;Ay=0M zO<*2_>S%yR1|2bnBStt3KPY*TckuK#;UecN;VR8uF?C%YN3|{c}xA=R5AR>9I z*;h5o1j(7o^zBajk|A9FCDu@Fl{II4g!reQ-QH zUgg8Au87V=64&F7KmG(bb}8+4pdrtT_Kc0SOKFG**1Pi z(LVI+T5)plY&1814{aih#?yqZ5|Rn82*WQKA1U4PmiMYtEiXnRnG6@_1Pp~Yva)_w71!+Xcw{k{ zE0Da)Gk(ZScnQ602>zq=iWr}I%;j#-g~uzMLQn}H=F4!B>D=wpxlgB~2>>D*2Pl(s zi2yb(oa#MN;se4t(?_!F7i#yn=7u6sGa={rHY*N1Q9oFZ#>|L61c z7PkC0jbKA~|^WovzyU2fUKalFXdFr)>X& zUeabsww^uH)e!ceSF+~0o!ETpy?n?^8c!rg_t|~O-y0Cgy#4)${k;KESax?;*~4DR zcw#}|E*^e()GL`YOC|2Sl%BelKT@dU68G1ccKy&Fn5a$ae_*?BukfQRmu#0Gy>18* zR{YrQqISP%2(DTQn1^6|Rtz(rs@aoo;G>kc~ zrtt~hr5L}orogLX4dd0Ufg_H}s|BsrTGkHclaj-7e9b~@m9Wum0>g|RQ(bGG9XygG z>`Y+6({g%DUutzYlCc)b=zgEbfCj-RmBnb?7%@j&jETOsmClchIEMd=LoYI77;A(q zv>(VA6L@5~^BAlAI0gXJ=4n*ZQaP`l^RetyhC*J=*3|%?Fjj2@Z&wKE6>h`ADJ8zc zo87JFCU~|(*sHC@8g(M#=yp?1){!mi60a&;5AqIg%@ATF4=`~H^KfBuI0EbyEeep} zFI0~a?F({T;y{4(9`E0PbnL+Z2|PDpY!MF(NXIPH`zL84>b+ir% z0hnEZXSg>zcX~s1!9~+DH^LZGRHVs^G64k)Z_RiZ_(CE#h3}P z`^mD!z0EzTNus_%^@16Uh&e^&WREv$=*!@B!CH{i&$9Ai3!6XU-`GYP_WG?t8;9i; zoF8aq!Du;|f!#zp+29z3C`gP(ekm(CgiBfd_q{hG3KV2G{RFUTjV%C{B^wEP{j;}e zpdB=dASQ;KDB17vMR(1@L23G4*;rO{TPjq(LLs(zuZh8Ma>%*wcitTYhT zTpbx`GV&K<^#Hs>2$-lf1{sr#m}W#QL&>c-2H$uzzAa!z1`t^kTBI(dZ6ia7V5&5R zwjAB4y?z_&GA#psp}@k%B0L#tETWRU2-y{C$h2@YwB`kft6~m^I$kZ5!boSq%?imG z=^n&D|BDz9kA3vwO|VN0V%qi*+x!B=9}9$NiNKK%feH%^jVzFV7fNm$v^q!#pK7QkJRKcM3}}D!r74s)RhL-8>q7- z8`jI^z=C6aUwnbwF&dylbzb$g66#H|FTG1gaU`30R|10*w*mG52y@D8X*Ql; zP!V!$#~N7?OM(X0z|~d3>0zcI!WQbc2ti!90*RS|78b3y(Z^&Cy>?(?1Vu^YYvwNL z%NmWob;w^sl7Xe`lU1jXhblY{(JwfUJug{P@^^D1f({a(AV^+n>FJJ*tvDdtN}w=gU__Q)Y^MP%g=oqBc!)ze14?AD^?4#; zu+iTb!e^W}DZuF9+{-&G!eW}0cW`CdeH$C+6{7r+WCNk?S zUa7Fjc5su;e`yQ0)XT7?=q%DrC8q(yJ%KP&b>2|3$%Ycd*cog~NNNqzh#k`p9FnER zDVN0BG~J4Aw6T-rP<=qmgkIVAJi!zaN$V4(CXlk_vLgbc9QsFbOQCbV<2qTPY|r6D=x`(?0#kL(w^lsj;nYm&{u6>oMsKprdPPz319X+uK8KB8_UON;57 zr;K}mVnXe0D#x(&P@_JRRdG-ZETB&FkSalAh{0&orfpN<7a<|Vd+~56{KR4tRuhyj zA;Kbej_n4@QQ$)%_eSSq=2o5(YFsE^oQj%57br3shlUVhaaMkfqLMhgKy+Z^Glx&F$Tbsk`+hSTa zfB~+iZi*p_36S-k~#h3ZmB0>j>hfAQXueUiWTkcf&kIVxxkY)pgPfJECgE6{Re z=M7P+z`_oRe2YmmY8x~|C?_{G{dS;RomhwE!(?HtZ1e=I!!LOzNE)z?)oih`@F>nh zr2*?O5X>+josUHqZ*~DT>fk}hkzrx6tQIaID+?}YjL`F3F>b=Rq1Z&ga&UW@T$$VE ztLaP$ZVtF$;S%&3x7}QpV9#_b)-dcbKXX!ULx*z970EzmNi~QC=6&W1+FsPHQiu2_ z`LB#`PH?-^wxV>JD+LFEs71sQxtXMlW)fMU9Z@sFiEFy_nTSzDXGVQBB$W$fS)flZ zPL@;TfLVPIGH)L&AQWz4 z+UbMgBvZ3Gb_FGLfSN-yOo}ujKowIGFs^$9Q07A<_~D;1Cc9(y8zcY?aH0x9DIBlM;dHNeWGKVD zI1x_Fa>_J*0wyjn6$^M`uwY@MkzChpDl{mhQ+c2F@UYTtN_(BBA~zSI%b4&sxY{K) zLem$Wg<+WlhrkF31*>!AWwJS55@ZGrE=p_!y5^cM&pZE+kJ_9M)DA?FQt}qQ21yf7 z!3s-d1Ar}zfpSa1ocpl%)n)_M5H>-aOp(R8;iH8*Y69-s(MJlE+)}o2(Lrj~waHHZ zfkysCMLtnQ5O21UNDC|jjg+NYT3)#37aY7NaqSLkY1KuF8Ikp4!X2Et~H#%%>lH z+u{X!IU1rD7Q`mRy1)n72etM+Q8{g|H0hULG~zj66%_)Dx}MJXJP)o zly^aWh2s%UNVC}rF|~*{8XFswkI5kOL52`^B0+RLMQOfnPv6G(de0VgM;~Vh2Ls2I z3>uQ!Os}T~e**gzd1{43*`f1EfqC6vzMG?!FltCY;F`drl>&VxECuwz<;dNHZmq;O z0s0`;0vT4|(y+Bq*-H4zO64*@Wnz-dl-_5t0`*&`a^PG2qu|_NkTl{zi6r5hRCtUV z5|Cx~GFv7QT$m_^LS~3qh_`cC{JtDLwRRpW!{qN3kP$>5>E{&su>=?`wh#V*^D3`s z^sVQ90juJanC}AL?7+5k=DR7<fwrG}=%kd;B8R6q{aUgD!hYw=D}NdS!}Qruiqs02>Ih$||tTz+H& z6ycxxhFSZDvHdAjD@Opm*pgkKeL}vreO{yT01ZT(wN2G?<(JjP&5yD-$4u=U0}*`V z(NsHS@N7s9UkcHHIlt^|2-?=x;Ixy*8WixYo&@U#*|)SlIVIh)nPflI0aLB+2}f3l zUJTUcT=gU|7}Gk}6zVvheyI<5 z+IK)IG_ZBJf{$V=F;!(gIaAOXVYem-D<|5z8N^}*Ls(Xz=_`k@M*-PHp#woxgr#XD zTmmV@3kb_AVCd=y2up{$DOY115OzE$gngn65(P%XaVP3#^xzKAaswPEXQND1TL&bi zYgL)|7~a4s$V6ti{sgB~MFD0|gV0XWTPPk}dYsCk-W({l3@IVn7q=p8EUrksu!xqB zy+c1G_i#6yWB^$XE7vu8WNxrgmT#c|o3J4#Y(q{&q?W}o%~`g=el-~OWQ4I+ZQquq zV`_sE0N2LXu67Vv>U?DaTCQ9hyVmRM_ujg`P{;SyZQNV?%L8hY{11EUDD13i-~@pW zz|_=vXWdh_vz!&=NV)BmlsQbdViUI4RFr9B4%{cUv%0W?{LadmEsOwDq{GfJ(mg|4 zVV(i>HF*g%4GY_{aS+_jlt0&AY;F4OiUXZ^K*A9(E=*c28f}x-SfMZ=*<7+AMc$4* z!`$Ab>nNs{$zPZIC=BQ5af4>%-MpRjB4ImZltk!0-QptstC?4sjsg%gr)`sqwRZaL zYV#@ObwYsx=_yE7R~H65Kl8b^P{%jOr~9!%UWom+CYvVzFE-F=ldvB~2jD_f z0F_2t$!ZGA18*omfIY59gXux9MH7k%+dK@OFkh?T6W{wJL!qU2DJ~NY6vJp7#ZF!z&A#kH2QIWk2HetWmbk{#`q0t?L;OpCM3hGXXj|X zDWVVJi)DVid-J7jVPM?pP?X!lz!;^(Vg@6 zqd*Ob?_pDbv;=nrj1B@{T0LmmO#@ADDZm$U0n$o3d;vu8>zUDhv`8B&K*6{k(7p`e ze~tRcV3UUsApZ`I)a4aoXv0^87>2L(+0+39jg1>a6|m}dpwNJgF&->XFc#ci1*W|K z;Wiu-oP_=OPuw-@5dnq?)MWxA@=|Wxf_WHK&?$;taFI^6{x;R7W!_eeP18hx&_9A; z6fGc2HxHxHv4m(4^gBR56FLokCY}qVI|y&W@k{Jh8551-Gwbs}ZJ=;%VUu~ks|(d3 zGu4X?UEeQhGIBaHJH{Tsl1Nb!fq9)d-2-83nJb0C&vts9#F#Q5{R-4cOlui0Y|q$+ zZOiVj#j z`$yvg(Tt=F)Bzk+vT=A_0M3-iAPO;GQmH4LBAlz60*SW)A%6 z!~gvvb6{c1@P`6+5q};^@CVE-k3R#3Aw(Xa0FXz81&~^F7?Fpns3H$Ji?Cxo3{SBf zQ;?S!CKi1F%MX>eF(6LF5gwb*CgmbW1{zxPSh0b(fdN5cfmjo8kQO`%S|q8akb;N> zZJAH4W!Sg1<-sZn7g~m(ke8f*=!SX0*2#5MBViurpqPu1ih=GH_5hS zwi5>cl^nM)%eLC0-6p)D6`M9+FNZBe?||Bw@pkN#4tHUhfuXXnSzY)OLa$tS01S_) zP%Wmc0BHf@LT5leo&b^&nsYF@xMhl}ln?tW zBNvTo_Nn*g^BW$WpvuL$&IV=YxY6OpPMD767^v{W73sVdPbF)?7|`4?g4DJ))ru7& zf^!{s5N-_Eh(Hn?r^k{pmQ&0rDnhXcj9^A^$bxz=;(Kz!}P_Zva>*vItlJj|ey5J75FE#%4B&Q!${__LqI) zr{Q!I@%kkRvdpx65Gg?J>I4uWi#Se1Y!UUfGs5gnU?Tj;&9g;>i4_bcx^amxL*Owr zxdEAnO(gO+s}oApcwZ=#zS0#+n_51s6iRm-1xj~dP9&v(KmUKRsV}O^GMVHMj=5?c z4jKk|6!3^65SPTujwBd|ru< zUVVhSk8t(T#F=Nl1|PZm2-hA>HnU&;mDhE~kY^JN`8ARhOVR-h&z`&b)|C3LZ^cSy z3W57o)X`A!Z8Y~#v3s4Jt9x$K9clH8z54&DO8sA<%v09WWnNT!`epPa4iqKx(j6Uf z8Rd{{-#>q$VnmCZEiw+Z{{1W_%3l(`O}u8)RrEH=-be>m zwT)W_7RX~19j@_)pH@kVnY0n{5sx;ktV%OQNZsgFf1;3LmTW}hNL4vb2Vsu+<9V@? zsO8j>Uqj_oLRfI}4>!CofNz+8`(_X%1!)im3mG>SkBady=&`7GCi!t9px)s_Fp9wR z*oa(%Vvp#vx-`zeXk32N5zXHV?e}f}zMz%ipYzv^_VBOhKo=5<69Pq8m*C#Ra8QwQ z1mU*=@F>7>i;qNcfqAq8E~o^;a5{`_Ov8=VKodL>{hUr-4}2le!ZN-Z&rjoYN!S{_ zBDXBXvsc-(VY{h`&t7TI8c6d(`G(Jy$=ESei%@D4;qLX3enL%L<1$nTGcpX!O;=5* z>1k;06>KgBv=*nqE>Fo#ceJiEZQ+IlQK+ALH9reQQM3j_M!^=6LW*<1pCL>|Ckha9SfNMR;&JvcERj51 zVh_U_$-~8jD)Gn;v9?WVmruzSX;g+9&m(LPI$Wm-OQ#w`3Gzbosj+%+Z|RD6thI9x&I)5O7sIlLZKJ zwyJ`h5|u|sPS}r1<4`;%VFAFf-Rm0?lzG~R@dHiOXh~%z6AJT;7c>f^ft!Q7Y-x&M>yqTS$9Bemw2xJNr&Hr65YpjKC_iY(>s?1wwSQ-;(93-B-Xw<}OCilTGngzkUq~_cK%7z4$!$1YWb-DjTl8EA#lNtPLz{ps$xD6Gi#L& zq}|UAmY5*Z)P+&JvTPJ0U1vA$&Z}0(Cbiakt-^8Kr)f>@W(}xK>VJ?}c_7#9Tu33u z)Nz`?mDyVt651Wi1bY%WlDP?^dn|i;V?hj@YQ-uaQwm4t+p@}GJhw}KfjGQQui*q@ zqZTYGBQsh3e7m0hoZ3t9qTRGLESS^6jh6{{HhOQy>~u|sGd&MN_XxcU&s}zhY&AT0 zd8ENs3j)byg(m6AqVek`iB0DUFZpSm>VTj)kt($`UF~IUVlxnJFBxF=XXEgdof<|1W zcy#sjnxsR3DHFP=t{c5EST|iBnw*6dB#VDhD>kdNodXC|9c)7*TC@#D!a-zclNDyX z{wH<)s1}C?3g)IwUfi|l8V(|Jy@#`2O2|SSMe334YcNJhbQu2f70fdH7ZwN)%Mpuw6t8j}4e z`Ao>G$b*x1Om`G>62~8kQ|oBd fQuoMvSnVl_?_W8=LxYD2mjUR|9BURqXTh7D* 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

SNI|p4CjUGEUIH9SMH$H@x$nQh7 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

diff --git a/web/src/pages/rivalries.ts b/web/src/pages/rivalries.ts index 07a5fee..6cc0b1a 100644 --- a/web/src/pages/rivalries.ts +++ b/web/src/pages/rivalries.ts @@ -274,7 +274,7 @@ function renderRivalryCards(container: HTMLElement, rivalries: Rivalry[]): void ${r.streak ? `${escapeHtml(r.streak.bot)} on ${r.streak.count}-win streak` : ''} ${r.draws > 0 ? `${r.draws} draw${r.draws !== 1 ? 's' : ''}` : ''} Last: ${dateStr(r.lastMatchAt)} - All Matches + All Matches `).join('')} diff --git a/web/src/replay-viewer.ts b/web/src/replay-viewer.ts index 6f11235..245e217 100644 --- a/web/src/replay-viewer.ts +++ b/web/src/replay-viewer.ts @@ -1,5 +1,138 @@ import type { Replay, ReplayTurn, Position, ReplayBot, GameEvent, DebugInfo, ViewMode } from './types'; +// โ”€โ”€ Particle System (pooled, 100 objects, zero GC) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +interface Particle { + x: number; + y: number; + vx: number; + vy: number; + alpha: number; + color: string; + lifetime: number; // ms + elapsed: number; // ms + active: boolean; +} + +const PARTICLE_POOL_SIZE = 100; +const particlePool: Particle[] = Array.from({ length: PARTICLE_POOL_SIZE }, () => ({ + x: 0, y: 0, vx: 0, vy: 0, alpha: 1, color: '#fff', lifetime: 0, elapsed: 0, active: false, +})); + +function borrowParticle(x: number, y: number, vx: number, vy: number, color: string, lifetime: number): Particle | null { + for (const p of particlePool) { + if (!p.active) { + p.x = x; p.y = y; p.vx = vx; p.vy = vy; + p.color = color; p.lifetime = lifetime; p.elapsed = 0; + p.alpha = 1; p.active = true; + return p; + } + } + return null; +} + +function tickParticles(dt: number): void { + for (const p of particlePool) { + if (!p.active) continue; + p.elapsed += dt; + if (p.elapsed >= p.lifetime) { p.active = false; continue; } + p.x += p.vx * dt; + p.y += p.vy * dt; + p.alpha = 1 - p.elapsed / p.lifetime; + } +} + +function drawParticles(ctx: CanvasRenderingContext2D): void { + for (const p of particlePool) { + if (!p.active) continue; + ctx.globalAlpha = p.alpha; + ctx.fillStyle = p.color; + ctx.beginPath(); + ctx.arc(p.x, p.y, 2, 0, Math.PI * 2); + ctx.fill(); + } + ctx.globalAlpha = 1; +} + +// โ”€โ”€ One-shot effect slots (reusable, max 20 concurrent) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +interface FloatText { x: number; y: number; text: string; color: string; elapsed: number; lifetime: number; active: boolean; } +interface Shockwave { x: number; y: number; radius: number; maxRadius: number; color: string; elapsed: number; lifetime: number; active: boolean; } +interface SpawnGlow { x: number; y: number; color: string; elapsed: number; lifetime: number; active: boolean; } +interface Trail { x: number; y: number; prevX: number; prevY: number; color: string; alpha: number; active: boolean; } + +const MAX_EFFECTS = 20; +const floatTexts: FloatText[] = Array.from({ length: MAX_EFFECTS }, () => ({ x: 0, y: 0, text: '', color: '', elapsed: 0, lifetime: 0, active: false })); +const shockwaves: Shockwave[] = Array.from({ length: MAX_EFFECTS }, () => ({ x: 0, y: 0, radius: 0, maxRadius: 0, color: '', elapsed: 0, lifetime: 0, active: false })); +const spawnGlows: SpawnGlow[] = Array.from({ length: MAX_EFFECTS }, () => ({ x: 0, y: 0, color: '', elapsed: 0, lifetime: 0, active: false })); +const trails: Trail[] = Array.from({ length: MAX_EFFECTS }, () => ({ x: 0, y: 0, prevX: 0, prevY: 0, color: '', alpha: 0, active: false })); + +function borrowSlot(arr: T[]): T | null { + for (const item of arr) { if (!item.active) return item; } + return null; +} + +function tickEffects(dt: number): void { + for (const e of floatTexts) { if (!e.active) continue; e.elapsed += dt; e.y -= 20 * dt / 1000; if (e.elapsed >= e.lifetime) e.active = false; } + for (const e of shockwaves) { if (!e.active) continue; e.elapsed += dt; if (e.elapsed >= e.lifetime) e.active = false; } + for (const e of spawnGlows) { if (!e.active) continue; e.elapsed += dt; if (e.elapsed >= e.lifetime) e.active = false; } + for (const e of trails) { if (!e.active) continue; e.alpha -= dt / 150; if (e.alpha <= 0) e.active = false; } +} + +function drawEffects(ctx: CanvasRenderingContext2D): void { + // Float texts + for (const e of floatTexts) { + if (!e.active) continue; + const t = e.elapsed / e.lifetime; + ctx.globalAlpha = 1 - t; + ctx.fillStyle = e.color; + ctx.font = 'bold 11px monospace'; + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + ctx.fillText(e.text, e.x, e.y); + } + + // Shockwaves + for (const e of shockwaves) { + if (!e.active) continue; + const t = e.elapsed / e.lifetime; + const r = e.maxRadius * t; + ctx.globalAlpha = 0.6 * (1 - t); + ctx.strokeStyle = e.color; + ctx.lineWidth = 2; + ctx.beginPath(); + ctx.arc(e.x, e.y, r, 0, Math.PI * 2); + ctx.stroke(); + } + + // Spawn glows + for (const e of spawnGlows) { + if (!e.active) continue; + const t = e.elapsed / e.lifetime; + const r = 12; + const grad = ctx.createRadialGradient(e.x, e.y, 0, e.x, e.y, r * (1 + t)); + grad.addColorStop(0, e.color + 'aa'); + grad.addColorStop(1, e.color + '00'); + ctx.globalAlpha = 1 - t; + ctx.fillStyle = grad; + ctx.beginPath(); + ctx.arc(e.x, e.y, r * (1 + t), 0, Math.PI * 2); + ctx.fill(); + } + + // Motion trails + for (const e of trails) { + if (!e.active) continue; + ctx.globalAlpha = e.alpha * 0.4; + ctx.strokeStyle = e.color; + ctx.lineWidth = 2; + ctx.beginPath(); + ctx.moveTo(e.prevX, e.prevY); + ctx.lineTo(e.x, e.y); + ctx.stroke(); + } + + ctx.globalAlpha = 1; +} + // Win probability point for sparkline export interface WinProbPoint { turn: number; @@ -243,7 +376,6 @@ export class ReplayViewer { private currentTurn: number = 0; private isPlaying: boolean = false; private animationFrame: number | null = null; - private lastFrameTime: number = 0; private cellSize: number; private showGrid: boolean; private fogOfWarPlayer: number | null; @@ -253,6 +385,19 @@ export class ReplayViewer { private showDebug: boolean; private screenReaderRegion: HTMLElement | null = null; + // Animation state + private turnStartTime: number = 0; + private lastRenderTime: number = 0; + private renderLoopRunning: boolean = false; + // Per-bot interpolated positions: map botId -> {renderX, renderY} + private botRenderPos: Map = new Map(); + // Per-bot previous turn positions (for lerp source) + private botPrevPos: Map = new Map(); + // Bots that spawned this turn (for spawn animation) + private spawnedBotIds: Set = new Set(); + // Global idle pulse phase (radians) + private idlePhase: number = 0; + // Event callbacks public onTurnChange?: (turn: number) => void; public onPlayStateChange?: (playing: boolean) => void; @@ -309,6 +454,11 @@ export class ReplayViewer { loadReplay(replay: Replay): void { this.replay = replay; this.currentTurn = 0; + this.turnStartTime = performance.now(); + this.botPrevPos.clear(); + this.botRenderPos.clear(); + this.spawnedBotIds.clear(); + this.idlePhase = 0; // Resize canvas to fit the grid this.resizeCanvas(); @@ -316,6 +466,9 @@ export class ReplayViewer { // Render initial state this.render(); + // Start the continuous render loop + this.startRenderLoop(); + if (this.onReplayLoad) this.onReplayLoad(replay); } @@ -334,9 +487,12 @@ export class ReplayViewer { setTurn(turn: number): void { if (!this.replay) return; - this.currentTurn = Math.max(0, Math.min(turn, this.replay.turns.length - 1)); - this.render(); - if (this.onTurnChange) this.onTurnChange(this.currentTurn); + const newTurn = Math.max(0, Math.min(turn, this.replay.turns.length - 1)); + if (newTurn !== this.currentTurn) { + this.advanceTurn(newTurn); + // Ensure render loop is running + this.startRenderLoop(); + } } getTurn(): number { @@ -350,17 +506,14 @@ export class ReplayViewer { play(): void { if (this.isPlaying || !this.replay) return; this.isPlaying = true; - this.lastFrameTime = performance.now(); - this.animationFrame = requestAnimationFrame(this.animate.bind(this)); + this.turnStartTime = performance.now(); + this.startRenderLoop(); if (this.onPlayStateChange) this.onPlayStateChange(true); } pause(): void { this.isPlaying = false; - if (this.animationFrame !== null) { - cancelAnimationFrame(this.animationFrame); - this.animationFrame = null; - } + // Keep render loop running for idle animations and particles if (this.onPlayStateChange) this.onPlayStateChange(false); } @@ -424,6 +577,11 @@ export class ReplayViewer { return this.showDebug; } + destroy(): void { + this.stopRenderLoop(); + this.isPlaying = false; + } + // Get the active color palette based on accessibility settings private getPlayerColors(): string[] { if (this.accessibility.highContrast) { @@ -571,26 +729,177 @@ export class ReplayViewer { ctx.closePath(); } - private animate(timestamp: number): void { - if (!this.isPlaying || !this.replay) return; + // โ”€โ”€ Continuous 60fps render loop (decoupled from tick rate) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ + private startRenderLoop(): void { + if (this.renderLoopRunning) return; + this.renderLoopRunning = true; + this.lastRenderTime = performance.now(); + this.renderLoopTick(this.lastRenderTime); + } - const elapsed = timestamp - this.lastFrameTime; - if (elapsed >= this.animationSpeed) { - this.lastFrameTime = timestamp; + private stopRenderLoop(): void { + this.renderLoopRunning = false; + if (this.animationFrame !== null) { + cancelAnimationFrame(this.animationFrame); + this.animationFrame = null; + } + } - // Advance to next turn - if (this.currentTurn < this.replay.turns.length - 1) { - this.currentTurn++; - this.render(); - if (this.onTurnChange) this.onTurnChange(this.currentTurn); - } else { - // End of replay - this.pause(); - return; + private renderLoopTick(timestamp: number): void { + if (!this.renderLoopRunning) return; + + const dt = timestamp - this.lastRenderTime; + this.lastRenderTime = timestamp; + + // Advance idle pulse phase (2s cycle = ฯ€ per second) + this.idlePhase += (Math.PI * dt) / 1000; + + // Tick particles and effects + if (!this.accessibility.reducedMotion) { + tickParticles(dt); + tickEffects(dt); + } + + // If playing, check if we should advance to next turn + if (this.isPlaying && this.replay) { + const turnElapsed = timestamp - this.turnStartTime; + if (turnElapsed >= this.animationSpeed) { + if (this.currentTurn < this.replay.turns.length - 1) { + this.advanceTurn(this.currentTurn + 1); + } else { + this.pause(); + // Render one last frame + this.render(); + return; + } } } - this.animationFrame = requestAnimationFrame(this.animate.bind(this)); + // Always render at display refresh rate + this.render(); + + this.animationFrame = requestAnimationFrame(this.renderLoopTick.bind(this)); + } + + private advanceTurn(newTurn: number): void { + if (!this.replay) return; + + // Store previous bot positions before advancing + const prevTurnData = this.replay.turns[this.currentTurn]; + this.botPrevPos.clear(); + if (prevTurnData) { + for (const bot of prevTurnData.bots) { + if (!bot.alive) continue; + this.botPrevPos.set(bot.id, { + x: bot.position.col * this.cellSize + this.cellSize / 2, + y: bot.position.row * this.cellSize + this.cellSize / 2, + }); + } + } + + this.currentTurn = newTurn; + this.turnStartTime = performance.now(); + + // Fire events for the new turn to spawn animations + const turnData = this.replay.turns[this.currentTurn]; + if (turnData && !this.accessibility.reducedMotion) { + this.fireTurnAnimations(turnData); + } + + if (this.onTurnChange) this.onTurnChange(this.currentTurn); + } + + private fireTurnAnimations(turnData: ReplayTurn): void { + const colors = this.getPlayerColors(); + const events = turnData.events ?? []; + + // Track spawned bot IDs for spawn animation + this.spawnedBotIds.clear(); + + for (const event of events) { + const d = event.details as Record; + if (!d) continue; + + switch (event.type) { + case 'bot_died': { + const pos = d.position as Position | undefined; + if (!pos) break; + const owner = d.owner as number ?? 0; + const cx = pos.col * this.cellSize + this.cellSize / 2; + const cy = pos.row * this.cellSize + this.cellSize / 2; + // Spawn 6-8 particles in random directions + const count = 6 + Math.floor(Math.random() * 3); + for (let i = 0; i < count; i++) { + const angle = (Math.PI * 2 * i) / count + (Math.random() - 0.5) * 0.5; + const speed = 40 + Math.random() * 60; // px/s + borrowParticle( + cx, cy, + Math.cos(angle) * speed / 1000, + Math.sin(angle) * speed / 1000, + colors[owner] ?? '#ef4444', + 400 + ); + } + break; + } + case 'energy_collected': { + const pos = d.position as Position | undefined; + if (!pos) break; + const cx = pos.col * this.cellSize + this.cellSize / 2; + const cy = pos.row * this.cellSize + this.cellSize / 2; + // 4-line starburst + for (let i = 0; i < 4; i++) { + const angle = (Math.PI / 2) * i; + borrowParticle(cx, cy, Math.cos(angle) * 0.05, Math.sin(angle) * 0.05, ENERGY_COLOR, 200); + } + // Floating '+1' + const ft = borrowSlot(floatTexts); + if (ft) { + ft.x = cx; ft.y = cy - 8; + ft.text = '+1'; ft.color = ENERGY_COLOR; + ft.elapsed = 0; ft.lifetime = 200; ft.active = true; + } + break; + } + case 'core_captured': { + const pos = d.position as Position | undefined; + if (!pos) break; + const newOwner = d.new_owner as number ?? 0; + const cx = pos.col * this.cellSize + this.cellSize / 2; + const cy = pos.row * this.cellSize + this.cellSize / 2; + const sw = borrowSlot(shockwaves); + if (sw) { + sw.x = cx; sw.y = cy; sw.radius = 0; + sw.maxRadius = this.cellSize * 2; + sw.color = colors[newOwner] ?? '#fff'; + sw.elapsed = 0; sw.lifetime = 500; sw.active = true; + } + break; + } + case 'bot_spawned': { + const botId = d.bot_id as number | undefined; + if (botId !== undefined) this.spawnedBotIds.add(botId); + const owner = d.owner as number ?? 0; + const pos = d.position as Position | undefined; + if (!pos) break; + const cx = pos.col * this.cellSize + this.cellSize / 2; + const cy = pos.row * this.cellSize + this.cellSize / 2; + const sg = borrowSlot(spawnGlows); + if (sg) { + sg.x = cx; sg.y = cy; + sg.color = colors[owner] ?? '#fff'; + sg.elapsed = 0; sg.lifetime = 200; sg.active = true; + } + break; + } + } + } + } + + // Lerp factor: 0 at turn start โ†’ 1 at turn end + private getLerpT(): number { + const elapsed = performance.now() - this.turnStartTime; + return Math.min(1, elapsed / this.animationSpeed); } private render(): void { @@ -634,6 +943,12 @@ export class ReplayViewer { break; } + // Draw animated particles and effects (if not reduced motion) + if (!this.accessibility.reducedMotion) { + drawEffects(ctx); + drawParticles(ctx); + } + // Draw debug telemetry overlay if enabled if (this.showDebug && turnData.debug) { this.renderDebugOverlay(turnData.debug, colors); @@ -713,6 +1028,11 @@ export class ReplayViewer { // Draw combat effects from events this turn this.drawCombatEffects(turnData, colors, visible); + + // Draw threat lines between bots in attack range + if (!this.accessibility.reducedMotion) { + this.drawThreatLines(turnData, colors, visible); + } } private drawCombatEffects( @@ -793,6 +1113,48 @@ export class ReplayViewer { } } + // Draw threat lines between bots of different owners within attack range + private drawThreatLines( + turnData: ReplayTurn, + visible: Set | null + ): void { + const { ctx, cellSize } = this; + const aliveBots = turnData.bots.filter(b => b.alive); + const attackRadius2 = this.replay?.config?.attack_radius2 ?? 5; + const attackRadius = Math.sqrt(attackRadius2) * cellSize; + + for (let i = 0; i < aliveBots.length; i++) { + for (let j = i + 1; j < aliveBots.length; j++) { + const a = aliveBots[i]; + const b = aliveBots[j]; + if (a.owner === b.owner) continue; + + const ax = a.position.col * cellSize + cellSize / 2; + const ay = a.position.row * cellSize + cellSize / 2; + const bx = b.position.col * cellSize + cellSize / 2; + const by = b.position.row * cellSize + cellSize / 2; + + // Use toroidal distance + const dist = Math.hypot( + Math.min(Math.abs(ax - bx), this.replay!.map.cols * cellSize - Math.abs(ax - bx)), + Math.min(Math.abs(ay - by), this.replay!.map.rows * cellSize - Math.abs(ay - by)) + ); + + if (dist <= attackRadius) { + if (visible && (!visible.has(this.posKey(a.position)) || !visible.has(this.posKey(b.position)))) continue; + ctx.strokeStyle = 'rgba(239, 68, 68, 0.25)'; + ctx.lineWidth = 1; + ctx.setLineDash([3, 3]); + ctx.beginPath(); + ctx.moveTo(ax, ay); + ctx.lineTo(bx, by); + ctx.stroke(); + ctx.setLineDash([]); + } + } + } + } + // Dots view - minimal, just bot positions as dots private renderDotsView( turnData: ReplayTurn, @@ -1174,11 +1536,49 @@ export class ReplayViewer { private drawBot(bot: ReplayBot, color: string): void { const { cellSize } = this; - const x = bot.position.col * cellSize + cellSize / 2; - const y = bot.position.row * cellSize + cellSize / 2; - const radius = (cellSize / 2) - 1; + const targetX = bot.position.col * cellSize + cellSize / 2; + const targetY = bot.position.row * cellSize + cellSize / 2; - // Draw bot with player-specific shape for accessibility + let x = targetX; + let y = targetY; + let scale = 1; + + if (!this.accessibility.reducedMotion) { + // Lerp from previous position + const prev = this.botPrevPos.get(bot.id); + const t = this.getLerpT(); + if (prev && t < 1) { + x = prev.x + (targetX - prev.x) * t; + y = prev.y + (targetY - prev.y) * t; + + // Motion trail (only if moved meaningfully) + const dx = targetX - prev.x; + const dy = targetY - prev.y; + if (Math.abs(dx) > 1 || Math.abs(dy) > 1) { + const tr = borrowSlot(trails); + if (tr) { + tr.x = targetX; tr.y = targetY; + tr.prevX = prev.x; tr.prevY = prev.y; + tr.color = color; tr.alpha = 1; tr.active = true; + } + } + } + + // Store interpolated position for this frame + this.botRenderPos.set(bot.id, { x, y }); + + // Idle pulse: 2% scale, 2s cycle + const pulse = 1 + 0.02 * Math.sin(this.idlePhase); + scale *= pulse; + + // Spawn animation: scale from 0โ†’1 over 200ms + if (this.spawnedBotIds.has(bot.id)) { + const spawnT = Math.min(1, (performance.now() - this.turnStartTime) / 200); + scale *= spawnT; + } + } + + const radius = ((cellSize / 2) - 1) * scale; this.drawPlayerShape(x, y, radius, bot.owner, color); } diff --git a/web/src/router.ts b/web/src/router.ts index 12ced21..afe0ccf 100644 --- a/web/src/router.ts +++ b/web/src/router.ts @@ -65,7 +65,7 @@ class Router { /** * Handle the current route */ - private handleRoute(): void { + private async handleRoute(): Promise { const path = this.getCurrentPath(); for (const route of this.routes) { @@ -75,13 +75,13 @@ class Router { route.paramNames.forEach((name, idx) => { params[name] = decodeURIComponent(match[idx + 1]); }); - route.handler(params); + await route.handler(params); return; } } if (this.notFoundHandler) { - this.notFoundHandler({}); + await this.notFoundHandler({}); } } } diff --git a/web/src/styles/base.css b/web/src/styles/base.css new file mode 100644 index 0000000..0984629 --- /dev/null +++ b/web/src/styles/base.css @@ -0,0 +1,190 @@ +/* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ +/* Base CSS Variables & Reset */ +/* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ + +:root { + /* Color Palette - Dark Theme Default */ + --bg-primary: #0f172a; + --bg-secondary: #1e293b; + --bg-tertiary: #334155; + + --text-primary: #f8fafc; + --text-secondary: #e2e8f0; + --text-muted: #94a3b8; + + --accent: #3b82f6; + --accent-hover: #2563eb; + + --success: #22c55e; + --warning: #f59e0b; + --error: #ef4444; + + --border: #334155; + + /* Typography */ + --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; + --font-mono: 'Fira Code', 'Monaco', 'Courier New', monospace; + + /* Spacing */ + --space-xs: 4px; + --space-sm: 8px; + --space-md: 16px; + --space-lg: 24px; + --space-xl: 32px; + + /* Border Radius */ + --radius-sm: 4px; + --radius-md: 6px; + --radius-lg: 8px; + --radius-xl: 12px; + + /* Transitions */ + --transition-fast: 150ms ease; + --transition-normal: 250ms ease; + + /* Z-index layers */ + --z-base: 1; + --z-dropdown: 100; + --z-sticky: 200; + --z-modal: 1000; + --z-toast: 1100; +} + +/* Reset & Base Styles */ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: transparent; +} + +body { + font-family: var(--font-sans); + background-color: var(--bg-primary); + color: var(--text-primary); + line-height: 1.5; + min-height: 100vh; + overflow-x: hidden; +} + +/* Typography */ +h1, h2, h3, h4, h5, h6 { + font-weight: 600; + color: var(--text-primary); + line-height: 1.25; + margin-bottom: var(--space-md); +} + +h1 { font-size: 1.875rem; } +h2 { font-size: 1.5rem; } +h3 { font-size: 1.25rem; } +h4 { font-size: 1.125rem; } +h5 { font-size: 1rem; } +h6 { font-size: 0.875rem; } + +p { + margin-bottom: var(--space-md); + color: var(--text-muted); +} + +a { + color: var(--accent); + text-decoration: none; + transition: color var(--transition-fast); +} + +a:hover { + color: var(--accent-hover); +} + +/* Mobile heading adjustments */ +@media (max-width: 640px) { + h1 { font-size: 1.5rem; } + h2 { font-size: 1.25rem; } + h3 { font-size: 1.125rem; } +} + +/* Scrollbar Styling */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--bg-secondary); +} + +::-webkit-scrollbar-thumb { + background: var(--bg-tertiary); + border-radius: var(--radius-sm); +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-muted); +} + +/* Selection */ +::selection { + background: rgba(59, 130, 246, 0.3); + color: var(--text-primary); +} + +/* Focus Styles */ +:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +/* Touch-friendly tap target size (min 44x44px per WCAG) */ +button, +a, +input, +select, +textarea { + min-height: 44px; + min-width: 44px; +} + +/* App container */ +#app { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +/* Utility: Hide scrollbar but allow scroll */ +.scrollbar-hide { + -ms-overflow-style: none; + scrollbar-width: none; +} + +.scrollbar-hide::-webkit-scrollbar { + display: none; +} + +/* Utility: Text truncation */ +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +/* Utility: Screen reader only */ +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} diff --git a/web/src/styles/components.css b/web/src/styles/components.css new file mode 100644 index 0000000..f4ce7fa --- /dev/null +++ b/web/src/styles/components.css @@ -0,0 +1,470 @@ +/* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ +/* Component Styles */ +/* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-sm); + padding: var(--space-sm) var(--space-md); + font-size: 0.875rem; + font-weight: 500; + border: none; + border-radius: var(--radius-md); + cursor: pointer; + transition: background-color var(--transition-fast), color var(--transition-fast); + text-decoration: none; + white-space: nowrap; +} + +.btn:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.btn.primary { + background-color: var(--accent); + color: white; +} + +.btn.primary:hover:not(:disabled) { + background-color: var(--accent-hover); +} + +.btn.secondary { + background-color: var(--bg-tertiary); + color: var(--text-primary); +} + +.btn.secondary:hover:not(:disabled) { + background-color: var(--text-muted); +} + +.btn.small { + padding: var(--space-xs) var(--space-sm); + font-size: 0.75rem; + min-height: 32px; + min-width: 32px; +} + +.btn.large { + padding: var(--space-md) var(--space-lg); + font-size: 1rem; +} + +/* Cards */ +.card { + background-color: var(--bg-secondary); + border-radius: var(--radius-lg); + padding: var(--space-md); + margin-bottom: var(--space-md); +} + +.card-title { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: var(--space-sm); +} + +.card-subtitle { + font-size: 0.875rem; + color: var(--text-muted); + margin-bottom: var(--space-md); +} + +/* Form Elements */ +input[type="text"], +input[type="number"], +input[type="email"], +input[type="password"], +input[type="url"], +select, +textarea { + width: 100%; + padding: var(--space-sm); + background-color: var(--bg-primary); + border: 1px solid var(--border); + border-radius: var(--radius-md); + color: var(--text-primary); + font-size: 0.875rem; + transition: border-color var(--transition-fast); +} + +input:focus, +select:focus, +textarea:focus { + outline: none; + border-color: var(--accent); +} + +input::placeholder, +textarea::placeholder { + color: var(--text-muted); +} + +label { + display: block; + font-size: 0.875rem; + color: var(--text-muted); + margin-bottom: var(--space-xs); +} + +/* Tables */ +.table-container { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +table { + width: 100%; + border-collapse: collapse; + font-size: 0.875rem; +} + +thead { + background-color: var(--bg-tertiary); +} + +th { + padding: var(--space-sm) var(--space-md); + text-align: left; + font-weight: 600; + color: var(--text-muted); + text-transform: uppercase; + font-size: 0.75rem; + letter-spacing: 0.05em; +} + +td { + padding: var(--space-sm) var(--space-md); + border-bottom: 1px solid var(--border); +} + +tr:last-child td { + border-bottom: none; +} + +tbody tr:hover { + background-color: var(--bg-tertiary); +} + +/* Badges */ +.badge { + display: inline-flex; + align-items: center; + padding: 2px var(--space-sm); + font-size: 0.75rem; + font-weight: 500; + border-radius: var(--radius-sm); + white-space: nowrap; +} + +.badge.success { background-color: rgba(34, 197, 94, 0.2); color: var(--success); } +.badge.warning { background-color: rgba(245, 158, 11, 0.2); color: var(--warning); } +.badge.error { background-color: rgba(239, 68, 68, 0.2); color: var(--error); } +.badge.info { background-color: rgba(59, 130, 246, 0.2); color: var(--accent); } + +/* Loading Spinner */ +.spinner { + display: inline-block; + width: 20px; + height: 20px; + border: 2px solid var(--bg-tertiary); + border-top-color: var(--accent); + border-radius: 50%; + animation: spin 0.8s linear infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +.loading { + display: flex; + align-items: center; + justify-content: center; + gap: var(--space-sm); + padding: var(--space-xl); + color: var(--text-muted); +} + +/* Empty State */ +.empty-state { + text-align: center; + padding: var(--space-xl); + color: var(--text-muted); +} + +.empty-state p { + margin-bottom: var(--space-md); +} + +/* Error State */ +.error { + background-color: rgba(239, 68, 68, 0.1); + border: 1px solid var(--error); + border-radius: var(--radius-md); + padding: var(--space-md); + color: var(--error); +} + +.error p { + margin-bottom: var(--space-sm); +} + +.error .hint { + font-size: 0.875rem; + opacity: 0.8; +} + +/* Code Block */ +.code-block { + background-color: var(--bg-primary); + border: 1px solid var(--border); + border-radius: var(--radius-md); + padding: var(--space-md); + overflow-x: auto; + font-family: var(--font-mono); + font-size: 0.875rem; + color: var(--text-secondary); +} + +pre { + margin: 0; +} + +code { + font-family: var(--font-mono); + font-size: 0.875em; + background-color: var(--bg-tertiary); + padding: 2px 6px; + border-radius: var(--radius-sm); +} + +/* Page Layout */ +.page-title { + margin-bottom: var(--space-lg); +} + +.page-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-lg); + gap: var(--space-md); +} + +.page-header h1 { + margin-bottom: 0; +} + +/* Grid System */ +.grid { + display: grid; + gap: var(--space-md); +} + +.grid-2 { grid-template-columns: repeat(2, 1fr); } +.grid-3 { grid-template-columns: repeat(3, 1fr); } +.grid-4 { grid-template-columns: repeat(4, 1fr); } + +@media (max-width: 768px) { + .grid-2, .grid-3, .grid-4 { + grid-template-columns: 1fr; + } +} + +/* Flex Utilities */ +.flex { display: flex; } +.flex-col { flex-direction: column; } +.flex-wrap { flex-wrap: wrap; } +.items-center { align-items: center; } +.justify-between { justify-content: space-between; } +.justify-center { justify-content: center; } +.gap-sm { gap: var(--space-sm); } +.gap-md { gap: var(--space-md); } +.gap-lg { gap: var(--space-lg); } + +/* Panel */ +.panel { + background-color: var(--bg-secondary); + border-radius: var(--radius-lg); + padding: var(--space-md); +} + +.panel-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-md); + font-weight: 600; + color: var(--text-primary); +} + +/* Slider */ +.slider-group { + display: flex; + flex-direction: column; + gap: var(--space-xs); +} + +.slider-group label { + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.875rem; + color: var(--text-muted); + margin-bottom: 0; +} + +.slider-group input[type="range"] { + width: 100%; + height: 6px; + padding: 0; + border: none; + background: var(--bg-tertiary); + border-radius: var(--radius-sm); + appearance: none; + -webkit-appearance: none; +} + +.slider-group input[type="range"]::-webkit-slider-thumb { + appearance: none; + -webkit-appearance: none; + width: 18px; + height: 18px; + background: var(--accent); + border-radius: 50%; + cursor: pointer; +} + +.slider-group input[type="range"]::-moz-range-thumb { + width: 18px; + height: 18px; + background: var(--accent); + border-radius: 50%; + cursor: pointer; + border: none; +} + +/* Checkbox */ +.checkbox-label { + display: flex; + align-items: center; + gap: var(--space-sm); + cursor: pointer; + user-select: none; +} + +.checkbox-label input[type="checkbox"] { + width: 18px; + height: 18px; + accent-color: var(--accent); + cursor: pointer; +} + +/* Leaderboard Table */ +.leaderboard-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; +} + +.leaderboard-table tbody tr { + transition: background-color var(--transition-fast); +} + +.leaderboard-table tbody tr.rank-1 { + background-color: rgba(245, 158, 11, 0.1); +} + +.leaderboard-table tbody tr.rank-2 { + background-color: rgba(148, 163, 184, 0.1); +} + +.leaderboard-table tbody tr.rank-3 { + background-color: rgba(180, 83, 9, 0.1); +} + +.leaderboard-table .rank { + font-weight: 600; + width: 60px; +} + +.leaderboard-table .rank-1 .rank { color: var(--warning); } +.leaderboard-table .rank-2 .rank { color: #94a3b8; } +.leaderboard-table .rank-3 .rank { color: #b45309; } + +.leaderboard-table .rating { + text-align: right; +} + +.leaderboard-table .rating-value { + font-weight: 600; +} + +.leaderboard-table .rating-dev { + font-size: 0.75rem; + color: var(--text-muted); +} + +.leaderboard-table .win-rate { + text-align: right; +} + +.leaderboard-table .status { + text-align: center; +} + +.status-healthy { color: var(--success); } +.status-unhealthy { color: var(--error); } +.status-unknown { color: var(--text-muted); } + +/* Replay Canvas */ +.canvas-wrapper { + background-color: var(--bg-secondary); + border-radius: var(--radius-lg); + padding: var(--space-sm); + overflow: hidden; +} + +.canvas-wrapper canvas { + display: block; + width: 100%; + height: auto; +} + +/* Event Log */ +.event-log { + max-height: 200px; + overflow-y: auto; + font-size: 0.75rem; + font-family: var(--font-mono); +} + +.event-log .event { + padding: var(--space-xs) 0; + border-bottom: 1px solid var(--bg-tertiary); +} + +.event-log .event:last-child { + border-bottom: none; +} + +/* Keyboard Shortcuts */ +.keyboard-shortcuts { + font-size: 0.75rem; + color: var(--text-muted); + display: flex; + flex-wrap: wrap; + gap: var(--space-sm); +} + +.keyboard-shortcuts kbd { + background-color: var(--bg-tertiary); + padding: 2px 6px; + border-radius: var(--radius-sm); + font-family: var(--font-mono); +} diff --git a/web/vite.config.ts b/web/vite.config.ts index 5e970a4..58533b1 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -12,6 +12,42 @@ export default defineConfig({ app: resolve(__dirname, 'app.html'), embed: resolve(__dirname, 'embed.html'), }, + output: { + manualChunks(id) { + // Agentation: React + agentation library (lazy-loaded) + if (id.includes('react') || id.includes('agentation')) { + return 'agentation'; + } + // Replay viewer chunk (includes canvas rendering, charts) + if (id.includes('replay-viewer') || id.includes('win-probability')) { + return 'replay-viewer'; + } + // Sandbox chunk (includes engine orchestration) + if (id.includes('pages/sandbox')) { + return 'sandbox'; + } + // Evolution page (large, complex visualizations) + if (id.includes('pages/evolution')) { + return 'evolution'; + } + // Blog pages (markdown parsing) + if (id.includes('pages/blog')) { + return 'blog'; + } + // Clip maker (video processing) + if (id.includes('pages/clip-maker')) { + return 'clip-maker'; + } + // Series/predictions (chart-heavy) + if (id.includes('pages/series') || id.includes('pages/predictions')) { + return 'charts'; + } + // Feedback page (includes its own replay viewer) + if (id.includes('pages/feedback')) { + return 'feedback'; + } + }, + }, }, }, server: {