diff --git a/.gitignore b/.gitignore index 6053a4c1..eed5dfba 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,15 @@ Thumbs.db # Logs - workflow logs are tracked in git for session history # log/**/*.md # Removed - workflow logs should be committed +# Application logs +*.log + +# Database files +*.db + +# Backup files +*.bak + # AKIS session tracking (temporary file for VSCode extension) .akis-session.json *.json_backup* diff --git a/backend/app/api/v1/endpoints/workflows.py b/backend/app/api/v1/endpoints/workflows.py index 95483d44..f4718aaf 100644 --- a/backend/app/api/v1/endpoints/workflows.py +++ b/backend/app/api/v1/endpoints/workflows.py @@ -6,7 +6,6 @@ from sqlalchemy.orm.attributes import flag_modified from typing import List, Optional, Dict, Any from uuid import UUID -from pydantic import BaseModel, Field import json import asyncio from datetime import datetime @@ -15,1961 +14,19 @@ from app.core.security import get_current_user, get_optional_user from app.models.user import User from app.models.workflow import Workflow, WorkflowExecution, WorkflowStatus as DBWorkflowStatus, ExecutionStatus as DBExecutionStatus -from app.services.scanner import NetworkScanner from app.schemas.workflow import ( WorkflowCreate, WorkflowUpdate, WorkflowResponse, WorkflowListResponse, ExecutionOptions, ExecutionResponse, ExecutionDetailResponse, CompileResult, CompileError, ExecutionProgress ) +from app.services.block_executor import ( + BlockExecuteRequest, BlockExecuteResponse, DelayRequest, CodeBlockRequest, + execute_block, evaluate_expression, evaluate_code_expression, +) router = APIRouter() -# === Block Execution Models === - -class BlockExecuteRequest(BaseModel): - """Request to execute a single block""" - block_type: str - parameters: Dict[str, Any] - context: Optional[Dict[str, Any]] = None # Previous block outputs, variables, etc. - - -class BlockExecuteResponse(BaseModel): - """Response from block execution""" - success: bool - output: Optional[Dict[str, Any]] = None - error: Optional[str] = None - duration_ms: Optional[int] = None - route: Optional[str] = None # Which output handle to follow (e.g., "success", "failure") - - -class DelayRequest(BaseModel): - """Request for delay block""" - seconds: int = 5 - - -# === Block Execution Service === - -async def execute_block(block_type: str, params: Dict[str, Any], context: Dict[str, Any] = None) -> BlockExecuteResponse: - """ - Execute a single workflow block. - Phase 3: Connects blocks to actual API endpoints or simulates execution. - """ - start_time = datetime.utcnow() - context = context or {} - - try: - # === Control Blocks === - if block_type == "control.start": - # Support loop input - get iteration from context if connected to a loop - loop_input = context.get("loop_input", {}) - iteration = loop_input.get("iteration", 0) - item = loop_input.get("item", params.get("initialValue", 0)) - max_iterations = params.get("maxIterations", 100) - - # Safety check for max iterations - if iteration >= max_iterations: - return BlockExecuteResponse( - success=False, - error=f"Max iterations ({max_iterations}) reached", - output={"iteration": iteration, "max_exceeded": True}, - route="error" - ) - - return BlockExecuteResponse( - success=True, - output={ - "started": True, - "timestamp": datetime.utcnow().isoformat(), - "iteration": iteration, - "item": item, - "from_loop": bool(loop_input) - }, - route="out" - ) - - elif block_type == "control.end": - status = params.get("status", "success") - message = params.get("message", "Workflow completed") - return BlockExecuteResponse( - success=status == "success", - output={"status": status, "message": message}, - route=None - ) - - elif block_type == "control.delay": - seconds = params.get("seconds", 5) - await asyncio.sleep(seconds) - return BlockExecuteResponse( - success=True, - output={"delayed": seconds, "message": f"Waited {seconds} seconds"}, - route="out", - duration_ms=seconds * 1000 - ) - - elif block_type == "control.condition": - expression = params.get("expression", "true") - # Simple expression evaluation (in production, use a safe evaluator) - # For now, check if expression looks truthy - result = evaluate_expression(expression, context) - return BlockExecuteResponse( - success=True, - output={"expression": expression, "result": result}, - route="true" if result else "false" - ) - - elif block_type == "control.loop": - # Get loop state from context (keyed by a unique node identifier if available) - loop_state = context.get("loop_state", {}) - loop_id = params.get("_node_id", "default_loop") - - mode = params.get("mode", "count") - - if mode == "count": - count = params.get("count", 5) - current_index = loop_state.get(loop_id, 0) - - if current_index >= count: - # Loop complete - reset state and exit via "done" handle - loop_state[loop_id] = 0 - context["loop_state"] = loop_state - return BlockExecuteResponse( - success=True, - output={"mode": "count", "completed": True, "total_iterations": count}, - route="done" # Match "done" output handle - ) - - # Increment for next iteration - loop_state[loop_id] = current_index + 1 - context["loop_state"] = loop_state - context["item"] = current_index # Current iteration index - context["variables"] = context.get("variables", {}) - context["variables"]["item"] = current_index - context["variables"]["index"] = current_index - - return BlockExecuteResponse( - success=True, - output={"mode": "count", "iteration": current_index + 1, "of": count, "item": current_index}, - route="loop" # Match "loop" output handle - ) - else: - # Array mode - array_expr = params.get("array", "[]") - items = evaluate_expression(array_expr, context) or [] - if not isinstance(items, list): - items = [] - - current_index = loop_state.get(loop_id, 0) - - if current_index >= len(items): - # Loop complete - reset state and exit via "done" handle - loop_state[loop_id] = 0 - context["loop_state"] = loop_state - return BlockExecuteResponse( - success=True, - output={"mode": "array", "completed": True, "total_items": len(items)}, - route="done" # Match "done" output handle - ) - - # Get current item and increment - current_item = items[current_index] - loop_state[loop_id] = current_index + 1 - context["loop_state"] = loop_state - context["item"] = current_item - context["variables"] = context.get("variables", {}) - context["variables"]["item"] = current_item - context["variables"]["index"] = current_index - - # Also set the variable name specified in params - var_name = params.get("variable", "item") - context["variables"][var_name] = current_item - - return BlockExecuteResponse( - success=True, - output={"mode": "array", "iteration": current_index + 1, "of": len(items), "item": current_item}, - route="loop" # Match "loop" output handle - ) - - elif block_type == "control.parallel": - return BlockExecuteResponse( - success=True, - output={"parallel": True, "branches": 3}, - route="branch1" # In real execution, all branches execute - ) - - elif block_type == "control.variable_set": - name = params.get("name", "var") - value = params.get("value", "") - - # Actually update context variables - context["variables"] = context.get("variables", {}) - - # Try to parse JSON arrays/objects - try: - parsed_value = json.loads(value) if isinstance(value, str) and value.strip().startswith('[') else value - except (json.JSONDecodeError, TypeError): - parsed_value = value - - context["variables"][name] = parsed_value - - return BlockExecuteResponse( - success=True, - output={"variable": name, "value": parsed_value, "action": "set"}, - route="out" - ) - - elif block_type == "control.variable_get": - name = params.get("name", "var") - variables = context.get("variables", {}) - value = variables.get(name) - - # Also check if it's a special variable like 'item' - if value is None and name == "item": - value = context.get("item") - - return BlockExecuteResponse( - success=True, - output={"variable": name, "value": value, "action": "get"}, - route="out" - ) - - # === Connection Blocks === - elif block_type == "connection.ssh_test": - host = params.get("host", "") - port = params.get("port", 22) - timeout = params.get("timeout", 5) - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - output={"host": host, "port": port, "connected": False}, - route="failure" - ) - - # Real TCP connection test to SSH port - import socket - import time - start_time = time.time() - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.settimeout(timeout) - result = sock.connect_ex((host, port)) - sock.close() - duration_ms = int((time.time() - start_time) * 1000) - connected = result == 0 - - return BlockExecuteResponse( - success=connected, - output={"host": host, "port": port, "connected": connected, "latency_ms": duration_ms}, - duration_ms=duration_ms, - route="success" if connected else "failure" - ) - except socket.error as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"host": host, "port": port, "connected": False, "error": str(e)}, - route="failure" - ) - - elif block_type == "connection.rdp_test": - host = params.get("host", "") - port = params.get("port", 3389) - timeout = params.get("timeout", 5) - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - output={"host": host, "port": port, "protocol": "rdp", "connected": False}, - route="failure" - ) - - # Real TCP connection test to RDP port - import socket - import time - start_time = time.time() - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.settimeout(timeout) - result = sock.connect_ex((host, port)) - sock.close() - duration_ms = int((time.time() - start_time) * 1000) - connected = result == 0 - - return BlockExecuteResponse( - success=connected, - output={"host": host, "port": port, "protocol": "rdp", "connected": connected, "latency_ms": duration_ms}, - duration_ms=duration_ms, - route="success" if connected else "failure" - ) - except socket.error as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"host": host, "port": port, "protocol": "rdp", "connected": False, "error": str(e)}, - route="failure" - ) - - elif block_type == "connection.vnc_test": - host = params.get("host", "") - port = params.get("port", 5900) - timeout = params.get("timeout", 5) - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - output={"host": host, "port": port, "protocol": "vnc", "connected": False}, - route="failure" - ) - - # Real TCP connection test to VNC port - import socket - import time - start_time = time.time() - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.settimeout(timeout) - result = sock.connect_ex((host, port)) - sock.close() - duration_ms = int((time.time() - start_time) * 1000) - connected = result == 0 - - return BlockExecuteResponse( - success=connected, - output={"host": host, "port": port, "protocol": "vnc", "connected": connected, "latency_ms": duration_ms}, - duration_ms=duration_ms, - route="success" if connected else "failure" - ) - except socket.error as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"host": host, "port": port, "protocol": "vnc", "connected": False, "error": str(e)}, - route="failure" - ) - - elif block_type == "connection.ftp_test": - host = params.get("host", "") - port = params.get("port", 21) - protocol = params.get("protocol", "ftp") - timeout = params.get("timeout", 5) - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - output={"host": host, "port": port, "protocol": protocol, "connected": False}, - route="failure" - ) - - # Real TCP connection test to FTP port - import socket - import time - start_time = time.time() - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.settimeout(timeout) - result = sock.connect_ex((host, port)) - sock.close() - duration_ms = int((time.time() - start_time) * 1000) - connected = result == 0 - - return BlockExecuteResponse( - success=connected, - output={"host": host, "port": port, "protocol": protocol, "connected": connected, "latency_ms": duration_ms}, - duration_ms=duration_ms, - route="success" if connected else "failure" - ) - except socket.error as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"host": host, "port": port, "protocol": protocol, "connected": False, "error": str(e)}, - route="failure" - ) - - elif block_type == "connection.tcp_test": - host = params.get("host", "") - port = params.get("port", 80) - timeout = params.get("timeout", 5) - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - output={"host": host, "port": port, "open": False}, - route="failure" - ) - - # Real TCP connection test - import socket - import time - start_time = time.time() - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.settimeout(timeout) - result = sock.connect_ex((host, port)) - sock.close() - duration_ms = int((time.time() - start_time) * 1000) - is_open = result == 0 - - return BlockExecuteResponse( - success=True, # Block execution succeeded, port may or may not be open - output={"host": host, "port": port, "open": is_open, "latency_ms": duration_ms}, - duration_ms=duration_ms, - route="success" if is_open else "failure" - ) - except socket.error as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"host": host, "port": port, "open": False, "error": str(e)}, - route="failure" - ) - - # === Command Blocks === - elif block_type == "command.ssh_execute": - host = params.get("host", "") - command = params.get("command", "") - await asyncio.sleep(1.0) - if not host or not command: - return BlockExecuteResponse( - success=False, - error="Host and command are required", - route="error" - ) - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "command": command, - "stdout": f"Executed: {command}", - "stderr": "", - "exit_code": 0 - }, - route="out" - ) - - elif block_type == "command.system_info": - host = params.get("host", "") - info_type = params.get("infoType", "all") - await asyncio.sleep(0.8) - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "type": info_type, - "info": { - "os": "Linux 5.15.0", - "hostname": host, - "uptime": "5 days", - "memory": "8GB", - "cpu": "4 cores" - } - }, - route="out" - ) - - elif block_type == "command.ftp_list": - host = params.get("host", "") - path = params.get("path", "/") - await asyncio.sleep(0.5) - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "path": path, - "files": [ - {"name": "file1.txt", "size": 1024, "type": "file"}, - {"name": "dir1", "size": 0, "type": "directory"} - ] - }, - route="out" - ) - - elif block_type in ["command.ftp_download", "command.ftp_upload"]: - host = params.get("host", "") - await asyncio.sleep(1.0) - action = "downloaded" if "download" in block_type else "uploaded" - return BlockExecuteResponse( - success=True, - output={"host": host, "action": action, "bytes": 2048}, - route="out" - ) - - # === Traffic Blocks === - elif block_type == "traffic.ping": - host = params.get("host", "") - count = params.get("count", 4) - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required for ping", - route="unreachable" - ) - - # Execute real ping - import subprocess - try: - result = subprocess.run( - ["ping", "-c", str(count), "-W", "2", host], - capture_output=True, - text=True, - timeout=count * 3 + 5 # Allow time for all pings + timeout - ) - - output_text = result.stdout + result.stderr - reachable = result.returncode == 0 - - # Parse ping output for stats - packets_sent = count - packets_received = 0 - avg_latency = None - - # Try to parse output for statistics - lines = output_text.split('\n') - for line in lines: - if 'packets transmitted' in line: - parts = line.split(',') - for part in parts: - if 'received' in part: - try: - packets_received = int(part.strip().split()[0]) - except: - pass - if 'avg' in line or 'rtt' in line: - try: - # Format: rtt min/avg/max/mdev = 0.123/0.456/0.789/0.012 ms - if '=' in line: - stats = line.split('=')[1].strip().split('/')[1] - avg_latency = float(stats) - except: - pass - - return BlockExecuteResponse( - success=reachable, - output={ - "host": host, - "packets_sent": packets_sent, - "packets_received": packets_received, - "avg_latency_ms": avg_latency, - "reachable": reachable, - "raw_output": output_text[:500] # Limit output size - }, - route="reachable" if reachable else "unreachable" - ) - except subprocess.TimeoutExpired: - return BlockExecuteResponse( - success=False, - output={"host": host, "error": "Ping timed out"}, - error="Ping timed out", - route="unreachable" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - output={"host": host, "error": str(e)}, - error=str(e), - route="unreachable" - ) - - elif block_type == "traffic.advanced_ping": - host = params.get("host", "") - count = params.get("count", 4) - size = params.get("size", 64) - await asyncio.sleep(0.8) - reachable = bool(host) - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "packets_sent": count, - "packets_received": count if reachable else 0, - "packet_size": size, - "min_latency_ms": 2.1, - "max_latency_ms": 8.5, - "avg_latency_ms": 5.2, - "reachable": reachable - }, - route="reachable" if reachable else "unreachable" - ) - - elif block_type in ["traffic.start_capture", "traffic.burst_capture"]: - interface = params.get("interface", "eth0") - duration = params.get("duration_seconds", 1) - await asyncio.sleep(duration) - return BlockExecuteResponse( - success=True, - output={ - "interface": interface, - "capture_id": f"cap_{datetime.utcnow().timestamp()}", - "packets_captured": 150, - "bytes_captured": 48000 - }, - route="out" - ) - - elif block_type == "traffic.stop_capture": - capture_id = params.get("captureId", "") - return BlockExecuteResponse( - success=True, - output={"capture_id": capture_id, "stopped": True}, - route="out" - ) - - elif block_type == "traffic.get_stats": - interface = params.get("interface", "eth0") - return BlockExecuteResponse( - success=True, - output={ - "interface": interface, - "rx_bytes": 1024000, - "tx_bytes": 512000, - "rx_packets": 1500, - "tx_packets": 800 - }, - route="out" - ) - - elif block_type == "traffic.storm": - interface = params.get("interface", "") - storm_type = params.get("type", "broadcast") - duration = params.get("duration", 5) - await asyncio.sleep(min(duration, 2)) # Cap actual wait - return BlockExecuteResponse( - success=True, - output={ - "interface": interface, - "type": storm_type, - "duration": duration, - "packets_sent": 5000 - }, - route="out" - ) - - # === Scanning Blocks === - elif block_type == "scanning.version_detect": - host = params.get("host", "") - ports = params.get("ports", "22,80,443") - await asyncio.sleep(2.0) - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "services": [ - {"port": 22, "service": "ssh", "version": "OpenSSH 8.2"}, - {"port": 80, "service": "http", "version": "nginx 1.18.0"}, - {"port": 443, "service": "https", "version": "nginx 1.18.0"} - ] - }, - route="out" - ) - - elif block_type == "scanning.port_scan": - host = params.get("host", "") - scan_type = params.get("scanType", "quick") - custom_ports = params.get("customPorts", "") - technique = params.get("technique", "tcp_syn") - - # Determine port range based on scan type - if scan_type == "full": - ports = "1-65535" - elif scan_type == "custom" and custom_ports: - ports = custom_ports - else: # quick - ports = "22,80,443,21,23,25,53,110,143,3306,3389,5432,8080,8443" - - # Use real scanner service - import time - start_time = time.time() - scanner = NetworkScanner() - result = await scanner.port_scan(host, ports) - duration_ms = int((time.time() - start_time) * 1000) - - if "error" in result: - return BlockExecuteResponse( - success=False, - error=result["error"], - duration_ms=duration_ms, - route="fail" - ) - - # Parse the nmap result structure to extract open/closed/filtered ports - open_ports = [] - closed_ports = 0 - filtered_ports = 0 - services = {} - - # Extract from hosts[].ports[] structure - for host_info in result.get("hosts", []): - for port_info in host_info.get("ports", []): - port_id = int(port_info.get("portid", 0)) - state = port_info.get("state", "unknown") - - if state == "open": - open_ports.append(port_id) - # Extract service info if available - if "service" in port_info: - svc = port_info["service"] - services[port_id] = { - "name": svc.get("name"), - "product": svc.get("product"), - "version": svc.get("version") - } - elif state == "closed": - closed_ports += 1 - elif state == "filtered": - filtered_ports += 1 - - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "scan_type": scan_type, - "technique": technique, - "open_ports": open_ports, - "closed_ports": closed_ports, - "filtered_ports": filtered_ports, - "services": services, - }, - duration_ms=duration_ms, - route="out" - ) - - # === Agent Blocks === - elif block_type == "agent.generate": - agent_id = params.get("agent_id", "") - platform = params.get("platform", "linux-amd64") - await asyncio.sleep(1.0) - return BlockExecuteResponse( - success=True, - output={ - "agent_id": agent_id, - "platform": platform, - "binary_path": f"/tmp/agent_{agent_id}_{platform}", - "size_bytes": 2048000, - "checksum": "abc123def456" - }, - route="out" - ) - - elif block_type == "agent.deploy": - host = params.get("host", "") - await asyncio.sleep(1.5) - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "deployed": True, - "agent_pid": 12345, - "connection_established": True - }, - route="out" - ) - - elif block_type == "agent.terminate": - agent_id = params.get("agent_id", "") - return BlockExecuteResponse( - success=True, - output={"agent_id": agent_id, "terminated": True}, - route="out" - ) - - # === Data Processing Blocks (3-Output Model) === - elif block_type == "data.code": - """ - Code Block - Execute JavaScript code for pass/fail/output - Uses 3-output model: pass, fail, output - """ - description = params.get("description", "") - pass_code = params.get("passCode", "return true;") - fail_code = params.get("failCode", "") - output_code = params.get("outputCode", "return context.input;") - - # Get input from previous block - input_data = context.get("$prev", {}).get("output", context.get("input", "")) - variables = context.get("variables", {}) - - # Build execution context for code - code_context = { - "input": input_data, - "rawInput": str(input_data) if input_data else "", - "variables": variables - } - - try: - # Evaluate pass condition (simulated - in production use safe JS eval) - pass_result = evaluate_code_expression(pass_code, code_context) - - # Evaluate fail condition (defaults to !pass) - if fail_code: - fail_result = evaluate_code_expression(fail_code, code_context) - else: - fail_result = not pass_result - - # Evaluate output - output_result = evaluate_code_expression(output_code, code_context) - - return BlockExecuteResponse( - success=True, - output={ - "pass": pass_result, - "fail": fail_result, - "output": output_result, - "description": description - }, - route="pass" if pass_result else "fail" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=f"Code execution error: {str(e)}", - output={"pass": False, "fail": True, "output": None}, - route="fail" - ) - - elif block_type == "data.output_interpreter": - """ - Output Interpreter Block - Parse and interpret output using rules - Uses 3-output model: pass, fail, output - Enhanced with port detection and status checking - """ - input_source = params.get("inputSource", "{{previous.output}}") - aggregation = params.get("aggregation", "all") - contains_pass = params.get("containsPass", "") - not_contains_fail = params.get("notContainsFail", "") - regex_pattern = params.get("regexPattern", "") - extract_variable = params.get("extractVariable", "") - extract_pattern = params.get("extractPattern", "") - port_check = params.get("portCheck", "") - port_check_mode = params.get("portCheckMode", "any") - status_check = params.get("statusCheck", "") - - # Get input from previous block - input_data = context.get("$prev", {}).get("output", context.get("input", "")) - input_str = str(input_data) if input_data else "" - - import re - import json as json_module - - rule_results = [] - extracted_vars = {} - detected_ports = {"open": [], "closed": [], "filtered": []} - - # Parse input if it's JSON - parsed_input = None - if isinstance(input_data, dict): - parsed_input = input_data - elif isinstance(input_data, str): - try: - parsed_input = json_module.loads(input_data) - except: - parsed_input = None - - # Check contains (pass) - if contains_pass: - passed = contains_pass.lower() in input_str.lower() - rule_results.append({ - "rule": "contains", - "pattern": contains_pass, - "passed": passed, - "reason": f"Contains '{contains_pass}'" if passed else f"Missing '{contains_pass}'" - }) - - # Check not_contains (fail) - if not_contains_fail: - try: - pattern = re.compile(not_contains_fail, re.IGNORECASE) - match = pattern.search(input_str) - passed = match is None # Pass if pattern NOT found - rule_results.append({ - "rule": "not_contains", - "pattern": not_contains_fail, - "passed": passed, - "reason": f"Does not contain '{not_contains_fail}'" if passed else f"Found '{not_contains_fail}'" - }) - except re.error: - rule_results.append({ - "rule": "not_contains", - "pattern": not_contains_fail, - "passed": False, - "reason": f"Invalid regex: {not_contains_fail}" - }) - - # Check regex pattern - if regex_pattern: - try: - pattern = re.compile(regex_pattern, re.IGNORECASE) - match = pattern.search(input_str) - passed = match is not None - rule_results.append({ - "rule": "regex", - "pattern": regex_pattern, - "passed": passed, - "reason": f"Matches '{regex_pattern}'" if passed else f"No match for '{regex_pattern}'" - }) - except re.error: - rule_results.append({ - "rule": "regex", - "pattern": regex_pattern, - "passed": False, - "reason": f"Invalid regex: {regex_pattern}" - }) - - # Port detection - check for open ports in scan results - if port_check: - target_ports = [int(p.strip()) for p in port_check.split(",") if p.strip().isdigit()] - found_open = [] - - # Check various formats of port data - if parsed_input: - # Format: {"open_ports": [22, 80, 443]} - if "open_ports" in parsed_input: - open_ports = parsed_input.get("open_ports", []) - for p in target_ports: - if p in open_ports: - found_open.append(p) - detected_ports["open"].append(p) - - # Format: {"services": [{"port": 22, "state": "open"}, ...]} - if "services" in parsed_input: - services = parsed_input.get("services", []) - for svc in services: - if isinstance(svc, dict): - port = svc.get("port") - state = svc.get("state", svc.get("status", "")) - if port in target_ports and str(state).lower() in ["open", "up", "running"]: - found_open.append(port) - detected_ports["open"].append(port) - - # Format: {"ports": {"22": "open", "80": "open"}} - if "ports" in parsed_input and isinstance(parsed_input["ports"], dict): - for port_str, state in parsed_input["ports"].items(): - try: - port = int(port_str) - if port in target_ports and str(state).lower() in ["open", "up"]: - found_open.append(port) - detected_ports["open"].append(port) - except: - pass - - # Also check in raw text format: "22/tcp open ssh" - port_pattern = r"(\d+)/(tcp|udp)\s+(open|closed|filtered)" - for match in re.finditer(port_pattern, input_str, re.IGNORECASE): - port = int(match.group(1)) - state = match.group(3).lower() - if port in target_ports: - if state == "open": - found_open.append(port) - detected_ports["open"].append(port) - elif state == "closed": - detected_ports["closed"].append(port) - else: - detected_ports["filtered"].append(port) - - # Deduplicate - found_open = list(set(found_open)) - detected_ports["open"] = list(set(detected_ports["open"])) - - # Determine pass based on mode - if port_check_mode == "any": - passed = len(found_open) > 0 - reason = f"Found {len(found_open)} open port(s): {found_open}" if passed else f"None of ports {target_ports} are open" - elif port_check_mode == "all": - passed = set(target_ports).issubset(set(found_open)) - missing = set(target_ports) - set(found_open) - reason = f"All ports {target_ports} are open" if passed else f"Missing open ports: {list(missing)}" - else: # specific - passed = len(found_open) > 0 - reason = f"Port(s) {found_open} open" if passed else f"Target ports not open" - - rule_results.append({ - "rule": "port_check", - "target_ports": target_ports, - "found_open": found_open, - "mode": port_check_mode, - "passed": passed, - "reason": reason - }) - - # Auto-extract port info - extracted_vars["detected_ports"] = detected_ports - extracted_vars["open_ports"] = found_open - - # Status check - look for status fields - if status_check and parsed_input: - try: - pattern = re.compile(status_check, re.IGNORECASE) - status_fields = ["status", "state", "result", "success"] - status_found = False - status_value = None - - for field in status_fields: - if field in parsed_input: - status_value = str(parsed_input[field]) - if pattern.search(status_value): - status_found = True - break - - rule_results.append({ - "rule": "status_check", - "pattern": status_check, - "passed": status_found, - "reason": f"Status '{status_value}' matches '{status_check}'" if status_found else f"Status doesn't match '{status_check}'" - }) - except re.error: - rule_results.append({ - "rule": "status_check", - "pattern": status_check, - "passed": False, - "reason": f"Invalid regex: {status_check}" - }) - - # Extract variable - if extract_variable and extract_pattern: - try: - pattern = re.compile(extract_pattern) - match = pattern.search(input_str) - if match: - extracted_vars[extract_variable] = match.group(1) if match.groups() else match.group(0) - except re.error: - pass - - # Aggregate results - if aggregation == "all": - overall_pass = all(r["passed"] for r in rule_results) if rule_results else True - elif aggregation == "any": - overall_pass = any(r["passed"] for r in rule_results) if rule_results else True - else: - overall_pass = all(r["passed"] for r in rule_results) if rule_results else True - - return BlockExecuteResponse( - success=True, - output={ - "pass": overall_pass, - "fail": not overall_pass, - "output": { - "input": input_str[:500] if len(input_str) > 500 else input_str, - "ruleResults": rule_results, - "extractedVariables": extracted_vars, - "detectedPorts": detected_ports, - "aggregation": aggregation - } - }, - route="pass" if overall_pass else "fail" - ) - - elif block_type == "data.assertion": - """ - Assertion Block - Simple pass/fail check - Uses 2-output model: pass, fail - """ - name = params.get("name", "Assertion") - condition = params.get("condition", "contains") - value = params.get("value", "") - fail_message = params.get("failMessage", f"Assertion '{name}' failed") - - # Get input from previous block - input_data = context.get("$prev", {}).get("output", context.get("input", "")) - input_str = str(input_data) if input_data else "" - - import re - - passed = False - reason = "" - - if condition == "contains": - passed = value.lower() in input_str.lower() - reason = f"Contains '{value}'" if passed else f"Missing '{value}'" - elif condition == "not_contains": - passed = value.lower() not in input_str.lower() - reason = f"Does not contain '{value}'" if passed else f"Contains '{value}'" - elif condition == "equals": - passed = input_str.strip() == value - reason = f"Equals '{value}'" if passed else f"Not equal to '{value}'" - elif condition == "regex": - try: - pattern = re.compile(value, re.IGNORECASE) - passed = pattern.search(input_str) is not None - reason = f"Matches regex '{value}'" if passed else f"No match for '{value}'" - except re.error: - passed = False - reason = f"Invalid regex: {value}" - elif condition == "expression": - # Simple expression evaluation - passed = evaluate_expression(value, context) - reason = f"Expression evaluated to {passed}" - - return BlockExecuteResponse( - success=passed, - output={ - "name": name, - "passed": passed, - "reason": reason, - "failMessage": fail_message if not passed else None - }, - route="pass" if passed else "fail" - ) - - elif block_type == "data.transform": - """ - Transform Block - Transform input data - Always passes, outputs transformed data - """ - transform_type = params.get("transformType", "json_parse") - field = params.get("field", "") - template = params.get("template", "") - filter_expression = params.get("filterExpression", "") - - # Get input from previous block - input_data = context.get("$prev", {}).get("output", context.get("input", "")) - - output = input_data - - try: - if transform_type == "json_parse": - if isinstance(input_data, str): - output = json.loads(input_data) - else: - output = input_data - - elif transform_type == "json_stringify": - output = json.dumps(input_data) - - elif transform_type == "extract_field": - if field: - # Simple dot notation field extraction - parts = field.split(".") - result = input_data - for part in parts: - if isinstance(result, dict): - result = result.get(part) - elif isinstance(result, list) and part.isdigit(): - result = result[int(part)] if int(part) < len(result) else None - else: - result = None - break - output = result - - elif transform_type == "split_lines": - if isinstance(input_data, str): - output = input_data.split("\n") - else: - output = [str(input_data)] - - elif transform_type == "filter_array": - if isinstance(input_data, list) and filter_expression: - # Simple filter (in production, use safe evaluator) - # For now, just pass through - output = input_data - - elif transform_type == "template": - # Simple template substitution - output = template - if isinstance(input_data, dict): - for key, val in input_data.items(): - output = output.replace(f"{{{{{key}}}}}", str(val)) - - return BlockExecuteResponse( - success=True, - output={"pass": True, "output": output, "transformType": transform_type}, - route="pass" - ) - - except Exception as e: - return BlockExecuteResponse( - success=False, - error=f"Transform error: {str(e)}", - output={"pass": False, "output": None}, - route="pass" # Transform always passes, but with null output on error - ) - - # === Scanning Blocks (Additional) === - elif block_type == "scanning.network_discovery": - network = params.get("network", "192.168.1.0/24") - timeout = params.get("timeout", 30) - - # Use real nmap network discovery with service detection - import time - import subprocess - start_time = time.time() - - try: - # Quick scan with OS hints and service versions - result = subprocess.run( - ["nmap", "-sn", "-oX", "-", network], - capture_output=True, - text=True, - timeout=timeout - ) - duration_ms = int((time.time() - start_time) * 1000) - - # Parse XML output - import xml.etree.ElementTree as ET - root = ET.fromstring(result.stdout) - - hosts = [] - for host_elem in root.findall(".//host"): - status = host_elem.find("status") - if status is not None and status.get("state") == "up": - addr = host_elem.find("address") - if addr is not None: - host_info = { - "ip": addr.get("addr"), - "status": "up", - "type": "unknown" - } - - # Get hostname if available - hostname_elem = host_elem.find(".//hostname") - if hostname_elem is not None: - host_info["hostname"] = hostname_elem.get("name") - - # Get MAC if available - mac_addr = host_elem.find(".//address[@addrtype='mac']") - if mac_addr is not None: - host_info["mac"] = mac_addr.get("addr") - host_info["vendor"] = mac_addr.get("vendor", "") - - hosts.append(host_info) - - return BlockExecuteResponse( - success=True, - output={ - "network": network, - "hosts_found": len(hosts), - "hosts": hosts, - "scan_time": duration_ms / 1000 - }, - duration_ms=duration_ms, - route="out" - ) - except subprocess.TimeoutExpired: - return BlockExecuteResponse( - success=False, - error="Network discovery timed out", - route="fail" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - route="fail" - ) - - elif block_type == "scanning.host_scan": - host = params.get("host", "") - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - route="fail" - ) - - # Use real nmap scan - import time - start_time = time.time() - scanner = NetworkScanner() - - # Do a quick port scan with OS detection - result = await scanner.port_scan(host, "22,80,443,21,23,25,53,110,143,3306,3389,5432,8080,8443") - duration_ms = int((time.time() - start_time) * 1000) - - if "error" in result: - return BlockExecuteResponse( - success=False, - error=result["error"], - duration_ms=duration_ms, - route="fail" - ) - - # Extract host info - open_ports = [] - hostname = host - status = "down" - os_guess = "Unknown" - - for host_info in result.get("hosts", []): - host_status = host_info.get("status", {}) - if isinstance(host_status, dict): - status = host_status.get("state", "down") - else: - status = str(host_status) if host_status else "down" - - hostnames = host_info.get("hostnames", []) - if hostnames: - hostname = hostnames[0].get("name", host) - - for port_info in host_info.get("ports", []): - if port_info.get("state") == "open": - open_ports.append(int(port_info.get("portid", 0))) - - # If we found open ports, host is definitely up - if open_ports: - status = "up" - - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "status": status, - "ports": open_ports, - "os_guess": os_guess, - "hostname": hostname - }, - duration_ms=duration_ms, - route="out" - ) - - elif block_type == "scanning.ping_sweep": - network = params.get("network", "192.168.1.0/24") - - # Use real nmap ping sweep - import time - import subprocess - start_time = time.time() - - try: - # nmap -sn for ping sweep (no port scan) - result = subprocess.run( - ["nmap", "-sn", "-oX", "-", network], - capture_output=True, - text=True, - timeout=120 - ) - duration_ms = int((time.time() - start_time) * 1000) - - # Parse XML output - import xml.etree.ElementTree as ET - root = ET.fromstring(result.stdout) - - alive_hosts = [] - for host_elem in root.findall(".//host"): - status = host_elem.find("status") - if status is not None and status.get("state") == "up": - addr = host_elem.find("address") - if addr is not None: - alive_hosts.append(addr.get("addr")) - - # Get total scanned from runstats - runstats = root.find(".//runstats/hosts") - total_scanned = int(runstats.get("total", 0)) if runstats is not None else len(alive_hosts) - - return BlockExecuteResponse( - success=True, - output={ - "network": network, - "alive_hosts": alive_hosts, - "total_scanned": total_scanned, - "hosts_up": len(alive_hosts) - }, - duration_ms=duration_ms, - route="out" - ) - except subprocess.TimeoutExpired: - return BlockExecuteResponse( - success=False, - error="Ping sweep timed out", - route="fail" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - route="fail" - ) - - elif block_type == "scanning.service_scan": - host = params.get("host", "") - ports = params.get("ports", "22,80,443") - - if not host: - return BlockExecuteResponse( - success=False, - error="Host is required", - route="fail" - ) - - # Use real nmap service scan with version detection - import time - import subprocess - start_time = time.time() - - try: - result = subprocess.run( - ["nmap", "-sV", "-Pn", "-p", ports, "-oX", "-", host], - capture_output=True, - text=True, - timeout=60 - ) - duration_ms = int((time.time() - start_time) * 1000) - - # Parse XML output - import xml.etree.ElementTree as ET - root = ET.fromstring(result.stdout) - - services = [] - for port_elem in root.findall(".//port"): - state = port_elem.find("state") - service = port_elem.find("service") - - port_id = int(port_elem.get("portid", 0)) - port_state = state.get("state", "unknown") if state is not None else "unknown" - - svc_info = {"port": port_id, "state": port_state} - if service is not None: - svc_info["service"] = service.get("name", "unknown") - svc_info["product"] = service.get("product", "") - svc_info["version"] = service.get("version", "") - - services.append(svc_info) - - return BlockExecuteResponse( - success=True, - output={ - "host": host, - "services": services - }, - duration_ms=duration_ms, - route="out" - ) - except subprocess.TimeoutExpired: - return BlockExecuteResponse( - success=False, - error="Service scan timed out", - route="fail" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - route="fail" - ) - - # === Agent Blocks (Additional) === - elif block_type == "agent.list": - await asyncio.sleep(0.3) - return BlockExecuteResponse( - success=True, - output={ - "agents": [ - {"id": "agent-001", "name": "Agent 1", "status": "online", "os": "linux"}, - {"id": "agent-002", "name": "Agent 2", "status": "offline", "os": "windows"} - ], - "total": 2, - "online": 1 - }, - route="out" - ) - - elif block_type == "agent.create": - name = params.get("name", "NewAgent") - os_type = params.get("os", "linux") - await asyncio.sleep(0.5) - return BlockExecuteResponse( - success=True, - output={ - "agent_id": f"agent-{datetime.utcnow().timestamp():.0f}", - "name": name, - "os": os_type, - "status": "created", - "connection_url": "wss://localhost:12001/ws/agent" - }, - route="out" - ) - - # === Data Blocks (Additional) === - elif block_type == "data.http_request": - url = params.get("url", "") - method = params.get("method", "GET") - headers = params.get("headers", {}) - body = params.get("body", "") - - import httpx - try: - async with httpx.AsyncClient(timeout=10.0) as client: - response = await client.request(method, url, headers=headers, content=body if body else None) - return BlockExecuteResponse( - success=response.status_code < 400, - output={ - "status_code": response.status_code, - "headers": dict(response.headers), - "body": response.text[:2000] - }, - route="pass" if response.status_code < 400 else "fail" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"error": str(e)}, - route="fail" - ) - - elif block_type == "data.json_transform": - input_data = params.get("input", context.get("input", "")) - expression = params.get("expression", "$") - - try: - if isinstance(input_data, str): - data = json.loads(input_data) - else: - data = input_data - - # Simple JSONPath-like extraction - if expression.startswith("$."): - key = expression[2:] - result = data.get(key, data) if isinstance(data, dict) else data - else: - result = data - - return BlockExecuteResponse( - success=True, - output={"result": result, "expression": expression}, - route="pass" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"error": str(e)}, - route="fail" - ) - - elif block_type == "data.database_query": - connection_string = params.get("connectionString", "") - query = params.get("query", "SELECT 1") - await asyncio.sleep(0.5) - return BlockExecuteResponse( - success=True, - output={ - "query": query, - "rows": [{"column1": 1}], - "row_count": 1 - }, - route="pass" - ) - - # ============================================ - # === ASSETS Blocks === - # ============================================ - elif block_type == "assets.get_all": - include_offline = params.get("includeOffline", True) - limit = params.get("limit", 100) - - # Fetch from database - from app.models.asset import Asset - from sqlalchemy import select - - try: - async with db.async_session() as session: - query = select(Asset).limit(limit) - if not include_offline: - query = query.where(Asset.status == "online") - - result = await session.execute(query) - db_assets = result.scalars().all() - - assets = [] - for asset in db_assets: - assets.append({ - "id": str(asset.id), - "ip": str(asset.ip_address), - "hostname": asset.hostname, - "type": asset.asset_type, - "status": asset.status, - "discovery_method": asset.discovery_method, - "mac": asset.mac_address, - "first_seen": asset.first_seen.isoformat() if asset.first_seen else None, - "last_seen": asset.last_seen.isoformat() if asset.last_seen else None - }) - - return BlockExecuteResponse( - success=True, - output={"assets": assets, "count": len(assets)}, - route="assets" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=f"Database error: {str(e)}", - output={"assets": [], "count": 0}, - route="error" - ) - - elif block_type == "assets.get_by_filter": - asset_type = params.get("type", "") - subnet = params.get("subnet", "") - tag = params.get("tag", "") - status = params.get("status", "") - discovery_method = params.get("discoveryMethod", "") - await asyncio.sleep(0.2) - # In production, query database with filters - sample_assets = [ - {"id": "1", "ip": "192.168.1.1", "hostname": "switch-01", "type": "switch", "status": "online", "discovery_method": "arp"}, - {"id": "2", "ip": "192.168.1.10", "hostname": "server-01", "type": "server", "status": "online", "discovery_method": "manual"}, - ] - return BlockExecuteResponse( - success=True, - output={"assets": sample_assets, "count": len(sample_assets), "filter": {"type": asset_type, "status": status}}, - route="assets" - ) - - elif block_type == "assets.get_single": - identifier = params.get("identifier", "") - await asyncio.sleep(0.1) - if identifier: - return BlockExecuteResponse( - success=True, - output={"asset": {"id": "1", "ip": identifier, "hostname": f"host-{identifier}", "type": "server", "status": "online"}}, - route="found" - ) - return BlockExecuteResponse( - success=False, - error=f"Asset not found: {identifier}", - route="not_found" - ) - - elif block_type == "assets.discover_arp": - subnet = params.get("subnet", "192.168.1.0/24") - interface = params.get("interface", "eth0") - timeout = params.get("timeout", 10) - auto_add = params.get("autoAdd", True) - await asyncio.sleep(1.0) # Simulate ARP scan - discovered = [ - {"ip": "192.168.1.1", "mac": "00:11:22:33:44:55", "vendor": "Cisco", "discovery_method": "arp"}, - {"ip": "192.168.1.100", "mac": "AA:BB:CC:DD:EE:FF", "vendor": "Dell", "discovery_method": "arp"}, - ] - return BlockExecuteResponse( - success=True, - output={"discovered": discovered, "count": len(discovered), "subnet": subnet, "method": "arp"}, - route="discovered" - ) - - elif block_type == "assets.discover_ping": - subnet = params.get("subnet", "192.168.1.0/24") - timeout = params.get("timeout", 1000) - concurrent = params.get("concurrent", 50) - - # Real ping sweep using nmap - import subprocess - import time - start_time = time.time() - - try: - result = subprocess.run( - ["nmap", "-sn", "-oX", "-", subnet], - capture_output=True, - text=True, - timeout=timeout / 1000 if timeout > 0 else 60 - ) - duration_ms = int((time.time() - start_time) * 1000) - - # Parse XML output - import xml.etree.ElementTree as ET - root = ET.fromstring(result.stdout) - - discovered = [] - for host_elem in root.findall(".//host"): - status = host_elem.find("status") - if status is not None and status.get("state") == "up": - addr = host_elem.find("address") - if addr is not None: - # Try to get latency from times - times = host_elem.find("times") - latency_ms = None - if times is not None: - srtt = times.get("srtt") - if srtt: - latency_ms = float(srtt) / 1000 # Convert to ms - - discovered.append({ - "ip": addr.get("addr"), - "latency_ms": latency_ms or 1.0, - "discovery_method": "ping" - }) - - return BlockExecuteResponse( - success=True, - output={"discovered": discovered, "count": len(discovered), "subnet": subnet, "method": "ping"}, - duration_ms=duration_ms, - route="discovered" - ) - except subprocess.TimeoutExpired: - return BlockExecuteResponse( - success=False, - error="Ping discovery timed out", - route="fail" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - route="fail" - ) - - elif block_type == "assets.discover_passive": - interface = params.get("interface", "eth0") - duration = params.get("duration", 60) - protocols = params.get("protocols", ["arp", "dhcp"]) - await asyncio.sleep(min(duration, 5)) # Simulate passive monitoring - discovered = [ - {"ip": "192.168.1.25", "mac": "11:22:33:44:55:66", "protocol": "arp", "discovery_method": "passive"}, - {"ip": "192.168.1.30", "hostname": "laptop-01", "protocol": "dhcp", "discovery_method": "passive"}, - ] - return BlockExecuteResponse( - success=True, - output={"discovered": discovered, "count": len(discovered), "method": "passive", "protocols": protocols}, - route="discovered" - ) - - elif block_type == "assets.check_online": - host = params.get("host", "") - method = params.get("method", "ping") - port = params.get("port", 22) - timeout = params.get("timeout", 5) - - if not host: - return BlockExecuteResponse(success=False, error="Host is required", route="offline") - - # Real online check using ping - import subprocess - import time - start_time = time.time() - - try: - if method == "ping": - result = subprocess.run( - ["ping", "-c", "1", "-W", str(timeout), host], - capture_output=True, - text=True, - timeout=timeout + 2 - ) - is_online = result.returncode == 0 - duration_ms = int((time.time() - start_time) * 1000) - - # Extract latency from ping output - latency_ms = None - if is_online: - import re - match = re.search(r'time=(\d+\.\d+)', result.stdout) - if match: - latency_ms = float(match.group(1)) - - if is_online: - return BlockExecuteResponse( - success=True, - output={"host": host, "online": True, "method": method, "latency_ms": latency_ms}, - duration_ms=duration_ms, - route="online" - ) - return BlockExecuteResponse( - success=True, - output={"host": host, "online": False, "method": method}, - duration_ms=duration_ms, - route="offline" - ) - elif method == "tcp": - # TCP port check - import socket - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.settimeout(timeout) - result = sock.connect_ex((host, port)) - sock.close() - duration_ms = int((time.time() - start_time) * 1000) - is_online = result == 0 - - if is_online: - return BlockExecuteResponse( - success=True, - output={"host": host, "online": True, "method": "tcp", "port": port, "latency_ms": duration_ms}, - duration_ms=duration_ms, - route="online" - ) - return BlockExecuteResponse( - success=True, - output={"host": host, "online": False, "method": "tcp", "port": port}, - duration_ms=duration_ms, - route="offline" - ) - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - output={"host": host, "online": False, "method": method, "error": str(e)}, - route="offline" - ) - - elif block_type == "assets.get_credentials": - asset_id = params.get("assetId", "") - cred_type = params.get("credentialType", "") - - if not asset_id: - return BlockExecuteResponse(success=False, error="Asset ID is required", route="not_found") - - await asyncio.sleep(0.1) - # In production, fetch from credential vault - credentials = { - "username": "admin", - "password": "********", # Would be actual password from vault - "type": cred_type or "ssh", - "asset_id": asset_id - } - return BlockExecuteResponse( - success=True, - output={"credentials": credentials}, - route="found" - ) - - else: - return BlockExecuteResponse( - success=False, - error=f"Unknown block type: {block_type}", - route="error" - ) - - except Exception as e: - return BlockExecuteResponse( - success=False, - error=str(e), - route="error" - ) - finally: - end_time = datetime.utcnow() - # Duration would be calculated here - - -def evaluate_expression(expression: str, context: Dict[str, Any]) -> Any: - """ - Evaluate a simple expression with context variables. - In production, use a safe expression evaluator. - """ - if not expression: - return True - - # Handle common patterns - expr_lower = expression.lower().strip() - if expr_lower in ["true", "1", "yes"]: - return True - if expr_lower in ["false", "0", "no"]: - return False - - # Simple variable substitution {{ $prev.success }} - if "{{" in expression: - # For now, return True if expression contains success - if "success" in expression.lower(): - prev = context.get("$prev", {}) - return prev.get("success", True) - - return True # Default to true - - -def evaluate_code_expression(code: str, context: Dict[str, Any]) -> Any: - """ - Evaluate JavaScript-like code expression safely. - This is a Python-side simulation of JS expressions. - In production, use a proper sandboxed JS engine like PyMiniRacer. - - Args: - code: JavaScript-like code string (e.g., "return input.includes('success');") - context: Execution context with input, rawInput, variables - - Returns: - Evaluated result (bool, str, dict, list, etc.) - """ - if not code: - return True - - code_stripped = code.strip() - - # Extract return value if present - if code_stripped.startswith("return "): - code_stripped = code_stripped[7:].rstrip(";") - - # Simple expressions - if code_stripped in ["true", "True"]: - return True - if code_stripped in ["false", "False"]: - return False - if code_stripped == "context.input" or code_stripped == "input": - return context.get("input", "") - - # Get context values - input_data = context.get("input", "") - raw_input = context.get("rawInput", str(input_data) if input_data else "") - variables = context.get("variables", {}) - - # Handle common patterns - code_lower = code_stripped.lower() - - # Pattern: input.includes('text') or rawInput.includes('text') - includes_match = None - import re - - # Match: input.includes('text') or rawInput.includes('text') - includes_pattern = r"(input|rawInput|context\.input|context\.rawInput)\.includes\(['\"](.+?)['\"]\)" - match = re.search(includes_pattern, code_stripped) - if match: - search_text = match.group(2).lower() - return search_text in raw_input.lower() - - # Match: !input.includes('text') - not_includes_pattern = r"!(input|rawInput)\.includes\(['\"](.+?)['\"]\)" - match = re.search(not_includes_pattern, code_stripped) - if match: - search_text = match.group(2).lower() - return search_text not in raw_input.lower() - - # Match: input.match(/regex/) or input.match('regex') - match_pattern = r"(input|rawInput)\.match\(['\"/](.+?)['\"/]\)" - match = re.search(match_pattern, code_stripped) - if match: - try: - regex = match.group(2) - return bool(re.search(regex, raw_input, re.IGNORECASE)) - except re.error: - return False - - # Simple variable access: variables.varName - var_access_pattern = r"variables\.(\w+)" - match = re.search(var_access_pattern, code_stripped) - if match: - var_name = match.group(1) - return variables.get(var_name) - - # Comparison: value === 'text' or value == 'text' - compare_pattern = r"(.+?)\s*(===?|!==?)\s*['\"](.+?)['\"]" - match = re.search(compare_pattern, code_stripped) - if match: - left_side = match.group(1).strip() - operator = match.group(2) - right_side = match.group(3) - - # Resolve left side - left_value = raw_input if left_side in ["input", "rawInput"] else str(left_side) - - if "==" in operator: - return left_value == right_side - elif "!=" in operator: - return left_value != right_side - - # Length check: input.length > 0 - if ".length" in code_stripped: - return len(raw_input) > 0 - - # Truthy check - if code_stripped in ["input", "rawInput", "context.input"]: - return bool(raw_input) - - # Default: try to eval as Python (not recommended for production) - # For safety, default to True for unknown expressions - return True - # === Block Execution Endpoints === @@ -2002,13 +59,6 @@ async def execute_delay( ) -class CodeBlockRequest(BaseModel): - """Request for code block execution""" - context: Dict = Field(default_factory=dict, description="Context with input data") - passCode: str = Field(..., description="JavaScript code for pass condition") - failCode: Optional[str] = Field(default=None, description="JavaScript code for fail condition") - outputCode: str = Field(..., description="JavaScript code for output transformation") - @router.post("/block/code", response_model=BlockExecuteResponse) async def execute_code_block( request: CodeBlockRequest, diff --git a/backend/app/services/block_executor.py b/backend/app/services/block_executor.py new file mode 100644 index 00000000..9d93f39d --- /dev/null +++ b/backend/app/services/block_executor.py @@ -0,0 +1,1850 @@ +""" +Block Executor Service + +Executes individual workflow blocks with support for: +- Control flow (start, end, delay, condition, loop, parallel, variables) +- Connection testing (SSH, RDP, VNC, FTP, TCP) +- Commands (SSH execute, system info, FTP operations) +- Traffic (ping, capture, storm) +- Scanning (port scan, version detect, network discovery) +- Agent operations (generate, deploy, terminate) +- Data processing (code, output interpreter, assertion, transform) +- Asset operations (list, filter, discover, check online) +""" + +import asyncio +import json +import re +import socket +import subprocess +import time +import xml.etree.ElementTree as ET +from datetime import datetime +from typing import Dict, Any, Optional + +from pydantic import BaseModel, Field + +from app.services.scanner import NetworkScanner + + +# === Block Execution Models === + +class BlockExecuteRequest(BaseModel): + """Request to execute a single block""" + block_type: str + parameters: Dict[str, Any] + context: Optional[Dict[str, Any]] = None + + +class BlockExecuteResponse(BaseModel): + """Response from block execution""" + success: bool + output: Optional[Dict[str, Any]] = None + error: Optional[str] = None + duration_ms: Optional[int] = None + route: Optional[str] = None + + +class DelayRequest(BaseModel): + """Request for delay block""" + seconds: int = 5 + + +class CodeBlockRequest(BaseModel): + """Request for code block execution""" + context: Dict = Field(default_factory=dict, description="Context with input data") + passCode: str = Field(..., description="JavaScript code for pass condition") + failCode: Optional[str] = Field(default=None, description="JavaScript code for fail condition") + outputCode: str = Field(..., description="JavaScript code for output transformation") + + +# === Shared Helpers === + +def _tcp_connection_test( + host: str, port: int, timeout: int = 5, protocol: Optional[str] = None +) -> BlockExecuteResponse: + """ + Shared helper for TCP connection tests (SSH, RDP, VNC, FTP, generic TCP). + + Args: + host: Target hostname or IP + port: Target port number + timeout: Connection timeout in seconds + protocol: Optional protocol name for output metadata + """ + if not host: + output = {"host": host, "port": port, "connected": False} + if protocol: + output["protocol"] = protocol + return BlockExecuteResponse( + success=False, + error="Host is required", + output=output, + route="failure" + ) + + start_time = time.time() + try: + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout) + result = sock.connect_ex((host, port)) + sock.close() + duration_ms = int((time.time() - start_time) * 1000) + connected = result == 0 + + output = {"host": host, "port": port, "connected": connected, "latency_ms": duration_ms} + if protocol: + output["protocol"] = protocol + + return BlockExecuteResponse( + success=connected, + output=output, + duration_ms=duration_ms, + route="success" if connected else "failure" + ) + except socket.error as e: + output = {"host": host, "port": port, "connected": False, "error": str(e)} + if protocol: + output["protocol"] = protocol + return BlockExecuteResponse( + success=False, + error=str(e), + output=output, + route="failure" + ) + + +# === Block Execution Service === + +async def execute_block(block_type: str, params: Dict[str, Any], context: Dict[str, Any] = None) -> BlockExecuteResponse: + """ + Execute a single workflow block. + Phase 3: Connects blocks to actual API endpoints or simulates execution. + """ + start_time = datetime.utcnow() + context = context or {} + + try: + # === Control Blocks === + if block_type == "control.start": + # Support loop input - get iteration from context if connected to a loop + loop_input = context.get("loop_input", {}) + iteration = loop_input.get("iteration", 0) + item = loop_input.get("item", params.get("initialValue", 0)) + max_iterations = params.get("maxIterations", 100) + + # Safety check for max iterations + if iteration >= max_iterations: + return BlockExecuteResponse( + success=False, + error=f"Max iterations ({max_iterations}) reached", + output={"iteration": iteration, "max_exceeded": True}, + route="error" + ) + + return BlockExecuteResponse( + success=True, + output={ + "started": True, + "timestamp": datetime.utcnow().isoformat(), + "iteration": iteration, + "item": item, + "from_loop": bool(loop_input) + }, + route="out" + ) + + elif block_type == "control.end": + status = params.get("status", "success") + message = params.get("message", "Workflow completed") + return BlockExecuteResponse( + success=status == "success", + output={"status": status, "message": message}, + route=None + ) + + elif block_type == "control.delay": + seconds = params.get("seconds", 5) + await asyncio.sleep(seconds) + return BlockExecuteResponse( + success=True, + output={"delayed": seconds, "message": f"Waited {seconds} seconds"}, + route="out", + duration_ms=seconds * 1000 + ) + + elif block_type == "control.condition": + expression = params.get("expression", "true") + # Simple expression evaluation (in production, use a safe evaluator) + # For now, check if expression looks truthy + result = evaluate_expression(expression, context) + return BlockExecuteResponse( + success=True, + output={"expression": expression, "result": result}, + route="true" if result else "false" + ) + + elif block_type == "control.loop": + # Get loop state from context (keyed by a unique node identifier if available) + loop_state = context.get("loop_state", {}) + loop_id = params.get("_node_id", "default_loop") + + mode = params.get("mode", "count") + + if mode == "count": + count = params.get("count", 5) + current_index = loop_state.get(loop_id, 0) + + if current_index >= count: + # Loop complete - reset state and exit via "done" handle + loop_state[loop_id] = 0 + context["loop_state"] = loop_state + return BlockExecuteResponse( + success=True, + output={"mode": "count", "completed": True, "total_iterations": count}, + route="done" # Match "done" output handle + ) + + # Increment for next iteration + loop_state[loop_id] = current_index + 1 + context["loop_state"] = loop_state + context["item"] = current_index # Current iteration index + context["variables"] = context.get("variables", {}) + context["variables"]["item"] = current_index + context["variables"]["index"] = current_index + + return BlockExecuteResponse( + success=True, + output={"mode": "count", "iteration": current_index + 1, "of": count, "item": current_index}, + route="loop" # Match "loop" output handle + ) + else: + # Array mode + array_expr = params.get("array", "[]") + items = evaluate_expression(array_expr, context) or [] + if not isinstance(items, list): + items = [] + + current_index = loop_state.get(loop_id, 0) + + if current_index >= len(items): + # Loop complete - reset state and exit via "done" handle + loop_state[loop_id] = 0 + context["loop_state"] = loop_state + return BlockExecuteResponse( + success=True, + output={"mode": "array", "completed": True, "total_items": len(items)}, + route="done" # Match "done" output handle + ) + + # Get current item and increment + current_item = items[current_index] + loop_state[loop_id] = current_index + 1 + context["loop_state"] = loop_state + context["item"] = current_item + context["variables"] = context.get("variables", {}) + context["variables"]["item"] = current_item + context["variables"]["index"] = current_index + + # Also set the variable name specified in params + var_name = params.get("variable", "item") + context["variables"][var_name] = current_item + + return BlockExecuteResponse( + success=True, + output={"mode": "array", "iteration": current_index + 1, "of": len(items), "item": current_item}, + route="loop" # Match "loop" output handle + ) + + elif block_type == "control.parallel": + return BlockExecuteResponse( + success=True, + output={"parallel": True, "branches": 3}, + route="branch1" # In real execution, all branches execute + ) + + elif block_type == "control.variable_set": + name = params.get("name", "var") + value = params.get("value", "") + + # Actually update context variables + context["variables"] = context.get("variables", {}) + + # Try to parse JSON arrays/objects + try: + parsed_value = json.loads(value) if isinstance(value, str) and value.strip().startswith('[') else value + except (json.JSONDecodeError, TypeError): + parsed_value = value + + context["variables"][name] = parsed_value + + return BlockExecuteResponse( + success=True, + output={"variable": name, "value": parsed_value, "action": "set"}, + route="out" + ) + + elif block_type == "control.variable_get": + name = params.get("name", "var") + variables = context.get("variables", {}) + value = variables.get(name) + + # Also check if it's a special variable like 'item' + if value is None and name == "item": + value = context.get("item") + + return BlockExecuteResponse( + success=True, + output={"variable": name, "value": value, "action": "get"}, + route="out" + ) + + # === Connection Blocks === + elif block_type == "connection.ssh_test": + return _tcp_connection_test( + params.get("host", ""), params.get("port", 22), params.get("timeout", 5) + ) + + elif block_type == "connection.rdp_test": + return _tcp_connection_test( + params.get("host", ""), params.get("port", 3389), params.get("timeout", 5), protocol="rdp" + ) + + elif block_type == "connection.vnc_test": + return _tcp_connection_test( + params.get("host", ""), params.get("port", 5900), params.get("timeout", 5), protocol="vnc" + ) + + elif block_type == "connection.ftp_test": + return _tcp_connection_test( + params.get("host", ""), params.get("port", 21), params.get("timeout", 5), + protocol=params.get("protocol", "ftp") + ) + + elif block_type == "connection.tcp_test": + result = _tcp_connection_test( + params.get("host", ""), params.get("port", 80), params.get("timeout", 5) + ) + # tcp_test uses "open" key instead of "connected" and always succeeds + if result.output: + result.output["open"] = result.output.pop("connected", False) + if result.error is None: + result.success = True + return result + + # === Command Blocks === + elif block_type == "command.ssh_execute": + host = params.get("host", "") + command = params.get("command", "") + await asyncio.sleep(1.0) + if not host or not command: + return BlockExecuteResponse( + success=False, + error="Host and command are required", + route="error" + ) + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "command": command, + "stdout": f"Executed: {command}", + "stderr": "", + "exit_code": 0 + }, + route="out" + ) + + elif block_type == "command.system_info": + host = params.get("host", "") + info_type = params.get("infoType", "all") + await asyncio.sleep(0.8) + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "type": info_type, + "info": { + "os": "Linux 5.15.0", + "hostname": host, + "uptime": "5 days", + "memory": "8GB", + "cpu": "4 cores" + } + }, + route="out" + ) + + elif block_type == "command.ftp_list": + host = params.get("host", "") + path = params.get("path", "/") + await asyncio.sleep(0.5) + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "path": path, + "files": [ + {"name": "file1.txt", "size": 1024, "type": "file"}, + {"name": "dir1", "size": 0, "type": "directory"} + ] + }, + route="out" + ) + + elif block_type in ["command.ftp_download", "command.ftp_upload"]: + host = params.get("host", "") + await asyncio.sleep(1.0) + action = "downloaded" if "download" in block_type else "uploaded" + return BlockExecuteResponse( + success=True, + output={"host": host, "action": action, "bytes": 2048}, + route="out" + ) + + # === Traffic Blocks === + elif block_type == "traffic.ping": + host = params.get("host", "") + count = params.get("count", 4) + + if not host: + return BlockExecuteResponse( + success=False, + error="Host is required for ping", + route="unreachable" + ) + + # Execute real ping + try: + result = subprocess.run( + ["ping", "-c", str(count), "-W", "2", host], + capture_output=True, + text=True, + timeout=count * 3 + 5 # Allow time for all pings + timeout + ) + + output_text = result.stdout + result.stderr + reachable = result.returncode == 0 + + # Parse ping output for stats + packets_sent = count + packets_received = 0 + avg_latency = None + + # Try to parse output for statistics + lines = output_text.split('\n') + for line in lines: + if 'packets transmitted' in line: + parts = line.split(',') + for part in parts: + if 'received' in part: + try: + packets_received = int(part.strip().split()[0]) + except: + pass + if 'avg' in line or 'rtt' in line: + try: + # Format: rtt min/avg/max/mdev = 0.123/0.456/0.789/0.012 ms + if '=' in line: + stats = line.split('=')[1].strip().split('/')[1] + avg_latency = float(stats) + except: + pass + + return BlockExecuteResponse( + success=reachable, + output={ + "host": host, + "packets_sent": packets_sent, + "packets_received": packets_received, + "avg_latency_ms": avg_latency, + "reachable": reachable, + "raw_output": output_text[:500] # Limit output size + }, + route="reachable" if reachable else "unreachable" + ) + except subprocess.TimeoutExpired: + return BlockExecuteResponse( + success=False, + output={"host": host, "error": "Ping timed out"}, + error="Ping timed out", + route="unreachable" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + output={"host": host, "error": str(e)}, + error=str(e), + route="unreachable" + ) + + elif block_type == "traffic.advanced_ping": + host = params.get("host", "") + count = params.get("count", 4) + size = params.get("size", 64) + await asyncio.sleep(0.8) + reachable = bool(host) + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "packets_sent": count, + "packets_received": count if reachable else 0, + "packet_size": size, + "min_latency_ms": 2.1, + "max_latency_ms": 8.5, + "avg_latency_ms": 5.2, + "reachable": reachable + }, + route="reachable" if reachable else "unreachable" + ) + + elif block_type in ["traffic.start_capture", "traffic.burst_capture"]: + interface = params.get("interface", "eth0") + duration = params.get("duration_seconds", 1) + await asyncio.sleep(duration) + return BlockExecuteResponse( + success=True, + output={ + "interface": interface, + "capture_id": f"cap_{datetime.utcnow().timestamp()}", + "packets_captured": 150, + "bytes_captured": 48000 + }, + route="out" + ) + + elif block_type == "traffic.stop_capture": + capture_id = params.get("captureId", "") + return BlockExecuteResponse( + success=True, + output={"capture_id": capture_id, "stopped": True}, + route="out" + ) + + elif block_type == "traffic.get_stats": + interface = params.get("interface", "eth0") + return BlockExecuteResponse( + success=True, + output={ + "interface": interface, + "rx_bytes": 1024000, + "tx_bytes": 512000, + "rx_packets": 1500, + "tx_packets": 800 + }, + route="out" + ) + + elif block_type == "traffic.storm": + interface = params.get("interface", "") + storm_type = params.get("type", "broadcast") + duration = params.get("duration", 5) + await asyncio.sleep(min(duration, 2)) # Cap actual wait + return BlockExecuteResponse( + success=True, + output={ + "interface": interface, + "type": storm_type, + "duration": duration, + "packets_sent": 5000 + }, + route="out" + ) + + # === Scanning Blocks === + elif block_type == "scanning.version_detect": + host = params.get("host", "") + ports = params.get("ports", "22,80,443") + await asyncio.sleep(2.0) + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "services": [ + {"port": 22, "service": "ssh", "version": "OpenSSH 8.2"}, + {"port": 80, "service": "http", "version": "nginx 1.18.0"}, + {"port": 443, "service": "https", "version": "nginx 1.18.0"} + ] + }, + route="out" + ) + + elif block_type == "scanning.port_scan": + host = params.get("host", "") + scan_type = params.get("scanType", "quick") + custom_ports = params.get("customPorts", "") + technique = params.get("technique", "tcp_syn") + + # Determine port range based on scan type + if scan_type == "full": + ports = "1-65535" + elif scan_type == "custom" and custom_ports: + ports = custom_ports + else: # quick + ports = "22,80,443,21,23,25,53,110,143,3306,3389,5432,8080,8443" + + # Use real scanner service + start_time = time.time() + scanner = NetworkScanner() + result = await scanner.port_scan(host, ports) + duration_ms = int((time.time() - start_time) * 1000) + + if "error" in result: + return BlockExecuteResponse( + success=False, + error=result["error"], + duration_ms=duration_ms, + route="fail" + ) + + # Parse the nmap result structure to extract open/closed/filtered ports + open_ports = [] + closed_ports = 0 + filtered_ports = 0 + services = {} + + # Extract from hosts[].ports[] structure + for host_info in result.get("hosts", []): + for port_info in host_info.get("ports", []): + port_id = int(port_info.get("portid", 0)) + state = port_info.get("state", "unknown") + + if state == "open": + open_ports.append(port_id) + # Extract service info if available + if "service" in port_info: + svc = port_info["service"] + services[port_id] = { + "name": svc.get("name"), + "product": svc.get("product"), + "version": svc.get("version") + } + elif state == "closed": + closed_ports += 1 + elif state == "filtered": + filtered_ports += 1 + + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "scan_type": scan_type, + "technique": technique, + "open_ports": open_ports, + "closed_ports": closed_ports, + "filtered_ports": filtered_ports, + "services": services, + }, + duration_ms=duration_ms, + route="out" + ) + + # === Agent Blocks === + elif block_type == "agent.generate": + agent_id = params.get("agent_id", "") + platform = params.get("platform", "linux-amd64") + await asyncio.sleep(1.0) + return BlockExecuteResponse( + success=True, + output={ + "agent_id": agent_id, + "platform": platform, + "binary_path": f"/tmp/agent_{agent_id}_{platform}", + "size_bytes": 2048000, + "checksum": "abc123def456" + }, + route="out" + ) + + elif block_type == "agent.deploy": + host = params.get("host", "") + await asyncio.sleep(1.5) + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "deployed": True, + "agent_pid": 12345, + "connection_established": True + }, + route="out" + ) + + elif block_type == "agent.terminate": + agent_id = params.get("agent_id", "") + return BlockExecuteResponse( + success=True, + output={"agent_id": agent_id, "terminated": True}, + route="out" + ) + + # === Data Processing Blocks (3-Output Model) === + elif block_type == "data.code": + """ + Code Block - Execute JavaScript code for pass/fail/output + Uses 3-output model: pass, fail, output + """ + description = params.get("description", "") + pass_code = params.get("passCode", "return true;") + fail_code = params.get("failCode", "") + output_code = params.get("outputCode", "return context.input;") + + # Get input from previous block + input_data = context.get("$prev", {}).get("output", context.get("input", "")) + variables = context.get("variables", {}) + + # Build execution context for code + code_context = { + "input": input_data, + "rawInput": str(input_data) if input_data else "", + "variables": variables + } + + try: + # Evaluate pass condition (simulated - in production use safe JS eval) + pass_result = evaluate_code_expression(pass_code, code_context) + + # Evaluate fail condition (defaults to !pass) + if fail_code: + fail_result = evaluate_code_expression(fail_code, code_context) + else: + fail_result = not pass_result + + # Evaluate output + output_result = evaluate_code_expression(output_code, code_context) + + return BlockExecuteResponse( + success=True, + output={ + "pass": pass_result, + "fail": fail_result, + "output": output_result, + "description": description + }, + route="pass" if pass_result else "fail" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=f"Code execution error: {str(e)}", + output={"pass": False, "fail": True, "output": None}, + route="fail" + ) + + elif block_type == "data.output_interpreter": + """ + Output Interpreter Block - Parse and interpret output using rules + Uses 3-output model: pass, fail, output + Enhanced with port detection and status checking + """ + input_source = params.get("inputSource", "{{previous.output}}") + aggregation = params.get("aggregation", "all") + contains_pass = params.get("containsPass", "") + not_contains_fail = params.get("notContainsFail", "") + regex_pattern = params.get("regexPattern", "") + extract_variable = params.get("extractVariable", "") + extract_pattern = params.get("extractPattern", "") + port_check = params.get("portCheck", "") + port_check_mode = params.get("portCheckMode", "any") + status_check = params.get("statusCheck", "") + + # Get input from previous block + input_data = context.get("$prev", {}).get("output", context.get("input", "")) + input_str = str(input_data) if input_data else "" + + + rule_results = [] + extracted_vars = {} + detected_ports = {"open": [], "closed": [], "filtered": []} + + # Parse input if it's JSON + parsed_input = None + if isinstance(input_data, dict): + parsed_input = input_data + elif isinstance(input_data, str): + try: + parsed_input = json.loads(input_data) + except: + parsed_input = None + + # Check contains (pass) + if contains_pass: + passed = contains_pass.lower() in input_str.lower() + rule_results.append({ + "rule": "contains", + "pattern": contains_pass, + "passed": passed, + "reason": f"Contains '{contains_pass}'" if passed else f"Missing '{contains_pass}'" + }) + + # Check not_contains (fail) + if not_contains_fail: + try: + pattern = re.compile(not_contains_fail, re.IGNORECASE) + match = pattern.search(input_str) + passed = match is None # Pass if pattern NOT found + rule_results.append({ + "rule": "not_contains", + "pattern": not_contains_fail, + "passed": passed, + "reason": f"Does not contain '{not_contains_fail}'" if passed else f"Found '{not_contains_fail}'" + }) + except re.error: + rule_results.append({ + "rule": "not_contains", + "pattern": not_contains_fail, + "passed": False, + "reason": f"Invalid regex: {not_contains_fail}" + }) + + # Check regex pattern + if regex_pattern: + try: + pattern = re.compile(regex_pattern, re.IGNORECASE) + match = pattern.search(input_str) + passed = match is not None + rule_results.append({ + "rule": "regex", + "pattern": regex_pattern, + "passed": passed, + "reason": f"Matches '{regex_pattern}'" if passed else f"No match for '{regex_pattern}'" + }) + except re.error: + rule_results.append({ + "rule": "regex", + "pattern": regex_pattern, + "passed": False, + "reason": f"Invalid regex: {regex_pattern}" + }) + + # Port detection - check for open ports in scan results + if port_check: + target_ports = [int(p.strip()) for p in port_check.split(",") if p.strip().isdigit()] + found_open = [] + + # Check various formats of port data + if parsed_input: + # Format: {"open_ports": [22, 80, 443]} + if "open_ports" in parsed_input: + open_ports = parsed_input.get("open_ports", []) + for p in target_ports: + if p in open_ports: + found_open.append(p) + detected_ports["open"].append(p) + + # Format: {"services": [{"port": 22, "state": "open"}, ...]} + if "services" in parsed_input: + services = parsed_input.get("services", []) + for svc in services: + if isinstance(svc, dict): + port = svc.get("port") + state = svc.get("state", svc.get("status", "")) + if port in target_ports and str(state).lower() in ["open", "up", "running"]: + found_open.append(port) + detected_ports["open"].append(port) + + # Format: {"ports": {"22": "open", "80": "open"}} + if "ports" in parsed_input and isinstance(parsed_input["ports"], dict): + for port_str, state in parsed_input["ports"].items(): + try: + port = int(port_str) + if port in target_ports and str(state).lower() in ["open", "up"]: + found_open.append(port) + detected_ports["open"].append(port) + except: + pass + + # Also check in raw text format: "22/tcp open ssh" + port_pattern = r"(\d+)/(tcp|udp)\s+(open|closed|filtered)" + for match in re.finditer(port_pattern, input_str, re.IGNORECASE): + port = int(match.group(1)) + state = match.group(3).lower() + if port in target_ports: + if state == "open": + found_open.append(port) + detected_ports["open"].append(port) + elif state == "closed": + detected_ports["closed"].append(port) + else: + detected_ports["filtered"].append(port) + + # Deduplicate + found_open = list(set(found_open)) + detected_ports["open"] = list(set(detected_ports["open"])) + + # Determine pass based on mode + if port_check_mode == "any": + passed = len(found_open) > 0 + reason = f"Found {len(found_open)} open port(s): {found_open}" if passed else f"None of ports {target_ports} are open" + elif port_check_mode == "all": + passed = set(target_ports).issubset(set(found_open)) + missing = set(target_ports) - set(found_open) + reason = f"All ports {target_ports} are open" if passed else f"Missing open ports: {list(missing)}" + else: # specific + passed = len(found_open) > 0 + reason = f"Port(s) {found_open} open" if passed else f"Target ports not open" + + rule_results.append({ + "rule": "port_check", + "target_ports": target_ports, + "found_open": found_open, + "mode": port_check_mode, + "passed": passed, + "reason": reason + }) + + # Auto-extract port info + extracted_vars["detected_ports"] = detected_ports + extracted_vars["open_ports"] = found_open + + # Status check - look for status fields + if status_check and parsed_input: + try: + pattern = re.compile(status_check, re.IGNORECASE) + status_fields = ["status", "state", "result", "success"] + status_found = False + status_value = None + + for field in status_fields: + if field in parsed_input: + status_value = str(parsed_input[field]) + if pattern.search(status_value): + status_found = True + break + + rule_results.append({ + "rule": "status_check", + "pattern": status_check, + "passed": status_found, + "reason": f"Status '{status_value}' matches '{status_check}'" if status_found else f"Status doesn't match '{status_check}'" + }) + except re.error: + rule_results.append({ + "rule": "status_check", + "pattern": status_check, + "passed": False, + "reason": f"Invalid regex: {status_check}" + }) + + # Extract variable + if extract_variable and extract_pattern: + try: + pattern = re.compile(extract_pattern) + match = pattern.search(input_str) + if match: + extracted_vars[extract_variable] = match.group(1) if match.groups() else match.group(0) + except re.error: + pass + + # Aggregate results + if aggregation == "all": + overall_pass = all(r["passed"] for r in rule_results) if rule_results else True + elif aggregation == "any": + overall_pass = any(r["passed"] for r in rule_results) if rule_results else True + else: + overall_pass = all(r["passed"] for r in rule_results) if rule_results else True + + return BlockExecuteResponse( + success=True, + output={ + "pass": overall_pass, + "fail": not overall_pass, + "output": { + "input": input_str[:500] if len(input_str) > 500 else input_str, + "ruleResults": rule_results, + "extractedVariables": extracted_vars, + "detectedPorts": detected_ports, + "aggregation": aggregation + } + }, + route="pass" if overall_pass else "fail" + ) + + elif block_type == "data.assertion": + """ + Assertion Block - Simple pass/fail check + Uses 2-output model: pass, fail + """ + name = params.get("name", "Assertion") + condition = params.get("condition", "contains") + value = params.get("value", "") + fail_message = params.get("failMessage", f"Assertion '{name}' failed") + + # Get input from previous block + input_data = context.get("$prev", {}).get("output", context.get("input", "")) + input_str = str(input_data) if input_data else "" + + + passed = False + reason = "" + + if condition == "contains": + passed = value.lower() in input_str.lower() + reason = f"Contains '{value}'" if passed else f"Missing '{value}'" + elif condition == "not_contains": + passed = value.lower() not in input_str.lower() + reason = f"Does not contain '{value}'" if passed else f"Contains '{value}'" + elif condition == "equals": + passed = input_str.strip() == value + reason = f"Equals '{value}'" if passed else f"Not equal to '{value}'" + elif condition == "regex": + try: + pattern = re.compile(value, re.IGNORECASE) + passed = pattern.search(input_str) is not None + reason = f"Matches regex '{value}'" if passed else f"No match for '{value}'" + except re.error: + passed = False + reason = f"Invalid regex: {value}" + elif condition == "expression": + # Simple expression evaluation + passed = evaluate_expression(value, context) + reason = f"Expression evaluated to {passed}" + + return BlockExecuteResponse( + success=passed, + output={ + "name": name, + "passed": passed, + "reason": reason, + "failMessage": fail_message if not passed else None + }, + route="pass" if passed else "fail" + ) + + elif block_type == "data.transform": + """ + Transform Block - Transform input data + Always passes, outputs transformed data + """ + transform_type = params.get("transformType", "json_parse") + field = params.get("field", "") + template = params.get("template", "") + filter_expression = params.get("filterExpression", "") + + # Get input from previous block + input_data = context.get("$prev", {}).get("output", context.get("input", "")) + + output = input_data + + try: + if transform_type == "json_parse": + if isinstance(input_data, str): + output = json.loads(input_data) + else: + output = input_data + + elif transform_type == "json_stringify": + output = json.dumps(input_data) + + elif transform_type == "extract_field": + if field: + # Simple dot notation field extraction + parts = field.split(".") + result = input_data + for part in parts: + if isinstance(result, dict): + result = result.get(part) + elif isinstance(result, list) and part.isdigit(): + result = result[int(part)] if int(part) < len(result) else None + else: + result = None + break + output = result + + elif transform_type == "split_lines": + if isinstance(input_data, str): + output = input_data.split("\n") + else: + output = [str(input_data)] + + elif transform_type == "filter_array": + if isinstance(input_data, list) and filter_expression: + # Simple filter (in production, use safe evaluator) + # For now, just pass through + output = input_data + + elif transform_type == "template": + # Simple template substitution + output = template + if isinstance(input_data, dict): + for key, val in input_data.items(): + output = output.replace(f"{{{{{key}}}}}", str(val)) + + return BlockExecuteResponse( + success=True, + output={"pass": True, "output": output, "transformType": transform_type}, + route="pass" + ) + + except Exception as e: + return BlockExecuteResponse( + success=False, + error=f"Transform error: {str(e)}", + output={"pass": False, "output": None}, + route="pass" # Transform always passes, but with null output on error + ) + + # === Scanning Blocks (Additional) === + elif block_type == "scanning.network_discovery": + network = params.get("network", "192.168.1.0/24") + timeout = params.get("timeout", 30) + + # Use real nmap network discovery with service detection + start_time = time.time() + + try: + # Quick scan with OS hints and service versions + result = subprocess.run( + ["nmap", "-sn", "-oX", "-", network], + capture_output=True, + text=True, + timeout=timeout + ) + duration_ms = int((time.time() - start_time) * 1000) + + # Parse XML output + root = ET.fromstring(result.stdout) + + hosts = [] + for host_elem in root.findall(".//host"): + status = host_elem.find("status") + if status is not None and status.get("state") == "up": + addr = host_elem.find("address") + if addr is not None: + host_info = { + "ip": addr.get("addr"), + "status": "up", + "type": "unknown" + } + + # Get hostname if available + hostname_elem = host_elem.find(".//hostname") + if hostname_elem is not None: + host_info["hostname"] = hostname_elem.get("name") + + # Get MAC if available + mac_addr = host_elem.find(".//address[@addrtype='mac']") + if mac_addr is not None: + host_info["mac"] = mac_addr.get("addr") + host_info["vendor"] = mac_addr.get("vendor", "") + + hosts.append(host_info) + + return BlockExecuteResponse( + success=True, + output={ + "network": network, + "hosts_found": len(hosts), + "hosts": hosts, + "scan_time": duration_ms / 1000 + }, + duration_ms=duration_ms, + route="out" + ) + except subprocess.TimeoutExpired: + return BlockExecuteResponse( + success=False, + error="Network discovery timed out", + route="fail" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + route="fail" + ) + + elif block_type == "scanning.host_scan": + host = params.get("host", "") + + if not host: + return BlockExecuteResponse( + success=False, + error="Host is required", + route="fail" + ) + + # Use real nmap scan + start_time = time.time() + scanner = NetworkScanner() + + # Do a quick port scan with OS detection + result = await scanner.port_scan(host, "22,80,443,21,23,25,53,110,143,3306,3389,5432,8080,8443") + duration_ms = int((time.time() - start_time) * 1000) + + if "error" in result: + return BlockExecuteResponse( + success=False, + error=result["error"], + duration_ms=duration_ms, + route="fail" + ) + + # Extract host info + open_ports = [] + hostname = host + status = "down" + os_guess = "Unknown" + + for host_info in result.get("hosts", []): + host_status = host_info.get("status", {}) + if isinstance(host_status, dict): + status = host_status.get("state", "down") + else: + status = str(host_status) if host_status else "down" + + hostnames = host_info.get("hostnames", []) + if hostnames: + hostname = hostnames[0].get("name", host) + + for port_info in host_info.get("ports", []): + if port_info.get("state") == "open": + open_ports.append(int(port_info.get("portid", 0))) + + # If we found open ports, host is definitely up + if open_ports: + status = "up" + + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "status": status, + "ports": open_ports, + "os_guess": os_guess, + "hostname": hostname + }, + duration_ms=duration_ms, + route="out" + ) + + elif block_type == "scanning.ping_sweep": + network = params.get("network", "192.168.1.0/24") + + # Use real nmap ping sweep + start_time = time.time() + + try: + # nmap -sn for ping sweep (no port scan) + result = subprocess.run( + ["nmap", "-sn", "-oX", "-", network], + capture_output=True, + text=True, + timeout=120 + ) + duration_ms = int((time.time() - start_time) * 1000) + + # Parse XML output + root = ET.fromstring(result.stdout) + + alive_hosts = [] + for host_elem in root.findall(".//host"): + status = host_elem.find("status") + if status is not None and status.get("state") == "up": + addr = host_elem.find("address") + if addr is not None: + alive_hosts.append(addr.get("addr")) + + # Get total scanned from runstats + runstats = root.find(".//runstats/hosts") + total_scanned = int(runstats.get("total", 0)) if runstats is not None else len(alive_hosts) + + return BlockExecuteResponse( + success=True, + output={ + "network": network, + "alive_hosts": alive_hosts, + "total_scanned": total_scanned, + "hosts_up": len(alive_hosts) + }, + duration_ms=duration_ms, + route="out" + ) + except subprocess.TimeoutExpired: + return BlockExecuteResponse( + success=False, + error="Ping sweep timed out", + route="fail" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + route="fail" + ) + + elif block_type == "scanning.service_scan": + host = params.get("host", "") + ports = params.get("ports", "22,80,443") + + if not host: + return BlockExecuteResponse( + success=False, + error="Host is required", + route="fail" + ) + + # Use real nmap service scan with version detection + start_time = time.time() + + try: + result = subprocess.run( + ["nmap", "-sV", "-Pn", "-p", ports, "-oX", "-", host], + capture_output=True, + text=True, + timeout=60 + ) + duration_ms = int((time.time() - start_time) * 1000) + + # Parse XML output + root = ET.fromstring(result.stdout) + + services = [] + for port_elem in root.findall(".//port"): + state = port_elem.find("state") + service = port_elem.find("service") + + port_id = int(port_elem.get("portid", 0)) + port_state = state.get("state", "unknown") if state is not None else "unknown" + + svc_info = {"port": port_id, "state": port_state} + if service is not None: + svc_info["service"] = service.get("name", "unknown") + svc_info["product"] = service.get("product", "") + svc_info["version"] = service.get("version", "") + + services.append(svc_info) + + return BlockExecuteResponse( + success=True, + output={ + "host": host, + "services": services + }, + duration_ms=duration_ms, + route="out" + ) + except subprocess.TimeoutExpired: + return BlockExecuteResponse( + success=False, + error="Service scan timed out", + route="fail" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + route="fail" + ) + + # === Agent Blocks (Additional) === + elif block_type == "agent.list": + await asyncio.sleep(0.3) + return BlockExecuteResponse( + success=True, + output={ + "agents": [ + {"id": "agent-001", "name": "Agent 1", "status": "online", "os": "linux"}, + {"id": "agent-002", "name": "Agent 2", "status": "offline", "os": "windows"} + ], + "total": 2, + "online": 1 + }, + route="out" + ) + + elif block_type == "agent.create": + name = params.get("name", "NewAgent") + os_type = params.get("os", "linux") + await asyncio.sleep(0.5) + return BlockExecuteResponse( + success=True, + output={ + "agent_id": f"agent-{datetime.utcnow().timestamp():.0f}", + "name": name, + "os": os_type, + "status": "created", + "connection_url": "wss://localhost:12001/ws/agent" + }, + route="out" + ) + + # === Data Blocks (Additional) === + elif block_type == "data.http_request": + url = params.get("url", "") + method = params.get("method", "GET") + headers = params.get("headers", {}) + body = params.get("body", "") + + import httpx + try: + async with httpx.AsyncClient(timeout=10.0) as client: + response = await client.request(method, url, headers=headers, content=body if body else None) + return BlockExecuteResponse( + success=response.status_code < 400, + output={ + "status_code": response.status_code, + "headers": dict(response.headers), + "body": response.text[:2000] + }, + route="pass" if response.status_code < 400 else "fail" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + output={"error": str(e)}, + route="fail" + ) + + elif block_type == "data.json_transform": + input_data = params.get("input", context.get("input", "")) + expression = params.get("expression", "$") + + try: + if isinstance(input_data, str): + data = json.loads(input_data) + else: + data = input_data + + # Simple JSONPath-like extraction + if expression.startswith("$."): + key = expression[2:] + result = data.get(key, data) if isinstance(data, dict) else data + else: + result = data + + return BlockExecuteResponse( + success=True, + output={"result": result, "expression": expression}, + route="pass" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + output={"error": str(e)}, + route="fail" + ) + + elif block_type == "data.database_query": + connection_string = params.get("connectionString", "") + query = params.get("query", "SELECT 1") + await asyncio.sleep(0.5) + return BlockExecuteResponse( + success=True, + output={ + "query": query, + "rows": [{"column1": 1}], + "row_count": 1 + }, + route="pass" + ) + + # ============================================ + # === ASSETS Blocks === + # ============================================ + elif block_type == "assets.get_all": + include_offline = params.get("includeOffline", True) + limit = params.get("limit", 100) + + # Fetch from database + from app.models.asset import Asset + from sqlalchemy import select + + try: + async with db.async_session() as session: + query = select(Asset).limit(limit) + if not include_offline: + query = query.where(Asset.status == "online") + + result = await session.execute(query) + db_assets = result.scalars().all() + + assets = [] + for asset in db_assets: + assets.append({ + "id": str(asset.id), + "ip": str(asset.ip_address), + "hostname": asset.hostname, + "type": asset.asset_type, + "status": asset.status, + "discovery_method": asset.discovery_method, + "mac": asset.mac_address, + "first_seen": asset.first_seen.isoformat() if asset.first_seen else None, + "last_seen": asset.last_seen.isoformat() if asset.last_seen else None + }) + + return BlockExecuteResponse( + success=True, + output={"assets": assets, "count": len(assets)}, + route="assets" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=f"Database error: {str(e)}", + output={"assets": [], "count": 0}, + route="error" + ) + + elif block_type == "assets.get_by_filter": + asset_type = params.get("type", "") + subnet = params.get("subnet", "") + tag = params.get("tag", "") + status = params.get("status", "") + discovery_method = params.get("discoveryMethod", "") + await asyncio.sleep(0.2) + # In production, query database with filters + sample_assets = [ + {"id": "1", "ip": "192.168.1.1", "hostname": "switch-01", "type": "switch", "status": "online", "discovery_method": "arp"}, + {"id": "2", "ip": "192.168.1.10", "hostname": "server-01", "type": "server", "status": "online", "discovery_method": "manual"}, + ] + return BlockExecuteResponse( + success=True, + output={"assets": sample_assets, "count": len(sample_assets), "filter": {"type": asset_type, "status": status}}, + route="assets" + ) + + elif block_type == "assets.get_single": + identifier = params.get("identifier", "") + await asyncio.sleep(0.1) + if identifier: + return BlockExecuteResponse( + success=True, + output={"asset": {"id": "1", "ip": identifier, "hostname": f"host-{identifier}", "type": "server", "status": "online"}}, + route="found" + ) + return BlockExecuteResponse( + success=False, + error=f"Asset not found: {identifier}", + route="not_found" + ) + + elif block_type == "assets.discover_arp": + subnet = params.get("subnet", "192.168.1.0/24") + interface = params.get("interface", "eth0") + timeout = params.get("timeout", 10) + auto_add = params.get("autoAdd", True) + await asyncio.sleep(1.0) # Simulate ARP scan + discovered = [ + {"ip": "192.168.1.1", "mac": "00:11:22:33:44:55", "vendor": "Cisco", "discovery_method": "arp"}, + {"ip": "192.168.1.100", "mac": "AA:BB:CC:DD:EE:FF", "vendor": "Dell", "discovery_method": "arp"}, + ] + return BlockExecuteResponse( + success=True, + output={"discovered": discovered, "count": len(discovered), "subnet": subnet, "method": "arp"}, + route="discovered" + ) + + elif block_type == "assets.discover_ping": + subnet = params.get("subnet", "192.168.1.0/24") + timeout = params.get("timeout", 1000) + concurrent = params.get("concurrent", 50) + + # Real ping sweep using nmap + start_time = time.time() + + try: + result = subprocess.run( + ["nmap", "-sn", "-oX", "-", subnet], + capture_output=True, + text=True, + timeout=timeout / 1000 if timeout > 0 else 60 + ) + duration_ms = int((time.time() - start_time) * 1000) + + # Parse XML output + root = ET.fromstring(result.stdout) + + discovered = [] + for host_elem in root.findall(".//host"): + status = host_elem.find("status") + if status is not None and status.get("state") == "up": + addr = host_elem.find("address") + if addr is not None: + # Try to get latency from times + times = host_elem.find("times") + latency_ms = None + if times is not None: + srtt = times.get("srtt") + if srtt: + latency_ms = float(srtt) / 1000 # Convert to ms + + discovered.append({ + "ip": addr.get("addr"), + "latency_ms": latency_ms or 1.0, + "discovery_method": "ping" + }) + + return BlockExecuteResponse( + success=True, + output={"discovered": discovered, "count": len(discovered), "subnet": subnet, "method": "ping"}, + duration_ms=duration_ms, + route="discovered" + ) + except subprocess.TimeoutExpired: + return BlockExecuteResponse( + success=False, + error="Ping discovery timed out", + route="fail" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + route="fail" + ) + + elif block_type == "assets.discover_passive": + interface = params.get("interface", "eth0") + duration = params.get("duration", 60) + protocols = params.get("protocols", ["arp", "dhcp"]) + await asyncio.sleep(min(duration, 5)) # Simulate passive monitoring + discovered = [ + {"ip": "192.168.1.25", "mac": "11:22:33:44:55:66", "protocol": "arp", "discovery_method": "passive"}, + {"ip": "192.168.1.30", "hostname": "laptop-01", "protocol": "dhcp", "discovery_method": "passive"}, + ] + return BlockExecuteResponse( + success=True, + output={"discovered": discovered, "count": len(discovered), "method": "passive", "protocols": protocols}, + route="discovered" + ) + + elif block_type == "assets.check_online": + host = params.get("host", "") + method = params.get("method", "ping") + port = params.get("port", 22) + timeout = params.get("timeout", 5) + + if not host: + return BlockExecuteResponse(success=False, error="Host is required", route="offline") + + # Real online check using ping + start_time = time.time() + + try: + if method == "ping": + result = subprocess.run( + ["ping", "-c", "1", "-W", str(timeout), host], + capture_output=True, + text=True, + timeout=timeout + 2 + ) + is_online = result.returncode == 0 + duration_ms = int((time.time() - start_time) * 1000) + + # Extract latency from ping output + latency_ms = None + if is_online: + match = re.search(r'time=(\d+\.\d+)', result.stdout) + if match: + latency_ms = float(match.group(1)) + + if is_online: + return BlockExecuteResponse( + success=True, + output={"host": host, "online": True, "method": method, "latency_ms": latency_ms}, + duration_ms=duration_ms, + route="online" + ) + return BlockExecuteResponse( + success=True, + output={"host": host, "online": False, "method": method}, + duration_ms=duration_ms, + route="offline" + ) + elif method == "tcp": + # TCP port check + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(timeout) + result = sock.connect_ex((host, port)) + sock.close() + duration_ms = int((time.time() - start_time) * 1000) + is_online = result == 0 + + if is_online: + return BlockExecuteResponse( + success=True, + output={"host": host, "online": True, "method": "tcp", "port": port, "latency_ms": duration_ms}, + duration_ms=duration_ms, + route="online" + ) + return BlockExecuteResponse( + success=True, + output={"host": host, "online": False, "method": "tcp", "port": port}, + duration_ms=duration_ms, + route="offline" + ) + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + output={"host": host, "online": False, "method": method, "error": str(e)}, + route="offline" + ) + + elif block_type == "assets.get_credentials": + asset_id = params.get("assetId", "") + cred_type = params.get("credentialType", "") + + if not asset_id: + return BlockExecuteResponse(success=False, error="Asset ID is required", route="not_found") + + await asyncio.sleep(0.1) + # In production, fetch from credential vault + credentials = { + "username": "admin", + "password": "********", # Would be actual password from vault + "type": cred_type or "ssh", + "asset_id": asset_id + } + return BlockExecuteResponse( + success=True, + output={"credentials": credentials}, + route="found" + ) + + else: + return BlockExecuteResponse( + success=False, + error=f"Unknown block type: {block_type}", + route="error" + ) + + except Exception as e: + return BlockExecuteResponse( + success=False, + error=str(e), + route="error" + ) + finally: + end_time = datetime.utcnow() + # Duration would be calculated here + + +def evaluate_expression(expression: str, context: Dict[str, Any]) -> Any: + """ + Evaluate a simple expression with context variables. + In production, use a safe expression evaluator. + """ + if not expression: + return True + + # Handle common patterns + expr_lower = expression.lower().strip() + if expr_lower in ["true", "1", "yes"]: + return True + if expr_lower in ["false", "0", "no"]: + return False + + # Simple variable substitution {{ $prev.success }} + if "{{" in expression: + # For now, return True if expression contains success + if "success" in expression.lower(): + prev = context.get("$prev", {}) + return prev.get("success", True) + + return True # Default to true + + +def evaluate_code_expression(code: str, context: Dict[str, Any]) -> Any: + """ + Evaluate JavaScript-like code expression safely. + This is a Python-side simulation of JS expressions. + In production, use a proper sandboxed JS engine like PyMiniRacer. + + Args: + code: JavaScript-like code string (e.g., "return input.includes('success');") + context: Execution context with input, rawInput, variables + + Returns: + Evaluated result (bool, str, dict, list, etc.) + """ + if not code: + return True + + code_stripped = code.strip() + + # Extract return value if present + if code_stripped.startswith("return "): + code_stripped = code_stripped[7:].rstrip(";") + + # Simple expressions + if code_stripped in ["true", "True"]: + return True + if code_stripped in ["false", "False"]: + return False + if code_stripped == "context.input" or code_stripped == "input": + return context.get("input", "") + + # Get context values + input_data = context.get("input", "") + raw_input = context.get("rawInput", str(input_data) if input_data else "") + variables = context.get("variables", {}) + + # Handle common patterns + code_lower = code_stripped.lower() + + # Pattern: input.includes('text') or rawInput.includes('text') + includes_match = None + # Match: input.includes('text') or rawInput.includes('text') + includes_pattern = r"(input|rawInput|context\.input|context\.rawInput)\.includes\(['\"](.+?)['\"]\)" + match = re.search(includes_pattern, code_stripped) + if match: + search_text = match.group(2).lower() + return search_text in raw_input.lower() + + # Match: !input.includes('text') + not_includes_pattern = r"!(input|rawInput)\.includes\(['\"](.+?)['\"]\)" + match = re.search(not_includes_pattern, code_stripped) + if match: + search_text = match.group(2).lower() + return search_text not in raw_input.lower() + + # Match: input.match(/regex/) or input.match('regex') + match_pattern = r"(input|rawInput)\.match\(['\"/](.+?)['\"/]\)" + match = re.search(match_pattern, code_stripped) + if match: + try: + regex = match.group(2) + return bool(re.search(regex, raw_input, re.IGNORECASE)) + except re.error: + return False + + # Simple variable access: variables.varName + var_access_pattern = r"variables\.(\w+)" + match = re.search(var_access_pattern, code_stripped) + if match: + var_name = match.group(1) + return variables.get(var_name) + + # Comparison: value === 'text' or value == 'text' + compare_pattern = r"(.+?)\s*(===?|!==?)\s*['\"](.+?)['\"]" + match = re.search(compare_pattern, code_stripped) + if match: + left_side = match.group(1).strip() + operator = match.group(2) + right_side = match.group(3) + + # Resolve left side + left_value = raw_input if left_side in ["input", "rawInput"] else str(left_side) + + if "==" in operator: + return left_value == right_side + elif "!=" in operator: + return left_value != right_side + + # Length check: input.length > 0 + if ".length" in code_stripped: + return len(raw_input) > 0 + + # Truthy check + if code_stripped in ["input", "rawInput", "context.input"]: + return bool(raw_input) + + # Default: try to eval as Python (not recommended for production) + # For safety, default to True for unknown expressions + return True + diff --git a/backend/backend.log b/backend/backend.log deleted file mode 100644 index 05a2f7ac..00000000 --- a/backend/backend.log +++ /dev/null @@ -1,103 +0,0 @@ -INFO: Started server process [65458] -INFO: Waiting for application startup. -2025-12-25 19:44:34,301 - app.main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ - self._dbapi_connection = engine.raw_connection() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3292, in raw_connection - return self.pool.connect() - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 452, in connect - return _ConnectionFairy._checkout(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1269, in _checkout - fairy = _ConnectionRecord.checkout(pool) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 716, in checkout - rec = pool._do_get() - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 169, in _do_get - with util.safe_reraise(): - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ - raise exc_value.with_traceback(exc_tb) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 167, in _do_get - return self._create_connection() - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 393, in _create_connection - return _ConnectionRecord(self) - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 678, in __init__ - self.__connect() - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 902, in __connect - with util.safe_reraise(): - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ - raise exc_value.with_traceback(exc_tb) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 898, in __connect - self.dbapi_connection = connection = pool._invoke_creator(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 637, in connect - return dialect.connect(*cargs, **cparams) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 616, in connect - return self.loaded_dbapi.connect(*cargs, **cparams) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 936, in connect - await_only(creator_fn(*arg, **kw)), - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 125, in await_only - return current.driver.switch(awaitable) # type: ignore[no-any-return] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 185, in greenlet_spawn - value = await result - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/asyncpg/connection.py", line 2329, in connect - return await connect_utils._connect( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 1017, in _connect - raise last_error or exceptions.TargetServerAttributeNotMatched( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 991, in _connect - conn = await _connect_addr( - ^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 828, in _connect_addr - return await __connect_addr(params, True, *args) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 873, in __connect_addr - tr, pr = await connector - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/asyncpg/connect_utils.py", line 744, in _create_ssl_connection - tr, pr = await loop.create_connection( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "uvloop/loop.pyx", line 2043, in create_connection - File "uvloop/loop.pyx", line 2020, in uvloop.loop.Loop.create_connection -ConnectionRefusedError: [Errno 111] Connection refused - -ERROR: Application startup failed. Exiting. diff --git a/backend/server.log b/backend/server.log deleted file mode 100644 index e39db883..00000000 --- a/backend/server.log +++ /dev/null @@ -1,6865 +0,0 @@ -INFO: Will watch for changes in these directories: ['/workspace/project/NOP/backend'] -INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) -INFO: Started reloader process [3888] using WatchFiles -2025-12-25 17:30:02,410 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:02,760 - watchfiles.main - INFO - 1 change detected -INFO: Started server process [3974] -INFO: Waiting for application startup. -2025-12-25 17:30:02,961 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:30:03,111 - watchfiles.main - INFO - 2 changes detected -2025-12-25 17:30:03,461 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:03,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:04,162 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:04,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:04,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:05,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:05,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:05,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:06,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:06,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:06,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:07,317 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:07,667 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:08,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:08,368 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:08,719 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:09,069 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:09,420 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:09,770 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:10,121 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:10,471 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:10,822 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:11,172 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:11,523 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:11,873 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:12,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:12,574 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:12,925 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:13,275 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:13,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:13,976 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:14,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:14,677 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:15,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:15,378 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:15,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:16,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:16,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:16,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:17,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:17,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:17,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:18,182 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:18,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:18,883 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:19,234 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:19,584 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:19,935 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:20,285 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:20,636 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:20,986 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:21,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:21,687 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:22,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:22,388 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:22,739 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:23,089 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:23,440 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:23,790 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:24,141 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:24,491 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:24,842 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:25,192 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:25,543 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:25,893 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:26,244 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:26,594 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:26,945 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:27,295 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:27,646 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:27,996 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:28,348 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:28,699 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:29,049 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:29,400 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:29,750 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:30,101 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:30,451 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:30,802 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:31,152 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:31,503 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:31,853 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:32,204 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:32,555 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:32,905 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:33,256 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:33,606 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:33,957 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:34,307 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:34,658 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:35,008 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:35,359 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:35,709 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:36,060 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:36,410 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:36,761 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:37,111 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:37,462 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:37,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:38,163 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:38,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:38,864 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:39,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:39,565 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:39,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:40,266 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:40,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:40,967 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:41,317 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:41,668 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:42,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:42,369 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:42,719 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:43,070 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:43,420 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:43,771 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:44,121 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:44,472 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:44,822 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:45,173 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:45,523 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:45,874 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:46,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:46,575 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:46,925 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:47,276 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:47,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:47,977 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:48,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:48,678 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:49,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:49,379 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:49,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:50,080 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:50,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:50,781 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:51,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:51,482 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:51,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:52,183 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:52,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:52,884 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:53,234 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:53,585 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:53,935 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:54,286 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:54,636 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:54,987 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:55,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:55,688 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:56,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:56,389 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:56,739 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:57,090 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:57,440 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:57,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:58,143 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:58,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:58,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:59,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:59,545 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:30:59,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:00,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:00,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:00,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:01,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:01,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:01,999 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:02,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:02,700 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:03,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:03,401 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:03,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:04,102 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:04,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:04,803 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:05,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:05,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:05,857 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:06,208 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:06,559 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:06,909 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:07,260 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:07,610 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:07,961 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:08,312 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:08,662 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:09,013 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:09,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:09,714 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:10,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:10,417 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:10,768 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:11,119 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:11,470 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:11,820 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:12,171 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:12,522 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:12,873 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:13,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:13,575 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:13,926 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:14,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:14,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:14,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:15,332 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:15,682 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:16,033 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:16,383 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:16,734 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:17,085 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:17,435 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:17,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:18,139 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:18,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:18,840 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:19,191 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:19,541 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:19,892 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:20,242 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:20,593 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:20,944 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:21,295 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:21,645 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:21,996 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:22,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:22,697 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:23,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:23,398 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:23,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:24,099 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:24,450 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:24,800 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:25,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:25,501 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:25,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:26,202 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:26,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:26,904 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:27,254 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:27,606 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:27,957 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:28,307 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:28,658 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:29,008 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:29,359 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:29,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:30,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:30,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:30,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:31,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:31,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:31,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:32,167 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:32,517 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:32,868 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:33,219 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:33,569 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:33,920 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:34,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:34,621 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:34,972 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:35,323 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:35,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:36,025 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:36,378 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:36,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:37,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:37,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:37,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:38,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:38,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:38,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:39,183 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:39,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:39,884 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:40,235 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:40,585 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:40,936 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:41,287 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:41,637 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:41,988 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:42,339 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:42,689 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:43,040 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:43,390 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:43,744 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:44,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:44,445 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:44,796 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:45,146 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:45,497 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:45,848 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:46,198 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:46,549 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:46,900 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:47,250 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:47,601 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:47,951 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:48,302 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:48,653 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:49,004 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:49,355 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:49,706 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:50,056 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:50,407 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:50,758 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:51,108 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:51,459 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:51,809 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:52,160 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:52,511 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:52,861 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:53,212 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:53,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:53,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:54,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:54,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:54,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:55,322 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:55,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:56,024 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:56,375 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:56,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:57,076 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:57,427 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:57,778 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:58,129 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:58,479 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:58,830 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:59,180 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:59,531 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:31:59,881 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:00,232 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:00,582 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:00,933 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:01,284 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:01,634 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:01,985 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:02,335 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:02,686 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:03,036 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:03,387 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:03,737 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:04,088 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:04,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:04,789 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:05,139 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:05,490 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:05,840 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:06,191 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:06,541 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:06,892 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:07,243 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:07,593 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:07,944 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:08,294 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:08,645 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:08,995 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:09,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:09,697 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:10,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:10,398 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:10,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:11,100 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:11,450 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:11,801 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:12,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:12,502 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:12,853 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:13,203 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:13,554 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:13,904 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:14,255 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:14,605 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:14,956 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:15,306 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:15,657 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:16,007 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:16,358 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:16,708 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:17,059 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:17,409 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:17,760 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:18,111 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:18,461 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:18,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:19,162 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:19,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:19,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:20,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:20,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:20,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:21,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:21,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:21,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:22,317 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:22,667 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:23,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:23,368 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:23,719 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:24,069 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:24,420 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:24,770 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:25,121 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:25,471 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:25,822 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:26,172 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:26,523 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:26,873 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:27,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:27,574 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:27,925 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:28,275 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:28,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:28,976 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:29,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:29,677 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:30,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:30,378 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:30,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:31,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:31,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:31,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:32,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:32,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:32,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:33,182 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:33,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:33,883 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:34,234 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:34,584 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:34,935 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:35,285 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:35,636 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:35,986 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:36,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:36,687 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:37,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:37,388 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:37,739 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:38,089 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:38,440 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:38,790 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:39,141 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:39,491 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:39,842 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:40,192 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:40,543 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:40,893 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:41,244 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:41,594 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:41,945 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:42,295 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:42,646 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:42,996 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:43,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:43,697 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:44,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:44,398 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:44,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:45,099 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:45,450 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:45,800 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:46,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:46,501 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:46,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:47,202 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:47,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:47,903 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:48,254 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:48,604 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:48,955 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:49,305 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:49,656 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:50,006 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:50,357 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:50,707 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:51,058 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:51,408 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:51,759 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:52,109 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:52,460 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:52,810 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:53,161 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:53,511 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:53,862 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:54,212 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:54,563 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:54,913 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:55,264 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:55,615 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:55,965 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:56,316 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:56,666 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:57,017 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:57,367 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:57,718 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:58,068 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:58,419 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:58,769 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:59,120 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:59,470 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:32:59,821 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:00,171 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:00,522 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:00,872 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:01,223 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:01,573 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:01,924 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:02,274 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:02,625 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:02,975 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:03,326 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:03,676 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:04,027 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:04,377 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:04,728 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:05,078 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:05,429 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:05,779 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:06,130 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:06,480 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:06,831 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:07,181 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:07,532 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:07,882 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:08,233 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:08,583 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:08,934 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:09,284 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:09,635 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:09,986 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:10,336 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:10,687 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:11,037 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:11,388 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:11,738 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:12,089 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:12,439 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:12,790 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:13,140 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:13,491 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:13,841 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:14,192 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:14,542 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:14,893 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:15,244 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:15,594 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:15,945 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:16,295 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:16,646 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:16,996 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:17,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:17,697 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:18,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:18,398 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:18,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:19,099 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:19,450 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:19,800 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:20,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:20,501 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:20,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:21,202 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:21,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:21,903 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:22,254 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:22,604 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:22,955 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:23,305 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:23,656 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:24,006 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:24,357 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:24,707 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:25,058 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:25,408 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:25,759 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:26,109 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:26,460 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:26,810 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:27,161 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:27,511 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:27,862 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:28,212 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:28,563 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:28,913 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:29,264 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:29,614 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:29,965 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:30,315 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:30,666 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:31,016 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:31,367 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:31,717 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:32,068 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:32,418 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:32,769 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:33,119 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:33,470 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:33,820 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:34,171 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:34,521 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:34,872 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:35,222 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:35,573 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:35,923 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:36,274 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:36,624 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:36,975 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:37,325 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:37,676 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:38,026 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:38,377 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:38,727 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:39,078 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:39,428 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:39,779 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:40,129 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:40,480 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:40,830 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:41,181 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:41,532 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:41,882 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:42,232 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:42,583 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:42,933 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:43,284 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:43,634 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:43,985 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:44,335 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:44,686 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:45,036 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:45,387 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:45,738 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:46,088 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:46,439 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:46,789 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:47,140 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:47,490 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:47,841 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:48,191 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:48,542 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:48,892 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:49,243 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:49,593 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:49,944 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:50,294 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:50,645 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:50,995 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:51,346 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:51,696 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:52,047 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:52,397 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:52,748 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:53,098 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:53,449 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:53,799 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:54,150 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:54,500 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:54,851 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:55,201 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:55,552 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:55,902 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:56,253 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:56,603 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:56,954 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:57,304 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:57,655 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:58,005 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:58,356 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:58,706 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:59,057 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:59,407 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:33:59,758 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:00,108 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:00,459 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:00,809 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:01,160 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:01,510 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:01,861 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:02,211 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:02,562 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:02,912 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:03,263 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:03,613 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:03,964 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:04,314 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:04,665 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:05,015 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:05,366 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:05,716 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:06,067 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:06,417 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:06,768 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:07,118 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:07,469 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:07,819 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:08,170 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:08,520 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:08,871 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:09,221 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:09,572 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:09,922 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:10,273 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:10,623 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:10,974 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:11,324 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:11,675 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:12,025 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:12,376 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:12,726 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:13,077 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:13,427 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:13,778 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:14,128 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:14,479 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:14,829 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:15,180 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:15,530 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:15,881 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:16,231 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:16,582 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:16,932 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:17,283 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:17,633 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:17,984 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:18,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:18,687 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:19,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:19,389 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:19,740 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:20,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:20,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:20,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:21,146 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:21,499 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:21,850 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:22,200 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:22,554 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:22,905 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:23,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:23,607 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:23,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:24,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:24,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:25,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:25,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:25,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:26,064 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:26,415 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:26,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:27,118 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:27,468 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:27,819 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:28,169 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:28,520 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:28,870 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:29,221 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:29,571 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:29,922 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:30,272 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:30,623 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:30,973 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:31,324 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:31,675 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:32,025 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:32,421 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:32,771 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:33,122 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:33,473 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:33,823 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:34,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:34,524 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:34,875 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:35,225 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:35,576 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:35,926 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:36,277 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:36,627 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:36,978 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:37,328 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:37,679 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:38,029 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:38,380 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:38,730 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:39,081 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:39,431 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:39,782 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:40,132 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:40,483 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:40,833 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:41,184 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:41,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:41,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:42,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:42,588 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:42,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:43,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:43,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:43,990 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:44,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:44,691 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:45,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:45,392 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:45,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:46,093 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:46,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:46,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:47,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:47,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:47,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:48,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:48,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:48,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:49,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:49,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:49,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:50,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:50,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:51,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:51,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:51,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:52,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:52,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:52,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:53,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:53,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:53,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:54,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:54,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:54,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:55,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:55,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:55,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:56,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:56,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:56,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:57,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:57,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:58,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:58,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:58,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:59,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:59,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:34:59,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:00,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:00,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:00,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:01,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:01,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:01,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:02,217 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:02,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:02,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:03,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:03,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:03,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:04,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:04,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:05,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:05,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:05,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:06,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:06,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:06,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:07,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:07,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:07,825 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:08,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:08,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:08,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:09,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:09,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:09,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:10,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:10,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:10,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:11,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:11,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:12,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:12,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:12,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:13,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:13,433 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:13,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:14,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:14,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:14,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:15,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:15,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:15,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:16,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:16,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:16,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:17,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:17,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:17,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:18,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:18,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:19,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:19,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:19,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:20,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:20,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:20,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:21,144 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:21,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:21,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:22,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:22,546 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:22,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:23,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:23,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:23,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:24,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:24,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:24,999 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:25,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:25,700 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:26,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:26,401 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:26,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:27,102 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:27,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:27,803 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:28,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:28,504 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:28,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:29,205 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:29,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:29,906 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:30,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:30,607 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:30,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:31,308 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:31,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:32,009 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:32,360 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:32,710 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:33,061 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:33,411 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:33,762 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:34,112 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:34,463 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:34,813 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:35,164 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:35,514 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:35,865 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:36,215 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:36,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:36,916 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:37,267 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:37,617 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:37,968 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:38,318 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:38,669 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:39,019 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:39,370 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:39,720 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:40,071 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:40,421 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:40,772 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:41,122 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:41,473 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:41,823 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:42,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:42,524 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:42,875 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:43,225 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:43,576 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:43,926 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:44,277 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:44,627 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:44,978 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:45,328 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:45,679 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:46,029 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:46,380 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:46,730 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:47,081 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:47,431 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:47,782 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:48,132 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:48,483 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:48,833 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:49,184 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:49,534 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:49,885 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:50,235 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:50,586 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:50,936 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:51,287 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:51,637 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:51,988 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:52,338 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:52,689 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:53,039 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:53,390 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:53,740 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:54,091 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:54,442 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:54,792 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:55,142 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:55,493 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:55,844 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:56,194 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:56,545 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:56,895 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:57,246 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:57,596 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:57,946 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:58,297 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:58,648 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:58,998 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:59,348 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:35:59,699 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:00,049 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:00,400 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:00,751 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:01,101 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:01,452 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:01,802 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:02,153 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:02,503 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:02,854 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:03,204 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:03,555 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:03,905 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:04,256 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:04,606 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:04,957 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:05,307 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:05,658 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:06,008 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:06,359 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:06,709 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:07,060 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:07,410 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:07,761 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:08,111 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:08,462 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:08,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:09,163 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:09,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:09,864 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:10,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:10,565 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:10,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:11,266 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:11,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:11,967 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:12,317 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:12,668 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:13,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:13,369 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:13,719 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:14,070 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:14,420 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:14,771 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:15,121 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:15,472 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:15,822 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:16,173 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:16,523 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:16,874 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:17,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:17,575 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:17,925 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:18,276 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:18,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:18,977 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:19,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:19,678 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:20,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:20,379 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:20,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:21,080 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:21,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:21,781 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:22,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:22,482 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:22,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:23,183 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:23,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:23,884 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:24,234 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:24,585 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:24,935 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:25,286 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:25,636 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:25,987 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:26,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:26,688 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:27,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:27,389 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:27,739 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:28,090 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:28,440 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:28,791 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:29,141 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:29,492 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:29,842 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:30,193 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:30,543 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:30,894 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:31,244 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:31,595 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:31,945 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:32,296 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:32,646 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:32,997 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:33,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:33,698 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:34,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:34,399 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:34,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:35,100 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:35,450 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:35,801 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:36,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:36,502 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:36,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:37,203 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:37,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:37,904 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:38,254 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:38,605 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:38,955 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:39,306 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:39,656 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:40,007 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:40,357 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:40,708 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:41,058 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:41,409 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:41,759 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:42,110 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:42,461 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:42,811 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:43,162 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:43,512 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:43,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:44,213 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:44,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:44,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:45,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:45,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:45,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:46,317 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:46,667 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:47,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:47,368 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:47,719 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:48,069 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:48,420 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:48,770 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:49,121 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:49,471 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:49,822 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:50,172 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:50,523 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:50,873 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:51,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:51,574 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:51,925 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:52,275 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:52,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:52,976 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:53,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:53,677 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:54,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:54,378 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:54,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:55,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:55,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:55,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:56,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:56,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:56,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:57,182 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:57,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:57,883 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:58,234 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:58,585 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:58,935 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:59,286 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:59,636 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:36:59,987 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:00,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:00,688 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:01,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:01,389 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:01,739 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:02,090 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:02,440 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:02,791 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:03,141 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:03,492 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:03,842 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:04,193 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:04,544 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:04,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:05,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:05,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:05,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:06,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:06,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:06,999 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:07,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:07,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:08,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:08,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:08,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:09,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:09,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:09,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:10,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:10,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:10,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:11,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:11,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:11,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:12,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:12,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:12,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:13,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:13,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:14,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:14,360 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:14,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:15,061 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:15,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:15,762 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:16,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:16,463 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:16,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:17,164 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:17,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:17,865 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:18,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:18,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:18,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:19,267 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:19,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:19,968 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:20,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:20,669 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:21,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:21,370 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:21,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:22,071 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:22,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:22,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:23,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:23,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:23,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:24,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:24,525 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:24,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:25,226 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:25,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:25,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:26,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:26,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:26,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:27,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:27,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:28,030 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:28,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:28,731 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:29,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:29,432 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:29,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:30,133 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:30,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:30,834 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:31,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:31,535 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:31,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:32,236 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:32,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:32,937 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:33,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:33,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:33,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:34,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:34,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:35,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:35,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:35,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:36,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:36,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:36,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:37,144 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:37,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:37,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:38,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:38,546 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:38,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:39,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:39,598 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:39,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:40,299 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:40,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:41,000 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:41,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:41,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:42,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:42,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:42,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:43,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:43,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:43,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:44,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:44,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:44,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:45,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:45,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:45,906 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:46,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:46,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:46,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:47,309 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/discovery_service.py'. Reloading... -2025-12-25 17:37:47,668 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:48,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:48,369 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [17057] -INFO: Waiting for application startup. -2025-12-25 17:37:48,467 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:37:48,720 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:49,070 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:49,421 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:49,771 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:50,122 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:50,472 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:50,823 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:51,173 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:51,524 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:51,874 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/discovery_service.py'. Reloading... -2025-12-25 17:37:52,226 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:52,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:52,927 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [17186] -INFO: Waiting for application startup. -2025-12-25 17:37:53,044 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:37:53,280 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/discovery.py'. Reloading... -2025-12-25 17:37:53,645 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:53,995 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:37:54,346 - watchfiles.main - INFO - 1 change detected -INFO: Started server process [17257] -INFO: Waiting for application startup. -2025-12-25 17:37:54,421 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:37:54,696 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:55,047 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:55,397 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/discovery.py'. Reloading... -2025-12-25 17:37:55,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:56,099 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:37:56,450 - watchfiles.main - INFO - 1 change detected -INFO: Started server process [17340] -INFO: Waiting for application startup. -2025-12-25 17:37:56,493 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:37:56,801 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:57,152 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:57,552 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/discovery.py'. Reloading... -2025-12-25 17:37:57,904 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:58,255 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:58,605 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [17441] -INFO: Waiting for application startup. -2025-12-25 17:37:58,676 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:37:58,956 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:59,306 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:37:59,657 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:00,007 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:00,358 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:00,708 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:01,059 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:01,409 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:01,760 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:02,110 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:02,461 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:02,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:03,162 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:03,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:03,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:04,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:04,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:04,914 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/access.py'. Reloading... -2025-12-25 17:38:05,266 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:05,617 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:05,967 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [17598] -INFO: Waiting for application startup. -2025-12-25 17:38:05,993 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhaERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/2025-12-25 17:38:06,318 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:06,668 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:07,019 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:07,369 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:07,719 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/access.py'. Reloading... -2025-12-25 17:38:08,071 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:08,421 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:08,772 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [17656] -INFO: Waiting for application startup. -2025-12-25 17:38:08,882 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in _2025-12-25 17:38:09,122 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:09,473 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:09,823 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:10,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:10,524 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/auth.py'. Reloading... -2025-12-25 17:38:10,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:11,226 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:38:11,577 - watchfiles.main - INFO - 1 change detected -INFO: Started server process [17766] -INFO: Waiting for application startup. -2025-12-25 17:38:11,633 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in sta2025-12-25 17:38:11,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:12,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:12,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:12,979 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/auth.py'. Reloading... -2025-12-25 17:38:13,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:13,681 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:38:14,031 - watchfiles.main - INFO - 1 change detected -INFO: Started server process [17911] -INFO: Waiting for application startup. -2025-12-25 17:38:14,111 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/pythonINFO: Started server process [17910] -INFO: Waiting for application startup. -2025-12-25 17:38:14,142 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_2025-12-25 17:38:14,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:14,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:15,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:15,433 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:15,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:16,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:16,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:16,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:17,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:17,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:17,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:18,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:18,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:18,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:19,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:19,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:19,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:20,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:20,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:21,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:21,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:21,741 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:22,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:22,442 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:22,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:23,143 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:23,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:23,844 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:24,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:24,545 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:24,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:25,246 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:25,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:25,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:26,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:26,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:27,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:27,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:27,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:28,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:28,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:28,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:29,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:29,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:29,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:30,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:30,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:30,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:31,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:31,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:31,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:32,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:32,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:32,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:33,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:33,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:34,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:34,360 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:34,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:35,061 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:35,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:35,762 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:36,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:36,463 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:36,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:37,164 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:37,514 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:37,865 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:38,215 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:38,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:38,916 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:39,267 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:39,617 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:39,968 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:40,318 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:40,669 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:41,019 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:41,370 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:41,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:42,071 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:42,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:42,772 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:43,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:43,473 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:43,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:44,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:44,525 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:44,875 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:45,226 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:45,576 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:45,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:46,277 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:46,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:46,978 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:47,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:47,679 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:48,030 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/discovery_service.py'. Reloading... -2025-12-25 17:38:48,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:48,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:49,083 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [19131] -INFO: Waiting for application startup. -2025-12-25 17:38:49,145 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^2025-12-25 17:38:49,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:49,785 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:50,135 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:50,486 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:50,836 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:51,187 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:51,537 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:51,888 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:52,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:52,589 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:52,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:53,290 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:53,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:53,991 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:54,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:54,692 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:55,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:55,393 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:55,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:56,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:56,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:56,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:57,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:57,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:57,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:58,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:58,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:58,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:59,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:59,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:38:59,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:00,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:00,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:01,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:01,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:01,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:02,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:02,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:02,754 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:03,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:03,455 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:03,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:04,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:04,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:04,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:05,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:05,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:05,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:06,259 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:06,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:06,960 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:07,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:07,661 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:08,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:08,362 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:08,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:09,063 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:09,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:09,764 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:10,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:10,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:10,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:11,166 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:11,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:11,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:12,217 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:12,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:12,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:13,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:13,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:13,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:14,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:14,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:15,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:15,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:15,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:16,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:16,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:16,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:17,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:17,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:17,826 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:18,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:18,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:18,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:19,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:19,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:19,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:20,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:20,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:20,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:21,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:21,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:22,032 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:22,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:22,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:23,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:23,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:23,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:24,135 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:24,485 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:24,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:25,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:25,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:25,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:26,237 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/scanner.py'. Reloading... -2025-12-25 17:39:26,591 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:26,941 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:27,292 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [20571] -INFO: Waiting for application startup. -2025-12-25 17:39:27,410 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.eINFO: Started server process [20575] -INFO: Waiting for application startup. -2025-12-25 17:39:27,437 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ - self._dbapi_connection = engine.raw_connection() - ^^^^2025-12-25 17:39:27,643 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:27,993 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:28,344 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:28,694 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:29,045 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:29,396 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:29,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:30,097 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:30,447 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:30,798 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:31,148 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:31,499 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:31,849 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:32,200 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:32,550 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:32,901 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:33,251 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:33,602 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:33,952 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:34,303 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:34,653 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:35,004 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:35,354 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:35,705 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:36,055 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:36,406 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:36,756 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:37,107 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:37,457 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:37,808 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:38,158 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:38,509 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:38,859 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:39,210 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:39,560 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:39,911 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:40,261 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:40,612 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:40,963 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:41,313 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:41,663 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:42,014 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:42,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:42,715 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:43,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:43,416 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:43,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:44,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:44,468 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:44,818 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:45,169 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:45,519 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:45,870 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:46,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:46,571 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:46,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:47,272 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:47,622 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:47,973 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:48,323 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:48,674 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:49,024 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:49,375 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:49,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:50,076 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:50,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:50,777 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:51,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:51,478 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:51,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:52,179 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:52,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:52,880 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:53,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:53,581 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:53,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:54,282 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:54,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:54,983 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:55,333 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:55,684 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:56,034 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:56,385 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:56,735 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:57,086 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:57,436 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:57,787 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:58,137 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:58,488 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:58,838 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/discovery.py'. Reloading... -2025-12-25 17:39:59,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:59,541 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:39:59,891 - watchfiles.main - INFO - 6 changes detected -INFO: Started server process [21642] -INFO: Waiting for application startup. -2025-12-25 17:39:59,968 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ - self._dbapi_connection = engine.raw_connection() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3292, in raw_connection - return self.pool.connect() - ^^^^^^^^^^^^^^^^^^^ - File "/openhands2025-12-25 17:40:00,242 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:00,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:00,943 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:01,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:01,644 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:01,995 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:02,345 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:02,696 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:03,046 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:03,397 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:03,747 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:04,098 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:04,448 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:04,799 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:05,149 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:05,500 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:05,850 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:06,201 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:06,551 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:06,902 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:07,252 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:07,603 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:07,953 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:08,304 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:08,655 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:09,005 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:09,355 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:09,706 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:10,056 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:10,407 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:10,757 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:11,108 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:11,459 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:11,809 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:12,159 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:12,510 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:12,861 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:13,211 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:13,561 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:13,912 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:14,263 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:14,613 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:14,963 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:15,314 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:15,665 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:16,015 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:16,366 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:16,716 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:17,067 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:17,417 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:17,768 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:18,118 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:18,469 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:18,819 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:19,170 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:19,520 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:19,871 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:20,221 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:20,572 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:20,922 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:21,273 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:21,623 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:21,974 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:22,324 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:22,675 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:23,025 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:23,376 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:23,726 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:24,077 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:24,427 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:24,778 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:25,128 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:25,479 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:25,829 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:26,180 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:26,530 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:26,881 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:27,232 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:27,582 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:27,933 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:28,283 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:28,634 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:28,984 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:29,335 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:29,685 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:30,036 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:30,386 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:30,737 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:31,087 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:31,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:31,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:32,138 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:32,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:32,839 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:33,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:33,540 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:33,891 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:34,241 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:34,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:34,942 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:35,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:35,643 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:35,994 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:36,344 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:36,695 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:37,045 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:37,396 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:37,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:38,097 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:38,447 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:38,798 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:39,148 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:39,499 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:39,849 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:40,200 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:40,550 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:40,901 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:41,252 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:41,602 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:41,954 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:42,304 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:42,654 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:43,005 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:43,355 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:43,706 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:44,056 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:44,407 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:44,757 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:45,108 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:45,458 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:45,808 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:46,159 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:46,509 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:46,860 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:47,210 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:47,561 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:47,911 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:48,262 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:48,612 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:48,963 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:49,313 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:49,664 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:50,014 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:50,365 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:50,715 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:51,066 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:51,416 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:51,767 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:52,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:52,468 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/discovery_service.py'. Reloading... -2025-12-25 17:40:52,823 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:53,173 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:53,524 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [23004] -INFO: Waiting for application startup. -2025-12-25 17:40:53,625 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:40:53,876 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/discovery_service.py'. Reloading... -2025-12-25 17:40:54,249 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:54,649 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [23108] -INFO: Waiting for application startup. -2025-12-25 17:40:54,991 - main - INFO - Starting Network Observatory Platform... -2025-12-25 17:40:55,000 - watchfiles.main - INFO - 1 change detected -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.2025-12-25 17:40:55,003 - watchfiles.main - INFO - 1 change detected -INFO: Started server process [23106] -INFO: Waiting for application startup. -2025-12-25 17:40:55,017 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ - self._dbapi_connection = engine.raw_connection() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3292, in raw_connection - return self.pool.connect() - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 452, in connect - return _ConnectionFairy._checkout(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1269, in _checkout - fairy = _ConnectionRecord.checkout(pool) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.2025-12-25 17:40:55,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:55,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:56,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:56,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:56,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:57,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:57,457 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:57,807 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:58,157 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:58,508 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:58,858 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:59,209 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:59,559 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:40:59,910 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:00,260 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:00,611 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:00,961 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:01,312 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:01,662 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:02,013 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:02,363 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:02,714 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:03,064 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:03,415 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:03,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:04,116 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:04,467 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:04,817 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:05,168 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:05,518 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:05,869 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:06,219 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:06,570 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:06,920 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:07,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:07,621 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:07,972 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:08,322 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:08,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:09,023 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:09,374 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:09,724 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:10,075 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:10,425 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:10,776 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:11,126 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:11,477 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:11,827 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:12,178 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:12,528 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:12,879 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:13,229 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:13,580 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:13,930 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:14,281 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:14,631 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:14,982 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:15,332 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:15,683 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:16,033 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:16,384 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:16,734 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:17,085 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:17,435 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:17,786 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:18,136 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:18,487 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:18,837 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:19,188 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:19,538 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:19,889 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:20,239 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:20,590 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:20,940 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:21,291 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:21,641 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:21,992 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:22,342 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:22,693 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:23,043 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:23,394 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:23,744 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:24,095 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:24,445 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:24,796 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:25,146 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:25,497 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:25,847 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:26,198 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/discovery.py'. Reloading... -2025-12-25 17:41:26,550 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:26,900 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:27,251 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [24169] -INFO: Waiting for application startup. -2025-12-25 17:41:27,403 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py"ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ - self._dbapi_connection = engine.raw_connection() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3292, in raw_connection - return self.pool.connect() - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 452, in connect - return _ConnectionFairy._checkout(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1269, in _checkout - fairy = _ConnectionRecord.checkout(pool) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 716, in checkout - rec = pool._do_get() - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 169, in _do2025-12-25 17:41:27,601 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:27,952 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:28,303 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:28,654 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:29,004 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:29,355 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:29,705 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:30,056 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:30,406 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:30,757 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:31,107 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:31,458 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:31,808 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:32,159 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:32,509 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:32,860 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:33,210 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:33,561 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:33,911 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:34,261 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:34,612 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:34,962 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:35,313 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:35,663 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:36,014 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:36,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:36,715 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:37,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:37,416 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:37,767 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:38,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:38,468 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:38,818 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:39,169 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:39,519 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:39,870 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:40,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:40,571 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:40,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:41,272 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:41,622 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:41,973 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:42,323 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:42,674 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:43,024 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:43,375 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:43,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:44,076 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:44,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:44,777 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:45,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:45,478 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:45,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:46,179 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:46,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:46,880 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:47,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:47,581 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:47,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:48,282 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:48,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:48,983 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:49,333 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:49,684 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:50,034 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:50,385 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:50,735 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:51,086 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:51,436 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:51,787 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:52,137 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:52,488 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:52,838 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:53,189 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:53,539 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:53,890 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:54,240 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:54,591 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:54,941 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:55,292 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:55,642 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:55,993 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:56,343 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:56,694 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:57,044 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:57,395 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:57,745 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:58,096 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:58,447 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:58,797 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:59,148 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:59,498 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:41:59,849 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:00,199 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:00,550 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:00,900 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:01,251 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:01,601 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:01,952 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:02,302 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:02,653 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:03,003 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:03,354 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:03,704 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:04,055 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:04,405 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:04,756 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:05,106 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:05,457 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:05,807 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:06,158 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:06,508 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:06,859 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:07,210 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:07,560 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:07,910 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:08,261 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:08,611 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:08,962 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:09,312 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:09,663 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:10,014 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:10,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:10,715 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:11,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:11,416 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:11,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:12,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:12,467 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:12,817 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:13,168 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:13,519 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:13,869 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:14,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:14,570 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:14,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:15,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:15,622 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:15,972 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:16,323 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:16,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:17,024 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:17,374 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:17,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:18,075 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:18,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:18,776 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:19,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:19,477 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:19,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:20,178 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:20,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:20,879 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:21,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:21,580 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:21,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:22,281 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:22,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:22,982 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:23,333 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:23,683 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:24,034 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:24,384 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:24,735 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:25,085 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:25,436 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:25,786 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:26,137 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:26,487 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:26,838 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:27,189 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:27,539 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:27,890 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:28,240 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:28,591 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:28,941 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:29,292 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:29,642 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:29,993 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:30,343 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:30,694 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:31,044 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:31,395 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/SnifferService.py'. Reloading... -2025-12-25 17:42:31,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:32,097 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:32,450 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [26238] -INFO: Waiting for application startup. -2025-12-25 17:42:32,558 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 192, in greenlet_spawn - result = context.switch(value) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/schema.py", line 5828, in create_all - bind._run_ddl_visitor( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2447, in _run_ddl_visitor - visitorcallable(self.dialect, self, **kwargs).traverse_single(element) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 919, in visit_metadata - self.traverse_single( - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 671, in traverse_single - return meth(obj, **kw) - ^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 957, in visit_table - )._invoke_with(self.connection) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 315, in _invoke_with - return bind.execute(self) - ^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1416, in execute - return meth( - ^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 181, in _execute_on_connection - return connection._execute_ddl( - ^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1525, in _execute_ddl - compiled = ddl.compile( - ^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 308, in compile - return self._compiler(dialect, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py", line 69, in _compiler - return dialect.ddl_compiler(dialect, self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 867, in __init__ - self.string = self.process(self.statement, **compile_kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6497, in visit_create_table - raise exc.CompileError( -sqlalchemy.exc.CompileError: (in table 'users', column 'id'): Compiler can't render element of type UUID - -ERROR: Application startup failed. Exiting. -2025-12-25 17:42:32,801 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:33,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:33,502 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:33,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:34,202 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:34,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:34,903 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:35,254 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/SnifferService.py'. Reloading... -2025-12-25 17:42:35,605 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:35,956 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:36,309 - watchfiles.main - INFO - 4 changes detected -INFO: Started server process [26301] -INFO: Waiting for application startup. -2025-12-25 17:42:36,358 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 139, in _compiler_dispatch - meth = getter(visitor) - ^^^^^^^^^^^^^^^ -AttributeError: 'SQLiteTypeCompiler' object has no attribute 'visit_UUID'. Did you mean: 'visit_uuid'? - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6487, in visit_create_table - processed = self.process( - ^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 912, in process - return obj._compiler_dispatch(self, **kwargs) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 143, in _compiler_dispatch - return meth(self, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 6518, in visit_create_column - text = self.get_column_specification(column, first_pk=first_pk) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/dialects/sqlite/base.py", line 1534, in get_column_specification - coltype = self.dialect.type_compiler_instance.process( - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 957, in process - return type_._compiler_dispatch(self, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py", line 141, in _compiler_dispatch - return visitor.visit_unsupported_compilation(self, err, **kw) # type: ignore # noqa: E501 - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/sql/compiler.py", line 962, in visit_unsupported_compilation - raise exc.UnsupportedCompilationError(self, element) from err -sqlalchemy.exc.UnsupportedCompilationError: Compiler can't render element of type UUID (Background on this error at: https://sqlalche.me/e/20/l7de) - -The above exception was the direct cause of the following exception: - -Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 33, in lifespan - await conn.run_sync(Base.metadata.create_all) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 886, in run_sync - return await greenlet_spawn(fn, self._proxied, *arg, **kw) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lINFO: Started server process [26300] -INFO: Waiting for application startup. -2025-12-25 17:42:36,401 - main - INFO - Starting Network Observatory Platform... -ERROR: Traceback (most recent call last): - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/starlette/routing.py", line 677, in lifespan - async with self.lifespan_context(app) as maybe_state: - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/workspace/project/NOP/backend/app/main.py", line 32, in lifespan - async with engine.begin() as conn: - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/contextlib.py", line 210, in __aenter__ - return await anext(self.gen) - ^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 1061, in begin - async with conn: - ^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py", line 125, in __aenter__ - return await self.start(is_ctxmanager=True) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py", line 270, in start - await greenlet_spawn(self.sync_engine.connect) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 190, in greenlet_spawn - result = context.throw(*sys.exc_info()) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3268, in connect - return self._connection_cls(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 145, in __init__ - self._dbapi_connection = engine.raw_connection() - ^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3292, in raw_connection - return self.pool.connect() - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 452, in connect - return _ConnectionFairy._checkout(self) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1269, in _checkout - fairy = _ConnectionRecord.checkout(pool) - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 716, in checkout - rec = pool._do_get() - ^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 169, in _do_get - with util.safe_reraise(): - ^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__ - raise exc_value.with_traceback(exc_tb) - File "/openhands/micromamba/envs/openhands/lib/python3.12/site-packages/sqlalchemy/pool/impl.py", line 167, in _do_get - return self._create_connection() - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/e2025-12-25 17:42:36,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:37,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:37,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:37,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:38,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:38,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:38,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:39,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:39,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:39,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:40,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:40,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:40,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:41,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:41,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:41,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:42,267 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:42,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:42,968 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:43,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:43,669 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:44,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:44,370 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:44,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:45,071 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:45,421 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:45,772 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:46,122 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:46,473 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:46,823 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:47,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:47,524 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:47,875 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:48,225 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:48,576 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:48,926 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:49,277 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:49,627 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:49,977 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:50,328 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:50,678 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:51,029 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:51,379 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:51,730 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:52,080 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:52,431 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:52,781 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:53,132 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:53,482 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:53,833 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:54,183 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:54,534 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:54,884 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:55,235 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:55,585 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:55,936 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:56,286 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:56,637 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:56,987 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:57,338 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:57,688 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:58,039 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:58,389 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:58,740 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:59,090 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:59,441 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:42:59,791 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:00,142 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:00,492 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:00,843 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:01,193 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:01,544 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:01,894 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:02,245 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/SnifferService.py'. Reloading... -2025-12-25 17:43:02,596 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:02,947 - watchfiles.main - INFO - 1 change detected -Traceback (most recent call last): - File "", line 1, in - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 122, in spawn_main - exitcode = _main(fd, parent_sentinel) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 131, in _main - prepare(preparation_data) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 246, in prepare - _fixup_main_from_path(data['init_main_from_path']) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 297, in _fixup_main_from_path - main_content = runpy.run_path(main_path, - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "", line 287, in run_path - File "", line 98, in _run_module_code - File "", line 88, in _run_code - File "/workspace/project/NOP/backend/app/main.py", line 14, in - from app.api.v1.router import api_router - File "/workspace/project/NOP/backend/app/api/v1/router.py", line 6, in - from app.api.v1.endpoints import ( - File "/workspace/project/NOP/backend/app/api/v1/endpoints/traffic.py", line 4, in - from app.services.SnifferService import sniffer_service - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 10, in - class SnifferService: - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 123, in SnifferService - def get_stats(self) -> Dict[str, Any]: - ^^^ -NameError: name 'Any' is not defined. Did you mean: 'any'? -2025-12-25 17:43:03,298 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:43:03,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:03,999 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/api/v1/endpoints/traffic.py'. Reloading... -2025-12-25 17:43:04,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:04,701 - watchfiles.main - INFO - 1 change detected -Traceback (most recent call last): - File "", line 1, in - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 122, in spawn_main - exitcode = _main(fd, parent_sentinel) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 131, in _main - prepare(preparation_data) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 246, in prepare - _fixup_main_from_path(data['init_main_from_path']) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 297, in _fixup_main_from_path - main_content = runpy.run_path(main_path, - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "", line 287, in run_path - File "", line 98, in _run_module_code - File "", line 88, in _run_code - File "/workspace/project/NOP/backend/app/main.py", line 14, in - from app.api.v1.router import api_router - File "/workspace/project/NOP/backend/app/api/v1/router.py", line 6, in - from app.api.v1.endpoints import ( - File "/workspace/project/NOP/backend/app/api/v1/endpoints/traffic.py", line 4, in - from app.services.SnifferService import sniffer_service - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 10, in - class SnifferService: - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 123, in SnifferService - def get_stats(self) -> Dict[str, Any]: - ^^^ -NameError: name 'Any' is not defined. Did you mean: 'any'? -2025-12-25 17:43:05,053 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:43:05,404 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:05,755 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:06,105 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:06,456 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:06,806 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:07,157 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:07,507 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:07,858 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:08,208 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:08,559 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:08,909 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:09,260 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:09,610 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:09,961 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:10,311 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:10,662 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:11,012 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:11,363 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:11,713 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:12,064 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:12,414 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:12,765 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:13,115 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:13,466 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:13,817 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:14,167 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:14,518 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:14,918 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/schemas/asset.py'. Reloading... -2025-12-25 17:43:15,270 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:15,671 - watchfiles.main - INFO - 4 changes detected -Traceback (most recent call last): - File "", line 1, in - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 122, in spawn_main - exitcode = _main(fd, parent_sentinel) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 131, in _main - prepare(preparation_data) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 246, in prepare - _fixup_main_from_path(data['init_main_from_path']) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 297, in _fixup_main_from_path - main_content = runpy.run_path(main_path, - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "", line 287, in run_path - File "", line 98, in _run_module_code - File "", line 88, in _run_code - File "/workspace/project/NOP/backend/app/main.py", line 14, in - from app.api.v1.router import api_router - File "/workspace/project/NOP/backend/app/api/v1/router.py", line 6, in - from app.api.v1.endpoints import ( - File "/workspace/project/NOP/backend/app/api/v1/endpoints/traffic.py", line 4, in - from app.services.SnifferService import sniffer_service - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 10, in - class SnifferService: - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 123, in SnifferService - def get_stats(self) -> Dict[str, Any]: - ^^^ -NameError: name 'Any' is not defined. Did you mean: 'any'? -2025-12-25 17:43:16,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:16,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:16,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:17,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:17,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:17,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:18,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:18,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:18,825 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/asset_service.py'. Reloading... -2025-12-25 17:43:19,177 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:19,577 - watchfiles.main - INFO - 4 changes detected -Traceback (most recent call last): - File "", line 1, in - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 122, in spawn_main - exitcode = _main(fd, parent_sentinel) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 131, in _main - prepare(preparation_data) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 246, in prepare - _fixup_main_from_path(data['init_main_from_path']) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 297, in _fixup_main_from_path - main_content = runpy.run_path(main_path, - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "", line 287, in run_path - File "", line 98, in _run_module_code - File "", line 88, in _run_code - File "/workspace/project/NOP/backend/app/main.py", line 14, in - from app.api.v1.router import api_router - File "/workspace/project/NOP/backend/app/api/v1/router.py", line 6, in - from app.api.v1.endpoints import ( - File "/workspace/project/NOP/backend/app/api/v1/endpoints/traffic.py", line 4, in - from app.services.SnifferService import sniffer_service - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 10, in - class SnifferService: - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 123, in SnifferService - def get_stats(self) -> Dict[str, Any]: - ^^^ -NameError: name 'Any' is not defined. Did you mean: 'any'? -2025-12-25 17:43:19,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:20,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:20,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:20,979 - watchfiles.main - INFO - 2 changes detected -WARNING: WatchFiles detected changes in 'app/services/asset_service.py'. Reloading... -2025-12-25 17:43:21,331 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:21,682 - watchfiles.main - INFO - 1 change detected -Traceback (most recent call last): - File "", line 1, in - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 122, in spawn_main - exitcode = _main(fd, parent_sentinel) - ^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 131, in _main - prepare(preparation_data) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 246, in prepare - _fixup_main_from_path(data['init_main_from_path']) - File "/openhands/micromamba/envs/openhands/lib/python3.12/multiprocessing/spawn.py", line 297, in _fixup_main_from_path - main_content = runpy.run_path(main_path, - ^^^^^^^^^^^^^^^^^^^^^^^^^ - File "", line 287, in run_path - File "", line 98, in _run_module_code - File "", line 88, in _run_code - File "/workspace/project/NOP/backend/app/main.py", line 14, in - from app.api.v1.router import api_router - File "/workspace/project/NOP/backend/app/api/v1/router.py", line 6, in - from app.api.v1.endpoints import ( - File "/workspace/project/NOP/backend/app/api/v1/endpoints/traffic.py", line 4, in - from app.services.SnifferService import sniffer_service - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 10, in - class SnifferService: - File "/workspace/project/NOP/backend/app/services/SnifferService.py", line 123, in SnifferService - def get_stats(self) -> Dict[str, Any]: - ^^^ -NameError: name 'Any' is not defined. Did you mean: 'any'? -2025-12-25 17:43:22,035 - watchfiles.main - INFO - 4 changes detected -2025-12-25 17:43:22,385 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:22,736 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:23,086 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:23,436 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:23,787 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:24,137 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:24,488 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:24,838 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:25,189 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:25,539 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:25,890 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:26,240 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:26,591 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:26,941 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:27,292 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:27,642 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:27,993 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:28,343 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:28,693 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:29,044 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:29,394 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:29,745 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:30,095 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:30,446 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:30,796 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:31,147 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:31,497 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:31,848 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:32,198 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:32,548 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:32,899 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:33,249 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:33,600 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:33,950 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:34,301 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:34,651 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:35,002 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:35,353 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:35,703 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:36,054 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:36,404 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:36,755 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:37,105 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:37,456 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:37,806 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:38,157 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:38,507 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:38,857 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:39,208 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:39,558 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:39,909 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:40,260 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:40,610 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:40,961 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:41,311 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:41,662 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:42,012 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:42,363 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:42,713 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:43,064 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:43,414 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:43,764 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:44,115 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:44,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:44,816 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:45,166 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:45,517 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:45,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:46,218 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:46,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:46,919 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:47,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:47,620 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:47,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:48,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:48,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:49,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:49,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:49,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:50,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:50,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:50,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:51,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:51,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:51,825 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:52,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:52,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:52,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:53,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:53,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:53,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:54,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:54,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:54,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:55,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:55,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:56,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:56,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:56,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:57,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:57,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:57,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:58,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:58,485 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:58,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:59,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:59,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:43:59,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:00,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:00,588 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:00,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:01,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:01,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:01,990 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:02,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:02,691 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:03,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:03,393 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:03,744 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:04,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:04,445 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:04,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:05,146 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:05,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:05,847 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:06,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:06,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:06,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:07,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:07,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:07,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:08,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:08,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:09,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:09,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:09,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:10,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:10,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:10,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:11,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:11,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:11,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:12,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:12,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:12,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:13,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:13,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:13,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:14,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:14,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:14,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:15,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:15,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:16,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:16,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:16,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:17,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:17,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:17,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:18,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:18,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:18,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:19,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:19,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:19,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:20,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:20,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:20,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:21,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:21,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:21,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:22,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:22,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:23,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:23,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:23,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:24,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:24,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:24,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:25,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:25,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:25,825 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:26,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:26,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:26,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:27,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:27,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:27,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:28,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:28,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:28,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:29,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:29,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:30,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:30,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:30,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:31,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:31,433 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:31,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:32,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:32,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:32,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:33,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:33,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:33,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:34,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:34,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:34,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:35,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:35,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:35,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:36,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:36,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:37,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:37,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:37,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:38,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:38,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:38,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:39,144 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:39,495 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:39,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:40,196 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:40,546 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:40,897 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:41,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:41,598 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:41,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:42,299 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:42,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:43,000 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:43,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:43,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:44,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:44,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:44,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:45,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:45,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:45,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:46,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:46,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:46,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:47,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:47,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:47,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:48,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:48,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:48,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:49,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:49,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:50,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:50,360 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:50,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:51,061 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:51,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:51,762 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:52,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:52,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:52,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:53,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:53,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:53,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:54,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:54,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:54,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:55,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:55,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:55,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:56,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:56,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:57,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:57,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:57,723 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:58,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:58,424 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:58,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:59,125 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:59,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:44:59,826 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:00,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:00,527 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:00,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:01,228 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:01,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:01,929 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:02,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:02,630 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:02,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:03,331 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:03,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:04,032 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:04,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:04,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:05,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:05,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:05,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:06,135 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:06,485 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:06,836 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:07,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:07,537 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:07,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:08,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:08,588 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:08,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:09,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:09,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:09,991 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:10,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:10,692 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:11,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:11,393 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:11,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:12,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:12,445 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:12,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:13,146 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:13,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:13,847 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:14,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:14,548 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:14,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:15,249 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:15,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:15,950 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:16,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:16,651 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:17,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:17,352 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:17,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:18,053 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:18,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:18,754 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:19,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:19,455 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:19,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:20,156 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:20,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:20,857 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:21,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:21,558 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:21,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:22,259 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:22,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:22,960 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:23,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:23,661 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:24,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:24,362 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:24,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:25,063 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:25,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:25,764 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:26,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:26,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:26,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:27,166 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:27,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:27,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:28,217 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:28,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:28,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:29,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:29,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:29,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:30,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:30,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:31,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:31,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:31,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:32,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:32,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:32,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:33,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:33,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:33,825 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:34,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:34,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:34,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:35,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:35,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:35,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:36,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:36,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:36,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:37,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:37,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:38,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:38,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:38,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:39,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:39,433 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:39,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:40,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:40,485 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:40,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:41,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:41,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:41,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:42,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:42,588 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:42,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:43,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:43,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:43,990 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:44,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:44,691 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:45,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:45,392 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:45,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:46,093 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:46,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:46,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:47,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:47,495 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:47,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:48,196 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:48,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:48,897 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:49,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:49,598 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:49,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:50,299 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:50,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:51,000 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:51,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:51,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:52,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:52,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:52,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:53,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:53,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:53,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:54,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:54,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:54,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:55,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:55,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:55,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:56,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:56,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:56,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:57,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:57,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:58,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:58,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:58,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:59,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:59,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:45:59,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:00,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:00,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:00,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:01,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:01,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:01,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:02,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:02,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:02,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:03,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:03,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:03,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:04,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:04,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:05,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:05,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:05,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:06,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:06,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:06,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:07,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:07,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:07,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:08,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:08,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:08,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:09,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:09,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:09,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:10,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:10,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:10,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:11,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:11,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:12,030 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:12,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:12,731 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:13,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:13,432 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:13,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:14,133 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:14,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:14,834 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:15,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:15,535 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:15,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:16,236 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:16,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:16,937 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:17,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:17,638 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:17,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:18,339 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:18,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:19,040 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:19,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:19,741 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:20,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:20,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:20,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:21,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:21,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:21,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:22,198 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:22,548 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:22,899 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:23,249 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:23,600 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:23,950 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:24,301 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:24,651 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:25,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:25,352 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:25,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:26,053 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:26,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:26,754 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:27,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:27,455 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:27,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:28,156 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:28,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:28,857 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:29,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:29,558 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:29,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:30,259 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:30,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:30,960 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:31,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:31,661 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:32,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:32,362 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:32,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:33,063 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:33,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:33,764 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:34,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:34,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:34,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:35,166 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:35,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:35,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:36,217 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:36,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:36,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:37,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:37,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:37,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:38,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:38,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:39,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:39,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:39,723 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:40,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:40,424 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:40,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:41,125 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:41,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:41,826 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:42,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:42,527 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:42,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:43,228 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:43,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:43,929 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:44,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:44,630 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:44,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:45,331 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:45,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:46,032 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:46,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:46,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:47,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:47,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:47,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:48,135 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:48,486 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:48,836 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:49,187 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:49,537 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:49,888 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:50,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:50,589 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:50,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:51,290 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:51,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:51,991 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:52,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:52,692 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:53,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:53,393 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:53,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:54,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:54,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:54,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:55,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:55,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:55,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:56,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:56,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:56,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:57,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:57,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:57,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:58,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:58,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:59,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:59,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:46:59,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:00,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:00,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:00,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:01,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:01,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:01,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:02,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:02,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:02,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:03,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:03,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:03,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:04,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:04,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:04,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:05,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:05,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:06,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:06,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:06,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:07,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:07,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:07,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:08,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:08,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:08,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:09,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:09,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:09,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:10,217 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:10,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:10,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:11,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:11,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:11,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:12,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:12,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:13,022 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:13,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:13,723 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:14,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:14,424 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:14,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:15,125 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:15,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:15,825 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:16,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:16,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:16,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:17,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:17,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:17,929 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:18,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:18,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:18,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:19,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:19,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:20,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:20,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:20,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:21,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:21,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:21,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:22,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:22,485 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:22,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:23,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:23,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:23,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:24,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:24,588 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:24,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:25,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:25,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:25,990 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:26,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:26,691 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:27,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:27,392 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:27,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:28,093 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:28,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:28,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:29,144 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:29,495 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:29,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:30,196 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:30,546 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:30,897 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:31,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:31,598 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:31,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:32,299 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:32,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:33,000 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:33,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:33,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:34,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:34,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:34,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:35,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:35,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:35,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:36,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:36,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:36,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:37,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:37,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:37,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:38,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:38,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:38,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:39,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:39,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:40,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:40,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:40,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:41,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:41,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:41,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:42,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:42,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:42,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:43,166 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:43,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:43,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:44,218 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:44,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:44,919 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:45,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:45,620 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:45,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:46,321 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:46,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:47,022 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:47,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:47,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:48,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:48,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:48,774 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:49,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:49,475 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:49,826 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:50,176 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:50,527 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:50,877 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:51,228 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:51,578 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:51,929 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:52,279 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:52,630 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:52,980 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:53,331 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:53,681 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:54,032 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:54,382 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:54,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:55,083 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:55,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:55,784 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:56,135 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:56,485 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:56,836 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:57,186 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:57,537 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:57,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:58,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:58,588 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:58,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:59,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:59,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:47:59,990 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:00,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:00,691 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:01,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:01,392 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:01,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:02,093 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:02,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:02,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:03,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:03,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:03,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:04,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:04,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:04,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:05,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:05,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:05,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:06,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:06,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:07,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:07,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:07,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:08,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:08,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:08,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:09,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:09,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:09,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:10,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:10,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:10,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:11,207 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:11,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:11,908 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:12,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:12,609 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:12,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:13,310 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:13,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:14,011 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:14,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:14,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:15,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:15,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:15,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:16,114 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:16,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:16,815 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:17,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:17,516 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:17,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:18,217 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:18,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:18,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:19,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:19,619 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:19,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:20,320 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:20,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:21,021 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:21,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:21,722 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:22,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:22,423 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:22,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:23,124 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:23,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:23,825 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:24,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:24,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:24,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:25,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:25,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:25,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:26,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:26,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:26,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:27,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:27,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:28,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:28,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:28,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:29,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:29,433 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:29,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:30,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:30,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:30,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:31,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:31,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:31,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:32,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:32,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:32,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:33,289 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:33,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:33,990 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:34,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:34,691 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:35,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:35,392 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:35,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:36,093 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:36,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:36,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:37,144 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:37,495 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:37,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:38,196 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:38,546 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:38,897 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:39,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:39,598 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:39,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:40,299 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:40,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:41,000 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:41,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:41,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:42,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:42,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:42,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:43,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:43,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:43,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:44,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:44,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:44,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:45,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:45,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:45,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:46,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:46,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:46,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:47,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:47,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:48,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:48,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:48,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:49,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:49,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:49,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:50,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:50,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:50,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:51,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:51,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:51,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:52,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:52,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:52,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:53,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:53,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:53,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:54,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:54,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:55,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:55,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:55,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:56,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:56,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:56,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:57,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:57,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:57,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:58,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:58,525 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:58,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:59,226 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:59,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:48:59,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:00,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:00,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:00,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:01,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:01,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:02,030 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:02,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:02,731 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:03,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:03,432 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:03,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:04,133 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:04,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:04,834 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:05,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:05,535 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:05,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:06,236 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:06,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:06,937 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:07,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:07,638 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:07,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:08,339 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:08,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:09,040 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:09,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:09,741 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:10,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:10,442 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:10,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:11,143 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:11,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:11,844 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:12,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:12,545 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:12,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:13,246 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:13,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:13,947 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:14,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:14,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:14,999 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:15,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:15,700 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:16,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:16,401 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:16,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:17,102 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:17,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:17,803 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:18,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:18,504 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:18,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:19,205 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:19,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:19,906 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:20,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:20,607 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:20,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:21,308 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:21,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:22,009 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:22,360 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:22,710 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:23,061 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:23,411 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:23,762 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:24,112 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:24,463 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:24,813 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:25,164 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:25,514 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:25,865 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:26,215 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:26,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:26,916 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:27,267 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:27,617 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:27,968 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:28,318 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:28,669 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:29,019 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:29,370 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:29,720 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:30,071 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:30,421 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:30,772 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:31,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:31,473 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:31,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:32,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:32,525 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:32,875 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:33,226 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:33,576 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:33,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:34,277 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:34,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:34,978 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:35,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:35,679 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:36,030 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:36,380 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:36,731 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:37,081 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:37,432 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:37,782 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:38,133 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:38,483 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:38,834 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:39,184 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:39,535 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:39,885 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:40,236 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:40,586 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:40,937 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:41,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:41,638 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:41,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:42,339 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:42,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:43,040 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:43,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:43,741 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:44,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:44,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:44,794 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:45,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:45,495 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:45,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:46,196 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:46,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:46,897 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:47,248 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:47,598 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:47,949 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:48,299 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:48,650 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:49,000 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:49,351 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:49,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:50,052 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:50,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:50,753 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:51,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:51,454 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:51,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:52,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:52,505 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:52,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:53,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:53,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:53,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:54,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:54,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:54,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:55,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:55,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:56,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:56,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:56,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:57,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:57,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:57,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:58,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:58,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:58,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:59,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:59,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:49:59,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:00,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:00,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:00,918 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:01,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:01,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:01,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:02,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:02,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:03,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:03,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:03,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:04,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:04,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:04,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:05,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:05,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:05,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:06,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:06,525 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:06,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:07,226 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:07,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:07,927 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:08,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:08,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:08,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:09,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:09,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:10,030 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:10,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:10,731 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:11,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:11,432 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:11,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:12,133 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:12,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:12,835 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:13,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:13,536 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:13,886 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:14,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:14,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:14,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:15,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:15,638 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:15,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:16,339 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:16,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:17,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:17,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:17,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:18,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:18,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:18,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:19,143 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:19,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:19,844 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:20,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:20,545 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:20,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:21,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:21,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:21,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:22,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:22,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:22,999 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:23,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:23,700 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:24,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:24,401 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:24,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:25,102 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:25,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:25,803 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:26,154 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:26,504 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:26,855 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:27,205 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:27,556 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:27,906 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:28,257 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:28,607 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:28,958 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:29,308 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:29,659 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:30,009 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:30,360 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:30,710 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:31,061 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:31,411 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:31,762 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:32,112 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:32,463 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:32,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:33,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:33,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:33,865 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:34,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:34,566 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:34,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:35,267 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:35,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:35,968 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:36,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:36,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:37,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:37,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:37,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:38,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:38,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:38,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:39,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:39,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:39,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:40,174 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:40,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:40,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:41,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:41,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:41,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:42,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:42,628 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:42,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:43,329 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:43,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:44,030 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:44,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:44,731 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:45,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:45,432 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:45,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:46,133 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:46,484 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:46,834 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:47,185 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:47,535 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:47,887 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:48,237 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:48,587 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:48,938 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:49,288 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:49,639 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:49,989 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:50,340 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:50,690 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:51,041 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:51,391 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:51,742 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:52,092 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:52,443 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:52,793 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:53,144 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:53,494 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:53,845 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:54,195 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:54,546 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:54,896 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:55,247 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:55,597 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:55,948 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:56,298 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:56,649 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:56,999 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:57,350 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:57,701 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:58,051 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:58,402 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:58,752 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:59,103 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:59,453 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:50:59,804 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:00,155 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:00,506 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:00,856 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:01,206 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:01,557 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:01,907 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:02,258 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:02,608 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:02,959 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:03,309 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:03,660 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:04,010 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:04,361 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:04,711 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:05,062 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:05,412 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:05,763 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:06,113 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:06,464 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:06,814 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:07,165 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:07,515 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:07,866 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:08,216 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:08,567 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:08,917 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:09,268 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:09,618 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:09,969 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:10,319 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:10,670 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:11,020 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:11,371 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:11,721 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:12,072 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:12,422 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:12,773 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:13,123 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:13,474 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:13,824 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:14,175 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:14,526 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:14,876 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:15,227 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:15,577 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:15,928 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:16,278 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:16,629 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:16,979 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:17,330 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:17,680 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:18,031 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:18,381 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:18,732 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:19,082 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:19,433 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:19,783 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:20,134 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:20,486 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:20,836 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:21,187 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:21,537 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:21,888 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:22,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:22,589 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:22,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:23,290 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:23,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:23,991 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:24,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:24,692 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:25,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:25,393 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:25,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:26,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:26,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:26,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:27,146 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:27,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:27,847 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:28,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:28,548 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:28,899 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:29,250 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:29,600 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:29,951 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:30,301 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:30,652 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:31,002 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:31,353 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:31,703 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:32,054 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:32,404 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:32,754 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:33,105 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:33,455 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:33,806 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:34,156 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:34,507 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:34,857 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:35,208 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:35,558 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:35,909 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:36,259 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:36,610 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:36,960 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:37,311 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:37,661 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:38,012 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:38,362 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:38,712 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:39,063 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:39,413 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:39,764 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:40,115 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:40,465 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:40,816 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:41,166 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:41,517 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:41,867 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:42,218 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:42,568 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:42,919 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:43,269 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:43,620 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:43,970 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:44,321 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:44,671 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:45,022 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:45,372 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:45,723 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:46,073 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:46,424 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:46,775 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:47,125 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:47,476 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:47,826 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:48,177 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:48,527 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:48,878 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:49,228 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:49,579 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:49,929 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:50,280 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:50,630 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:50,981 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:51,331 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:51,682 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:52,032 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:52,383 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:52,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:53,084 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:53,434 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:53,785 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:54,135 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:54,486 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:54,836 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:55,187 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:55,537 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:55,888 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:56,238 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:56,589 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:56,939 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:57,290 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:57,640 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:57,991 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:58,341 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:58,692 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:59,042 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:59,393 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:51:59,743 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:00,094 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:00,444 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:00,795 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:01,145 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:01,496 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:01,846 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:02,197 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:02,547 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:02,898 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:03,249 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:03,599 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:03,950 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:04,300 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:04,651 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:05,001 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:05,352 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:05,702 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:06,053 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:06,403 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:06,754 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:07,104 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:07,455 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:07,805 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:08,156 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:08,507 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:08,857 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:09,208 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:09,559 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:09,909 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:10,260 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:10,610 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:10,961 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:11,311 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:11,662 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:12,012 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:12,363 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:12,713 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:13,064 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:13,414 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:13,765 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:14,115 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:14,466 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:14,816 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:15,167 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:15,517 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:15,868 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:16,218 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:16,569 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:16,919 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:17,270 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:17,620 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:17,971 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:18,321 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:18,672 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:19,022 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:19,373 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:19,723 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:20,074 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:20,424 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:20,775 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:21,126 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:21,476 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:21,827 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:22,177 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:22,528 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:22,878 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:23,228 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:23,579 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:23,929 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:24,280 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:24,630 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:24,981 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:25,331 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:25,682 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:26,032 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:26,383 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:26,733 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:27,085 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:27,436 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:27,786 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:28,137 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:28,487 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:28,838 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:29,188 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:29,539 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:29,889 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:30,240 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:30,590 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:30,941 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:31,291 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:31,642 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:31,992 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:32,343 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:32,693 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:33,044 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:33,394 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:33,745 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:34,095 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:34,446 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:34,796 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:35,147 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:35,497 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:35,848 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:36,198 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:36,549 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:36,900 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:37,250 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:37,601 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:37,951 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:38,302 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:38,652 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:39,003 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:39,353 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:39,704 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:40,054 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:40,405 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:40,755 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:41,106 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:41,456 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:41,807 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:42,157 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:42,508 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:42,858 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:43,209 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:43,559 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:43,910 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:44,260 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:44,611 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:44,962 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:45,312 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:45,663 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:46,013 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:46,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:46,714 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:47,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:47,415 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:47,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:48,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:48,467 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:48,818 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:49,168 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:49,519 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:49,869 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:50,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:50,570 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:50,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:51,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:51,621 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:51,972 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:52,323 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:52,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:53,024 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:53,374 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:53,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:54,075 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:54,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:54,776 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:55,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:55,477 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:55,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:56,178 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:56,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:56,879 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:57,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:57,580 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:57,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:58,281 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:58,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:58,983 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:59,334 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:52:59,684 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:00,035 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:00,386 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:00,736 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:01,087 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:01,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:01,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:02,138 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:02,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:02,839 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:03,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:03,540 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:03,891 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:04,241 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:04,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:04,942 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:05,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:05,643 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:05,994 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:06,345 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:06,695 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:07,045 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:07,396 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:07,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:08,097 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:08,448 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:08,798 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:09,149 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:09,499 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:09,850 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:10,200 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:10,551 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:10,901 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:11,252 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:11,602 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:11,953 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:12,303 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:12,654 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:13,004 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:13,355 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:13,705 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:14,056 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:14,406 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:14,757 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:15,108 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:15,458 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:15,808 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:16,159 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:16,509 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:16,862 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:17,213 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:17,563 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:17,914 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:18,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:18,615 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:18,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:19,316 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:19,666 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:20,017 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:20,367 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:20,718 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:21,068 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:21,419 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:21,769 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:22,120 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:22,470 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:22,821 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:23,171 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:23,522 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:23,872 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:24,223 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:24,573 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:24,924 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:25,274 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:25,625 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:25,975 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:26,326 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:26,676 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:27,027 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:27,377 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:27,728 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:28,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:28,429 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:28,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:29,130 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:29,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:29,831 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:30,181 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:30,532 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:30,882 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:31,233 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:31,583 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:31,934 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:32,284 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:32,635 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:32,985 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:33,336 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:33,686 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:34,037 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:34,387 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:34,738 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:35,089 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:35,439 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:35,790 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:36,140 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:36,491 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:36,841 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:37,192 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:37,542 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:37,893 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:38,243 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:38,595 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:38,946 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:39,296 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:39,647 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:39,997 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:40,348 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:40,698 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:41,049 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:41,399 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:41,750 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:42,100 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:42,451 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:42,801 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:43,152 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:43,502 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:43,853 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:44,203 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:44,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:44,904 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:45,254 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:45,605 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:45,955 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:46,306 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:46,656 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:47,007 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:47,357 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:47,708 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:48,059 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:48,409 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:48,761 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:49,111 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:49,462 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:49,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:50,162 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:50,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:50,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:51,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:51,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:51,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:52,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:52,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:52,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:53,317 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:53,668 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:54,018 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:54,369 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:54,719 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:55,070 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:55,420 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:55,771 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:56,121 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:56,472 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:56,822 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:57,173 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:57,523 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:57,874 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:58,224 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:58,575 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:58,925 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:59,276 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:59,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:53:59,977 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:00,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:00,678 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:01,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:01,379 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:01,729 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:02,080 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:02,430 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:02,781 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:03,131 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:03,482 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:03,832 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:04,183 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:04,533 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:04,884 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:05,234 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:05,585 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:05,935 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:06,286 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:06,636 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:06,987 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:07,337 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:07,688 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:08,038 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:08,389 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:08,739 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:09,090 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:09,440 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:09,791 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:10,142 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:10,492 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:10,843 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:11,193 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:11,544 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:11,894 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:12,244 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:12,595 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:12,945 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:13,296 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:13,646 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:13,997 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:14,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:14,698 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:15,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:15,399 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:15,750 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:16,100 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:16,451 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:16,801 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:17,152 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:17,502 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:17,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:18,203 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:18,554 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:18,904 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:19,255 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:19,605 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:19,955 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:20,306 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:20,656 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:21,007 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:21,357 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:21,708 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:22,058 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:22,409 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:22,759 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:23,110 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:23,460 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:23,811 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:24,161 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:24,512 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:24,862 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:25,213 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:25,563 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:25,914 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:26,264 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:26,615 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:26,965 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:27,316 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:27,666 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:28,017 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:28,367 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:28,718 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:29,069 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:29,419 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:29,769 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:30,120 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:30,470 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:30,821 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:31,171 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:31,522 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:31,872 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:32,223 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:32,573 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:32,924 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:33,274 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:33,625 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:33,976 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:34,326 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:34,677 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:35,027 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:35,378 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:35,728 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:36,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:36,429 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:36,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:37,130 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:37,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:37,831 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:38,181 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:38,532 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:38,882 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:39,233 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:39,583 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:39,934 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:40,284 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:40,635 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:40,985 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:41,336 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:41,686 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:42,037 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:42,387 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:42,738 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:43,088 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:43,439 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:43,789 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:44,140 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:44,490 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:44,841 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:45,191 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:45,542 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:45,892 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:46,243 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:46,593 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:46,944 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:47,294 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:47,645 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:47,995 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:48,346 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:48,696 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:49,047 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:49,397 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:49,748 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:50,098 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:50,449 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:50,799 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:51,150 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:51,500 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:51,851 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:52,201 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:52,552 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:52,902 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:53,253 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:53,603 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:53,954 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:54,305 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:54,658 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:55,008 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:55,359 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:55,709 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:56,059 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:56,410 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:56,760 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:57,111 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:57,462 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:57,812 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:58,162 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:58,513 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:58,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:59,214 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:59,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:54:59,915 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:00,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:00,616 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:00,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:01,316 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:01,667 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:02,017 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:02,368 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:02,718 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:03,069 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:03,419 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:03,770 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:04,120 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:04,471 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:04,821 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:05,172 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:05,522 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:05,873 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:06,223 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:06,574 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:06,924 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:07,275 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:07,626 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:07,976 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:08,327 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:08,677 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:09,028 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:09,378 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:09,728 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:10,079 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:10,429 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:10,780 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:11,130 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:11,481 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:11,831 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:12,182 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:12,532 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:12,883 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:13,233 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:13,584 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:13,934 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:14,285 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:14,635 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:14,986 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:15,336 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:15,687 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:16,037 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:16,388 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:16,738 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:17,089 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:17,439 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:17,790 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:18,140 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:18,491 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:18,841 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:19,192 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:19,542 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:19,893 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:20,243 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:20,594 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:20,944 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:21,295 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:21,645 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:21,996 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:22,347 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:22,697 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:23,048 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:23,398 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:23,749 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:24,099 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:24,450 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:24,800 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:25,151 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:25,501 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:25,852 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:26,202 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:26,553 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:26,903 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:27,254 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:27,604 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:27,955 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:28,305 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:28,656 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:29,006 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:29,357 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:29,707 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:30,058 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:30,408 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:30,759 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:31,109 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:31,460 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:31,810 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:32,161 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:32,512 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:32,863 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:33,213 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:33,564 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:33,914 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:34,265 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:34,615 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:34,966 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:35,316 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:35,667 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:36,017 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:36,368 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:36,718 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:37,068 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:37,419 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:37,769 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:38,120 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:38,470 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:38,821 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:39,171 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:39,522 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:39,872 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:40,223 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:40,573 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:40,923 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:41,274 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:41,624 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:41,975 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:42,325 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:42,676 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:43,026 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:43,377 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:43,727 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:44,078 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:44,428 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:44,779 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:45,129 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:45,480 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:45,830 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:46,181 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:46,531 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:46,881 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:47,232 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:47,582 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:47,933 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:48,284 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:48,634 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:48,985 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:49,335 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:49,686 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:50,036 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:50,387 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:50,737 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:51,088 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:51,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:51,789 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:52,139 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:52,490 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:52,840 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:53,191 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:53,541 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:53,892 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:54,242 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:54,593 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:54,943 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:55,294 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:55,644 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:55,995 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:56,345 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:56,696 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:57,046 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:57,397 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:57,748 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:58,098 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:58,449 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:58,799 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:59,150 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:59,500 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:55:59,851 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:00,201 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:00,552 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:00,902 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:01,253 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:01,603 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:01,954 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:02,304 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:02,655 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:03,005 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:03,356 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:03,706 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:04,057 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:04,407 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:04,758 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:05,109 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:05,459 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:05,809 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:06,160 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:06,511 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:06,861 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:07,211 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:07,562 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:07,912 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:08,263 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:08,614 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:08,964 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:09,314 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:09,665 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:10,015 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:10,366 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:10,716 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:11,067 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:11,417 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:11,768 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:12,118 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:12,469 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:12,819 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:13,170 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:13,520 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:13,871 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:14,221 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:14,572 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:14,922 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:15,273 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:15,624 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:15,974 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:16,325 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:16,675 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:17,026 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:17,376 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:17,727 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:18,077 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:18,428 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:18,778 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:19,129 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:19,479 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:19,830 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:20,180 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:20,531 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:20,881 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:21,232 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:21,582 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:21,933 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:22,283 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:22,634 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:22,984 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:23,335 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:23,685 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:24,036 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:24,386 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:24,737 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:25,087 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:25,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:25,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:26,139 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:26,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:26,840 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:27,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:27,540 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:27,891 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:28,241 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:28,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:28,943 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:29,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:29,644 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:29,994 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:30,344 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:30,695 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:31,045 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:31,396 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:31,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:32,099 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:32,449 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:32,799 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:33,150 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:33,500 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:33,851 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:34,201 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:34,552 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:34,902 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:35,253 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:35,603 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:35,954 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:36,304 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:36,655 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:37,005 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:37,355 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:37,706 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:38,056 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:38,407 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:38,757 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:39,108 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:39,458 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:39,809 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:40,159 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:40,510 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:40,860 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:41,211 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:41,561 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:41,912 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:42,262 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:42,613 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:42,963 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:43,314 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:43,664 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:44,015 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:44,365 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:44,716 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:45,066 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:45,417 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:45,767 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:46,118 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:46,468 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:46,819 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:47,170 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:47,520 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:47,871 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:48,221 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:48,571 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:48,922 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:49,273 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:49,623 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:49,974 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:50,324 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:50,675 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:51,025 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:51,376 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:51,726 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:52,077 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:52,427 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:52,778 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:53,128 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:53,479 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:53,829 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:54,180 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:54,530 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:54,881 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:55,231 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:55,582 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:55,932 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:56,283 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:56,633 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:56,984 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:57,334 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:57,685 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:58,035 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:58,386 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:58,736 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:59,087 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:59,437 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:56:59,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:00,138 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:00,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:00,839 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:01,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:01,540 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:01,891 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:02,241 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:02,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:02,942 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:03,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:03,643 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:03,994 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:04,344 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:04,695 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:05,045 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:05,396 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:05,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:06,097 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:06,447 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:06,798 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:07,148 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:07,499 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:07,849 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:08,200 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:08,550 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:08,901 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:09,251 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:09,602 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:09,952 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:10,303 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:10,653 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:11,004 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:11,354 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:11,705 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:12,055 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:12,406 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:12,757 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:13,107 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:13,458 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:13,808 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:14,159 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:14,509 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:14,860 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:15,210 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:15,561 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:15,911 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:16,262 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:16,612 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:16,963 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:17,313 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:17,664 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:18,014 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:18,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:18,715 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:19,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:19,416 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:19,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:20,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:20,468 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:20,818 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:21,169 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:21,519 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:21,869 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:22,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:22,570 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:22,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:23,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:23,622 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:23,973 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:24,323 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:24,674 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:25,024 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:25,375 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:25,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:26,076 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:26,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:26,777 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:27,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:27,478 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:27,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:28,179 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:28,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:28,880 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:29,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:29,581 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:29,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:30,282 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:30,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:30,983 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:31,333 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:31,684 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:32,034 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:32,385 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:32,735 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:33,086 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:33,436 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:33,787 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:34,137 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:34,488 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:34,838 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:35,189 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:35,539 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:35,890 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:36,240 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:36,591 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:36,941 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:37,292 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:37,643 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:37,993 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:38,344 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:38,694 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:39,045 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:39,395 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:39,746 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:40,096 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:40,447 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:40,797 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:41,148 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:41,498 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:41,849 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:42,199 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:42,550 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:42,900 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:43,251 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:43,601 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:43,952 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:44,302 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:44,653 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:45,003 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:45,354 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:45,704 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:46,055 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:46,405 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:46,756 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:47,106 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:47,457 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:47,807 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:48,158 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:48,509 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:48,859 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:49,210 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:49,560 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:49,910 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:50,261 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:50,611 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:50,962 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:51,312 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:51,663 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:52,013 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:52,364 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:52,714 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:53,065 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:53,416 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:53,766 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:54,117 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:54,467 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:54,818 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:55,168 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:55,519 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:55,869 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:56,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:56,570 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:56,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:57,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:57,622 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:57,972 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:58,322 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:58,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:59,023 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:59,374 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:59,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:00,075 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:00,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:00,776 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:01,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:01,477 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:01,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:02,178 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:02,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:02,879 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:03,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:03,580 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:03,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:04,282 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:04,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:04,983 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:05,333 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:05,684 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:06,034 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:06,385 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:06,735 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:07,086 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:07,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:07,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:08,139 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:08,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:08,840 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:09,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:09,541 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:09,891 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:10,242 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:10,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:10,943 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:11,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:11,644 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:11,994 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:12,345 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:12,695 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:13,046 - watchfiles.main - INFO - 1 change detected -5,869 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:56,220 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:56,570 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:56,921 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:57,271 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:57,622 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:57,972 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:58,322 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:58,673 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:59,023 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:59,374 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:57:59,725 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:00,075 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:00,426 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:00,776 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:01,127 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:01,477 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:01,828 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:02,178 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:02,529 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:02,879 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:03,230 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:03,580 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:03,931 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:04,281 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:04,632 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:04,982 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:05,333 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:05,683 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:06,034 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:06,384 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:06,735 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:07,085 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:07,438 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:07,788 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:08,139 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:08,489 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:08,840 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:09,190 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:09,541 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:09,891 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:10,242 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:10,592 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:10,943 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:11,293 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:11,644 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:11,994 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:12,345 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:12,695 - watchfiles.main - INFO - 1 change detected -2025-12-25 17:58:13,046 - watchfiles.main - INFO - 1 change detected diff --git a/backend/test.db b/backend/test.db deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/frontend.log b/frontend/frontend.log deleted file mode 100644 index 60ce0995..00000000 --- a/frontend/frontend.log +++ /dev/null @@ -1,533 +0,0 @@ -nohup: ignoring input - -> nop-frontend@1.0.0 start -> react-scripts start - -(node:247607) [DEP0176] DeprecationWarning: fs.F_OK is deprecated, use fs.constants.F_OK instead -(Use `node --trace-deprecation ...` to show where the warning was created) -[HPM] Proxy created: / -> http://localhost:12001 -(node:247607) [DEP_WEBPACK_DEV_SERVER_ON_AFTER_SETUP_MIDDLEWARE] DeprecationWarning: 'onAfterSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. -(node:247607) [DEP_WEBPACK_DEV_SERVER_ON_BEFORE_SETUP_MIDDLEWARE] DeprecationWarning: 'onBeforeSetupMiddleware' option is deprecated. Please use the 'setupMiddlewares' option. -Starting the development server... - -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 242:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 242:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -No issues found. -(node:247607) [DEP0060] DeprecationWarning: The `util._extend` API is deprecated. Please use Object.assign() instead. -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 30:9: 'displayCallbackRef' is assigned a value but never used @typescript-eslint/no-unused-vars - Line 289:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 30:9: 'displayCallbackRef' is assigned a value but never used @typescript-eslint/no-unused-vars - Line 289:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:64:17 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 62 | clientRef.current?.sendMouseState(state); - 63 | }; - > 64 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 65 | mouse.onmouseup = sendMouseState; - 66 | mouse.onmousemove = sendMouseState; - 67 | } - -ERROR in src/components/ProtocolConnection.tsx:65:17 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 63 | }; - 64 | mouse.onmousedown = sendMouseState; - > 65 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 66 | mouse.onmousemove = sendMouseState; - 67 | } - 68 | } catch (e) { - -ERROR in src/components/ProtocolConnection.tsx:66:17 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 64 | mouse.onmousedown = sendMouseState; - 65 | mouse.onmouseup = sendMouseState; - > 66 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 67 | } - 68 | } catch (e) { - 69 | console.error('[GUACAMOLE-CLIENT] Error attaching display:', e); - -ERROR in src/components/ProtocolConnection.tsx:72:16 -TS2540: Cannot assign to 'current' because it is a read-only property. - 70 | } - 71 | } - > 72 | displayRef.current = node; - | ^^^^^^^ - 73 | }; - 74 | - 75 | - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 289:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 289:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:64:17 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 62 | clientRef.current?.sendMouseState(state); - 63 | }; - > 64 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 65 | mouse.onmouseup = sendMouseState; - 66 | mouse.onmousemove = sendMouseState; - 67 | } - -ERROR in src/components/ProtocolConnection.tsx:65:17 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 63 | }; - 64 | mouse.onmousedown = sendMouseState; - > 65 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 66 | mouse.onmousemove = sendMouseState; - 67 | } - 68 | } catch (e) { - -ERROR in src/components/ProtocolConnection.tsx:66:17 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 64 | mouse.onmousedown = sendMouseState; - 65 | mouse.onmouseup = sendMouseState; - > 66 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 67 | } - 68 | } catch (e) { - 69 | console.error('[GUACAMOLE-CLIENT] Error attaching display:', e); - -ERROR in src/components/ProtocolConnection.tsx:72:16 -TS2540: Cannot assign to 'current' because it is a read-only property. - 70 | } - 71 | } - > 72 | displayRef.current = node; - | ^^^^^^^ - 73 | }; - 74 | - 75 | - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 248:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 248:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:64:17 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 62 | clientRef.current?.sendMouseState(state); - 63 | }; - > 64 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 65 | mouse.onmouseup = sendMouseState; - 66 | mouse.onmousemove = sendMouseState; - 67 | } - -ERROR in src/components/ProtocolConnection.tsx:65:17 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 63 | }; - 64 | mouse.onmousedown = sendMouseState; - > 65 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 66 | mouse.onmousemove = sendMouseState; - 67 | } - 68 | } catch (e) { - -ERROR in src/components/ProtocolConnection.tsx:66:17 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 64 | mouse.onmousedown = sendMouseState; - 65 | mouse.onmouseup = sendMouseState; - > 66 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 67 | } - 68 | } catch (e) { - 69 | console.error('[GUACAMOLE-CLIENT] Error attaching display:', e); - -ERROR in src/components/ProtocolConnection.tsx:72:16 -TS2540: Cannot assign to 'current' because it is a read-only property. - 70 | } - 71 | } - > 72 | displayRef.current = node; - | ^^^^^^^ - 73 | }; - 74 | - 75 | - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 1:46: 'useLayoutEffect' is defined but never used @typescript-eslint/no-unused-vars - Line 248:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 1:46: 'useLayoutEffect' is defined but never used @typescript-eslint/no-unused-vars - Line 248:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:64:17 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 62 | clientRef.current?.sendMouseState(state); - 63 | }; - > 64 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 65 | mouse.onmouseup = sendMouseState; - 66 | mouse.onmousemove = sendMouseState; - 67 | } - -ERROR in src/components/ProtocolConnection.tsx:65:17 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 63 | }; - 64 | mouse.onmousedown = sendMouseState; - > 65 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 66 | mouse.onmousemove = sendMouseState; - 67 | } - 68 | } catch (e) { - -ERROR in src/components/ProtocolConnection.tsx:66:17 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 64 | mouse.onmousedown = sendMouseState; - 65 | mouse.onmouseup = sendMouseState; - > 66 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 67 | } - 68 | } catch (e) { - 69 | console.error('[GUACAMOLE-CLIENT] Error attaching display:', e); - -ERROR in src/components/ProtocolConnection.tsx:72:16 -TS2540: Cannot assign to 'current' because it is a read-only property. - 70 | } - 71 | } - > 72 | displayRef.current = node; - | ^^^^^^^ - 73 | }; - 74 | - 75 | - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 258:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 258:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:72:19 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 70 | clientRef.current?.sendMouseState(state); - 71 | }; - > 72 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 73 | mouse.onmouseup = sendMouseState; - 74 | mouse.onmousemove = sendMouseState; - 75 | - -ERROR in src/components/ProtocolConnection.tsx:73:19 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 71 | }; - 72 | mouse.onmousedown = sendMouseState; - > 73 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 74 | mouse.onmousemove = sendMouseState; - 75 | - 76 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - -ERROR in src/components/ProtocolConnection.tsx:74:19 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 72 | mouse.onmousedown = sendMouseState; - 73 | mouse.onmouseup = sendMouseState; - > 74 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 75 | - 76 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - 77 | } - -ERROR in src/components/ProtocolConnection.tsx:613:21 -TS2304: Cannot find name 'displayCallbackRef'. - 611 | {username} - 612 | - > 613 |
- | ^^^^^^^^^^^^^^^^^^ - 614 |
- 615 | ); - 616 | } - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 258:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 258:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:72:19 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 70 | clientRef.current?.sendMouseState(state); - 71 | }; - > 72 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 73 | mouse.onmouseup = sendMouseState; - 74 | mouse.onmousemove = sendMouseState; - 75 | - -ERROR in src/components/ProtocolConnection.tsx:73:19 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 71 | }; - 72 | mouse.onmousedown = sendMouseState; - > 73 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 74 | mouse.onmousemove = sendMouseState; - 75 | - 76 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - -ERROR in src/components/ProtocolConnection.tsx:74:19 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 72 | mouse.onmousedown = sendMouseState; - 73 | mouse.onmouseup = sendMouseState; - > 74 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 75 | - 76 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - 77 | } - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 20:10: 'connectionStatus' is assigned a value but never used @typescript-eslint/no-unused-vars - Line 20:28: 'setConnectionStatus' is assigned a value but never used @typescript-eslint/no-unused-vars - Line 261:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 20:10: 'connectionStatus' is assigned a value but never used @typescript-eslint/no-unused-vars - Line 20:28: 'setConnectionStatus' is assigned a value but never used @typescript-eslint/no-unused-vars - Line 261:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:75:19 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 73 | clientRef.current?.sendMouseState(state); - 74 | }; - > 75 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 76 | mouse.onmouseup = sendMouseState; - 77 | mouse.onmousemove = sendMouseState; - 78 | - -ERROR in src/components/ProtocolConnection.tsx:76:19 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 74 | }; - 75 | mouse.onmousedown = sendMouseState; - > 76 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 77 | mouse.onmousemove = sendMouseState; - 78 | - 79 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - -ERROR in src/components/ProtocolConnection.tsx:77:19 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 75 | mouse.onmousedown = sendMouseState; - 76 | mouse.onmouseup = sendMouseState; - > 77 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 78 | - 79 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - 80 | } - -Compiling... -Compiled with warnings. - -[eslint] -src/components/ProtocolConnection.tsx - Line 262:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -Search for the keywords to learn more about each warning. -To ignore, add // eslint-disable-next-line to the line before. - -WARNING in [eslint] -src/components/ProtocolConnection.tsx - Line 262:9: 'setupHTTPTunnel' is assigned a value but never used @typescript-eslint/no-unused-vars - -webpack compiled with 1 warning -ERROR in src/components/ProtocolConnection.tsx:76:19 -TS2339: Property 'onmousedown' does not exist on type 'Mouse'. - 74 | clientRef.current?.sendMouseState(state); - 75 | }; - > 76 | mouse.onmousedown = sendMouseState; - | ^^^^^^^^^^^ - 77 | mouse.onmouseup = sendMouseState; - 78 | mouse.onmousemove = sendMouseState; - 79 | - -ERROR in src/components/ProtocolConnection.tsx:77:19 -TS2339: Property 'onmouseup' does not exist on type 'Mouse'. - 75 | }; - 76 | mouse.onmousedown = sendMouseState; - > 77 | mouse.onmouseup = sendMouseState; - | ^^^^^^^^^ - 78 | mouse.onmousemove = sendMouseState; - 79 | - 80 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - -ERROR in src/components/ProtocolConnection.tsx:78:19 -TS2339: Property 'onmousemove' does not exist on type 'Mouse'. - 76 | mouse.onmousedown = sendMouseState; - 77 | mouse.onmouseup = sendMouseState; - > 78 | mouse.onmousemove = sendMouseState; - | ^^^^^^^^^^^ - 79 | - 80 | console.log('[GUACAMOLE-CLIENT] Keyboard and mouse handlers attached'); - 81 | } - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - -Proxy error: Could not proxy request /favicon.ico from localhost:12000 to http://backend:8000. -See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ENOTFOUND). - diff --git a/frontend/src/components/workflow/BlockNode.tsx.bak b/frontend/src/components/workflow/BlockNode.tsx.bak deleted file mode 100644 index 1ca0f793..00000000 --- a/frontend/src/components/workflow/BlockNode.tsx.bak +++ /dev/null @@ -1,347 +0,0 @@ -/** - * BlockNode - Cyberpunk-styled custom React Flow node for workflow blocks - * - * Features: - * - Execution status shown via border color glow (running=cyan, completed=green, failed=red) - * - Status text displayed inside block after execution - * - Hover tooltip shows: input, output, status, time, execution count - * - Click to show detailed output in side panel - */ - -import React, { memo, useState } from 'react'; -import { Handle, Position, NodeProps } from 'reactflow'; -import { NodeData, NodeExecutionStatus } from '../../types/workflow'; -import { getBlockDefinition, CATEGORY_COLORS } from '../../types/blocks'; - -interface BlockNodeProps extends NodeProps {} - -// Execution status colors - used for border glow -const statusColors: Record = { - pending: '#4a5568', // cyber-gray - waiting: '#f59e0b', // amber/pulsing - running: '#00d4ff', // cyber-blue - completed: '#00ff88', // cyber-green - failed: '#ff0040', // cyber-red - skipped: '#6b7280', // gray -}; - -// Status labels for display -const statusLabels: Record = { - pending: 'PENDING', - waiting: 'WAITING', - running: 'RUNNING', - completed: 'PASSED', - failed: 'FAILED', - skipped: 'SKIPPED', -}; - -// Format duration for display -const formatDuration = (ms?: number): string => { - if (!ms) return '-'; - if (ms < 1000) return `${ms}ms`; - if (ms < 60000) return `${(ms / 1000).toFixed(1)}s`; - return `${Math.floor(ms / 60000)}m ${Math.floor((ms % 60000) / 1000)}s`; -}; - -const BlockNode: React.FC = ({ data, selected }) => { - const [showTooltip, setShowTooltip] = useState(false); - - // SAFETY: Ensure data exists and has required fields - if (!data) { - console.error('BlockNode: data is null/undefined'); - return
ERROR: No data
; - } - - // Ensure all values are strings/primitives - const safeLabel = typeof data.label === 'string' ? data.label : String(data.label || 'Unknown'); - const safeType = typeof data.type === 'string' ? data.type : String(data.type || ''); - const safeCategory = typeof data.category === 'string' ? data.category : String(data.category || 'control'); - - const definition = getBlockDefinition(safeType); - const categoryColor = data.color || CATEGORY_COLORS[data.category as keyof typeof CATEGORY_COLORS] || '#8b5cf6'; - - // Get execution data from node - const executionStatus = (data as any).executionStatus as NodeExecutionStatus | undefined; - const executionResult = (data as any).executionResult as any; - const executionCount = (data as any).executionCount as number || 0; - const executionDuration = (data as any).executionDuration as number || 0; - const executionInput = (data as any).executionInput as any; - const executionOutput = (data as any).executionOutput as any; - - // Determine border color based on execution status - const borderColor = executionStatus - ? statusColors[executionStatus] - : (selected ? '#a855f7' : categoryColor); - - const isExecuting = executionStatus === 'running' || executionStatus === 'waiting'; - const hasExecuted = executionStatus === 'completed' || executionStatus === 'failed'; - - // Calculate block height based on number of handles + status bar - const numOutputs = definition?.outputs?.length || 1; - const numInputs = definition?.inputs?.length || 1; - const maxHandles = Math.max(numOutputs, numInputs); - const minBlockHeight = Math.max(hasExecuted ? 100 : 80, 40 + (maxHandles * 18)); - - return ( -
setShowTooltip(true)} - onMouseLeave={() => setShowTooltip(false)} - > - {/* Main Block Container */} -
- {/* Header with glowing effect */} -
- {(typeof data.icon === 'string' ? data.icon : '') || definition?.icon || 'β—ˆ'} - - {safeLabel} - - {/* Execution count badge */} - {executionCount > 1 && ( - - Γ—{executionCount} - - )} -
- - {/* Body */} -
-
- {safeCategory} -
- {Object.keys(data.parameters || {}).length > 0 && !hasExecuted && ( -
- [{Object.keys(data.parameters || {}).length}] PARAMS -
- )} -
- - {/* Execution Status Bar - shown after execution */} - {hasExecuted && ( -
- {statusLabels[executionStatus!]} - {executionDuration > 0 && ( - - {formatDuration(executionDuration)} - - )} -
- )} - - {/* Running indicator - pulsing bar */} - {isExecuting && ( -
-
-
- )} - - {/* Input Handles */} - {definition?.inputs.map((input, idx) => { - const inputCount = definition.inputs.length; - const handleTop = inputCount === 1 ? '50%' : `${25 + (idx * (50 / Math.max(inputCount - 1, 1)))}%`; - return ( - - ); - })} - - {/* Output Handles */} - {definition?.outputs.map((output, idx) => { - const outputCount = definition.outputs.length; - const handleTop = outputCount === 1 ? '50%' - : outputCount === 2 ? `${35 + (idx * 30)}%` - : `${25 + (idx * 25)}%`; - - const handleColor = output.id === 'pass' ? '#00ff88' - : output.id === 'fail' ? '#ff0040' - : '#00d4ff'; - - return ( - - - {outputCount > 1 && ( -
- {output.id === 'pass' ? 'βœ“' : output.id === 'fail' ? 'βœ—' : 'β†’'} -
- )} -
- ); - })} - - {/* Corner accent */} -
-
- - {/* Hover Tooltip - Execution Summary */} - {showTooltip && hasExecuted && ( -
- {/* Tooltip Header */} -
- {statusLabels[executionStatus!]} - {formatDuration(executionDuration)} - {executionCount > 1 && ( - - Γ—{executionCount} - - )} -
- - {/* Tooltip Body */} -
- {/* Input */} - {executionInput !== undefined && ( -
-
INPUT
-
- {typeof executionInput === 'string' - ? executionInput.substring(0, 100) + (executionInput.length > 100 ? '...' : '') - : JSON.stringify(executionInput, null, 1).substring(0, 100)} -
-
- )} - - {/* Output */} - {executionOutput !== undefined && ( -
-
OUTPUT
-
- {typeof executionOutput === 'string' - ? executionOutput.substring(0, 100) + (executionOutput.length > 100 ? '...' : '') - : JSON.stringify(executionOutput, null, 1).substring(0, 100)} -
-
- )} - - {/* Click hint */} -
- Click block for full details -
-
-
- )} - - {/* Hover Tooltip - No execution yet */} - {showTooltip && !hasExecuted && !isExecuting && ( -
-
-
BLOCK TYPE
-
{safeType}
- {Object.keys(data.parameters || {}).length > 0 && ( - <> -
PARAMETERS
-
{Object.keys(data.parameters || {}).length} configured
- - )} -
-
- )} -
- ); -}; - -export default memo(BlockNode); diff --git a/frontend/src/services/accessService.ts b/frontend/src/services/accessService.ts index ace4f660..578432e2 100644 --- a/frontend/src/services/accessService.ts +++ b/frontend/src/services/accessService.ts @@ -1,6 +1,7 @@ import axios from 'axios'; +import { API_BASE_URL } from './apiConfig'; -const API_URL = '/api/v1/access'; +const API_URL = `${API_BASE_URL}/access`; export interface Credential { id: string; diff --git a/frontend/src/services/apiConfig.ts b/frontend/src/services/apiConfig.ts new file mode 100644 index 00000000..9c481282 --- /dev/null +++ b/frontend/src/services/apiConfig.ts @@ -0,0 +1,7 @@ +/** + * Shared API configuration + * + * Single source of truth for the base API URL used by all service modules. + */ + +export const API_BASE_URL = '/api/v1'; diff --git a/frontend/src/services/assetService.ts b/frontend/src/services/assetService.ts index ba84db5d..d6a62acf 100644 --- a/frontend/src/services/assetService.ts +++ b/frontend/src/services/assetService.ts @@ -1,7 +1,7 @@ import axios from 'axios'; +import { API_BASE_URL } from './apiConfig'; -// Use relative path so Nginx proxy handles it -const API_URL = '/api/v1'; +const API_URL = API_BASE_URL; export interface Asset { id: string; diff --git a/frontend/src/services/authService.ts b/frontend/src/services/authService.ts index e92547c6..f5992b38 100644 --- a/frontend/src/services/authService.ts +++ b/frontend/src/services/authService.ts @@ -1,6 +1,5 @@ import axios from 'axios'; - -const API_BASE_URL = '/api/v1'; +import { API_BASE_URL } from './apiConfig'; interface LoginResponse { access_token: string; diff --git a/frontend/src/services/dashboardService.ts b/frontend/src/services/dashboardService.ts index d15dea67..002d0c21 100644 --- a/frontend/src/services/dashboardService.ts +++ b/frontend/src/services/dashboardService.ts @@ -1,6 +1,7 @@ import axios from 'axios'; +import { API_BASE_URL } from './apiConfig'; -const API_URL = '/api/v1'; +const API_URL = API_BASE_URL; export interface DashboardStats { total_assets: number; diff --git a/frontend/src/services/flowConfigService.ts b/frontend/src/services/flowConfigService.ts index d8cf2d59..a6898c7c 100644 --- a/frontend/src/services/flowConfigService.ts +++ b/frontend/src/services/flowConfigService.ts @@ -4,8 +4,9 @@ */ import axios from 'axios'; +import { API_BASE_URL } from './apiConfig'; -const API_URL = '/api/v1'; +const API_URL = API_BASE_URL; // Helper to get auth token from persisted auth store const getAuthToken = (): string | null => { diff --git a/frontend/src/services/hostService.ts b/frontend/src/services/hostService.ts index 6c220c7e..f874530b 100644 --- a/frontend/src/services/hostService.ts +++ b/frontend/src/services/hostService.ts @@ -1,7 +1,7 @@ import axios from 'axios'; +import { API_BASE_URL } from './apiConfig'; -// Use relative URL to go through the React dev server proxy -const API_URL = '/api/v1/host'; +const API_URL = `${API_BASE_URL}/host`; export interface SystemInfo { hostname: string; diff --git a/frontend/src/services/trafficService.ts b/frontend/src/services/trafficService.ts index 09ac8532..a173eb4b 100644 --- a/frontend/src/services/trafficService.ts +++ b/frontend/src/services/trafficService.ts @@ -1,6 +1,7 @@ import axios from 'axios'; +import { API_BASE_URL } from './apiConfig'; -const API_URL = '/api/v1'; +const API_URL = API_BASE_URL; export interface BurstCaptureConnection { source: string; diff --git a/frontend/src/services/workflowApi.ts b/frontend/src/services/workflowApi.ts index 9b3289a0..69caa665 100644 --- a/frontend/src/services/workflowApi.ts +++ b/frontend/src/services/workflowApi.ts @@ -10,8 +10,9 @@ import { ExecutionOptions, CompileResult, } from '../types/workflow'; +import { API_BASE_URL } from './apiConfig'; -const API_BASE = '/api/v1/workflows'; +const API_BASE = `${API_BASE_URL}/workflows`; function getAuthHeaders(): HeadersInit { const token = localStorage.getItem('auth_token'); diff --git a/log/akis_audit_20260109_092034.log b/log/akis_audit_20260109_092034.log deleted file mode 100644 index 9d062085..00000000 --- a/log/akis_audit_20260109_092034.log +++ /dev/null @@ -1,234 +0,0 @@ -================================================================================ -AKIS COMPLETE FRAMEWORK AUDIT & 100K SESSION SIMULATION -================================================================================ - -Timestamp: 2026-01-09 09:20:34 - -================================================================================ -PHASE 1: WORKFLOW LOG ANALYSIS (Ground Truth) -================================================================================ - -πŸ“Š Analyzed 107 workflow logs - - Domain Distribution: - backend: 69 sessions (64.5%) - frontend: 62 sessions (57.9%) - documentation: 59 sessions (55.1%) - docker: 44 sessions (41.1%) - - Complexity Distribution: - simple: 29 sessions (27.1%) - medium: 10 sessions (9.3%) - complex: 68 sessions (63.6%) - - Average tasks per session: 15.8 - Average duration: 35.4 min - Sessions with interrupts: 17 (15.9%) - Sessions with problems: 86 (80.4%) - -================================================================================ -PHASE 2: COMPONENT AUDITS -================================================================================ - -πŸ“š KNOWLEDGE SYSTEM AUDIT ----------------------------------------- - Score: 100% - Hot Cache: 19 entities, 56 answers - Gotchas: 53 documented issues - Domain Index: βœ“ - Session Patterns: βœ“ - -πŸ“– INSTRUCTIONS SYSTEM AUDIT ----------------------------------------- - Score: 83% - Files: 4 - Total Tokens: 1256 - Protocol Coverage: - START: βœ“ - WORK: βœ“ - END: βœ“ - Skill: βœ“ - Todo: βœ— - Interrupt: βœ“ - Issues: 2 - ⚠️ Missing Todo protocol in main instructions - ⚠️ protocols.instructions.md is too long (548 tokens, target: <500) - -πŸ› οΈ SKILLS SYSTEM AUDIT ----------------------------------------- - Score: 100% - Categories: 9 - Skills: documentation, akis-development, backend-api, frontend-react, ci-cd, debugging, knowledge, docker, testing - Issues: 8 - ⚠️ Skill documentation missing trigger documentation - ⚠️ Skill akis-development missing trigger documentation - ⚠️ Skill backend-api missing trigger documentation - -πŸ€– AGENTS SYSTEM AUDIT ----------------------------------------- - Score: 100% - Agents: 5 - βœ“ devops - βœ“ documentation - βœ“ debugger - βœ“ code-editor - βœ“ AKIS - Sub-agent Orchestration: βœ“ - ----------------------------------------- -πŸ“Š COMPONENT SCORES SUMMARY ----------------------------------------- - Knowledge [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100% - Instructions [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘] 83% - Skills [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100% - Agents [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100% - OVERALL [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘] 96% - -================================================================================ -PHASE 3: BASELINE 100K SESSION SIMULATION -================================================================================ - -πŸ”„ Simulating 100,000 sessions with CURRENT AKIS state... - -πŸ“Š BASELINE METRICS (Current AKIS): ------------------------------------------------------------- - Metric Value ------------------------------------------------------------- - Avg API Calls/session 41.3 - Avg Tokens/session 24,487 - Avg Resolution Time (min) 26.1 - Workflow Compliance 85.7% - Instruction Following 83.7% - Skill Usage Efficiency 78.8% - Knowledge Cache Hits 73.9% - Cognitive Load (1-10) 4.5 - Task Completeness 91.8% - Success Rate 98.3% - -================================================================================ -PHASE 4: OPTIMIZATION IDENTIFICATION -================================================================================ - -⚑ OPTIMIZATIONS TO APPLY: ------------------------------------------------------------- - - API Reduction: - βœ“ Knowledge First: -30% API calls - βœ“ Operation Batching: -15% API calls - βœ“ Agent Delegation: -20% API/time for complex - - Token Reduction: - βœ“ Hot Cache Expansion: -25% token lookups - βœ“ Compressed Instructions: -10% tokens - βœ“ Skill Caching: -12% tokens - - Speed Improvement: - βœ“ Skill Preloading: -15% resolution time - βœ“ Agent Delegation: -20% API/time for complex - - Compliance: - βœ“ Gate Enforcement: +5% compliance - βœ“ Todo Tracking: +3% compliance - βœ“ Protocol Reminders: +5% instruction following - βœ“ Drift Detection: +5% instruction following - - Quality: - βœ“ Trigger Accuracy: +7% skill usage - βœ“ Clear Protocols: -0.5 cognitive load - βœ“ Verification Steps: +3% completeness - -================================================================================ -PHASE 5: OPTIMIZED 100K SESSION SIMULATION -================================================================================ - -πŸš€ Simulating 100,000 sessions with OPTIMIZED AKIS... - -πŸ“Š OPTIMIZED METRICS: ------------------------------------------------------------- - Metric Value ------------------------------------------------------------- - Avg API Calls/session 20.2 - Avg Tokens/session 19,439 - Avg Resolution Time (min) 17.5 - Workflow Compliance 93.6% - Instruction Following 93.6% - Skill Usage Efficiency 93.6% - Knowledge Cache Hits 91.6% - Cognitive Load (1-10) 3.2 - Task Completeness 94.7% - Success Rate 98.2% - -================================================================================ -PHASE 6: IMPROVEMENT ANALYSIS -================================================================================ - -πŸ“ˆ IMPROVEMENTS (Baseline β†’ Optimized): --------------------------------------------------------------------------------- - Metric Baseline Optimized Change Impact --------------------------------------------------------------------------------- - API Calls 41.3 20.2 +51.0% 🟒 - Tokens 24,487.4 19,438.5 +20.6% 🟒 - Resolution Time 26.1 17.5 +33.1% 🟒 - Compliance 85.7% 93.6% +9.2% 🟒 - Instruction Following 83.7% 93.6% +11.8% 🟒 - Skill Usage 78.8% 93.6% +18.8% 🟒 - Knowledge Usage 73.9% 91.6% +24.0% 🟒 - Cognitive Load 4.5 3.2 +28.9% 🟒 - Completeness 91.8% 94.7% +3.2% 🟒 - Success Rate 98.3% 98.2% -0.0% 🟑 - --------------------------------------------------------------------------------- -πŸ’° TOTAL SAVINGS ACROSS 100,000 SESSIONS: --------------------------------------------------------------------------------- - API Calls Saved: 2,109,171 - Tokens Saved: 504,885,748 - Time Saved (min): 862,745 - Time Saved (hours): 14,379 - - Est. Cost Savings: $ 1,009.77 - -================================================================================ -PHASE 7: RECOMMENDATIONS & ACTION ITEMS -================================================================================ - -🎯 HIGH-PRIORITY OPTIMIZATIONS: ------------------------------------------------------------- - 1. Expand hot_cache to 25+ entities - β†’ API Calls: -30% - 2. Enable operation batching in multi_replace - β†’ API Calls: -15% - 3. Pre-load fullstack skills (frontend-react + backend-api) - β†’ Resolution Time: -15% - 4. Add sub-agent delegation for complex (6+ file) tasks - β†’ All Metrics: -20% - -πŸ“‹ MEDIUM-PRIORITY OPTIMIZATIONS: ------------------------------------------------------------- - 1. Compress instruction tokens to <1500 total - β†’ Improves: Tokens/Cognitive Load - 2. Add drift detection reminders every 5 tasks - β†’ Improves: Instruction Following - 3. Improve skill trigger accuracy via pattern refinement - β†’ Improves: Skill Usage - 4. Add verification steps before marking tasks done - β†’ Improves: Completeness - -βœ… AKIS VALUABLE ELEMENTS (Preserve These): ------------------------------------------------------------- - βœ“ Knowledge hot_cache system (31% query reduction) - βœ“ Skill trigger-based loading (prevents skill bloat) - βœ“ TODO state tracking with manage_todo_list - βœ“ Hard gates (G1-G6) for protocol enforcement - βœ“ Gotchas database for debug acceleration - βœ“ Session patterns for predictive loading - βœ“ Unified script interface (--update/--generate/--suggest) - βœ“ Sub-agent orchestration for complex tasks - -================================================================================ -SIMULATION COMPLETE -================================================================================ - -Generated: 2026-01-09 09:20:36 -Workflow Logs Analyzed: 107 -Sessions Simulated: 200,000 (100k baseline + 100k optimized) -================================================================================ diff --git a/scripts/storm_monitor_20251230_185026.log b/scripts/storm_monitor_20251230_185026.log deleted file mode 100644 index 8f0a8d45..00000000 --- a/scripts/storm_monitor_20251230_185026.log +++ /dev/null @@ -1,452 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: /workspaces/NOP/scripts/storm_monitor_20251230_185026.log -Started: Tue Dec 30 18:50:26 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -[18:50:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 0s -[18:50:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 1s -[18:50:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 2s -[18:50:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 2s -[18:50:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 3s -[18:50:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 3s -[18:50:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 4s -[18:50:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 4s -[18:50:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 5s -[18:50:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 5s -[18:50:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 6s -[18:50:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 7s -[18:50:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 7s -[18:50:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 8s -[18:50:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 8s -[18:50:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 9s -[18:50:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 9s -[18:50:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 10s -[18:50:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 10s -[18:50:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 11s -[18:50:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 12s -[18:50:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 12s -[18:50:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 13s -[18:50:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 13s -[18:50:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 14s -[18:50:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 14s -[18:50:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 15s -[18:50:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 16s -[18:50:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 16s -[18:50:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 17s -[18:50:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 17s -[18:50:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 18s -[18:50:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 18s -[18:50:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 19s -[18:50:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 20s -[18:50:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 20s -[18:50:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 21s -[18:50:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 21s -[18:50:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 22s -[18:50:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 22s -[18:50:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 23s -[18:50:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 23s -[18:50:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 24s -[18:50:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 25s -[18:50:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 25s -[18:50:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 26s -[18:50:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 26s -[18:50:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 27s -[18:50:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 27s -[18:50:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 28s -[18:50:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 28s -[18:50:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 29s -[18:50:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 30s -[18:50:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 30s -[18:50:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 31s -[18:50:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 31s -[18:50:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 32s -[18:50:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 32s -[18:50:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 33s -[18:51:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 33s -[18:51:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 34s -[18:51:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 35s -[18:51:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 35s -[18:51:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 36s -[18:51:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 36s -[18:51:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 37s -[18:51:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 37s -[18:51:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 38s -[18:51:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 39s -[18:51:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 39s -[18:51:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 40s -[18:51:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 40s -[18:51:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 41s -[18:51:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 41s -[18:51:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 42s -[18:51:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 42s -[18:51:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 43s -[18:51:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 44s -[18:51:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 44s -[18:51:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 45s -[18:51:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 45s -[18:51:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 46s -[18:51:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 46s -[18:51:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 47s -[18:51:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 47s -[18:51:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 48s -[18:51:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 49s -[18:51:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 49s -[18:51:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 50s -[18:51:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 50s -[18:51:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 51s -[18:51:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 51s -[18:51:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 52s -[18:51:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 53s -[18:51:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 53s -[18:51:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 54s -[18:51:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 54s -[18:51:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 55s -[18:51:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 55s -[18:51:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 56s -[18:51:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 57s -[18:51:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 57s -[18:51:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 58s -[18:51:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 58s -[18:51:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 59s -[18:51:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 59s -[18:51:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 60s -[18:51:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 60s -[18:51:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 61s -[18:51:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 62s -[18:51:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 62s -[18:51:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 63s -[18:51:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 63s -[18:51:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 64s -[18:51:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 64s -[18:51:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 65s -[18:51:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 66s -[18:51:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 66s -[18:51:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 67s -[18:51:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 67s -[18:51:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 68s -[18:51:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 68s -[18:51:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 69s -[18:51:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 69s -[18:51:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 70s -[18:51:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 71s -[18:51:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 71s -[18:51:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 72s -[18:51:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 72s -[18:51:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 73s -[18:51:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 73s -[18:51:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 74s -[18:51:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 74s -[18:51:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 75s -[18:51:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 76s -[18:51:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 76s -[18:51:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 77s -[18:51:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 77s -[18:51:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 78s -[18:51:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 78s -[18:51:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 79s -[18:51:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 80s -[18:51:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 80s -[18:51:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 81s -[18:51:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 81s -[18:51:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 82s -[18:51:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 82s -[18:51:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 83s -[18:51:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 83s -[18:51:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 84s -[18:51:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 85s -[18:51:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 85s -[18:51:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 86s -[18:51:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 86s -[18:51:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 87s -[18:51:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 87s -[18:51:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 88s -[18:51:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 88s -[18:51:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 89s -[18:51:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 90s -[18:51:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 90s -[18:51:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 91s -[18:51:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 91s -[18:51:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 92s -[18:51:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 92s -[18:51:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 93s -[18:51:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 93s -[18:52:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 94s -[18:52:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 95s -[18:52:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 95s -[18:52:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 96s -[18:52:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 96s -[18:52:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 97s -[18:52:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 97s -[18:52:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 98s -[18:52:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 98s -[18:52:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 99s -[18:52:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 100s -[18:52:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 100s -[18:52:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 101s -[18:52:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 101s -[18:52:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 102s -[18:52:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 102s -[18:52:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 103s -[18:52:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 103s -[18:52:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 104s -[18:52:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 105s -[18:52:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 105s -[18:52:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 106s -[18:52:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 106s -[18:52:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 107s -[18:52:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 107s -[18:52:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 108s -[18:52:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 108s -[18:52:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 109s -[18:52:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 110s -[18:52:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 110s -[18:52:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 111s -[18:52:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 111s -[18:52:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 112s -[18:52:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 112s -[18:52:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 113s -[18:52:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 113s -[18:52:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 114s -[18:52:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 115s -[18:52:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 115s -[18:52:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 116s -[18:52:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 116s -[18:52:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 117s -[18:52:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 117s -[18:52:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 118s -[18:52:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 119s -[18:52:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 119s -[18:52:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 120s -[18:52:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 120s -[18:52:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 121s -[18:52:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 121s -[18:52:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 122s -[18:52:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 122s -[18:52:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 123s -[18:52:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 124s -[18:52:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 124s -[18:52:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 125s -[18:52:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 125s -[18:52:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 126s -[18:52:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 126s -[18:52:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 127s -[18:52:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 127s -[18:52:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 128s -[18:52:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 129s -[18:52:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 129s -[18:52:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 130s -[18:52:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 130s -[18:52:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 131s -[18:52:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 131s -[18:52:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 132s -[18:52:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 132s -[18:52:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 133s -[18:52:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 134s -[18:52:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 134s -[18:52:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 135s -[18:52:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 135s -[18:52:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 136s -[18:52:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 136s -[18:52:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 137s -[18:52:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 137s -[18:52:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 138s -[18:52:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 139s -[18:52:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 139s -[18:52:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 140s -[18:52:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 140s -[18:52:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 141s -[18:52:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 141s -[18:52:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 142s -[18:52:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 142s -[18:52:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 143s -[18:52:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 144s -[18:52:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 144s -[18:52:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 145s -[18:52:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 145s -[18:52:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 146s -[18:52:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 146s -[18:52:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 147s -[18:52:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 147s -[18:52:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 148s -[18:52:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 149s -[18:52:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 149s -[18:52:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 150s -[18:52:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 150s -[18:52:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 151s -[18:52:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 151s -[18:52:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 152s -[18:52:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 152s -[18:52:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 153s -[18:53:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 154s -[18:53:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 154s -[18:53:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 155s -[18:53:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 155s -[18:53:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 156s -[18:53:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 156s -[18:53:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 157s -[18:53:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 157s -[18:53:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 158s -[18:53:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 159s -[18:53:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 159s -[18:53:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 160s -[18:53:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 160s -[18:53:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 161s -[18:53:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 161s -[18:53:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 162s -[18:53:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 162s -[18:53:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 163s -[18:53:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 164s -[18:53:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 164s -[18:53:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 165s -[18:53:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 165s -[18:53:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 166s -[18:53:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 166s -[18:53:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 167s -[18:53:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 168s -[18:53:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 168s -[18:53:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 169s -[18:53:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 169s -[18:53:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 170s -[18:53:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 170s -[18:53:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 171s -[18:53:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 171s -[18:53:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 172s -[18:53:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 173s -[18:53:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 173s -[18:53:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 174s -[18:53:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 174s -[18:53:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 175s -[18:53:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 175s -[18:53:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 176s -[18:53:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 176s -[18:53:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 177s -[18:53:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 178s -[18:53:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 178s -[18:53:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 179s -[18:53:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 179s -[18:53:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 180s -[18:53:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 180s -[18:53:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 181s -[18:53:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 181s -[18:53:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 182s -[18:53:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 183s -[18:53:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 183s -[18:53:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 184s -[18:53:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 184s -[18:53:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 185s -[18:53:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 185s -[18:53:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 186s -[18:53:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 186s -[18:53:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 187s -[18:53:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 188s -[18:53:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 188s -[18:53:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 189s -[18:53:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 189s -[18:53:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 190s -[18:53:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 190s -[18:53:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 191s -[18:53:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 191s -[18:53:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 192s -[18:53:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 193s -[18:53:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 193s -[18:53:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 194s -[18:53:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 194s -[18:53:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 195s -[18:53:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 195s -[18:53:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 196s -[18:53:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 196s -[18:53:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 197s -[18:53:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 198s -[18:53:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 198s -[18:53:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 199s -[18:53:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 199s -[18:53:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 200s -[18:53:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 200s -[18:53:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 201s -[18:53:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 201s -[18:53:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 202s -[18:53:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 203s -[18:53:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 203s -[18:53:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 204s -[18:53:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 204s -[18:53:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 205s -[18:53:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 205s -[18:53:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 206s -[18:53:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 206s -[18:53:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 207s -[18:53:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 208s -[18:53:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 208s -[18:53:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 209s -[18:53:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 209s -[18:53:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 210s -[18:53:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 210s -[18:53:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 211s -[18:53:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 212s -[18:53:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 212s -[18:53:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 213s -[18:53:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 213s -[18:54:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 214s -[18:54:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 214s -[18:54:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 215s -[18:54:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 215s -[18:54:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 216s -[18:54:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 217s -[18:54:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 217s -[18:54:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 218s -[18:54:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 218s -[18:54:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 219s -[18:54:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 219s -[18:54:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 220s -[18:54:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 220s -[18:54:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 221s -[18:54:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 222s -[18:54:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 222s -[18:54:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 223s -[18:54:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 223s -[18:54:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 224s -[18:54:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 224s -[18:54:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 225s -[18:54:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 226s -[18:54:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 226s -[18:54:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 227s -[18:54:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 227s -[18:54:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 228s -[18:54:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 228s -[18:54:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 229s -[18:54:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 229s -[18:54:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 230s -[18:54:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 231s -[18:54:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 231s -[18:54:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 232s -[18:54:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 232s -[18:54:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 233s -[18:54:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 233s -[18:54:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 234s -[18:54:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 234s -[18:54:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 235s -[18:54:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 236s -[18:54:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 236s -[18:54:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 237s -[18:54:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 237s -[18:54:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 238s -[18:54:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 238s -[18:54:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 239s -[18:54:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 240s -[18:54:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 240s diff --git a/scripts/storm_monitor_20251230_185446.log b/scripts/storm_monitor_20251230_185446.log deleted file mode 100644 index cfb54fd3..00000000 --- a/scripts/storm_monitor_20251230_185446.log +++ /dev/null @@ -1,789 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_20251230_185446.log -Started: Tue Dec 30 18:54:46 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -[18:54:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 0s -[18:54:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 0s -[18:54:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 1s -[18:54:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 2s -[18:54:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 2s -[18:54:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 3s -[18:54:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 3s -[18:54:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 4s -[18:54:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 4s -[18:54:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 5s -[18:54:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 5s -[18:54:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 6s -[18:54:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 7s -[18:54:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 7s -[18:54:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 8s -[18:54:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 8s -[18:54:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 9s -[18:54:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 9s -[18:54:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 10s -[18:54:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 10s -[18:54:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 11s -[18:54:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 12s -[18:54:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 12s -[18:54:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 13s -[18:54:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 13s -[18:55:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 14s -[18:55:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 14s -[18:55:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 15s -[18:55:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 16s -[18:55:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 16s -[18:55:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 17s -[18:55:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 17s -[18:55:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 18s -[18:55:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 18s -[18:55:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 19s -[18:55:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 19s -[18:55:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 20s -[18:55:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 21s -[18:55:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 21s -[18:55:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 22s -[18:55:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 22s -[18:55:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 23s -[18:55:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 23s -[18:55:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 24s -[18:55:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 24s -[18:55:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 25s -[18:55:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 26s -[18:55:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 26s -[18:55:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 27s -[18:55:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 27s -[18:55:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 28s -[18:55:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 28s -[18:55:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 29s -[18:55:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 29s -[18:55:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 30s -[18:55:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 31s -[18:55:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 31s -[18:55:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 32s -[18:55:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 32s -[18:55:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 33s -[18:55:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 33s -[18:55:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 34s -[18:55:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 34s -[18:55:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 35s -[18:55:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 36s -[18:55:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 36s -[18:55:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 37s -[18:55:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 37s -[18:55:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 38s -[18:55:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 38s -[18:55:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 39s -[18:55:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 39s -[18:55:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 40s -[18:55:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 41s -[18:55:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 41s -[18:55:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 42s -[18:55:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 42s -[18:55:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 43s -[18:55:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 43s -[18:55:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 44s -[18:55:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 45s -[18:55:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 45s -[18:55:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 46s -[18:55:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 46s -[18:55:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 47s -[18:55:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 47s -[18:55:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 48s -[18:55:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 48s -[18:55:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 49s -[18:55:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 50s -[18:55:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 50s -[18:55:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 51s -[18:55:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 51s -[18:55:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 52s -[18:55:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 52s -[18:55:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 53s -[18:55:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 54s -[18:55:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 54s -[18:55:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 55s -[18:55:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 55s -[18:55:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 56s -[18:55:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 56s -[18:55:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 57s -[18:55:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 57s -[18:55:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 58s -[18:55:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 59s -[18:55:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 59s -[18:55:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 60s -[18:55:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 60s -[18:55:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 61s -[18:55:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 61s -[18:55:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 62s -[18:55:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 62s -[18:55:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 63s -[18:55:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 64s -[18:55:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 64s -[18:55:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 65s -[18:55:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 65s -[18:55:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 66s -[18:55:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 66s -[18:55:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 67s -[18:55:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 67s -[18:55:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 68s -[18:55:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 69s -[18:55:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 69s -[18:55:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 70s -[18:55:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 70s -[18:55:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 71s -[18:55:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 71s -[18:55:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 72s -[18:55:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 73s -[18:55:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 73s -[18:56:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 74s -[18:56:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 74s -[18:56:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 75s -[18:56:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 75s -[18:56:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 76s -[18:56:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 76s -[18:56:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 77s -[18:56:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 78s -[18:56:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 78s -[18:56:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 79s -[18:56:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 79s -[18:56:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 80s -[18:56:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 80s -[18:56:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 81s -[18:56:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 82s -[18:56:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 82s -[18:56:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 83s -[18:56:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 83s -[18:56:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 84s -[18:56:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 85s -[18:56:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 85s -[18:56:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 86s -[18:56:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 86s -[18:56:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 87s -[18:56:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 87s -[18:56:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 88s -[18:56:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 89s -[18:56:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 89s -[18:56:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 90s -[18:56:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 91s -[18:56:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 91s -[18:56:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 92s -[18:56:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 93s -[18:56:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 93s -[18:56:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 94s -[18:56:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 94s -[18:56:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 95s -[18:56:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 96s -[18:56:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 96s -[18:56:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 97s -[18:56:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 97s -[18:56:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 98s -[18:56:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 99s -[18:56:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 99s -[18:56:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 100s -[18:56:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 100s -[18:56:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 101s -[18:56:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 101s -[18:56:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 102s -[18:56:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 103s -[18:56:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 103s -[18:56:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 104s -[18:56:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 105s -[18:56:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 105s -[18:56:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 106s -[18:56:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 106s -[18:56:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 107s -[18:56:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 107s -[18:56:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 108s -[18:56:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 109s -[18:56:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 109s -[18:56:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 110s -[18:56:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 110s -[18:56:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 111s -[18:56:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 111s -[18:56:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 112s -[18:56:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 113s -[18:56:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 113s -[18:56:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 114s -[18:56:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 114s -[18:56:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 115s -[18:56:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 116s -[18:56:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 116s -[18:56:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 117s -[18:56:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 117s -[18:56:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 118s -[18:56:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 118s -[18:56:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 119s -[18:56:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 120s -[18:56:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 120s -[18:56:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 121s -[18:56:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 121s -[18:56:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 122s -[18:56:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 123s -[18:56:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 123s -[18:56:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 124s -[18:56:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 124s -[18:56:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 125s -[18:56:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 125s -[18:56:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 126s -[18:56:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 127s -[18:56:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 127s -[18:56:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 128s -[18:56:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 128s -[18:56:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 129s -[18:56:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 130s -[18:56:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 130s -[18:56:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 131s -[18:56:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 131s -[18:56:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 132s -[18:56:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 133s -[18:56:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 133s -[18:57:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 134s -[18:57:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 134s -[18:57:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 135s -[18:57:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 135s -[18:57:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 136s -[18:57:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 136s -[18:57:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 137s -[18:57:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 138s -[18:57:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 138s -[18:57:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 139s -[18:57:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 139s -[18:57:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 140s -[18:57:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 140s -[18:57:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 141s -[18:57:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 141s -[18:57:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 142s -[18:57:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 143s -[18:57:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 143s -[18:57:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 144s -[18:57:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 144s -[18:57:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 145s -[18:57:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 145s -[18:57:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 146s -[18:57:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 147s -[18:57:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 147s -[18:57:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 148s -[18:57:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 148s -[18:57:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 149s -[18:57:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 149s -[18:57:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 150s -[18:57:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 150s -[18:57:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 151s -[18:57:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 152s -[18:57:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 152s -[18:57:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 153s -[18:57:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 153s -[18:57:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 154s -[18:57:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 154s -[18:57:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 155s -[18:57:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 155s -[18:57:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 156s -[18:57:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 157s -[18:57:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 157s -[18:57:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 158s -[18:57:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 158s -[18:57:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 159s -[18:57:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 159s -[18:57:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 160s -[18:57:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 161s -[18:57:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 161s -[18:57:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 162s -[18:57:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 162s -[18:57:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 163s -[18:57:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 163s -[18:57:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 164s -[18:57:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 164s -[18:57:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 165s -[18:57:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 166s -[18:57:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 166s -[18:57:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 167s -[18:57:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 167s -[18:57:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 168s -[18:57:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 168s -[18:57:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 169s -[18:57:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 169s -[18:57:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 170s -[18:57:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 171s -[18:57:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 171s -[18:57:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 172s -[18:57:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 172s -[18:57:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 173s -[18:57:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 173s -[18:57:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 174s -[18:57:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 175s -[18:57:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 175s -[18:57:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 176s -[18:57:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 176s -[18:57:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 177s -[18:57:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 177s -[18:57:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 178s -[18:57:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 178s -[18:57:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 179s -[18:57:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 180s -[18:57:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 180s -[18:57:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 181s -[18:57:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 181s -[18:57:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 182s -[18:57:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 182s -[18:57:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 183s -[18:57:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 184s -[18:57:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 184s -[18:57:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 185s -[18:57:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 185s -[18:57:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 186s -[18:57:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 186s -[18:57:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 187s -[18:57:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 188s -[18:57:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 188s -[18:57:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 189s -[18:57:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 189s -[18:57:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 190s -[18:57:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 190s -[18:57:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 191s -[18:57:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 191s -[18:57:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 192s -[18:57:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 193s -[18:57:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 193s -[18:58:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 194s -[18:58:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 194s -[18:58:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 195s -[18:58:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 195s -[18:58:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 196s -[18:58:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 197s -[18:58:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 197s -[18:58:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 198s -[18:58:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 198s -[18:58:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 199s -[18:58:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 199s -[18:58:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 200s -[18:58:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 200s -[18:58:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 201s -[18:58:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 202s -[18:58:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 202s -[18:58:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 203s -[18:58:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 203s -[18:58:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 204s -[18:58:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 205s -[18:58:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 205s -[18:58:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 206s -[18:58:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 206s -[18:58:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 207s -[18:58:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 207s -[18:58:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 208s -[18:58:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 208s -[18:58:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 209s -[18:58:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 210s -[18:58:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 210s -[18:58:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 211s -[18:58:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 211s -[18:58:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 212s -[18:58:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 212s -[18:58:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 213s -[18:58:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 214s -[18:58:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 214s -[18:58:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 215s -[18:58:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 215s -[18:58:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 216s -[18:58:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 216s -[18:58:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 217s -[18:58:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 218s -[18:58:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 218s -[18:58:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 219s -[18:58:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 219s -[18:58:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 220s -[18:58:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 221s -[18:58:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 221s -[18:58:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 222s -[18:58:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 222s -[18:58:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 223s -[18:58:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 223s -[18:58:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 224s -[18:58:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 224s -[18:58:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 225s -[18:58:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 226s -[18:58:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 226s -[18:58:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 227s -[18:58:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 227s -[18:58:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 228s -[18:58:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 228s -[18:58:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 229s -[18:58:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 230s -[18:58:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 230s -[18:58:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 231s -[18:58:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 231s -[18:58:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 232s -[18:58:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 232s -[18:58:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 233s -[18:58:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 233s -[18:58:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 234s -[18:58:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 235s -[18:58:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 235s -[18:58:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 236s -[18:58:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 236s -[18:58:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 237s -[18:58:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 237s -[18:58:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 238s -[18:58:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 239s -[18:58:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 239s -[18:58:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 240s -[18:58:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 240s -[18:58:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 241s -[18:58:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 241s -[18:58:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 242s -[18:58:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 243s -[18:58:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 243s -[18:58:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 244s -[18:58:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 244s -[18:58:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 245s -[18:58:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 245s -[18:58:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 246s -[18:58:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 247s -[18:58:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 247s -[18:58:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 248s -[18:58:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 248s -[18:58:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 249s -[18:58:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 249s -[18:58:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 250s -[18:58:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 250s -[18:58:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 251s -[18:58:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 252s -[18:58:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 252s -[18:58:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 253s -[18:58:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 253s -[18:59:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 254s -[18:59:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 254s -[18:59:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 255s -[18:59:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 256s -[18:59:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 256s -[18:59:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 257s -[18:59:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 257s -[18:59:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 258s -[18:59:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 258s -[18:59:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 259s -[18:59:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 259s -[18:59:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 260s -[18:59:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 261s -[18:59:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 261s -[18:59:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 262s -[18:59:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 262s -[18:59:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 263s -[18:59:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 263s -[18:59:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 264s -[18:59:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 265s -[18:59:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 265s -[18:59:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 266s -[18:59:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 266s -[18:59:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 267s -[18:59:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 267s -[18:59:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 268s -[18:59:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 269s -[18:59:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 269s -[18:59:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 270s -[18:59:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 270s -[18:59:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 271s -[18:59:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 271s -[18:59:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 272s -[18:59:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 272s -[18:59:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 273s -[18:59:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 274s -[18:59:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 274s -[18:59:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 275s -[18:59:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 275s -[18:59:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 276s -[18:59:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 276s -[18:59:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 277s -[18:59:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 278s -[18:59:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 278s -[18:59:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 279s -[18:59:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 279s -[18:59:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 280s -[18:59:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 280s -[18:59:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 281s -[18:59:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 282s -[18:59:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 282s -[18:59:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 283s -[18:59:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 283s -[18:59:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 284s -[18:59:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 284s -[18:59:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 285s -[18:59:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 285s -[18:59:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 286s -[18:59:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 287s -[18:59:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 287s -[18:59:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 288s -[18:59:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 288s -[18:59:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 289s -[18:59:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 289s -[18:59:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 290s -[18:59:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 291s -[18:59:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 291s -[18:59:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 292s -[18:59:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 292s -[18:59:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 293s -[18:59:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 293s -[18:59:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 294s -[18:59:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 295s -[18:59:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 295s -[18:59:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 296s -[18:59:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 296s -[18:59:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 297s -[18:59:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 297s -[18:59:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 298s -[18:59:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 299s -[18:59:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 299s -[18:59:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 300s -[18:59:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 300s -[18:59:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 301s -[18:59:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 301s -[18:59:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 302s -[18:59:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 302s -[18:59:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 303s -[18:59:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 304s -[18:59:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 304s -[18:59:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 305s -[18:59:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 305s -[18:59:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 306s -[18:59:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 306s -[18:59:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 307s -[18:59:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 308s -[18:59:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 308s -[18:59:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 309s -[18:59:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 309s -[18:59:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 310s -[18:59:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 310s -[18:59:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 311s -[18:59:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 312s -[18:59:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 312s -[18:59:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 313s -[18:59:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 313s -[19:00:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 314s -[19:00:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 314s -[19:00:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 315s -[19:00:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 315s -[19:00:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 316s -[19:00:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 317s -[19:00:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 317s -[19:00:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 318s -[19:00:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 318s -[19:00:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 319s -[19:00:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 319s -[19:00:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 320s -[19:00:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 321s -[19:00:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 321s -[19:00:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 322s -[19:00:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 322s -[19:00:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 323s -[19:00:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 323s -[19:00:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 324s -[19:00:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 324s -[19:00:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 325s -[19:00:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 326s -[19:00:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 326s -[19:00:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 327s -[19:00:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 327s -[19:00:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 328s -[19:00:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 328s -[19:00:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 329s -[19:00:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 330s -[19:00:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 330s -[19:00:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 331s -[19:00:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 331s -[19:00:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 332s -[19:00:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 332s -[19:00:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 333s -[19:00:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 334s -[19:00:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 334s -[19:00:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 335s -[19:00:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 335s -[19:00:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 336s -[19:00:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 336s -[19:00:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 337s -[19:00:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 337s -[19:00:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 338s -[19:00:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 339s -[19:00:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 339s -[19:00:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 340s -[19:00:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 340s -[19:00:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 341s -[19:00:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 341s -[19:00:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 342s -[19:00:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 343s -[19:00:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 343s -[19:00:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 344s -[19:00:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 344s -[19:00:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 345s -[19:00:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 345s -[19:00:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 346s -[19:00:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 347s -[19:00:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 347s -[19:00:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 348s -[19:00:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 348s -[19:00:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 349s -[19:00:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 349s -[19:00:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 350s -[19:00:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 351s -[19:00:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 351s -[19:00:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 352s -[19:00:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 352s -[19:00:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 353s -[19:00:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 353s -[19:00:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 354s -[19:00:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 354s -[19:00:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 355s -[19:00:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 356s -[19:00:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 356s -[19:00:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 357s -[19:00:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 357s -[19:00:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 358s -[19:00:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 359s -[19:00:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 359s -[19:00:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 360s -[19:00:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 360s -[19:00:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 361s -[19:00:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 361s -[19:00:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 362s -[19:00:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 363s -[19:00:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 363s -[19:00:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 364s -[19:00:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 364s -[19:00:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 365s -[19:00:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 365s -[19:00:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 366s -[19:00:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 367s -[19:00:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 367s -[19:00:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 368s -[19:00:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 368s -[19:00:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 369s -[19:00:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 369s -[19:00:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 370s -[19:00:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 371s -[19:00:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 371s -[19:00:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 372s -[19:00:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 372s -[19:00:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 373s -[19:00:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 373s -[19:01:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 374s -[19:01:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 374s -[19:01:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 375s -[19:01:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 376s -[19:01:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 376s -[19:01:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 377s -[19:01:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 377s -[19:01:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 378s -[19:01:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 378s -[19:01:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 379s -[19:01:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 380s -[19:01:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 380s -[19:01:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 381s -[19:01:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 381s -[19:01:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 382s -[19:01:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 382s -[19:01:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 383s -[19:01:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 384s -[19:01:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 384s -[19:01:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 385s -[19:01:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 385s -[19:01:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 386s -[19:01:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 386s -[19:01:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 387s -[19:01:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 388s -[19:01:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 388s -[19:01:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 389s -[19:01:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 389s -[19:01:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 390s -[19:01:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 390s -[19:01:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 391s -[19:01:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 391s -[19:01:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 392s -[19:01:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 393s -[19:01:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 393s -[19:01:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 394s -[19:01:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 394s -[19:01:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 395s -[19:01:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 395s -[19:01:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 396s -[19:01:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 397s -[19:01:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 397s -[19:01:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 398s -[19:01:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 398s -[19:01:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 399s -[19:01:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 399s -[19:01:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 400s -[19:01:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 400s -[19:01:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 401s -[19:01:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 402s -[19:01:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 402s -[19:01:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 403s -[19:01:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 403s -[19:01:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 404s -[19:01:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 404s -[19:01:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 405s -[19:01:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 406s -[19:01:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 406s -[19:01:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 407s -[19:01:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 407s -[19:01:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 408s -[19:01:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 408s -[19:01:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 409s -[19:01:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 409s -[19:01:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 410s -[19:01:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 411s -[19:01:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 411s -[19:01:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 412s -[19:01:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 412s -[19:01:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 413s -[19:01:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 413s -[19:01:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 414s -[19:01:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 415s -[19:01:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 415s -[19:01:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 416s -[19:01:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 416s -[19:01:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 417s -[19:01:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 417s -[19:01:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 418s -[19:01:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 419s -[19:01:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 419s -[19:01:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 420s -[19:01:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 420s -[19:01:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 421s -[19:01:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 421s -[19:01:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 422s -[19:01:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 423s -[19:01:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 423s -[19:01:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 424s -[19:01:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 424s -[19:01:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 425s -[19:01:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 425s -[19:01:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 426s -[19:01:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 426s -[19:01:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 427s -[19:01:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 427s -[19:01:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 428s -[19:01:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 428s -[19:01:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 429s -[19:01:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 430s -[19:01:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 431s -[19:01:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 431s -[19:01:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 432s -[19:01:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 432s -[19:01:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 433s -[19:02:01] πŸ“Š PPS: 1 | Avg: 0 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 434s -[19:02:02] πŸ“Š PPS: 1 | Avg: 0 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 435s -[19:02:04] πŸ“Š PPS: 1 | Avg: 0 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 437s diff --git a/scripts/storm_monitor_20251230_185708.log b/scripts/storm_monitor_20251230_185708.log deleted file mode 100644 index 8fdce311..00000000 --- a/scripts/storm_monitor_20251230_185708.log +++ /dev/null @@ -1,540 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_20251230_185708.log -Started: Tue Dec 30 18:57:08 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -[18:57:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 0s -[18:57:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 1s -[18:57:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 1s -[18:57:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 2s -[18:57:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 2s -[18:57:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 3s -[18:57:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 3s -[18:57:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 4s -[18:57:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 4s -[18:57:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 5s -[18:57:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 6s -[18:57:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 6s -[18:57:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 7s -[18:57:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 7s -[18:57:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 8s -[18:57:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 8s -[18:57:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 9s -[18:57:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 10s -[18:57:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 10s -[18:57:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 11s -[18:57:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 11s -[18:57:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 12s -[18:57:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 12s -[18:57:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 13s -[18:57:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 13s -[18:57:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 14s -[18:57:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 15s -[18:57:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 15s -[18:57:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 16s -[18:57:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 16s -[18:57:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 17s -[18:57:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 17s -[18:57:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 18s -[18:57:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 18s -[18:57:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 19s -[18:57:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 20s -[18:57:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 20s -[18:57:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 21s -[18:57:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 21s -[18:57:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 22s -[18:57:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 22s -[18:57:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 23s -[18:57:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 24s -[18:57:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 24s -[18:57:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 25s -[18:57:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 25s -[18:57:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 26s -[18:57:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 26s -[18:57:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 27s -[18:57:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 27s -[18:57:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 28s -[18:57:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 29s -[18:57:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 29s -[18:57:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 30s -[18:57:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 30s -[18:57:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 31s -[18:57:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 31s -[18:57:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 32s -[18:57:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 33s -[18:57:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 33s -[18:57:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 34s -[18:57:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 34s -[18:57:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 35s -[18:57:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 35s -[18:57:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 36s -[18:57:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 36s -[18:57:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 37s -[18:57:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 38s -[18:57:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 38s -[18:57:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 39s -[18:57:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 39s -[18:57:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 40s -[18:57:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 40s -[18:57:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 41s -[18:57:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 42s -[18:57:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 42s -[18:57:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 43s -[18:57:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 43s -[18:57:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 44s -[18:57:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 44s -[18:57:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 45s -[18:57:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 46s -[18:57:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 46s -[18:57:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 47s -[18:57:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 47s -[18:57:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 48s -[18:57:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 48s -[18:57:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 49s -[18:57:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 49s -[18:57:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 50s -[18:57:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 51s -[18:57:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 51s -[18:58:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 52s -[18:58:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 52s -[18:58:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 53s -[18:58:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 53s -[18:58:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 54s -[18:58:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 55s -[18:58:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 55s -[18:58:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 56s -[18:58:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 56s -[18:58:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 57s -[18:58:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 57s -[18:58:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 58s -[18:58:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 58s -[18:58:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 59s -[18:58:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 60s -[18:58:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 60s -[18:58:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 61s -[18:58:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 61s -[18:58:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 62s -[18:58:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 63s -[18:58:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 63s -[18:58:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 64s -[18:58:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 64s -[18:58:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 65s -[18:58:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 65s -[18:58:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 66s -[18:58:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 66s -[18:58:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 67s -[18:58:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 68s -[18:58:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 68s -[18:58:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 69s -[18:58:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 69s -[18:58:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 70s -[18:58:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 70s -[18:58:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 71s -[18:58:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 72s -[18:58:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 72s -[18:58:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 73s -[18:58:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 73s -[18:58:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 74s -[18:58:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 74s -[18:58:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 75s -[18:58:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 76s -[18:58:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 76s -[18:58:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 77s -[18:58:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 77s -[18:58:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 78s -[18:58:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 79s -[18:58:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 79s -[18:58:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 80s -[18:58:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 80s -[18:58:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 81s -[18:58:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 81s -[18:58:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 82s -[18:58:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 82s -[18:58:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 83s -[18:58:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 84s -[18:58:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 84s -[18:58:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 85s -[18:58:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 85s -[18:58:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 86s -[18:58:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 86s -[18:58:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 87s -[18:58:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 88s -[18:58:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 88s -[18:58:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 89s -[18:58:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 89s -[18:58:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 90s -[18:58:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 90s -[18:58:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 91s -[18:58:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 91s -[18:58:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 92s -[18:58:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 93s -[18:58:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 93s -[18:58:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 94s -[18:58:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 94s -[18:58:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 95s -[18:58:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 95s -[18:58:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 96s -[18:58:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 97s -[18:58:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 97s -[18:58:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 98s -[18:58:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 98s -[18:58:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 99s -[18:58:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 99s -[18:58:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 100s -[18:58:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 101s -[18:58:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 101s -[18:58:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 102s -[18:58:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 102s -[18:58:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 103s -[18:58:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 103s -[18:58:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 104s -[18:58:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 105s -[18:58:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 105s -[18:58:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 106s -[18:58:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 106s -[18:58:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 107s -[18:58:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 107s -[18:58:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 108s -[18:58:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 108s -[18:58:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 109s -[18:58:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 110s -[18:58:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 110s -[18:58:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 111s -[18:58:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 111s -[18:59:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 112s -[18:59:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 112s -[18:59:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 113s -[18:59:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 114s -[18:59:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 114s -[18:59:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 115s -[18:59:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 115s -[18:59:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 116s -[18:59:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 116s -[18:59:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 117s -[18:59:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 117s -[18:59:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 118s -[18:59:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 119s -[18:59:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 119s -[18:59:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 120s -[18:59:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 120s -[18:59:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 121s -[18:59:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 121s -[18:59:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 122s -[18:59:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 123s -[18:59:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 123s -[18:59:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 124s -[18:59:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 124s -[18:59:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 125s -[18:59:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 125s -[18:59:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 126s -[18:59:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 127s -[18:59:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 127s -[18:59:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 128s -[18:59:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 128s -[18:59:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 129s -[18:59:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 129s -[18:59:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 130s -[18:59:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 130s -[18:59:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 131s -[18:59:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 132s -[18:59:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 132s -[18:59:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 133s -[18:59:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 133s -[18:59:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 134s -[18:59:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 134s -[18:59:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 135s -[18:59:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 136s -[18:59:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 136s -[18:59:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 137s -[18:59:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 137s -[18:59:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 138s -[18:59:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 138s -[18:59:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 139s -[18:59:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 140s -[18:59:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 140s -[18:59:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 141s -[18:59:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 141s -[18:59:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 142s -[18:59:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 142s -[18:59:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 143s -[18:59:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 143s -[18:59:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 144s -[18:59:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 145s -[18:59:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 145s -[18:59:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 146s -[18:59:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 146s -[18:59:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 147s -[18:59:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 147s -[18:59:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 148s -[18:59:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 149s -[18:59:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 149s -[18:59:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 150s -[18:59:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 150s -[18:59:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 151s -[18:59:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 151s -[18:59:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 152s -[18:59:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 153s -[18:59:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 153s -[18:59:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 154s -[18:59:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 154s -[18:59:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 155s -[18:59:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 155s -[18:59:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 156s -[18:59:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 157s -[18:59:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 157s -[18:59:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 158s -[18:59:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 158s -[18:59:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 159s -[18:59:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 159s -[18:59:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 160s -[18:59:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 160s -[18:59:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 161s -[18:59:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 162s -[18:59:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 162s -[18:59:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 163s -[18:59:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 163s -[18:59:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 164s -[18:59:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 164s -[18:59:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 165s -[18:59:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 166s -[18:59:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 166s -[18:59:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 167s -[18:59:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 167s -[18:59:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 168s -[18:59:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 168s -[18:59:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 169s -[18:59:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 170s -[18:59:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 170s -[18:59:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 171s -[18:59:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 171s -[19:00:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 172s -[19:00:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 172s -[19:00:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 173s -[19:00:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 173s -[19:00:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 174s -[19:00:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 175s -[19:00:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 175s -[19:00:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 176s -[19:00:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 176s -[19:00:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 177s -[19:00:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 177s -[19:00:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 178s -[19:00:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 179s -[19:00:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 179s -[19:00:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 180s -[19:00:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 180s -[19:00:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 181s -[19:00:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 181s -[19:00:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 182s -[19:00:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 182s -[19:00:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 183s -[19:00:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 184s -[19:00:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 184s -[19:00:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 185s -[19:00:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 185s -[19:00:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 186s -[19:00:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 186s -[19:00:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 187s -[19:00:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 188s -[19:00:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 188s -[19:00:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 189s -[19:00:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 189s -[19:00:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 190s -[19:00:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 190s -[19:00:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 191s -[19:00:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 192s -[19:00:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 192s -[19:00:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 193s -[19:00:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 193s -[19:00:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 194s -[19:00:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 194s -[19:00:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 195s -[19:00:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 195s -[19:00:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 196s -[19:00:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 197s -[19:00:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 197s -[19:00:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 198s -[19:00:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 198s -[19:00:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 199s -[19:00:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 199s -[19:00:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 200s -[19:00:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 201s -[19:00:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 201s -[19:00:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 202s -[19:00:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 202s -[19:00:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 203s -[19:00:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 203s -[19:00:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 204s -[19:00:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 205s -[19:00:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 205s -[19:00:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 206s -[19:00:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 206s -[19:00:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 207s -[19:00:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 207s -[19:00:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 208s -[19:00:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 209s -[19:00:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 209s -[19:00:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 210s -[19:00:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 210s -[19:00:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 211s -[19:00:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 211s -[19:00:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 212s -[19:00:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 212s -[19:00:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 213s -[19:00:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 214s -[19:00:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 214s -[19:00:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 215s -[19:00:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 215s -[19:00:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 216s -[19:00:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 217s -[19:00:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 217s -[19:00:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 218s -[19:00:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 218s -[19:00:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 219s -[19:00:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 219s -[19:00:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 220s -[19:00:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 221s -[19:00:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 221s -[19:00:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 222s -[19:00:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 222s -[19:00:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 223s -[19:00:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 223s -[19:00:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 224s -[19:00:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 225s -[19:00:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 225s -[19:00:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 226s -[19:00:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 226s -[19:00:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 227s -[19:00:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 227s -[19:00:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 228s -[19:00:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 229s -[19:00:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 229s -[19:00:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 230s -[19:00:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 230s -[19:00:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 231s -[19:00:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 231s -[19:01:00] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 232s -[19:01:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 232s -[19:01:01] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 233s -[19:01:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 234s -[19:01:02] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 234s -[19:01:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 235s -[19:01:03] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 235s -[19:01:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 236s -[19:01:04] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 236s -[19:01:05] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 237s -[19:01:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 238s -[19:01:06] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 238s -[19:01:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 239s -[19:01:07] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 239s -[19:01:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 240s -[19:01:08] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 240s -[19:01:09] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 241s -[19:01:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 242s -[19:01:10] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 242s -[19:01:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 243s -[19:01:11] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 243s -[19:01:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 244s -[19:01:12] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 244s -[19:01:13] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 245s -[19:01:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 246s -[19:01:14] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 246s -[19:01:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 247s -[19:01:15] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 247s -[19:01:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 248s -[19:01:16] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 248s -[19:01:17] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 249s -[19:01:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 249s -[19:01:18] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 250s -[19:01:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 251s -[19:01:19] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 251s -[19:01:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 252s -[19:01:20] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 252s -[19:01:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 253s -[19:01:21] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 253s -[19:01:22] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 254s -[19:01:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 255s -[19:01:23] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 255s -[19:01:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 256s -[19:01:24] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 256s -[19:01:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 257s -[19:01:25] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 257s -[19:01:26] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 258s -[19:01:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 258s -[19:01:27] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 259s -[19:01:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 260s -[19:01:28] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 260s -[19:01:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 261s -[19:01:29] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 261s -[19:01:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 262s -[19:01:30] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 262s -[19:01:31] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 263s -[19:01:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 264s -[19:01:32] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 264s -[19:01:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 265s -[19:01:33] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 265s -[19:01:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 266s -[19:01:34] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 266s -[19:01:35] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 267s -[19:01:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 267s -[19:01:36] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 268s -[19:01:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 269s -[19:01:37] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 269s -[19:01:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 270s -[19:01:38] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 270s -[19:01:39] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 271s -[19:01:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 271s -[19:01:40] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 272s -[19:01:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 273s -[19:01:41] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 273s -[19:01:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 274s -[19:01:42] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 274s -[19:01:43] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 275s -[19:01:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 275s -[19:01:44] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 276s -[19:01:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 277s -[19:01:45] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 277s -[19:01:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 278s -[19:01:46] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 278s -[19:01:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 279s -[19:01:47] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 279s -[19:01:48] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 280s -[19:01:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 281s -[19:01:49] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 281s -[19:01:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 282s -[19:01:50] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 282s -[19:01:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 283s -[19:01:51] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 283s -[19:01:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 284s -[19:01:52] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 284s -[19:01:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 285s -[19:01:53] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 285s -[19:01:54] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 286s -[19:01:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 286s -[19:01:55] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 287s -[19:01:56] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 288s -[19:01:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 289s -[19:01:57] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 289s -[19:01:58] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 290s -[19:01:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 290s -[19:01:59] πŸ“Š PPS: 0 | Avg: 0 | Peak: 0 | Status: βœ“ NORMAL | Elapsed: 291s -[19:02:01] πŸ“Š PPS: 1 | Avg: 0 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 292s -[19:02:02] πŸ“Š PPS: 1 | Avg: 0 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 293s -[19:02:04] πŸ“Š PPS: 1 | Avg: 0 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 295s diff --git a/scripts/storm_monitor_20251230_190205.log b/scripts/storm_monitor_20251230_190205.log deleted file mode 100644 index 4f9f09f7..00000000 --- a/scripts/storm_monitor_20251230_190205.log +++ /dev/null @@ -1,156 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_20251230_190205.log -Started: Tue Dec 30 19:02:05 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -[19:02:07] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 0s -[19:02:09] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 2s -[19:02:11] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 3s -[19:02:12] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 5s -[19:02:14] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 7s -[19:02:15] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 8s -[19:02:17] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 10s -[19:02:18] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 11s -[19:02:20] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 13s -[19:02:22] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 14s -[19:02:23] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 16s -[19:02:25] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 18s -[19:02:26] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 19s -[19:02:28] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 21s -[19:02:29] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 22s -[19:02:31] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 24s -[19:02:33] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 25s -[19:02:34] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 27s -[19:02:36] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 29s -[19:02:37] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 30s -[19:02:39] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 32s -[19:02:40] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 33s -[19:02:42] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 35s -[19:02:44] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 36s -[19:02:45] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 38s -[19:02:47] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 40s -[19:02:48] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 41s -[19:02:50] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 43s -[19:02:51] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 44s -[19:02:53] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 46s -[19:02:55] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 47s -[19:02:56] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 49s -[19:02:58] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 51s -[19:02:59] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 52s -[19:03:01] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 54s -[19:03:02] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 55s -[19:03:04] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 57s -[19:03:06] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 58s -[19:03:07] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 60s -[19:03:09] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 62s -[19:03:10] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 63s -[19:03:12] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 65s -[19:03:13] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 66s -[19:03:15] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 68s -[19:03:17] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 69s -[19:03:18] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 71s -[19:03:20] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 73s -[19:03:21] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 74s -[19:03:23] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 76s -[19:03:24] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 77s -[19:03:26] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 79s -[19:03:28] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 80s -[19:03:29] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 82s -[19:03:31] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 84s -[19:03:32] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 85s -[19:03:34] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 87s -[19:03:35] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 88s -[19:03:37] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 90s -[19:03:39] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 91s -[19:03:40] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 93s -[19:03:42] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 95s -[19:03:43] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 96s -[19:03:45] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 98s -[19:03:46] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 99s -[19:03:48] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 101s -[19:03:49] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 102s -[19:03:51] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 104s -[19:03:53] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 106s -[19:03:54] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 107s -[19:03:56] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 109s -[19:03:57] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 110s -[19:03:59] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 112s -[19:04:00] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 113s -[19:04:02] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 115s -[19:04:04] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 117s -[19:04:05] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 118s -[19:04:07] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 120s -[19:04:08] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 121s -[19:04:10] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 123s -[19:04:11] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 124s -[19:04:13] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 126s -[19:04:15] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 128s -[19:04:16] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 129s -[19:04:18] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 131s -[19:04:19] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 132s -[19:04:21] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 134s -[19:04:22] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 135s -[19:04:24] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 137s -[19:04:26] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 138s -[19:04:27] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 140s -[19:04:29] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 142s -[19:04:30] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 143s -[19:04:32] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 145s -[19:04:33] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 146s -[19:04:35] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 148s -[19:04:37] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 149s -[19:04:38] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 151s -[19:04:40] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 153s -[19:04:41] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 154s -[19:04:43] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 156s -[19:04:44] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 157s -[19:04:46] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 159s -[19:04:48] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 160s -[19:04:49] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 162s -[19:04:51] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 164s -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -🚨 STORM DETECTED! -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Timestamp: 2025-12-30 19:04:52 -PPS: 23660 -Threshold: 2000 -Exceeded by: 21660 PPS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -[19:04:52] 🚨 PPS: 23660 | Status: ⚠️ THRESHOLD EXCEEDED! (Detection #1) -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -πŸ›‘ INITIATING SHUTDOWN SEQUENCE -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -πŸ“Š FINAL STATISTICS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Monitor Duration: 165s -Total Samples: 106 -Average PPS: 224 -Peak PPS: 23660 -Detections: 1 -Shutdown Reason: Storm threshold exceeded -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -⏸️ Stopping container: nop-custom-web -βœ“ Container stopped at 2025-12-30 19:05:02 -πŸ“Š Final PPS: 23660 - -To restart the container, run: - docker start nop-custom-web - diff --git a/scripts/storm_monitor_broadcast_20251230_190620.log b/scripts/storm_monitor_broadcast_20251230_190620.log deleted file mode 100644 index b1a1d5fb..00000000 --- a/scripts/storm_monitor_broadcast_20251230_190620.log +++ /dev/null @@ -1,51 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_broadcast_20251230_190620.log -Started: Tue Dec 30 19:06:20 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -🚨 STORM DETECTED! -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Timestamp: 2025-12-30 19:06:21 -PPS: 8189 -Threshold: 2000 -Exceeded by: 6189 PPS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -[19:06:21] 🚨 PPS: 8189 | Status: ⚠️ THRESHOLD EXCEEDED! (Detection #1) -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -πŸ›‘ INITIATING SHUTDOWN SEQUENCE -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -πŸ“Š FINAL STATISTICS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Monitor Duration: 0s -Total Samples: 1 -Average PPS: 8189 -Peak PPS: 8189 -Detections: 1 -Shutdown Reason: Storm threshold exceeded -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -⏸️ Stopping container: nop-custom-web -βœ“ Container stopped at 2025-12-30 19:06:31 -πŸ“Š Final PPS: 8189 - -To restart the container, run: - docker start nop-custom-web - diff --git a/scripts/storm_monitor_broadcast_20251230_191034.log b/scripts/storm_monitor_broadcast_20251230_191034.log deleted file mode 100644 index d46b7ce6..00000000 --- a/scripts/storm_monitor_broadcast_20251230_191034.log +++ /dev/null @@ -1,51 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_broadcast_20251230_191034.log -Started: Tue Dec 30 19:10:34 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -🚨 STORM DETECTED! -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Timestamp: 2025-12-30 19:10:36 -PPS: 57560 -Threshold: 2000 -Exceeded by: 55560 PPS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -[19:10:36] 🚨 PPS: 57560 | Status: ⚠️ THRESHOLD EXCEEDED! (Detection #1) -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -πŸ›‘ INITIATING SHUTDOWN SEQUENCE -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -πŸ“Š FINAL STATISTICS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Monitor Duration: 0s -Total Samples: 1 -Average PPS: 57560 -Peak PPS: 57560 -Detections: 1 -Shutdown Reason: Storm threshold exceeded -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -⏸️ Stopping container: nop-custom-web -βœ“ Container stopped at 2025-12-30 19:10:46 -πŸ“Š Final PPS: 57560 - -To restart the container, run: - docker start nop-custom-web - diff --git a/scripts/storm_monitor_multicast_20251230_190918.log b/scripts/storm_monitor_multicast_20251230_190918.log deleted file mode 100644 index 0b560f19..00000000 --- a/scripts/storm_monitor_multicast_20251230_190918.log +++ /dev/null @@ -1,51 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_multicast_20251230_190918.log -Started: Tue Dec 30 19:09:18 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -🚨 STORM DETECTED! -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Timestamp: 2025-12-30 19:09:19 -PPS: 47683 -Threshold: 2000 -Exceeded by: 45683 PPS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -[19:09:19] 🚨 PPS: 47683 | Status: ⚠️ THRESHOLD EXCEEDED! (Detection #1) -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -πŸ›‘ INITIATING SHUTDOWN SEQUENCE -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -πŸ“Š FINAL STATISTICS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Monitor Duration: 0s -Total Samples: 1 -Average PPS: 47683 -Peak PPS: 47683 -Detections: 1 -Shutdown Reason: Storm threshold exceeded -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -⏸️ Stopping container: nop-custom-web -βœ“ Container stopped at 2025-12-30 19:09:29 -πŸ“Š Final PPS: 47683 - -To restart the container, run: - docker start nop-custom-web - diff --git a/scripts/storm_monitor_udp_50k_20251230_190733.log b/scripts/storm_monitor_udp_50k_20251230_190733.log deleted file mode 100644 index 25d26d0b..00000000 --- a/scripts/storm_monitor_udp_50k_20251230_190733.log +++ /dev/null @@ -1,61 +0,0 @@ -========================================== -STORM MONITOR - Auto-Shutdown on High PPS -========================================== -Target Container: nop-custom-web -Target Port: 80 -PPS Threshold: 2000 -Monitoring Interface: any -Sample Interval: 1s -Log File: storm_monitor_udp_50k_20251230_190733.log -Started: Tue Dec 30 19:07:33 UTC 2025 -========================================== - -πŸ“ Container IP: 172.19.0.5 - -πŸ”§ Installing tcpdump in container... -βœ“ tcpdump ready - -πŸ” Starting packet monitoring... -⚠️ Will shutdown port 80 when PPS exceeds 2000 -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -[19:07:35] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 0s -[19:07:36] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 2s -[19:07:38] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 4s -[19:07:39] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 5s -[19:07:41] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 7s -[19:07:42] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 8s -[19:07:44] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 10s -[19:07:46] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 12s -[19:07:47] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 13s -[19:07:49] πŸ“Š PPS: 1 | Avg: 1 | Peak: 1 | Status: βœ“ NORMAL | Elapsed: 15s -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -🚨 STORM DETECTED! -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Timestamp: 2025-12-30 19:07:50 -PPS: 38894 -Threshold: 2000 -Exceeded by: 36894 PPS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -[19:07:50] 🚨 PPS: 38894 | Status: ⚠️ THRESHOLD EXCEEDED! (Detection #1) -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -πŸ›‘ INITIATING SHUTDOWN SEQUENCE -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -πŸ“Š FINAL STATISTICS -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -Monitor Duration: 16s -Total Samples: 11 -Average PPS: 3536 -Peak PPS: 38894 -Detections: 1 -Shutdown Reason: Storm threshold exceeded -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -⏸️ Stopping container: nop-custom-web -βœ“ Container stopped at 2025-12-30 19:08:00 -πŸ“Š Final PPS: 38894 - -To restart the container, run: - docker start nop-custom-web - diff --git a/test-environment/agent-test/agents/agent.log b/test-environment/agent-test/agents/agent.log deleted file mode 100644 index 04fb9b09..00000000 --- a/test-environment/agent-test/agents/agent.log +++ /dev/null @@ -1,351 +0,0 @@ -[2026-01-03 23:14:48.326420] NOP Agent 'Ubuntu Test Agent' starting... -[2026-01-03 23:14:48.326490] Enabled modules: asset, traffic, host -[2026-01-03 23:14:48.326508] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:14:48.345769] Connected! Establishing encrypted tunnel... -[2026-01-03 23:14:48.346344] Registered with C2 server -[2026-01-03 23:14:48.346527] Asset module started -[2026-01-03 23:14:48.346620] Traffic module started -[2026-01-03 23:14:48.346729] Host module started -[2026-01-03 23:19:49.468055] Discovered 5 assets -[2026-01-03 23:24:50.562012] Discovered 5 assets -[2026-01-03 23:29:51.647994] Discovered 5 assets -[2026-01-03 23:33:33.512735] Connection error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:33:38.517198] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:33:38.517821] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:33:43.523070] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:33:43.525669] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:33:48.530917] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:33:48.533371] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:33:53.534690] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:33:53.536995] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:33:57.397221] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:33:57.401488] Heartbeat error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:33:58.539813] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:33:58.542267] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:03.546250] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:03.549805] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:08.554971] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:08.557570] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:13.558170] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:13.560688] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:18.565936] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:18.568126] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:23.571428] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:23.573532] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:28.578774] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:28.580914] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:33.586130] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:33.588453] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:38.592976] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:38.595157] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:43.596317] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:43.598634] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:48.603891] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:48.606191] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:52.725999] Discovered 5 assets -[2026-01-03 23:34:52.726218] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:34:53.607314] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:53.609519] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:34:58.401154] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:34:58.401444] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:34:58.610901] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:34:58.612944] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:03.618192] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:03.620306] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:08.624671] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:08.626830] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:13.631215] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:13.633357] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:18.637904] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:18.642499] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:23.647711] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:23.649925] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:28.655154] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:28.657458] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:33.662722] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:33.664953] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:38.670169] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:38.672285] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:43.672677] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:43.674954] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:48.680190] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:48.682355] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:53.687610] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:53.689745] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:35:58.407048] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:35:58.690554] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:35:58.692896] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:03.693411] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:03.695716] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:08.697233] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:08.699426] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:13.704656] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:13.706884] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:18.707944] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:18.710099] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:23.714972] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:23.717667] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:28.722958] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:28.725210] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:33.730456] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:33.732649] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:38.737913] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:38.740046] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:43.745298] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:43.747439] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:48.748736] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:48.751079] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:53.752321] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:53.754801] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:36:59.407679] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:36:59.408109] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:36:59.408190] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:36:59.410120] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:04.411694] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:04.413810] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:09.419058] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:09.421278] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:14.426549] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:14.428788] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:19.431210] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:19.433273] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:24.438501] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:24.440745] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:29.443924] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:29.446083] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:34.450989] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:34.453242] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:39.458467] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:39.460448] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:44.460793] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:44.463293] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:49.464470] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:50.389644] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:55.394913] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:37:56.326814] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:37:59.412445] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:38:01.329594] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:02.337182] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:07.341971] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:08.332836] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:13.337989] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:14.338705] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:19.344024] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:20.319988] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:25.325270] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:26.330586] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:31.335930] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:32.339151] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:37.344567] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:38.333301] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:43.337970] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:44.321301] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:49.326571] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:49.328860] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:54.334030] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:38:54.335940] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:38:59.340998] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:00.409434] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:39:00.410083] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:39:00.410349] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:05.414988] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:06.383817] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:11.389486] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:12.350578] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:17.352429] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:18.338733] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:23.344006] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:24.333274] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:29.338537] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:29.353053] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:34.358685] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:34.361009] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:39.365966] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:39.377281] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:44.385709] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:44.396112] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:49.402183] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:49.404373] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:53.821995] Discovered 4 assets -[2026-01-03 23:39:53.822191] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:39:54.405984] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:54.408143] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:39:59.413343] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:39:59.415606] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:00.411362] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:40:04.420630] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:04.422983] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:09.426960] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:09.429095] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:14.434186] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:14.436376] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:19.440235] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:19.442370] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:24.447593] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:24.449870] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:29.454994] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:29.459151] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:34.464599] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:34.466780] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:39.469116] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:39.471338] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:44.476559] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:44.478837] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:49.484131] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:49.486377] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:54.491575] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:54.493985] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:40:59.498556] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:40:59.501655] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:01.412508] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:41:01.412905] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:41:04.505195] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:04.507383] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:09.512584] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:09.514734] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:14.519955] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:14.522062] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:19.527303] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:19.529477] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:24.531355] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:24.533471] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:29.538722] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:29.540975] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:34.546230] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:34.548343] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:39.552736] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:39.554970] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:44.555812] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:44.558365] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:49.562995] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:49.565281] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:54.566933] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:54.569214] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:41:59.574430] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:41:59.577009] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:01.415429] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:42:04.580894] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:04.583252] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:09.588468] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:09.590669] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:14.594991] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:14.597337] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:19.602547] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:19.604711] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:24.606933] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:24.609057] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:29.614294] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:29.616422] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:34.617931] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:34.620251] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:39.621977] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:39.624321] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:44.629576] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:44.631760] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:49.637031] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:49.639313] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:54.643968] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:54.684255] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:42:59.689530] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:42:59.691714] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:02.416229] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:43:02.416589] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:43:04.696058] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:04.698288] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:09.702607] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:09.704989] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:14.710103] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:14.712186] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:19.717465] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:19.719573] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:24.724109] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:24.729636] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:29.734910] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:29.826636] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:34.830936] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:34.832940] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:39.837442] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:39.839646] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:44.844884] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:44.846979] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:49.852202] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:49.854323] Connection error: server rejected WebSocket connection: HTTP 403 -[2026-01-03 23:43:54.859540] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:54.860129] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:43:59.862979] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:43:59.863553] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:02.421401] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:44:04.867009] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:04.867951] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:09.873010] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:09.873691] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:14.876287] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:14.876959] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:19.880165] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:19.880900] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:24.886065] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:24.887621] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:29.892991] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:29.893842] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:34.899019] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:34.900336] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:39.903338] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:39.904242] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:44.909004] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:44.909742] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:49.913981] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:49.914698] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:54.899990] Discovered 2 assets -[2026-01-03 23:44:54.900203] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:44:54.915445] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:54.916325] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:44:59.917983] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:44:59.918969] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:03.420343] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:45:03.420738] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:45:04.921991] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:04.923000] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:09.926033] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:09.926776] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:14.928647] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:14.929257] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:19.934489] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:19.935132] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:24.940372] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:24.940995] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:29.945975] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:29.946678] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:34.951019] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:34.951672] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:39.956182] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:39.957000] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:44.961997] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:44.962672] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:49.967512] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:49.968152] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:54.969986] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:54.970592] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:45:59.975123] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:45:59.975971] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:03.425333] Relay error: received 1012 (service restart); then sent 1012 (service restart) -[2026-01-03 23:46:04.977990] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:04.978623] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:09.983077] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:09.983776] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:14.989034] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:14.989700] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:19.994924] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:19.995484] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:24.998156] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:24.998753] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:30.004888] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:30.010267] Connection error: [Errno 111] Connect call failed ('172.28.0.1', 8000) -[2026-01-03 23:46:35.015717] Connecting to C2 server: ws://172.28.0.1:8000/api/v1/agents/1483a6eb-bc9e-4ef1-be63-b8e7c0f01029/connect... -[2026-01-03 23:46:35.022919] Connected! Establishing encrypted tunnel... -[2026-01-03 23:46:35.023789] Registered with C2 server -[2026-01-03 23:46:35.024085] Asset module started -[2026-01-03 23:46:35.024163] Traffic module started -[2026-01-03 23:46:35.024195] Host module started -[2026-01-03 23:49:55.981995] Discovered 5 assets -[2026-01-03 23:51:36.109989] Discovered 5 assets -[2026-01-03 23:54:57.073025] Discovered 5 assets