User: Напиши python датакласс, соответствующий объектам из списка в формате JSON:
```
[
    {
        "template": "http/miscellaneous/addeventlistener-detect.yaml",
        "template-url": "https://cloud.projectdiscovery.io/public/addeventlistener-detect",
        "template-id": "addeventlistener-detect",
        "template-path": "/home/fda/work/nuclei-wrapper/ext/nuclei/nuclei-templates/http/miscellaneous/addeventlistener-detect.yaml",
        "info": {
            "name": "DOM EventListener - Cross-Site Scripting",
            "author": [
                "yavolo",
                "dwisiswant0"
            ],
            "tags": [
                "miscellaneous",
                "xss",
                "misc"
            ],
            "description": "EventListener contains a cross-site scripting vulnerability via the document object model (DOM). An attacker can execute arbitrary script which can then allow theft of cookie-based authentication credentials and launch of  other attacks.",
            "reference": [
                "https://portswigger.net/web-security/dom-based/controlling-the-web-message-source"
            ],
            "severity": "info",
            "metadata": {
                "max-request": 1
            },
            "classification": {
                "cve-id": null,
                "cwe-id": [
                    "cwe-79"
                ],
                "cvss-metrics": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N",
                "cvss-score": 7.2
            }
        },
        "type": "http",
        "host": "jucie.serp.dev.da.lan",
        "port": "443",
        "scheme": "https",
        "url": "https://jucie.serp.dev.da.lan",
        "matched-at": "https://jucie.serp.dev.da.lan",
        "request": "GET / HTTP/1.1\r\nHost: jucie.serp.dev.da.lan\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15\r\nConnection: close\r\nAccept: */*\r\nAccept-Language: en\r\nAccept-Encoding: gzip\r\n\r\n",
        "response": "HTTP/1.1 200 OK\r\nConnection: close\r\nTransfer-Encoding: chunked\r\nAccept-Ranges: bytes\r\nAccess-Control-Allow-Origin: *\r\nCache-Control: public, max-age=0\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Thu, 06 Feb 2025 09:27:37 GMT\r\nEtag: W/\"ea4-194ce183dc7\"\r\nFeature-Policy: payment 'self'\r\nLast-Modified: Mon, 03 Feb 2025 23:14:42 GMT\r\nServer: openresty\r\nVary: Accept-Encoding\r\nX-Content-Type-Options: nosniff\r\nX-Frame-Options: SAMEORIGIN\r\nX-Recruiting: /#/jobs\r\nX-Served-By: jucie.serp.dev.da.lan\r\n\r\n<!--\n  ~ Copyright (c) 2014-2024 Bjoern Kimminich & the OWASP Juice Shop contributors.\n  ~ SPDX-License-Identifier: MIT\n  --><!DOCTYPE html><html lang=\"en\"><head>\n  <meta charset=\"utf-8\">\n  <title>OWASP Juice Shop</title>\n  <meta name=\"description\" content=\"Probably the most modern and sophisticated insecure web application\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link id=\"favicon\" rel=\"icon\" type=\"image/x-icon\" href=\"assets/public/favicon_js.ico\">\n  <link rel=\"stylesheet\" type=\"text/css\" href=\"//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.css\">\n  <script src=\"//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js\"></script>\n  <script src=\"//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js\"></script>\n  <script>\n    window.addEventListener(\"load\", function(){\n      window.cookieconsent.initialise({\n        \"palette\": {\n          \"popup\": { \"background\": \"var(--theme-primary)\", \"text\": \"var(--theme-text)\" },\n          \"button\": { \"background\": \"var(--theme-accent)\", \"text\": \"var(--theme-text)\" }\n        },\n        \"theme\": \"classic\",\n        \"position\": \"bottom-right\",\n        \"content\": { \"message\": \"This website uses fruit cookies to ensure you get the juiciest tracking experience.\", \"dismiss\": \"Me want it!\", \"link\": \"But me wait!\", \"href\": \"https://www.youtube.com/watch?v=9PnbKL3wuH4\" }\n      })});\n  </script>\n<style>.bluegrey-lightgreen-theme{--theme-primary:#546e7a;--theme-primary-lighter:#607e8c;--theme-primary-light:#698998;--theme-primary-darker:#485e68;--theme-primary-dark:#3f535c;--theme-primary-fade-10:rgba(84, 110, 122, .9);--theme-primary-fade-20:rgba(84, 110, 122, .8);--theme-primary-fade-30:rgba(84, 110, 122, .7);--theme-primary-fade-40:rgba(84, 110, 122, .6);--theme-primary-fade-50:rgba(84, 110, 122, .5);--theme-accent:#689f38;--theme-accent-lighter:#77b640;--theme-accent-light:#81bf4b;--theme-accent-darker:#598830;--theme-accent-dark:#4f792b;--theme-accent-fade-10:rgba(104, 159, 56, .9);--theme-accent-fade-20:rgba(104, 159, 56, .8);--theme-accent-fade-30:rgba(104, 159, 56, .7);--theme-accent-fade-40:rgba(104, 159, 56, .6);--theme-accent-fade-50:rgba(104, 159, 56, .5);--theme-warn:#ff5722;--theme-warn-lighter:#ff6e41;--theme-warn-light:#ff7e55;--theme-warn-darker:#ff4003;--theme-warn-dark:#ee3900;--theme-warn-fade-10:rgba(255, 87, 34, .9);--theme-warn-fade-20:rgba(255, 87, 34, .8);--theme-warn-fade-30:rgba(255, 87, 34, .7);--theme-warn-fade-40:rgba(255, 87, 34, .6);--theme-warn-fade-50:rgba(255, 87, 34, .5);--theme-text:white;--theme-text-lighter:white;--theme-text-light:white;--theme-text-darker:#e6e6e6;--theme-text-dark:#bfbfbf;--theme-text-fade-10:rgba(255, 255, 255, .9);--theme-text-fade-20:rgba(255, 255, 255, .8);--theme-text-fade-30:rgba(255, 255, 255, .7);--theme-text-fade-40:rgba(255, 255, 255, .6);--theme-text-fade-50:rgba(255, 255, 255, .5);--theme-text-invert-15:#d9d9d9;--theme-text-invert-30:#b3b3b3;--theme-background:#424242;--theme-background-lighter:#515151;--theme-background-light:#5c5c5c;--theme-background-darker:#333333;--theme-background-dark:#292929;--theme-background-darkest:#1e1e1e}.bluegrey-lightgreen-theme.mat-app-background{background-color:#303030;color:#fff}@media screen and (-webkit-min-device-pixel-ratio:0){}</style><link rel=\"stylesheet\" href=\"styles.css\" media=\"print\" onload=\"this.media='all'\"><noscript><link rel=\"stylesheet\" href=\"styles.css\"></noscript></head>\n<body class=\"mat-app-background bluegrey-lightgreen-theme\">\n  <app-root></app-root>\n<script src=\"runtime.js\" type=\"module\"></script><script src=\"polyfills.js\" type=\"module\"></script><script src=\"vendor.js\" type=\"module\"></script><script src=\"main.js\" type=\"module\"></script>\n\n</body></html>",
        "ip": "10.116.91.31",
        "timestamp": "2025-02-06T12:27:37.897389477+03:00",
        "curl-command": "curl -X 'GET' -H 'Accept: */*' -H 'Accept-Language: en' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 14.5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15' 'https://jucie.serp.dev.da.lan'",
        "matcher-status": true
    }
]
```
Assistant: Вот Python код, который создает датакласс, соответствующий объектам из предоставленного JSON:

