import collections.abc
import re

def parse_dampened_data(raw_json_data, ip_version):
    dampened_paths = []
    summary_string = ""

    if not raw_json_data or not raw_json_data.get("success") or "data" not in raw_json_data:
        return {"paths": [], "summary": "Displayed 0 routes and 0 total paths"}

    text_data = raw_json_data["data"]

    if not isinstance(text_data, str) or not text_data.strip():
        return {"paths": [], "summary": "Displayed 0 routes and 0 total paths"}

    current_prefix = None
    lines = text_data.split('\n')

    for line in lines:
        stripped_line = line.strip()

        if stripped_line.startswith("Displayed"):
            summary_string = stripped_line
            continue

        if not stripped_line or stripped_line.startswith("BGP table") or stripped_line.startswith("Default") or \
           stripped_line.startswith("Status codes") or stripped_line.startswith("Nexthop codes") or \
           stripped_line.startswith("Origin codes") or stripped_line.startswith("RPKI") or \
           "Network" in stripped_line:
            continue
        
        parts = line.split()
        if len(parts) < 4:
            continue

        path_info = {
            "metric": "N/A",
            "local_pref": "N/A",
            "weight": "N/A",
            "ip_version": ip_version
        }

        is_new_prefix = '/' in parts[1]

        try:
            if is_new_prefix:
                current_prefix = parts[1]
                path_info["status"] = parts[0]
                path_info["prefix"] = current_prefix
                path_info["from"] = parts[2]
                path_info["suppress_remain"] = parts[3]
                path_info["path"] = ' '.join(parts[4:])
                dampened_paths.append(path_info)
            elif current_prefix:
                path_info["status"] = parts[0]
                path_info["prefix"] = current_prefix
                path_info["from"] = parts[1]
                path_info["suppress_remain"] = parts[2]
                path_info["path"] = ' '.join(parts[3:])
                dampened_paths.append(path_info)
        except IndexError:
            continue
            
    if not summary_string and not dampened_paths:
        summary_string = "Displayed 0 routes and 0 total paths"
            
    return {"paths": dampened_paths, "summary": summary_string}

def generate_dampened_json(ipv4_data, ipv6_data):
    return {"ipv4": ipv4_data, "ipv6": ipv6_data}