```python
from dataclasses import dataclass, field
from typing import List, Optional, Dict, Any


@dataclass
class Classification:
    cve_id: Optional[str]
    cwe_id: List[str]
    cvss_metrics: str
    cvss_score: float


@dataclass
class Meta
    max_request: int


@dataclass
class Info:
    name: str
    author: List[str]
    tags: List[str]
    description: str
    reference: List[str]
    severity: str
    meta Metadata
    classification: Classification


@dataclass
class TemplateObject:
    template: str
    template_url: str
    template_id: str
    template_path: str
    info: Info
    type: str
    host: str
    port: str
    scheme: str
    url: str
    matched_at: str
    request: str
    response: str
    ip: str
    timestamp: str
    curl_command: str
    matcher_status: bool
```

### Как использовать:
1. Скопируйте код выше в ваш Python-файл.
2. Используйте модуль `json` для преобразования JSON в Python-объекты и для загрузки данных в датакласс:

```python
import json

# Предположим, что ваш JSON сохранен в строке `json_string`
json_string = """[... ваш JSON здесь ...]"""

# Загружаем JSON как Python объекты
data = json.loads(json_string)

# Преобразуем каждый объект из списка в экземпляр `TemplateObject`
template_objects = [TemplateObject(**item) for item in data]

# Вы можете работать с объектами, например:
for obj in template_objects:
    print(obj.info.name)
```

Этот код обработает ваш JSON и позволит вам работать с этими данными как с объектами.
User: Добавь комментарии на русском языке для каждого поля датакласса
Assistant: